import React from 'react';
import './index.less';
import { Link } from 'react-router-dom';
import Page from '@src/containers/Page';
import { asyncConfirm } from '@src/services/AsyncTools';
import Tabs from '../../../components/Tabs';
import Module from '../../../components/Module';
import Input from '../../../components/Input';
import Button from '../../../components/Button';
import Division from '../../../components/Division';
import Card from '../../../components/Card';
import ListTable from '../../../components/ListTable';
import ProgressText from '../../../components/ProgressText';
import IconButton from '../../../components/IconButton';
import { Main } from '../../../stores/main';
import { Question } from '../../../stores/question';
const HARD = 'HARD';
const PREVIEW = 'PREVIEW';
const PREVIEW_CLASS = 'PREVIEW_CLASS';
const PREVIEW_TASK = 'PREVIEW_TASK';
const columns = [
{
title: '练习册',
width: 250,
align: 'left',
render: item => {
return (
);
},
},
{
title: '正确率',
width: 150,
align: 'left',
render: item => {
return (
--
{item.stat.totalCorrect / item.stat.totalNumber}
);
},
},
{
title: '全站用时',
width: 150,
align: 'left',
render: item => {
return (
--
全站{item.stat.totalTime / item.stat.totalNumber}s
);
},
},
{
title: '最近做题',
width: 150,
align: 'left',
render: () => {
return (
);
},
},
{
title: '操作',
width: 180,
align: 'left',
render: item => {
return (
{!item.repport.id && (
this.previewAction('start', item)} />
)}
{item.repport.id && (
this.previewAction('continue', item)}
/>
)}
{item.repport.id && (
this.previewAction('restart', item)} />
)}
);
},
},
{
title: '报告',
width: 30,
align: 'right',
render: item => {
return (
{item.report.userNumber === item.report.questionNumber && }
);
},
},
];
export default class extends Page {
initState() {
this.columns = columns;
return {
level1Tab: PREVIEW,
level2Tab: '',
previewType: PREVIEW_CLASS,
tabs: [],
allClass: [],
classProcess: {},
};
}
initData() {
Main.getExercise().then(result => {
const list = result;
const map = {};
for (let i = 0; i < result.length; i += 1) {
const item = result[i];
if (!map[item.parentId]) map[item.parentId] = [];
map[item.parentId].push(item);
}
const tabs = [];
let allClass = [];
tabs.push({ key: HARD, name: '长难句' });
if (map[0]) {
for (let i = 0; i < map[0].length; i += 1) {
const item = map[0][i];
tabs.push({ key: item.id, name: `${item.titleZh} ${item.titleEn}` });
if (map[item.id]) {
allClass = allClass.concat(map[item.id]);
}
}
}
tabs.push({ key: PREVIEW, name: '预习作业' });
this.setState({ tabs, allClass, list, map });
});
this.refreshClassProcess();
}
refreshPreview() {
const { previewType } = this.state;
if (previewType === PREVIEW_CLASS) {
this.refreshClassProcess();
}
if (previewType === PREVIEW_TASK) {
this.refreshListPreview();
}
}
onChangePreviewType(type) {
this.setState({ previewType: type });
this.refreshPreview();
}
refreshClassProcess() {
Question.getClassProcess().then(result => {
const classProcess = {};
for (let i = 0; i < result.length; i += 1) {
const item = result[i];
classProcess[item.category].push(item);
}
this.setState({ classProcess });
});
}
refreshListPreview() {
Question.listPreview().then(result => {
this.setState({ previews: result });
});
}
onChangeTab(level, tab) {
const state = {};
state[`level${level}Tab`] = tab;
this.setState(state);
}
previewAction(type, item) {
switch (type) {
case 'start':
this.startPreview(item);
break;
case 'restart':
this.restartPreview(item);
break;
case 'continue':
this.continuePreview(item);
break;
default:
break;
}
}
startPreview(item) {
linkTo(`/start/${item.id}?type=preview`);
}
restartPreview(item) {
asyncConfirm('提示', '是否重置', () => {
Question.restart(item.report.id).then(() => {
this.refreshPreview();
});
});
}
continuePreview(item) {
linkTo(`/start/${item.id}?type=preview&r=${item.report.id}`);
}
renderView() {
const { level1Tab, level2Tab, tabs, map } = this.state;
return (
this.onChangeTab(1, key)} />
{level1Tab !== HARD && level1Tab !== PREVIEW && (
this.onChangeTab(2, key)} />
)}
{level1Tab !== HARD && level1Tab !== PREVIEW && this.renderType()}
{level1Tab === HARD && this.renderHard()}
{level1Tab === PREVIEW && this.renderWork()}
);
}
renderWork() {
const { previewType } = this.state;
switch (previewType) {
case PREVIEW_CLASS:
return this.renderAllClass();
case PREVIEW_TASK:
return this.renderAllTask();
default:
return ;
}
}
renderAllClass() {
const { allClass, classProcess } = this.state;
return (
完成情况
this.onChangePreviewType(PREVIEW_TASK)}>
全部作业 >
{allClass.map(item => {
return ;
})}
);
}
renderAllTask() {
const { previews } = this.state;
return (
全部作业
this.onChangePreviewType(PREVIEW_CLASS)}>
我的课程 >
);
}
renderHard() {
return this.renderInputCode();
}
renderType() {
return ;
}
renderInputCode() {
return (
输入《千行GMAT长难句》专属 Code,解锁在线练习功能。
什么是CODE?
没有 CODE?
去获取 >>
试用 >>
);
}
}