import React from 'react'; import { Tabs, Button, Icon } from 'antd'; import './index.less'; import Page from '@src/containers/Page'; import Block from '@src/components/Block'; import TreeLayout from '@src/layouts/TreeLayout'; import ActionLayout from '@src/layouts/ActionLayout'; import { formatTreeData } from '@src/services/Tools'; import { asyncDelConfirm, asyncForm, asyncSMessage } from '@src/services/AsyncTools'; // import { System } from '../../../stores/system'; import { Examination } from '../../../stores/examination'; import { Exercise } from '../../../stores/exercise'; export default class extends Page { constructor(props) { super(props); this.exerciseActionList = [{ key: 'addChild', name: '增加子节点', }, { key: 'addBrother', name: '增加兄弟节点', selectNum: 1, }, { key: 'edit', name: '编辑', selectNum: 1, }, { key: 'delete', name: '批量删除', type: 'danger', needCheck: 1, }]; this.exerciseItemList = [{ key: 'id', type: 'hidden', }, { key: 'parentId', type: 'tree', name: '父节点', tree: [], fieldNames: { label: 'title', value: 'value', children: 'children' }, notFoundContent: null, onChange: (value) => { console.log(value); }, }, { key: 'titleZh', name: '中文名称', type: 'input', placeholder: '请输入中文名称', required: true, }, { key: 'titleEn', name: '英文名称', type: 'input', placeholder: '请输入英文名称', required: true, }, { key: 'description', name: '描述', type: 'textarea', placeholder: '请输入描述', required: true, }]; this.examinationActionList = [{ key: 'addChild', name: '增加子节点', }, { key: 'addBrother', name: '增加兄弟节点', selectNum: 1, }, { key: 'edit', name: '编辑', selectNum: 1, }, { key: 'delete', name: '批量删除', type: 'danger', needCheck: 1, }]; this.examinationItemList = [{ key: 'id', type: 'hidden', }, { key: 'parentId', type: 'tree', name: '父节点', tree: [], fieldNames: { label: 'title', value: 'value', children: 'children' }, notFoundContent: null, onChange: (value) => { console.log(value); }, }, { key: 'titleZh', name: '中文名称', type: 'input', placeholder: '请输入中文名称', required: true, }, { key: 'titleEn', name: '英文名称', type: 'input', placeholder: '请输入英文名称', required: true, }, { key: 'description', name: '描述', type: 'textarea', placeholder: '请输入描述', required: true, }]; this.state.tab = 'exercise'; } initData() { this.refresh(); } refresh() { const { tab } = this.state; if (tab === 'exercise') { return this.refreshExercise(); } return this.refreshExamination(); } refreshExercise() { Exercise.allStruct().then(result => { const list = result.map(row => { row.title = `${row.titleZh}/${row.titleEn}`; return row; }); this.exerciseItemList[1].tree = formatTreeData([{ title: '根节点', id: 0 }].concat(list), 'id', 'title', 'parentId'); this.setState({ exerciseList: list, exerciseStruct: formatTreeData(list.map(row => { if (row.level < 4) return row; row = Object.assign({}, row); row.title =
{row.title}
; return row; }), 'id', 'title', 'parentId'), }); }); } refreshExamination() { Examination.allStruct().then(result => { const list = result.map(row => { row.title = `${row.titleZh}/${row.titleEn}`; return row; }); this.examinationItemList[1].tree = formatTreeData([{ title: '根节点', id: 0 }].concat(list), 'id', 'title', 'parentId'); this.setState({ examinationList: list, examinationStruct: formatTreeData(list.map(row => { if (row.level !== 2) return row; row = Object.assign({}, row); row.title =
{row.title}
; return row; }), 'id', 'title', 'parentId'), }); }); } addChildAction() { const { tab, exerciseList, examinationList, selectedKeys } = this.state; let itemList; let node = 0; if (tab === 'exercise') { itemList = this.exerciseItemList; if (selectedKeys.length > 0) { node = exerciseList.filter(row => row.id === Number(selectedKeys[0]))[0].id; } } else { itemList = this.examinationItemList; if (selectedKeys.length > 0) { node = examinationList.filter(row => row.id === Number(selectedKeys[0]))[0].id; } } asyncForm('新增', itemList, { parentId: `${node}` }, data => { console.log(data); let handler; if (tab === 'exercise') { handler = Exercise.addStruct(data); } else { handler = Examination.addStruct(data); } return handler.then(() => { asyncSMessage('新增成功!'); this.refresh(); }); }); } addBrotherAction() { const { tab, exerciseList, examinationList, selectedKeys } = this.state; let itemList; let node; if (tab === 'exercise') { itemList = this.exerciseItemList; if (selectedKeys.length > 0) { node = exerciseList.filter(row => row.id === Number(selectedKeys[0]))[0].parentId; } } else { itemList = this.examinationItemList; if (selectedKeys.length > 0) { node = examinationList.filter(row => row.id === Number(selectedKeys[0]))[0].parentId; } } asyncForm('新增', itemList, { parentId: `${node}` }, data => { let handler; if (tab === 'exercise') { handler = Exercise.addStruct(data); } else { handler = Examination.addStruct(data); } return handler.then(() => { asyncSMessage('新增成功!'); this.refresh(); }); }); } editAction() { const { tab, exerciseList, examinationList, selectedKeys } = this.state; let itemList; let list; if (tab === 'exercise') { itemList = this.exerciseItemList; list = exerciseList; } else { itemList = this.examinationItemList; list = examinationList; } asyncForm('编辑', itemList, list.filter(row => row.id === Number(selectedKeys[0])).map(row => { row.parentId = `${row.parentId}`; return row; })[0], data => { let handler; if (tab === 'exercise') { handler = Exercise.editStruct(data); } else { handler = Examination.editStruct(data); } return handler.then(() => { asyncSMessage('编辑成功!'); this.refresh(); }); }); } deleteAction() { const { tab, checkedKeys } = this.state; asyncDelConfirm('删除确认', '是否删除选中节点?', () => { if (tab === 'exercise') { return Promise.all(checkedKeys.map(row => Examination.delStruct({ id: row }))); } return Promise.all(checkedKeys.map(row => Examination.delStruct({ id: row }))); }).then(() => { asyncSMessage('删除成功!'); this.refresh(); }); } renderExamination() { const { loading } = this.state; return this.onAction(key)} /> { this.setState({ selectedKeys }); }} checkedKeys={this.state.checkedKeys} onCheck={(checkedKeys) => { this.setState({ checkedKeys }); }} /> ; } renderExercise() { const { loading } = this.state; return this.onAction(key)} /> { this.setState({ selectedKeys }); }} checkedKeys={this.state.checkedKeys} onCheck={(checkedKeys) => { this.setState({ checkedKeys }); }} /> ; } renderView() { const { tab } = this.state; return { this.setState({ tab: value, selectedKeys: [], checkedKeys: [] }); this.refresh(); }}> {this.renderExercise()} {this.renderExamination()} ; } }