import React from 'react'; import { Breadcrumb, Tooltip, Switch } from 'antd'; import './index.less'; import Page from '@src/containers/Page'; import { asyncConfirm, asyncSMessage } from '@src/services/AsyncTools'; import { formatPercent, formatDate } from '@src/services/Tools'; import ListTable from '../../../components/ListTable'; import ProgressText from '../../../components/ProgressText'; import IconButton from '../../../components/IconButton'; import Button from '../../../components/Button'; import { Main } from '../../../stores/main'; import { Question } from '../../../stores/question'; export default class extends Page { initState() { this.qxCatColumns = [{ title: '模考', width: 250, align: 'left', render: (record) => { let progress = 0; if (record.report) { progress = formatPercent(record.report.userNumber, record.report.questionNumber); } return (
{record.title}{record.paper && record.paper.paperNo > 0 ? String.fromCharCode(64 + record.paper.paperNo) : ''}
{this.state.showPrev &&
{record.title}{record.prevPaper && record.prevPaper.paperNo > 0 ? String.fromCharCode(64 + record.prevPaper.paperNo) : ''}
}
); }, }, { title: 'Total', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.totalScore / record.totalTimes)}分
{this.state.showPrev && record.prevReport &&
{record.prevReport.score.total}分{record.prevReport.score.totalRank}th
全站: {Math.round(record.totalScore / record.totalTimes)}分
}
); }, }, { title: 'Verbal', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.verbalScore / record.totalTimes)}分
{this.state.showPrev && record.prevReport &&
{record.prevReport.score.verbal}分{record.prevReport.score.verbalRank}th
全站: {Math.round(record.verbalScore / record.totalTimes)}分
}
); }, }, { title: 'Quant', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.quantScore / record.totalTimes)}分
{this.state.showPrev && record.prevReport &&
{record.prevReport.score.quant}分{record.prevReport.score.quantRank}th
全站: {Math.round(record.quantScore / record.totalTimes)}分
}
); }, }, { title: 'IR', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.irScore / record.totalTimes)}分
{this.state.showPrev && record.prevReport &&
{record.prevReport.score.ir}分{record.prevReport.score.irRank}th
全站: {Math.round(record.irScore / record.totalTimes)}分
}
); }, }, { title: '做题时间', width: 150, align: 'left', render: (record) => { return (
{record.report && formatDate(record.report.updateTime, 'YYYY-MM-DD')}
{record.report && formatDate(record.report.updateTime, 'HH:mm')}
{this.state.showPrev && record.prevReport &&
{formatDate(record.prevReport.updateTime, 'YYYY-MM-DD')}
{formatDate(record.prevReport.updateTime, 'HH:mm')}
}
); }, }, { title: '操作', width: 180, align: 'left', render: (record) => { return (
{!record.report && { Question.startLink('examination', record); }} />} {(record.report && !record.report.isFinish) && { Question.continueLink('examination', record); }} />}
); }, }, { title: '报告', width: 30, align: 'right', render: (record) => { return (
{record.report && record.report.isFinish && { Question.reportLink(record); }} />} {this.state.showPrev &&
{record.prevReport && { Question.reportPrevLink(record); }} />}
}
); }, }]; this.catColumns = [{ title: '模考', width: 250, align: 'left', render: (record) => { let progress = 0; if (record.report) { progress = formatPercent(record.report.userNumber, record.report.questionNumber); } return (
{record.title}{record.paper && record.paper.paperNo > 0 ? String.fromCharCode(64 + record.paper.paperNo) : ''}
); }, }, { title: 'Total', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.totalScore / record.totalTimes)}分
); }, }, { title: 'Verbal', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.verbalScore / record.totalTimes)}分
); }, }, { title: 'Quant', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.quantScore / record.totalTimes)}分
); }, }, { title: 'IR', width: 150, align: 'left', render: (record) => { return (
{record.report ? `${record.report.score.total}分${record.report.score.totalRank}th` : '-分-th'}
全站: {Math.round(record.irScore / record.totalTimes)}分
); }, }, { title: '做题时间', width: 150, align: 'left', render: (record) => { return (
{record.report && formatDate(record.report.updateTime, 'YYYY-MM-DD')}
{record.report && formatDate(record.report.updateTime, 'HH:mm')}
); }, }, { title: '操作', width: 180, align: 'left', render: (record) => { return (
{!record.report && { Question.startLink('examination', record); }} />} {(record.report && !record.report.isFinish) && { Question.continueLink('examination', record); }} />} { this.restart(record); }} />
); }, }, { title: '报告', width: 30, align: 'right', render: (record) => { return (
{record.report && record.report.isFinish && { Question.reportLink(record); }} />} {this.state.showPrev &&
{record.prevReport && { Question.reportPrevLink(record); }} />}
}
); }, }]; this.columns = [{ title: '模考', width: 250, align: 'left', render: (record) => { let progress = 0; if (record.report) { progress = formatPercent(record.report.userNumber, record.report.questionNumber); } return (
{record.title}
); }, }, { title: 'Total', width: 150, align: 'left', render: () => { return (
仅CAT模考
); }, }, { title: 'Verbal', width: 150, align: 'left', render: (record) => { return (
{record.report ? formatPercent(record.report.setting.number.verbal, this.nums.verbal.number, false) : '0%'}
); }, }, { title: 'Quant', width: 150, align: 'left', render: (record) => { return (
{record.report ? formatPercent(record.report.setting.number.quant, this.nums.quant.number, false) : '0%'}
); }, }, { title: 'IR', width: 150, align: 'left', render: (record) => { return (
{record.report ? formatPercent(record.report.setting.number.ir, this.nums.ir.number, false) : '0%'}
); }, }, { title: '做题时间', width: 150, align: 'left', render: (record) => { if (!record.report) return null; return (
{formatDate(record.report.updateTime, 'YYYY-MM-DD')}
{formatDate(record.report.updateTime, 'HH:mm')}
); }, }, { title: '操作', width: 180, align: 'left', render: (record) => { return (
{!record.report && { Question.startLink('examination', record); }} />} {(record.report && !record.report.isFinish) && { Question.continueLink('examination', record); }} />} { this.restart(record); }} />
); }, }, { title: '报告', width: 30, align: 'right', render: (record) => { if (!record.report || !record.report.isFinish) return null; return (
{ Question.reportLink(record); }} />
); }, }]; this.inited = false; return { }; } init() { const { id } = this.params; Main.getExaminationParent(id).then(result => { const navs = result.map(row => { row.title = `${row.titleZh}${row.titleEn}`; return row; }); this.cat = navs.filter(row => row.isAdapt > 0).length > 0; this.qxCat = navs.filter(row => row.isAdapt > 1).length > 0; Main.getExaminationNumber().then(nums => { this.nums = nums; this.inited = true; this.setState({ navs }); this.refreshData(); }); }); } initData() { const data = Object.assign(this.state, this.state.search); this.setState(data); if (this.inited) this.refreshData(); } refreshData() { if (this.cat) { Question.getExaminationInfo().then((result) => { this.setState({ examination: result }); }); } this.refreshExamination(); } refreshExamination() { Question.getExaminationList(Object.assign({ structId: this.params.id }, this.state.search)) .then((result) => { this.setState({ list: result.list, total: result.total }); }) .catch(err => { asyncSMessage(err.message, 'warn'); // linkTo('/examination'); }); } restart(item) { asyncConfirm('提示', '是否重置', () => { Question.restart(item.paper.id).then(() => { this.refresh(); }); }); } resetCat() { asyncConfirm('提示', '是否重置', () => { Question.resetCat().then(() => { this.refresh(); }); }); } renderView() { const { list, navs, search, examination = {} } = this.state; const { finish } = search; return (
模考 {(navs || []).map(row => { return {row.title}; })}
} filters={[ { type: 'radio', checked: finish, list: [{ key: '0', title: '未完成' }, { key: '1', title: '已完成' }], onChange: item => { if (item.key === finish) { this.search({ finish: null }); } else if (item.key === '0') { this.search({ finish: 0 }); } else if (item.key === '1') { this.search({ finish: 1 }); } else { this.search({ finish: null }); } }, }, ]} data={list} columns={this.qxCat ? this.qxCatColumns : (this.cat ? this.catColumns : this.columns)} />
); } }