123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import React from 'react';
- import { Form, Input, Button, Row, Col, DatePicker, List, Icon } from 'antd';
- import './index.less';
- import Page from '@src/containers/Page';
- import Block from '@src/components/Block';
- import Select from '@src/components/Select';
- // import FileUpload from '@src/components/FileUpload';
- import { formatFormError, generateSearch } from '@src/services/Tools';
- import { asyncSMessage } from '@src/services/AsyncTools';
- import { Preview } from '../../../stores/preview';
- import { Exercise } from '../../../stores/exercise';
- import { Users } from '../../../stores/users';
- import config from './index';
- export default class extends Page {
- init() {
- Exercise.allStruct().then(result => {
- result = result.filter(row => row.level === 2).map(row => { row.title = `${row.titleZh}/${row.titleEn}`; row.value = row.id; return row; });
- this.setState({ exercise: result });
- });
- }
- initData() {
- console.log(Users);
- const { id } = this.params;
- const { form } = this.props;
- let handler;
- if (id) {
- config.title = '编辑预习作业';
- handler = Preview.get({ id });
- } else {
- config.title = '添加预习作业';
- handler = Promise.resolve({});
- }
- handler
- .then(result => {
- form.setFieldsValue(result);
- generateSearch('userIds', { mode: 'multiple' }, this, (search) => {
- return Users.list(search);
- }, (row) => {
- return {
- title: `${row.nickname}(${row.mobile})`,
- value: row.id,
- };
- }, result.userIds || [], null);
- });
- }
- submit() {
- const { form } = this.props;
- form.validateFields((err) => {
- if (!err) {
- const data = form.getFieldsValue();
- let handler;
- if (data.id) {
- handler = Preview.add(data);
- } else {
- handler = Preview.edit(data);
- }
- handler.then(() => {
- asyncSMessage('保存成功');
- }).catch((e) => {
- if (e.result) form.setFields(formatFormError(data, e.result));
- });
- }
- });
- }
- searchQuestion(values) {
- console.log(values);
- }
- renderBase() {
- const { getFieldDecorator } = this.props.form;
- return <Block>
- <Form>
- {getFieldDecorator('id')(<input hidden />)}
- <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='选择课程'>
- {getFieldDecorator('category', {
- rules: [
- { required: true, message: '请选择课程' },
- ],
- })(
- <Select select={this.state.exercise} placeholder='请选择课程' />,
- )}
- </Form.Item>
- <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='起止时间'>
- {getFieldDecorator('time', {
- rules: [
- { required: true, message: '请输入起止时间' },
- ],
- })(
- <DatePicker.RangePicker />,
- )}
- </Form.Item>
- <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='作业标题'>
- {getFieldDecorator('title', {
- rules: [
- { required: true, message: '请输入作业标题' },
- ],
- })(
- <Input placeholder='请输入作业标题' />,
- )}
- </Form.Item>
- <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='指定做题人'>
- {getFieldDecorator('userIds', {
- rules: [
- { required: true, message: '请指定做题人' },
- ],
- })(
- <Select {...this.state.userIds} placeholder='请指定做题人' />,
- )}
- </Form.Item>
- <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='选择作业题'>
- {getFieldDecorator('questionIds', {
- rules: [
- { required: true, message: '请选择作业题' },
- ],
- })(
- <Select select={[]} mode='tags' maxTagCount={200} notFoundContent={null} placeholder='输入题目id, 逗号分隔' tokenSeparators={[',', ',']} onSelect={(values) => {
- this.searchQuestion(values);
- }} />,
- )}
- </Form.Item>
- </Form>
- </Block>;
- }
- renderQuestionList() {
- return <List
- header={<h1>题目预览</h1>}
- loading={this.props.core.loading}
- itemLayout="horizontal"
- dataSource={this.state.questionList || [{}]}
- renderItem={item => (
- <List.Item actions={[<Button type='link' onClick={() => {
- console.log(item);
- }}><Icon type='delete' /></Button>, <a>more</a>]}>
- 123123
- </List.Item>
- )}
- />;
- }
- renderView() {
- return <Block flex>
- {this.renderBase()}
- {this.renderQuestionList()}
- <Row type="flex" justify="center">
- <Col>
- <Button type="primary" onClick={() => {
- this.submit();
- }}>保存</Button>
- </Col>
- </Row>
- </Block>;
- }
- }
|