From f019eb1a94ce1beb172bcb82379775b24db938f9 Mon Sep 17 00:00:00 2001 From: WX0lxh <2062408239@qq.com> Date: Fri, 7 Nov 2025 17:30:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageB/train/mockExam/examList.vue | 2 +- packageB/train/mockExam/startExam.vue | 290 +++++++++++++++----------- 2 files changed, 165 insertions(+), 127 deletions(-) diff --git a/packageB/train/mockExam/examList.vue b/packageB/train/mockExam/examList.vue index 6b3836b..a37d93e 100644 --- a/packageB/train/mockExam/examList.vue +++ b/packageB/train/mockExam/examList.vue @@ -270,7 +270,7 @@ function clones(){ dialogVisible.value=false } function handleOperation(row,i) { - navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`); + navTo(`/packageB/train/mockExam/startExam?examPaperId=${row.examPaperId}&timeLimit=${row.timeLimit}&name=${row.name}&types=${i}`); } diff --git a/packageB/train/mockExam/startExam.vue b/packageB/train/mockExam/startExam.vue index 921ad75..09392c2 100644 --- a/packageB/train/mockExam/startExam.vue +++ b/packageB/train/mockExam/startExam.vue @@ -3,10 +3,12 @@
-
正确率:{{accuracyRate}}%
-
用时:{{formattedTime}}
-
暂停
-
继续
+
{{rows.name}}
+
+
考试时长:{{rows.timeLimit}}分钟
+
{{formattedTime}}
+
退出
+
@@ -18,57 +20,29 @@ {{item.content}}
-
+
{{indexToLetter(i)}}
{{val}}
-
+
{{indexToLetter(i)}}
{{val}}
-
+
正确
-
+
错误
-
-
-
回答正确!
-
-
-
-
回答错误!
-
-
-
-
正确答案:
-
{{String.fromCharCode(65 + Number(item.answer))}}.
-
- {{indexToLetter(val-1)}}. -
-
{{item.answer}}
-
-
-
答案解析:
-
{{item.answerDesc}}
-
-
-
知识点:
-
- {{item.knowledgePoint}} -
-
-
+
-
下一题
-
提交答案
+
提交答案
@@ -77,25 +51,10 @@
-
- -
收藏
-
-
- -
取消
-
+
-
完成练习
+
完成练习
-
-
-
{{correctIndex}}
-
-
-
×
-
{{errorsIndex}}
-
{{questionIndex}}/{{problemData.length}}
题号
@@ -124,6 +83,7 @@ const { $api,urls , navTo,navBack , vacanciesTo, formatTotal, config } = inject( import useUserStore from '@/stores/useUserStore'; import useDictStore from '@/stores/useDictStore'; const userInfo = ref({}); +const rows = ref({}); const Authorization = ref(''); const radio = ref(''); const radio2 = ref(''); @@ -131,9 +91,7 @@ const checkList = ref([]); const questionIndex = ref(1); const correctIndex = ref(0); const errorsIndex = ref(0); -const accuracyRate = ref(0); const elapsedTime = ref(0); -const analysis = ref(false); const judgWhether = ref(''); const isRunning = ref(false); const dialogVisible = ref(false); @@ -149,7 +107,6 @@ watch(questionIndex, (newVal, oldVal) => { radio.value="" radio2.value="" checkList.value=[] - analysis.value=false judgWhether.value="" }); @@ -161,6 +118,7 @@ watch(questionIndex, (newVal, oldVal) => { // }); onLoad((options) => { + rows.value=options Authorization.value=uni.getStorageSync('Padmin-Token')||'' getHeart(); }); @@ -201,16 +159,53 @@ function queryData(){ 'Authorization':Authorization.value, 'Content-Type':"application/x-www-form-urlencoded" } - $api.myRequest('/train/public/trainPractice/getQuestions', { - userId: userInfo.value.userId - },'post',9100,header).then((resData) => { - resData.forEach((item,i)=>{ - problemData.value.push(item) - problemList.value.push({index:i+1,whether:""}) - }) - start() - accuracyRates() - }); + if(rows.value.types==1){ + $api.myRequest('/train/public/trainExamDash/getExamTopicNoAnswer', { + userId: userInfo.value.userId, + examPaperId:rows.value.examPaperId + },'post',9100,header).then((resData) => { + elapsedTime.value=(rows.value.timeLimit*60) + resData.forEach((item,i)=>{ + if(item.type=='multiple'){ + item.choice=[] + }else{ + item.choice="" + } + problemData.value.push(item) + problemList.value.push({index:i+1,whether:""}) + }) + start() + }); + }else if(rows.value.types==2){ + $api.myRequest('/train/public/trainExamDash/continueExam', { + userId: userInfo.value.userId, + examPaperId:rows.value.examPaperId + },'post',9100,header).then((resData) => { + if(resData&&resData.code==200){ + elapsedTime.value=(rows.value.timeLimit*60) + resData.data.forEach((item,i)=>{ + if(item.type=='multiple'){ + if(item.choosed){ + item.choice=item.choosed.split(","); + item.submitAnswers=true + }else{ + item.choice=[] + } + }else{ + if(item.choosed){ + item.choice=item.choosed; + item.submitAnswers=true + }else{ + item.choice="" + } + } + problemData.value.push(item) + problemList.value.push({index:i+1,whether:""}) + }) + start() + } + }); + } } function collect(is){ let header={ @@ -225,76 +220,114 @@ function collect(is){ problemData.value[questionIndex.value-1].isCollect=is }); }; -//正确率 -function accuracyRates(){ - let header={ - 'Authorization':Authorization.value, - 'Content-Type':"application/x-www-form-urlencoded" - } - $api.myRequest('/train/public/trainPractice/getCount', { - userId: userInfo.value.userId, - },'post',9100,header).then((resData) => { - accuracyRate.value=resData.truePresent - }); -}; + //提交答案 function submit(){ let indexs=questionIndex.value-1 let parm={ + examPaperId:rows.value.examPaperId, questionId:problemData.value[indexs].questionId, userId:userInfo.value.userId, - answer:problemData.value[indexs].answer - } - if(problemData.value[indexs].type=='single'){ - parm.submitAnswer=radio.value - }else if(problemData.value[indexs].type=='multiple'){ - parm.submitAnswer=checkList.value.join(',') - }else if(problemData.value[indexs].type=='judge'){ - parm.submitAnswer=radio2.value + answer:problemData.value[indexs].type=='multiple'?problemData.value[indexs].choice.join(","):problemData.value[indexs].choice, + examId:problemData.value[indexs].examId } let header={ 'Authorization':Authorization.value, 'Content-Type':"application/json" } - $api.myRequest('/train/public/trainPractice/submitAnswer', parm,'post',9100,header).then((resData) => { + $api.myRequest('/train/public/trainExamDash/submitAnswer', parm,'post',9100,header).then((resData) => { if(resData&&resData.code==200){ - analysis.value=true - judgWhether.value=resData.msg - problemList.value[indexs].whether=resData.msg - if(resData.msg=='正确'){ - correctIndex.value++ - }else if(resData.msg=='错误'){ - errorsIndex.value++ + problemData.value[indexs].submitAnswers=true + if(problemData.value.length==questionIndex.value){ + $api.msg('已经是最后一题了', '请仔细检查后交卷') + + }else{ + questionIndex.value+=1 } - accuracyRates() } }); }; -function selected(i){ - radio.value=i +//完成练习 +function complete(){ + let arr=[] + problemData.value.forEach((item,index)=>{ + if(!item.submitAnswers){ + arr.push(index+1) + } + }) + wx.showModal({ + title: '提示', + content: (arr.length>0?'第'+arr.join(",")+'题还未作答,':'请仔细检查试卷 ,')+'确认是否交卷?', + success (res) { + if (res.confirm) { + onpaper() + } else if (res.cancel) { + console.log('用户点击取消') + } + } + }) + this.$confirm((arr.length>0?'第'+arr.join(",")+'题还未作答,':'请仔细检查试卷 ,')+'确认是否交卷?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + onpaper() + }).catch(() => { + this.$message({ + type: 'info', + message: '已取消' + }); + }); + +}; +function onpaper(){ + let indexs=questionIndex.value-1 + let parm={ + examPaperId:rows.value.examPaperId, + userId:userInfo.value.userId, + examId:problemData.value[indexs].examId, + useTime:(rows.value.timeLimit*60) - elapsedTime.value, + } + let header={ + 'Authorization':Authorization.value, + 'Content-Type':"application/json" + } + $api.myRequest('/train/public/trainExamDash/submitExam', parm,'post',9100,header).then((resData) => { + if(resData&&resData.code==200){ + $api.msg('提交成功!') + navBack() + } + }); +}; +function selected(i,index){ + problemData.value[index].choice=i + problemData.value=JSON.parse(JSON.stringify(problemData.value)) }; //多选 -function selected2(i){ - let arr=checkList.value.join(",") +function selected2(i,indexs){ + let arr=problemData.value[indexs].choice.join(",") if(arr.indexOf(i) !== -1){ - const index = checkList.value.indexOf(i); + const index = problemData.value[indexs].choice.indexOf(i); if (index !== -1) { - checkList.value.splice(index, 1); + problemData.value[indexs].choice.splice(index, 1); } }else{ - checkList.value.push(i) + problemData.value[indexs].choice.push(i) } + problemData.value=JSON.parse(JSON.stringify(problemData.value)) }; -function judgment(i){ - let arr=checkList.value.join(",") +function judgment(i,indexs){ + let arr=problemData.value[indexs].choice.join(",") if(arr.indexOf(i) !== -1){ return true }else{ return false } }; -function selected3(i){ - radio2.value=i +function selected3(i,index){ + // radio2.value=i + problemData.value[index].choice=i + problemData.value=JSON.parse(JSON.stringify(problemData.value)) }; // 解析选项 function parseOptions(options) { @@ -320,14 +353,16 @@ function start() { if (isRunning.value) return isRunning.value = true timer = setInterval(() => { - elapsedTime.value++ + elapsedTime.value-=1 + if(elapsedTime.value==0){ + // this.$message({ + // message: '考试时间已结束,系统将自动交卷', + // type: 'warning' + // }); + onpaper() + } }, 1000) }; -function pause() { - if (!isRunning.value) return - clearInterval(timer) - isRunning.value = false -}; function clones(){ dialogVisible.value=false }; @@ -360,23 +395,26 @@ function exit(){ padding: 20rpx 28rpx; box-sizing: border-box; .header{ - height: 100rpx; - padding: 0 10rpx; - display: flex; - align-items: center; - justify-content: space-between; + height: 110rpx; + padding: 10rpx 10rpx 0; background: linear-gradient(0deg, #4285EC 0%, #0BBAFB 100%); color: #fff; font-size: 26rpx; border-radius: 10rpx - .headBtn{ - background: #499FFF; - border-radius: 4px; - width: 100rpx; - text-align: center; - height: 50rpx; - line-height: 50rpx; + .headerCon{ + display: flex; + align-items: center; + justify-content: space-between; + .headBtn{ + background: #499FFF; + border-radius: 4px; + width: 100rpx; + text-align: center; + height: 50rpx; + line-height: 50rpx; + } } + } .problemCard{ margin-top: 30rpx; From dc62eace271809ff876b4dede60bddffe4159b72 Mon Sep 17 00:00:00 2001 From: WX0lxh <2062408239@qq.com> Date: Sat, 8 Nov 2025 11:26:35 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageB/train/mockExam/startExam.vue | 62 ++++++++++++++------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/packageB/train/mockExam/startExam.vue b/packageB/train/mockExam/startExam.vue index 09392c2..cd5a279 100644 --- a/packageB/train/mockExam/startExam.vue +++ b/packageB/train/mockExam/startExam.vue @@ -33,10 +33,10 @@
-
+
正确
-
+
错误
@@ -164,17 +164,19 @@ function queryData(){ userId: userInfo.value.userId, examPaperId:rows.value.examPaperId },'post',9100,header).then((resData) => { - elapsedTime.value=(rows.value.timeLimit*60) - resData.forEach((item,i)=>{ - if(item.type=='multiple'){ - item.choice=[] - }else{ - item.choice="" - } - problemData.value.push(item) - problemList.value.push({index:i+1,whether:""}) - }) - start() + if(resData&&resData.code==200){ + elapsedTime.value=(rows.value.timeLimit*60) + resData.data.forEach((item,i)=>{ + if(item.type=='multiple'){ + item.choice=[] + }else{ + item.choice="" + } + problemData.value.push(item) + problemList.value.push({index:i+1,whether:""}) + }) + start() + } }); }else if(rows.value.types==2){ $api.myRequest('/train/public/trainExamDash/continueExam', { @@ -190,11 +192,13 @@ function queryData(){ item.submitAnswers=true }else{ item.choice=[] + item.submitAnswers=false } }else{ if(item.choosed){ item.choice=item.choosed; item.submitAnswers=true + item.submitAnswers=false }else{ item.choice="" } @@ -233,14 +237,13 @@ function submit(){ } let header={ 'Authorization':Authorization.value, - 'Content-Type':"application/json" + 'Content-Type':"application/x-www-form-urlencoded" } $api.myRequest('/train/public/trainExamDash/submitAnswer', parm,'post',9100,header).then((resData) => { if(resData&&resData.code==200){ problemData.value[indexs].submitAnswers=true if(problemData.value.length==questionIndex.value){ - $api.msg('已经是最后一题了', '请仔细检查后交卷') - + $api.msg('已经是最后一题了,请仔细检查后交卷!') }else{ questionIndex.value+=1 } @@ -266,18 +269,7 @@ function complete(){ } } }) - this.$confirm((arr.length>0?'第'+arr.join(",")+'题还未作答,':'请仔细检查试卷 ,')+'确认是否交卷?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { - onpaper() - }).catch(() => { - this.$message({ - type: 'info', - message: '已取消' - }); - }); + }; function onpaper(){ @@ -290,7 +282,7 @@ function onpaper(){ } let header={ 'Authorization':Authorization.value, - 'Content-Type':"application/json" + 'Content-Type':"application/x-www-form-urlencoded" } $api.myRequest('/train/public/trainExamDash/submitExam', parm,'post',9100,header).then((resData) => { if(resData&&resData.code==200){ @@ -371,7 +363,17 @@ function switchs(i){ dialogVisible.value=false }; function exit(){ - navBack() + wx.showModal({ + title: '提示', + content: '直接退出是不计分的, 确定要退出吗?', + success (res) { + if (res.confirm) { + navBack() + } else if (res.cancel) { + console.log('用户点击取消') + } + } + }) } From a2a4955e87adeda7b5ceb8ee535bbe05a3a2dc3b Mon Sep 17 00:00:00 2001 From: WX0lxh <2062408239@qq.com> Date: Sat, 8 Nov 2025 14:05:56 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageB/train/mockExam/examList.vue | 6 +- packageB/train/mockExam/paperDetails.vue | 9 +++ packageB/train/mockExam/viewGrades.vue | 75 ++++++++++++++++++++---- pages.json | 6 ++ 4 files changed, 82 insertions(+), 14 deletions(-) create mode 100644 packageB/train/mockExam/paperDetails.vue diff --git a/packageB/train/mockExam/examList.vue b/packageB/train/mockExam/examList.vue index a37d93e..d57e7a9 100644 --- a/packageB/train/mockExam/examList.vue +++ b/packageB/train/mockExam/examList.vue @@ -57,7 +57,7 @@
截止时间:{{item.dueDate}}
-
查看成绩
+
查看成绩
详情
@@ -263,8 +263,8 @@ function handleDetail(row){ } }); } -function jumps(url){ - navTo(url); +function jumps(row){ + navTo('/packageB/train/mockExam/viewGrades?examPaperId='+row.examPaperId); } function clones(){ dialogVisible.value=false diff --git a/packageB/train/mockExam/paperDetails.vue b/packageB/train/mockExam/paperDetails.vue new file mode 100644 index 0000000..af8c001 --- /dev/null +++ b/packageB/train/mockExam/paperDetails.vue @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/packageB/train/mockExam/viewGrades.vue b/packageB/train/mockExam/viewGrades.vue index 5bd0ad2..1c791a6 100644 --- a/packageB/train/mockExam/viewGrades.vue +++ b/packageB/train/mockExam/viewGrades.vue @@ -2,20 +2,69 @@
-
-
考试名称:456546456
-
考试时间:456546456
-
考试成绩:456546456
-
-
查看
-
-
查看
+
- \ No newline at end of file diff --git a/packageB/train/mockExam/startExam.vue b/packageB/train/mockExam/startExam.vue index cd5a279..e74b951 100644 --- a/packageB/train/mockExam/startExam.vue +++ b/packageB/train/mockExam/startExam.vue @@ -198,9 +198,9 @@ function queryData(){ if(item.choosed){ item.choice=item.choosed; item.submitAnswers=true - item.submitAnswers=false }else{ item.choice="" + item.submitAnswers=false } } problemData.value.push(item) diff --git a/packageB/train/mockExam/viewGrades.vue b/packageB/train/mockExam/viewGrades.vue index 1c791a6..a4b69bc 100644 --- a/packageB/train/mockExam/viewGrades.vue +++ b/packageB/train/mockExam/viewGrades.vue @@ -8,7 +8,7 @@
考试时间:{{item.createTime}}
考试成绩:{{item.score}}分
-
查看
+
查看
@@ -62,8 +62,8 @@ function queryData(){ } }); } -function detail(){ - +function detail(row){ + navTo('/packageB/train/mockExam/paperDetails?examPaperId='+row.examPaperId+'&examId='+row.examId+'&name='+row.name); } From 3e27ad7683bcce2601d007b36c0583d1d1d28612 Mon Sep 17 00:00:00 2001 From: WX0lxh <2062408239@qq.com> Date: Sat, 8 Nov 2025 14:36:04 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageB/train/practice/startPracticing.vue | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packageB/train/practice/startPracticing.vue b/packageB/train/practice/startPracticing.vue index 96a39f9..e04e075 100644 --- a/packageB/train/practice/startPracticing.vue +++ b/packageB/train/practice/startPracticing.vue @@ -273,6 +273,9 @@ function submit(){ }else if(resData.msg=='错误'){ errorsIndex.value++ } + if(questionIndex.value==problemData.value.length){ + $api.msg('已经是最后一题了,请点击 “完成练习” 按钮保存记录') + } accuracyRates() } }); @@ -343,7 +346,21 @@ function switchs(i){ dialogVisible.value=false }; function exit(){ - navBack() + let header={ + 'Authorization':Authorization.value, + 'Content-Type':"application/x-www-form-urlencoded" + } + $api.myRequest('/train/public/trainPractice/getCount', { + userId: userInfo.value.userId, + title:"专项练习", + type:"practice", + hour:elapsedTime.value, + truePresent:accuracyRate.value + },'post',9100,header).then((resData) => { + if(resData&&resData.code==200){ + navBack() + } + }); }