import React from 'react'; import { Form, Input, Button, Row, Col, DatePicker } 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 { PreviewMode } from '../../../../Constant'; import QuestionNoList from '../../../components/QuestionNoList'; import { Preview } from '../../../stores/preview'; import { User } from '../../../stores/user'; // import { Question } from '../../../stores/question'; import { Exercise } from '../../../stores/exercise'; import config from './index'; export default class extends Page { constructor(props) { super(props); const { id } = this.params; if (id) { config.title = '编辑预习作业'; } else { config.title = '添加预习作业'; } } 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() { const { id } = this.params; const { form } = this.props; let handler; if (id) { handler = Preview.get({ id }); } else { handler = Promise.resolve({ questionNoIds: [] }); } handler .then(result => { const { questionNoIds } = result; result.time = [result.startTime, result.endTime]; form.setFieldsValue(result); generateSearch('userIds', { mode: 'multiple' }, this, (search) => { return User.list(search); }, (row) => { return { title: `${row.nickname}(${row.mobile})`, value: row.id, }; }, result.userIds, null); this.setState({ questionNoIds }); }); } submit() { const { form } = this.props; form.validateFields((err) => { if (!err) { const data = form.getFieldsValue(); [data.startTime, data.endTime] = data.time; let handler; data.questionNoIds = this.state.questionNos.map(row => row.id); 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)); }); } }); } deleteQuestion(index) { const { questionNos } = this.state; questionNos.splice(index, 1); this.setState({ questionNos }); this.props.form.setFieldsValue({ questionNos: questionNos.map(row => row.no) }); } orderQuestion(oldIndex, newIndex) { const { questionNos } = this.state; const tmp = questionNos[oldIndex]; questionNos[oldIndex] = questionNos[newIndex]; questionNos[newIndex] = tmp; this.setState({ questionNos }); this.props.form.setFieldsValue({ questionNos: questionNos.map(row => row.no) }); } renderBase() { const { getFieldDecorator } = this.props.form; return
{getFieldDecorator('id')()} {getFieldDecorator('category', { rules: [ { required: true, message: '请选择课程' }, ], })( , )} {getFieldDecorator('userIds', { rules: [ { required: true, message: '请指定做题人' }, ], })( { // todo 查找 this.setState({ questionNos: values }); }} />, )}
; } renderQuestionList() { const { getFieldDecorator, setFieldsValue } = this.props.form; return

题目预览

{ getFieldDecorator('questionNos'); setFieldsValue({ questionNos: nos.map(row => row.id) }); }} />
; } renderView() { return
{this.renderBase()} {this.renderQuestionList()}
; } }