page.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. import React from 'react';
  2. import { Button, Form, Modal, DatePicker, Input, Upload } from 'antd';
  3. import { Link } from 'react-router-dom';
  4. import moment from 'moment';
  5. import './index.less';
  6. import Page from '@src/containers/Page';
  7. import Block from '@src/components/Block';
  8. // import FilterLayout from '@src/layouts/FilterLayout';
  9. // import ActionLayout from '@src/layouts/ActionLayout';
  10. import TableLayout from '@src/layouts/TableLayout';
  11. // import { getMap, bindSearch, formatDate } from '@src/services/Tools';
  12. import { asyncDelConfirm, asyncSMessage } from '@src/services/AsyncTools';
  13. // import { TextbookType } from '../../../../Constant';
  14. import { Textbook } from '../../../stores/textbook';
  15. import { System } from '../../../stores/system';
  16. // import { Question } from '../../../stores/question';
  17. // import { Slient } from '../../../stores/slient';
  18. export default class extends Page {
  19. constructor(props) {
  20. super(props);
  21. this.actionList = [{
  22. key: 'add',
  23. name: '新建',
  24. render: (item) => {
  25. return <Button onClick={() => {
  26. linkTo('/subject/textbook/question');
  27. }}>{item.name}</Button>;
  28. },
  29. }];
  30. this.columns = [{
  31. title: '库头',
  32. dataIndex: 'startDate',
  33. }, {
  34. title: '库尾',
  35. dataIndex: 'endDate',
  36. }, {
  37. title: '发布次数',
  38. dataIndex: 'historyNumber',
  39. render: (text, record) => {
  40. return text ? <a onClick={() => {
  41. this.loadHistory(record);
  42. }}>{text}</a> : 0;
  43. },
  44. }, {
  45. title: '操作',
  46. dataIndex: 'handler',
  47. render: (text, record) => {
  48. return <div className="table-button">
  49. {(
  50. <a onClick={() => {
  51. this.setState({ post: record });
  52. this.props.form.getFieldDecorator('post.libraryId');
  53. this.props.form.setFieldsValue({ 'post.libraryId': record.id });
  54. }}>发布机经</a>
  55. )}
  56. {(
  57. <Link to={`/subject/textbook/question?libraryId=${record.id}`}>录入机经</Link>
  58. )}
  59. </div>;
  60. },
  61. }];
  62. }
  63. initData() {
  64. const { search } = this.state;
  65. const data = Object.assign({}, search);
  66. Textbook.listLibrary(data).then(result => {
  67. this.setTableData(result.list, result.total || 1);
  68. });
  69. }
  70. loadHistory(record) {
  71. Textbook.listHistory({ libraryId: record.id }).then(result => {
  72. this.setState({ history: result.list });
  73. });
  74. }
  75. submit() {
  76. this.props.form.validateFields(['add'], (err, fieldsValue) => {
  77. if (err) {
  78. return;
  79. }
  80. const data = fieldsValue.add;
  81. data.startDate = data.startDate.format('YYYY-MM-DD');
  82. asyncDelConfirm('新增确认', '是否添加新的换库?', () => {
  83. return Textbook.addLibrary(data).then(() => {
  84. asyncSMessage('添加成功!');
  85. this.refresh();
  86. });
  87. });
  88. });
  89. }
  90. submitPost() {
  91. this.props.form.validateFields(['post'], (err, fieldsValue) => {
  92. if (err) {
  93. return;
  94. }
  95. const data = fieldsValue.post;
  96. Textbook.postHistory(data).then(() => {
  97. asyncSMessage('发布成功!');
  98. this.close('post', false);
  99. this.refresh();
  100. });
  101. });
  102. }
  103. renderView() {
  104. const { getFieldDecorator, setFieldsValue, getFieldValue } = this.props.form;
  105. const quant = getFieldValue('post.quant') || null;
  106. const ir = getFieldValue('post.ir') || null;
  107. const rc = getFieldValue('post.rc') || null;
  108. return <Block flex>
  109. <Form layout="inline">
  110. <Form.Item>
  111. {getFieldDecorator('add.startDate', {
  112. initialValue: moment(new Date(), 'YYYY-mm-dd'),
  113. })(
  114. <DatePicker />,
  115. )}
  116. </Form.Item>
  117. <Form.Item><Button type='primary' onClick={() => {
  118. this.submit();
  119. }}>新增换库</Button></Form.Item>
  120. </Form>
  121. <TableLayout
  122. columns={this.columns}
  123. list={this.state.list}
  124. pagination={this.state.page}
  125. loading={this.props.core.loading}
  126. onChange={(pagination, filters, sorter) => this.tableChange(pagination, filters, sorter)}
  127. onSelect={(keys, rows) => this.tableSelect(keys, rows)}
  128. selectedKeys={this.state.selectedKeys}
  129. />
  130. {this.state.history && <Modal visible closable title='发布历史' onCancel={() => {
  131. this.close(false, 'history');
  132. }} onOk={() => {
  133. this.close(false, 'history');
  134. }}>
  135. {this.state.history.map(row => {
  136. return <p>{row.content}</p>;
  137. })}
  138. </Modal>}
  139. {this.state.post && <Modal visible closable title='发布机经' onCancel={() => {
  140. this.close(false, 'post');
  141. }} onOk={() => {
  142. this.submitPost();
  143. }}>
  144. <Form>
  145. {getFieldDecorator('post.libraryId')}
  146. <Form.Item label='请上传机经文件,并点击发布'>
  147. {getFieldDecorator('post.content')(
  148. <Input.TextArea placeholder='更新日志' />,
  149. )}
  150. </Form.Item>
  151. <Form.Item labelCol={{ span: 4 }} wrapperCol={{ span: 15 }} label='数学机经'>
  152. {getFieldDecorator('post.quant')(
  153. <Upload
  154. listType="text"
  155. showUploadList={false}
  156. beforeUpload={(file) => System.uploadImage(file).then((result) => {
  157. setFieldsValue({ 'post.quant': result });
  158. return Promise.reject();
  159. })}
  160. onChange={this.handleChange}
  161. >
  162. {<div>
  163. <Button>上传附件</Button> {quant && '已上传'}
  164. </div>}
  165. </Upload>,
  166. )}
  167. </Form.Item>
  168. <Form.Item labelCol={{ span: 4 }} wrapperCol={{ span: 15 }} label='阅读机经'>
  169. {getFieldDecorator('post.rc')(
  170. <Upload
  171. listType="text"
  172. showUploadList={false}
  173. beforeUpload={(file) => System.uploadImage(file).then((result) => {
  174. setFieldsValue({ 'post.rc': result });
  175. return Promise.reject();
  176. })}
  177. onChange={this.handleChange}
  178. >
  179. {<div>
  180. <Button>上传附件</Button> {rc && '已上传'}
  181. </div>}
  182. </Upload>,
  183. )}
  184. </Form.Item>
  185. <Form.Item labelCol={{ span: 4 }} wrapperCol={{ span: 15 }} label='逻辑机经'>
  186. {getFieldDecorator('post.ir')(
  187. <Upload
  188. listType="text"
  189. showUploadList={false}
  190. beforeUpload={(file) => System.uploadImage(file).then((result) => {
  191. setFieldsValue({ 'post.ir': result });
  192. return Promise.reject();
  193. })}
  194. onChange={this.handleChange}
  195. >
  196. {<div>
  197. <Button>上传附件</Button> {ir && '已上传'}
  198. </div>}
  199. </Upload>,
  200. )}
  201. </Form.Item>
  202. </Form>
  203. </Modal>}
  204. </Block>;
  205. }
  206. }