From 41917aa750d1d3f97f129bbea338cf40a287cbfa Mon Sep 17 00:00:00 2001 From: wangxi <123456> Date: Thu, 3 Mar 2022 19:12:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E8=B4=A8=E8=80=83=E8=AF=95=E5=80=92?= =?UTF-8?q?=E8=AE=A1=E6=97=B6=EF=BC=8C=E8=80=83=E8=AF=95=E7=94=A8=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/config/config.ts | 4 +- .../dashboard/qualification/examAnswer.tsx | 68 +++++++++++++++++-- .../pages/dashboard/qualification/index.tsx | 21 +++++- .../pages/dashboard/qualification/result.tsx | 48 ++++++++++++- .../pages/dashboard/qualification/service.ts | 9 +++ 5 files changed, 140 insertions(+), 10 deletions(-) diff --git a/web/config/config.ts b/web/config/config.ts index 0010e5d..ebd1a25 100644 --- a/web/config/config.ts +++ b/web/config/config.ts @@ -82,14 +82,14 @@ export default defineConfig({ { name: '资质考试答题', icon: 'dashboard', - path: '/dashboard/qualification/examAnswer/:examination_id/:examination_name', + path: '/dashboard/qualification/examAnswer/:examination_id/:examination_name/:time/:duration', component: './dashboard/qualification/examAnswer', hideInMenu: true, }, { name: '资质考试結果頁面', icon: 'dashboard', - path: '/dashboard/qualification/result/:pass_score/:score/:sum_score/:examination_id/:examination_name', + path: '/dashboard/qualification/result/:pass_score/:score/:sum_score/:examination_id/:examination_name/:time', component: './dashboard/qualification/result', hideInMenu: true, }, diff --git a/web/src/pages/dashboard/qualification/examAnswer.tsx b/web/src/pages/dashboard/qualification/examAnswer.tsx index 0c41c9a..0faea5c 100644 --- a/web/src/pages/dashboard/qualification/examAnswer.tsx +++ b/web/src/pages/dashboard/qualification/examAnswer.tsx @@ -14,7 +14,51 @@ import ProCard from '@ant-design/pro-card'; const CheckboxGroup = Checkbox.Group; const { Paragraph } = Typography; +// 秒数转化为时分秒 +const formatSeconds = (value) => { + // 秒 + let second = parseInt(value) + // 分 + let minute = 0 + // 小时 + let hour = 0 + // 天 + // let day = 0 + // 如果秒数大于60,将秒数转换成整数 + if (second > 60) { + // 获取分钟,除以60取整数,得到整数分钟 + minute = parseInt(second / 60) + // 获取秒数,秒数取佘,得到整数秒数 + second = parseInt(second % 60) + // 如果分钟大于60,将分钟转换成小时 + if (minute > 60) { + // 获取小时,获取分钟除以60,得到整数小时 + hour = parseInt(minute / 60) + // 获取小时后取佘的分,获取分钟除以60取佘的分 + minute = parseInt(minute % 60) + // 如果小时大于24,将小时转换成天 + // if (hour > 23) { + // // 获取天数,获取小时除以24,得到整天数 + // day = parseInt(hour / 24) + // // 获取天数后取余的小时,获取小时除以24取余的小时 + // hour = parseInt(hour % 24) + // } + } + } + let result = '' + parseInt(second) + ' 秒 ' + if (minute > 0) { + result = '' + parseInt(minute) + ' 分 ' + result + } + if (hour > 0) { + result = '' + parseInt(hour) + ' 小时 ' + result + } + // if (day > 0) { + // result = '' + parseInt(day) + '天' + result + // } + // console.log('result:', result) + return result +} const CardList = () => { const formRef = useRef(); @@ -39,8 +83,20 @@ const CardList = () => { const [questionNowNum, setQuestionNowNum] = useState(0) const [questionNum, setQuestioNum] = useState(0) + const [timeData, setTimeData] = useState(0); - + useEffect(() => { + let secondValue = params.time; // 秒 截至时间 - 服务器当前时间 + setTimeData(secondValue) + // console.log(secondValue); + + const timer = setInterval(() => { // + setTimeData((secondValue >= 1) ? secondValue-- : 0); + }, 1000); + return () => { + clearInterval(timer) // 清理计算器 + } + }, []) const params = useParams(); @@ -148,7 +204,10 @@ const CardList = () => { }, onSuccess: (result, params) => { if(result.success){ - history.push(`/dashboard/qualification/result/${result.data.pass_score}/${result.data.score}/${result.data.sum_score}/${params.examination_id}/${params.examination_name}`); + const time=new Date(timeData).getTime(); + const timeDiff=params.duration/1000-time; + // console.log('timeDiff',timeDiff) + history.push(`/dashboard/qualification/result/${result.data.pass_score}/${result.data.score}/${result.data.sum_score}/${params.examination_id}/${params.examination_name}/${timeDiff}`); } } }); @@ -157,6 +216,7 @@ const CardList = () => { + useEffect(() => { // 已选择题目回显 formRef?.current?.setFieldsValue({ note: questionNow.answerId }); @@ -426,7 +486,7 @@ const CardList = () => {
剩余时间 - 6分14秒 + {formatSeconds(timeData)} 答题序号 {questionNowNum}/{questionNum} @@ -501,9 +561,9 @@ const CardList = () => { person_id: cookie.load('person_id'), paper_id: rulesPaperInfo } + // console.log(questionFinish, 'questionFinish', rulesPaperInfo) runFinishExamination(questionFinish) - // console.log(paperInfo) // console.log(questionTypeList) // console.log(questionNow) diff --git a/web/src/pages/dashboard/qualification/index.tsx b/web/src/pages/dashboard/qualification/index.tsx index 1850bd5..cacf023 100644 --- a/web/src/pages/dashboard/qualification/index.tsx +++ b/web/src/pages/dashboard/qualification/index.tsx @@ -7,7 +7,7 @@ import { PageContainer } from '@ant-design/pro-layout'; import moment from 'moment'; import EditableLinkGroup from './components/EditableLinkGroup'; import styles from './style.less'; -import {getExaminationById,getExaminationRuleById ,getPersonPaperId } from './service'; +import {getExaminationById,getExaminationRuleById ,getPersonPaperId,getCurrentDate } from './service'; import cookie from 'react-cookies'; import OfflineData from './components/OfflineData'; @@ -50,6 +50,16 @@ const Qualification = () => { } }); + const getTime=(time)=>{ + const current_date=new Date(time.current_date.replace(/-/g, "/")) + const start_date=new Date(rule.examination_start_time.replace(/-/g, "/")); + const end_date=new Date(rule.examination_end_time.replace(/-/g, "/")); + const duration=end_date.getTime()-start_date.getTime(); + const dateDiff=end_date.getTime()-current_date.getTime(); + const date=dateDiff/1000; + history.push(`/dashboard/qualification/examAnswer/${params.examination_id}/${examinationInfo.examination_name}/${date}/${duration}`) + } + return (
{history.push('/dashboard/workplace')}} style={{color:'#8C8C8C',cursor:'pointer',}}>首页 / 资质考试
@@ -75,11 +85,16 @@ const Qualification = () => { {rule?rule.pass_score===null?'--':rule.pass_score:'--'}分
-