import React from 'react'; import { Form, Input, Tabs, 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 { Preview } from '../../../stores/preview'; import { Exercise } from '../../../stores/exercise'; import { User } from '../../../stores/user'; 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() { 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 User.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.edit(data); } else { handler = Preview.add(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>; } renderTab() { return <Tabs activeKey='textbook' onChange={(tab) => { switch (tab) { case 'sentence': linkTo('/subject/sentence/question'); break; case 'base': linkTo('/subject/question'); break; default: } }}> <Tabs.TabPane key='base' tab='考试题型' /> <Tabs.TabPane key='sentence' tab='长难句' /> <Tabs.TabPane key='textbook' tab='数学机经' /> </Tabs>; } renderView() { return <div flex > {this.renderTab()} </div>; } }