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 (
{item.title}
); }, }, { 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 (
2019-04-28
07:30
); }, }, { 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? 去获取 >> 试用 >>
); } }