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'; export default class extends Page { initState() { 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.refreshPreview(); } } 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 (