资质考试倒计时,考试用时

master
wangxi 3 years ago
parent d7a3c996f9
commit 41917aa750

@ -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,
},

@ -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<ActionType>();
@ -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 = () => {
<div style={{ background: '#ffffff', padding: 24 }}>
<Space direction="vertical" style={{ width: '100%' }}>
<strong></strong>
<Typography>614</Typography>
<Typography>{formatSeconds(timeData)}</Typography>
<Divider style={{ margin: '6px 0', opacity: 0.5 }} />
<strong></strong>
<Typography>{questionNowNum}/{questionNum}</Typography>
@ -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)

@ -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 (
<div className="qualification" style={{height:window.innerHeight-200,background:'#fff',width:'100%',padding:20}}>
<div ><span className="title" onClick={()=>{history.push('/dashboard/workplace')}} style={{color:'#8C8C8C',cursor:'pointer',}}></span> / </div>
@ -75,11 +85,16 @@ const Qualification = () => {
<span className='condition-text' >{rule?rule.pass_score===null?'--':rule.pass_score:'--'}</span>
</div>
<div style={{textAlign:'center'}}>
<Button type={"primary"} onClick={() => {
<Button type={"primary"} onClick={async() => {
if(paperId===''){
message.warning('您已参加过考试,不能开始考试!');
}else {
history.push(`/dashboard/qualification/examAnswer/${params.examination_id}/${examinationInfo.examination_name}`)}}
const time = await getCurrentDate();
getTime(time);
// history.push(`/dashboard/qualification/examAnswer/${params.examination_id}/${examinationInfo.examination_name}`)
}
}
}

@ -11,6 +11,51 @@ import {getExaminationById,getPersonPaperId } from './service';
import cookie from 'react-cookies';
import OfflineData from './components/OfflineData';
// 秒数转化为时分秒
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
}
import './index.less';
const Result = () => {
const [examinationInfo, setExamination] = useState({});
@ -32,6 +77,7 @@ const Result = () => {
}
};
useEffect(() => {
getPass()
}, []);
@ -60,7 +106,7 @@ const Result = () => {
<div style={{width:'12rem',margin:'0 auto'}}>
<div className='condition' >
<div className='condition-title' ></div>
<span className='condition-text' >--</span>
<span className='condition-text' >{params?formatSeconds(params.time):'--分钟'}</span>
</div>
<div className='condition' >
<div className='condition-title' ></div>

@ -26,6 +26,15 @@ export async function getPersonPaperId(params: {
params,
});
}
//获取当前时间
export async function getCurrentDate(params: {
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/zygh/training/examination/getCurrentDate', {
params,
});
}

Loading…
Cancel
Save