浏览代码

驾驶分析页面开发中

JXDS18FUJT 1 年之前
父节点
当前提交
ebdbe2e4a9

+ 46 - 8
src/api/question/question.ts

@@ -2,6 +2,7 @@ import request from "../request"
 import { questionApi } from "./type"
 
 export default {
+    //获取分类专题分类
     questionInfoSelectFlQuestionInfo(params: {
         excellIssueName?: string
         excellSort?: number
@@ -18,18 +19,55 @@ export default {
 
         })
     },
-    questionInfoQlist(params:{
-  
-        classIssue?:string
-        classIssueName?:string
-        subject:number
-        isRand:string
-       
-    }):Promise<questionApi.selectTestK14QuestionInfoList>{
+    //取题查询题库列表
+    questionInfoQlist(params: {
+
+        classIssue?: string
+        classIssueName?: string
+        subject: number
+        isRand: string
+
+    }): Promise<questionApi.selectTestK14QuestionInfoList> {
         return request({
             params,
             url: "/pc/question/info/qlist",
             method: 'get'
         })
+    },
+    //清空错题
+    questionWrongCancelAll(data: {
+        km: number
+    }) {
+
+        return request({
+            data,
+            url: "/question/wrong/cancelAll",
+            method: 'DELETE',
+
+        })
+    },
+    //合并本机和云端的错题
+    questionWrongWrongs(data:{
+        km:number
+        wrongs:{id:number,timestamp:number}[]
+
+    }){
+        return request({
+            data,
+            url: "/question/wrong/wrongs",
+            method: 'delete',
+
+        })
+    },
+    //获取用户的错题
+    questionWrongWrongByUser(params:{
+        km:number
+    }){
+        return request({
+            params,
+            url: "/question/wrong/wrongByUser",
+            method: 'get',
+
+        })
     }
 }

+ 75 - 11
src/hooks/exam/driverExam.ts

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

+ 3 - 1
src/hooks/exam/threeExam.ts

@@ -608,6 +608,7 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
               wrongListRes.push('0')
             }
             else {
+                //错误的题目
                 let userAnswerIndex = 0
                 wrongList.push(list.value[index])
                 for (let i = 1; i <= 6; i++) {
@@ -622,9 +623,10 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
                 wrongListRes.push(String(userAnswerIndex))
             }
         })
+        //保存临时错题
         window.sessionStorage.setItem('threeExam_temp_wrong_list',JSON.stringify(wrongList))
         router.push({
-            path:'/driverExamAnaly',
+            path:'/threeExamAnaly',
             query:{
                 wrongListRes:JSON.stringify(wrongListRes),
                 score:score

+ 1 - 0
src/views/driverExam/index.vue

@@ -206,6 +206,7 @@
     ></mProblemAlert>
     <mProblemDialog
       v-model:visible="dialogVisible"
+      @confirm="submitDriveExam()"
       title="提示"
       content="是否真的要交卷(按确定键交卷,按取消键继续答题)"
     ></mProblemDialog>

+ 13 - 2
src/views/driverExamAnaly/index.vue

@@ -48,15 +48,26 @@
 </template>
 
 <script lang="ts">
-import { defineComponent } from "vue";
+import { openApi } from "@/api/open/type";
+import { defineComponent, ref } from "vue";
 // import { Button } from "ant-design-vue";
 export default defineComponent({
   setup() {
-    return {};
+    return {
+      score:ref(0),
+      userAnswerList:ref<openApi.selectFreeQuestionInfoRes>()
+    };
   },
   components: {
     // aButton: Button,
   },
+  mounted () {
+       this.score = Number(this.$route.query.score);
+
+    this.userAnswerList = JSON.parse(
+      (this.$route.query.wrongListRes as string) || "[]"
+    );;
+  },
 });
 </script>
 

+ 16 - 1
src/views/home/practiseSelect/index.vue

@@ -67,6 +67,7 @@
       content="禁止重复"
     ></mProblemAlert>
     <mProblemDialog
+      @confirm="deleteAllWrong()"
       v-model:visible="dialogVisible"
       title="提示"
       content="是否要清空全部错题"
@@ -80,10 +81,12 @@ import api from "@/api";
 import { useRoute } from "vue-router";
 import mProblemDialog from "@/components/mProblemDialog/index.vue";
 import mProblemAlert from "@/components/mProblemAlert/index.vue";
+import { message } from "ant-design-vue";
 export default defineComponent({
   name: "practiseSelect",
   setup() {
     const route = useRoute();
+    const dialogVisible =ref(false)
     let list = ref<
       {
         createTime?: string;
@@ -106,9 +109,21 @@ export default defineComponent({
       });
 
     return {
-      dialogVisible: ref(false),
+      dialogVisible,
       alertVisible: ref(false),
       list: list,
+      deleteAllWrong() {
+        api.question
+          .questionWrongCancelAll({
+            km: Number(route.query.subject),
+          })
+          .then((res) => {
+            dialogVisible.value = false
+            message.success({
+              content: "成功清除",
+            });
+          });
+      },
     };
   },
   components: {

+ 19 - 1
src/views/home/selectDriveExamSubject/index.vue

@@ -50,6 +50,7 @@
     ></mProblemAlert>
     <mProblemDialog
       v-model:visible="dialogVisible"
+      @confirm="deleteAllWrong()"
       title="提示"
       content="是否要清空全部错题"
     ></mProblemDialog>
@@ -60,11 +61,28 @@
 import { defineComponent, ref } from "vue";
 import mProblemDialog from "@/components/mProblemDialog/index.vue";
 import mProblemAlert from "@/components/mProblemAlert/index.vue";
+import api from "@/api";
+import { message } from "ant-design-vue";
+import { useRoute } from "vue-router";
 export default defineComponent({
   setup() {
+    const route = useRoute();
+    const dialogVisible = ref(false)
     return {
-      dialogVisible: ref(false),
+      dialogVisible,
       alertVisible: ref(false),
+      deleteAllWrong() {
+        api.question
+          .questionWrongCancelAll({
+            km: Number(route.query.subject),
+          })
+          .then((res) => {
+             dialogVisible.value = false
+            message.success({
+              content: "成功清除",
+            });
+          });
+      },
     };
   },
   methods: {

+ 20 - 2
src/views/home/threeExam/index.vue

@@ -50,7 +50,6 @@
         content="禁止重复"
       ></mProblemAlert>
       <mProblemDialog
-        
         v-model:visible="dialogVisible"
         title="提示"
         content="是否清空全部错题"
@@ -63,11 +62,30 @@
 import { defineComponent, ref } from "vue";
 import mProblemDialog from "@/components/mProblemDialog/index.vue";
 import mProblemAlert from "@/components/mProblemAlert/index.vue";
+import { useRoute } from "vue-router";
+import api from "@/api";
+import { message } from "ant-design-vue";
 export default defineComponent({
   setup() {
+     const route = useRoute()
+     const dialogVisible = ref(false)
+    
     return {
-      dialogVisible: ref(false),
+     
+      dialogVisible,
       alertVisible: ref(false),
+      deleteAllWrong() {
+        api.question
+          .questionWrongCancelAll({
+            km:5,
+          })
+          .then((res) => {
+            dialogVisible.value = false;
+            message.success({
+              content: "成功清除",
+            });
+          });
+      },
     };
   },
   methods: {

+ 1 - 1
src/views/studySkill/index.vue

@@ -83,7 +83,7 @@
               {{ item }}
             </div>
           </div>
-          <div v-if="list[listIndex].questionType !== 1" class="flex mt15">
+          <div v-if="list[listIndex].questionType == 2" class="flex mt15">
             <div
               @click="setUserAnswerAndRes(item)"
               v-for="(item, index) in list[listIndex].optsArr"