import React from 'react'; import './index.less'; import { Tooltip, Popover, Checkbox } from 'antd'; import Page from '@src/containers/Page'; import { timeRange } from '@src/services/Tools'; import Assets from '@src/components/Assets'; import UserLayout from '../../../layouts/User'; import UserAction from '../../../components/UserAction'; import UserTable from '../../../components/UserTable'; import IconButton from '../../../components/IconButton'; import menu, { refreshQuestionType, refreshStruct } from '../index'; import Tabs from '../../../components/Tabs'; import { TimeRange } from '../../../../Constant'; import { My } from '../../../stores/my'; export default class extends Page { constructor(props) { props.size = 10; super(props); this.columns = [ { key: 'title', title: '练习册名称', fixSort: true }, { key: 'create_time', title: '做题时间', fixSort: true, render: (text, row, index) => { return (
2019-12-12 {row.children && ( {row.children.map((child, i) => { return ( {row.children.length - i} 2019-12-12 13:13:13 3/20 this.onChangeShowHistory(index, i, e.target.checked)} /> ); })} } > )}
13:13:13
); }, }, { key: 'correct', title: '正确率', sort: true }, { key: 'time', title: '平均耗时', sort: true }, { key: 'progress', title: '完成度' }, { key: 'report', title: '报告', render() { return ; }, }, ]; } initState() { return { tab: 'exercise', timerange: 'today', filterMap: {}, sortMap: {}, list: [{ children: [{}, {}] }, {}, {}, {}], selectList: [], allChecked: false, }; } initData() { const data = Object.assign(this.state, this.state.search); data.filterMap = this.state.search; if (data.order) { data.sortMap = { [data.order]: data.direction }; } if (data.timerange) { data.filterMap.timerange = data.timerange; } const [startTime, endTime] = timeRange(data.timerange); switch (data.tab) { case 'error': case 'collect': My.listReport( Object.assign({ origin: data.tab, startTime, endTime }, this.state.search, { order: Object.keys(data.sortMap) .map(key => { return `${key} ${data.sortMap[key]}`; }) .join(','), }), ).then(result => { this.setState({ list: result.list, total: result.total, page: data.page }); }); break; case 'exercise': case 'examination': default: refreshQuestionType(this, data.subject, data.questionType, { all: true, needSentence: true, allSubject: true, }).then(({ questionTypes, courseModules }) => { return refreshStruct(this, data.tab, data.one, data.two, { all: true, needPreview: true, needTextbook: true, }).then(({ structIds, latest, year }) => { My.listReport( Object.assign( { module: data.tab, questionTypes, structIds, latest, year, courseModules, startTime, endTime }, this.state.search, { order: Object.keys(data.sortMap) .map(key => { return `${key} ${data.sortMap[key]}`; }) .join(','), }, ), ).then(result => { this.setState({ list: result.list, total: result.total, page: data.page }); }); }); }); } } onChangeShowHistory(index, childIndex, show) { const { list } = this.state; list[index].children[childIndex].disabled = !show; this.setState({ list }); } onTabChange(tab) { const data = { tab }; this.refreshQuery(data); } onFilter(value) { this.search(value); } onSort(value) { const keys = Object.keys(value); // this.search({ order: keys.length ? keys.join('|') : null, direction: keys.length ? Object.values(value).join('|') : null }); const { sortMap } = this.state; const index = keys.length > 1 && sortMap[keys[0]] ? 1 : 0; this.search({ order: keys.length ? keys[index] : null, direction: keys.length ? value[keys[index]] : null }); } onChangePage(page) { this.search({ page }); } renderView() { const { config } = this.props; return ; } renderTable() { const { tab, questionSubjectSelect, questionSubjectMap = {}, oneSelect, twoSelectMap = {}, filterMap = {}, sortMap = {}, list = [], } = this.state; const { selectList = [], page, total } = this.state; return (
this.onTabChange(key)} /> this.onFilter(value)} onChange={key => this.onChangeTab(key)} /> this.onSelect(l)} onSort={v => this.onSort(v)} onChange={p => this.onChangePage(p)} />
); } }