|
@@ -4,11 +4,15 @@ import moment from 'moment';
|
|
|
import audio from "@/utils/audio";
|
|
|
import { useStore } from "vuex";
|
|
|
import { message } from "ant-design-vue";
|
|
|
+import api from "@/api";
|
|
|
+import { useRoute } from "vue-router";
|
|
|
+import router from "@/router";
|
|
|
export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoRes>, config = {
|
|
|
countDown: true,
|
|
|
autoAnswer: true
|
|
|
}) => {
|
|
|
const store = useStore()
|
|
|
+ const route = useRoute()
|
|
|
let timerId = 0
|
|
|
let examTimeMillSeconds = config.countDown ? 45 * 60 * 1000 : 0
|
|
|
const falseNum = ref(0)
|
|
@@ -584,15 +588,9 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
|
|
|
}
|
|
|
};
|
|
|
//用于直接出结果
|
|
|
- const setUserAnswerAndRes = (answer: string) => {
|
|
|
- if (list.value[listIndex.value].questionType == 3) {
|
|
|
- let userAnswer = list.value[listIndex.value].userAnswer as string[];
|
|
|
- console.log(userAnswer.indexOf(answer))
|
|
|
- if (userAnswer.indexOf(answer) > -1) {
|
|
|
- userAnswer = userAnswer.splice(userAnswer.indexOf(answer), 1)
|
|
|
- } else {
|
|
|
- userAnswer.push(answer);
|
|
|
- }
|
|
|
+ const setUserAnswerAndRes = (answer: string | string[]) => {
|
|
|
+ if (list.value[listIndex.value].questionType == 3 && Array.isArray(answer)) {
|
|
|
+ list.value[listIndex.value].userAnswer = answer;
|
|
|
} else {
|
|
|
list.value[listIndex.value].userAnswer = answer;
|
|
|
}
|
|
@@ -709,6 +707,70 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
|
|
|
|
|
|
}
|
|
|
return redIssue
|
|
|
+ }
|
|
|
+ //驾驶考试提交
|
|
|
+ const submitDriveExam = () => {
|
|
|
+ setUserAnswerAndRes(list.value[listIndex.value].userAnswer)
|
|
|
+ let score = 0
|
|
|
+ const wrongList: openApi.selectFreeQuestionInfoRes["rows"] = []
|
|
|
+ const wrongListRes: string[] = []
|
|
|
+ list.value.forEach((item, index) => {
|
|
|
+ //题目正确加分
|
|
|
+ if (item.isComplete && !item.isError && list.value[index].userAnswer.length > 0) {
|
|
|
+ score = score + 1
|
|
|
+ }
|
|
|
+ else if (!item.isComplete && list.value[index].userAnswer.length == 0) {
|
|
|
+ //没做的题目
|
|
|
+ wrongList.push(list.value[index])
|
|
|
+ wrongListRes.push('0')
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let userAnswerIndex = '0'
|
|
|
+ //错误的题目
|
|
|
+ if (list.value[index].questionType == 3 && Array.isArray(list.value[index].userAnswer)) {
|
|
|
+ const userAnswer = list.value[index].userAnswer as string[]
|
|
|
+ const optsArr = list.value[index].optsArr
|
|
|
+ userAnswerIndex = userAnswer.map(item => {
|
|
|
+
|
|
|
+ return String(optsArr.indexOf(item) + 1)
|
|
|
+
|
|
|
+ }).join('')
|
|
|
+ }
|
|
|
+ else if (list.value[index].questionType != 3 && !Array.isArray(list.value[index].userAnswer)) {
|
|
|
+ const optsArr = list.value[index].optsArr
|
|
|
+ const userAnswer = list.value[index].userAnswer as string
|
|
|
+ userAnswerIndex = (String(optsArr.indexOf(userAnswer) + 1))
|
|
|
+ }
|
|
|
+
|
|
|
+ wrongList.push(list.value[index])
|
|
|
+
|
|
|
+ wrongListRes.push(String(userAnswerIndex))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ window.sessionStorage.setItem('driverExam_temp_wrong_list', JSON.stringify(wrongList))
|
|
|
+ router.push({
|
|
|
+ path:'/driverExamAnaly',
|
|
|
+ query:{
|
|
|
+ wrongListRes:JSON.stringify(wrongListRes),
|
|
|
+ score:score
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ //删除驾驶考试的全部的错题
|
|
|
+ const deleteAllWrong = () => {
|
|
|
+ api.question.questionWrongCancelAll({
|
|
|
+ km: Number(route.query.subject)
|
|
|
+ }).then(res => {
|
|
|
+ message.success({
|
|
|
+ content: '成功清除'
|
|
|
+ })
|
|
|
+
|
|
|
+ })
|
|
|
|
|
|
|
|
|
}
|
|
@@ -801,7 +863,7 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
|
|
|
element.userAnswer = [];
|
|
|
}
|
|
|
});
|
|
|
- window.sessionStorage.setItem('driverExam_current_list',JSON.stringify(res.rows))
|
|
|
+ window.sessionStorage.setItem('driverExam_current_list', JSON.stringify(res.rows))
|
|
|
list.value = res.rows;
|
|
|
message.destroy()
|
|
|
}).catch(err => {
|
|
@@ -844,7 +906,9 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
|
|
|
switchIndexBySelect,
|
|
|
setPageNumToListIndex,
|
|
|
playIssueAudio,
|
|
|
- issueAutoRead
|
|
|
+ issueAutoRead,
|
|
|
+ submitDriveExam,
|
|
|
+ deleteAllWrong
|
|
|
|
|
|
}
|
|
|
|