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)}
/>
);
}
}