Browse Source

错题回顾页面添加4

JXDS18FUJT 1 year ago
parent
commit
d424aae6d2

+ 10 - 1
src/api/question/question.ts

@@ -46,6 +46,15 @@ export default {
 
         })
     },
+    //清空错题(三力测试)
+    questionThreeWrongCancelAll(){
+        return request({
+            url: "/question/threeWrong/cancelAll",
+            method: 'DELETE',
+
+        })
+
+    },
     //合并本机和云端的错题
     questionWrongWrongs(data: {
         km: number
@@ -67,7 +76,7 @@ export default {
         return request({
             data,
             url: "/question/threeWrong/wrongs",
-            method: 'delete',
+            method: 'post',
 
         })
     },

+ 11 - 11
src/api/three/three.ts

@@ -15,16 +15,16 @@ export default {
             method: 'get'
         })
     },
-        //(三力测试)获取题库详细信息批量取题
-        threeForceGetThreeForceListIds(params: {
-            ids: string
-        }): Promise<threeApi.threeForceList>{
-            return request({
-                url: "/three/force/getThreeForceListIds",
-                method: 'get',
-                params
-    
-            })
-        }
+    //(三力测试)获取题库详细信息批量取题
+    threeForceGetThreeForceListIds(params: {
+        ids: string
+    }): Promise<threeApi.threeForceList> {
+        return request({
+            url: "/three/force/getThreeForceListIds",
+            method: 'get',
+            params
+
+        })
+    }
 
 }

+ 16 - 15
src/hooks/exam/driverExam.ts

@@ -9,7 +9,8 @@ import { useRoute } from "vue-router";
 import router from "@/router";
 export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoRes>, config = {
   countDown: true,
-  autoAnswer: true
+  autoAnswer: true,
+  recordUncomplete: true
 }) => {
   const store = useStore()
   const route = useRoute()
@@ -533,10 +534,7 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
   }])
   const listIndex = ref(0)
   const listPageNum = ref('1')
-
-
   const countDown = ref('00:45:00')
-
   const playIssueAudio = () => {
     audio.stopAudio()
     audio.playAudio(list.value[listIndex.value].issuemp3)
@@ -666,15 +664,15 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
 
 
   };
-  const cancelUserAnswer = (answer: string)=>{
-    if(list.value[listIndex.value].questionType==3){
-     let userAnswer =  list.value[listIndex.value].userAnswer as string[]
-     //深拷贝
-     userAnswer = Object.assign([],list.value[listIndex.value].userAnswer)
-     userAnswer = userAnswer.filter(item=>{
-      return item!==answer
-     })
-     list.value[listIndex.value].userAnswer = userAnswer
+  const cancelUserAnswer = (answer: string) => {
+    if (list.value[listIndex.value].questionType == 3) {
+      let userAnswer = list.value[listIndex.value].userAnswer as string[]
+      //深拷贝
+      userAnswer = Object.assign([], list.value[listIndex.value].userAnswer)
+      userAnswer = userAnswer.filter(item => {
+        return item !== answer
+      })
+      list.value[listIndex.value].userAnswer = userAnswer
     }
 
   }
@@ -748,8 +746,11 @@ export const useDriverExam = (requestFn: Promise<openApi.selectFreeQuestionInfoR
       }
       else if (!item.isComplete && list.value[index].userAnswer.length == 0) {
         //没做的题目
-        wrongTempList.push(list.value[index])
-        wrongListRes.push('0')
+        if (config.recordUncomplete) {
+          wrongTempList.push(list.value[index])
+          wrongListRes.push('0')
+        }
+   
       }
       else {
         let userAnswerIndex = '0'

+ 40 - 36
src/hooks/exam/threeExam.ts

@@ -9,7 +9,8 @@ import router from "@/router";
 import api from "@/api";
 export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config = {
     countDown: true,
-    autoAnswer: true
+    autoAnswer: true,
+    recordUncomplete: true
 }) => {
     const store = useStore()
     let timerId = 0
@@ -408,21 +409,21 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
     };
     const setPageToListIndex = (page: number | string) => {
         if (list.value.length < Number(page)) {
-          message.error({
-            content: '超过最大值'
-          })
-          return
+            message.error({
+                content: '超过最大值'
+            })
+            return
         }
         else if (Number(page) < 1) {
-          message.error({
-            content: '低于最小值'
-          })
+            message.error({
+                content: '低于最小值'
+            })
         }
         else {
-          listIndex.value = Number(page) - 1
-    
+            listIndex.value = Number(page) - 1
+
         }
-      }
+    }
     const nextProblem = () => {
         console.log("nextProblem");
         if (listIndex.value < list.value.length - 1) {
@@ -611,18 +612,21 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
     const submitThreeExam = () => {
         setUserAnswerAndRes(list.value[listIndex.value].userAnswer)
         let score = 0
-        const wrongTempList:threeApi.threeForceList["rows"] = [] //临时错题
-        const wrongList:threeApi.threeForceList["rows"] = [] //永久错题
-        const wrongListRes:string[] = []
+        const wrongTempList: threeApi.threeForceList["rows"] = [] //临时错题
+        const wrongList: threeApi.threeForceList["rows"] = [] //永久错题
+        const wrongListRes: string[] = []
         list.value.forEach((item, index) => {
             //题目正确加分
-            if (item.isComplete && !item.isError&&list.value[index].userAnswer.length>0) {
+            if (item.isComplete && !item.isError && list.value[index].userAnswer.length > 0) {
                 score = score + 1
             }
-            else if(!item.isComplete&&list.value[index].userAnswer.length==0){
-              //没做的题目
-              wrongTempList.push(list.value[index])
-              wrongListRes.push('0')
+            else if (!item.isComplete && list.value[index].userAnswer.length == 0) {
+                //没做的题目
+                if (config.recordUncomplete) {
+                    wrongTempList.push(list.value[index])
+                    wrongListRes.push('0')
+                }
+
             }
             else {
                 //错误的题目
@@ -632,7 +636,7 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
                     if (list.value[index].userAnswer == '') {
                         break;
                     }
-        
+
                     if (list.value[index].userAnswer == list.value[index]['an' + i]) {
                         userAnswerIndex = i
                     }
@@ -642,25 +646,25 @@ export const useThreeExam = (requestFn: Promise<threeApi.threeForceList>, config
             }
         })
         //保存临时错题
-        window.sessionStorage.setItem('threeExam_temp_wrong_list',JSON.stringify(wrongTempList))
+        window.sessionStorage.setItem('threeExam_temp_wrong_list', JSON.stringify(wrongTempList))
         //同步全部的错题
         api.question.questionthreeWrongWrongs({
-       
-             wrongs:wrongList.map(item=>{
-              return {
-                id:item.id,
-                timestamp:+ new Date()
-              }
-             })
-          
-          }).then(res=>{
-           store.dispatch('AsyncThreeWrongList')
-          })
+
+            wrongs: wrongList.map(item => {
+                return {
+                    id: item.id,
+                    timestamp: + new Date()
+                }
+            })
+
+        }).then(res => {
+            store.dispatch('AsyncThreeWrongList')
+        })
         router.push({
-            path:'/threeExamAnaly',
-            query:{
-                wrongListRes:JSON.stringify(wrongListRes),
-                score:score
+            path: '/threeExamAnaly',
+            query: {
+                wrongListRes: JSON.stringify(wrongListRes),
+                score: score
             }
         })
     }

+ 43 - 11
src/store/index.ts

@@ -1,4 +1,5 @@
 import api from '@/api';
+import { message } from 'ant-design-vue';
 import { createStore } from 'vuex'
 import createPersistedState from "vuex-persistedstate";
 export default createStore({
@@ -30,24 +31,55 @@ export default createStore({
     LoginOut() {
       localStorage.setItem('token', '')
     },
-    AsyncDriver4WrongList(){
+    ClearDriver1WrongList() {
+      api.question.questionWrongCancelAll({
+        km: 1
+      }).then(res => {
+        window.localStorage.setItem('driverExam1_local_wrong_list', '[]')
+
+        message.success('清除成功')
+
+      })
+
+    },
+    ClearDriver4WrongList() {
+      api.question.questionWrongCancelAll({
+        km: 4
+      }).then(res => {
+        window.localStorage.setItem('driverExam4_local_wrong_list', '[]')
+
+        message.success('清除成功')
+
+      })
+
+    },
+    ClearThreeWrongList() {
+      api.question.questionThreeWrongCancelAll().then(res => {
+        window.localStorage.setItem('threeExam_local_wrong_list', '[]')
+
+        message.success('清除成功')
+
+      })
+
+    },
+    AsyncDriver4WrongList() {
       api.question.questionWrongWrongByUser({
-        km:4
-      }).then(res=>{
-        window.localStorage.setItem('driverExam4_local_wrong_list',JSON.stringify(res.data||'[]'))
+        km: 4
+      }).then(res => {
+        window.localStorage.setItem('driverExam4_local_wrong_list', JSON.stringify(res.data || '[]'))
       })
     },
     AsyncDriver1WrongList() {
       api.question.questionWrongWrongByUser({
-        km:1
-      }).then(res=>{
-        window.localStorage.setItem('driverExam1_local_wrong_list',JSON.stringify(res.data||'[]'))
+        km: 1
+      }).then(res => {
+        window.localStorage.setItem('driverExam1_local_wrong_list', JSON.stringify(res.data || '[]'))
       })
     },
-    AsyncThreeWrongList(){
-      api.question.questionThreeWrongWrongByUser().then(result=>{
-        window.localStorage.setItem('threeExam_local_wrong_list',JSON.stringify(result.data||'[]'))
-    })
+    AsyncThreeWrongList() {
+      api.question.questionThreeWrongWrongByUser().then(result => {
+        window.localStorage.setItem('threeExam_local_wrong_list', JSON.stringify(result.data || '[]'))
+      })
     }
   },
   modules: {

+ 26 - 7
src/views/driverExamAnaly/index.vue

@@ -6,6 +6,11 @@
         class="flex w-full flex-col h137 justify-center content-center relative"
       >
         <div
+          @click="
+            () => {
+              $router.back();
+            }
+          "
           class="flex w72 h40 right0 round4 items-center justify-center absolute bottom16 bg-primary-yellow cursor-pointer"
         >
           <img
@@ -42,25 +47,39 @@
             v-for="(_item, _index) in list[index].optsArr"
             :key="_index"
           >
-            <div v-if="list[index].questionType!==3">
+            <div v-if="list[index].questionType == 1">
               <span
                 v-if="
-                  list[index].answer!==_item &&
-                  userAnswerList[index] != '0'
+                  list[index].answer !== _item && userAnswerList[index] != '0'
                 "
                 >×</span
               >
               <span
                 v-if="
-                  list[index].answer===_item &&
-                  userAnswerList[index] != '0'
+                  list[index].answer === _item && userAnswerList[index] != '0'
+                "
+                >√</span
+              >
+              {{ switchIndexBySelect(_index) }} . {{ _item }}
+            </div>
+            <div v-if="list[index].questionType == 2">
+              <span
+                v-if="
+                  list[index].answer !== _item &&
+                  userAnswerList[index] != '0' &&
+                  userAnswerList[index] == _index + 1
+                "
+                >×</span
+              >
+              <span
+                v-if="
+                  list[index].answer === _item && userAnswerList[index] != '0'
                 "
                 >√</span
               >
               {{ switchIndexBySelect(_index) }} . {{ _item }}
             </div>
-            <div v-if="list[index].questionType==3">
-             
+            <div v-if="list[index].questionType == 3">
               <span
                 v-if="
                   list[index].answer.split('-').includes(_item) &&

+ 4 - 10
src/views/home/practiseSelect/index.vue

@@ -91,10 +91,12 @@ import mProblemDialog from "@/components/mProblemDialog/index.vue";
 import mProblemAlert from "@/components/mProblemAlert/index.vue";
 import { message } from "ant-design-vue";
 import router from "@/router";
+import store from "@/store";
 export default defineComponent({
   name: "practiseSelect",
   setup() {
     const route = useRoute();
+    const subject = route.query.subject
     const dialogVisible = ref(false);
     let list = ref<
       {
@@ -105,16 +107,8 @@ export default defineComponent({
       }[]
     >([]);
     const deleteAllWrong = () => {
-      api.question
-        .questionWrongCancelAll({
-          km: Number(route.query.subject),
-        })
-        .then((res) => {
-          dialogVisible.value = false;
-          message.success({
-            content: "成功清除",
-          });
-        });
+    store.dispatch('ClearDriver'+subject+'WrongList')
+     dialogVisible.value = false;
     };
     const checkLocalWrongList=()=>{
       const subject = route.query.subject as string

+ 37 - 35
src/views/home/selectDriveExamSubject/index.vue

@@ -25,14 +25,24 @@
             货车
           </div>
         </div>
-             
-        <div @click="checkLocalWrongList()" class="lh34 ml15 select-border1 round4 pr15 pl15">错误回顾</div>
+
+        <div
+          @click="checkLocalWrongList()"
+          class="lh34 ml15 select-border1 round4 pr15 pl15"
+        >
+          错误回顾
+        </div>
       </div>
       <div class="flex items-center pt30 pb30">
         <div class="vertical-line mr10"></div>
         <span class="font20 font-bold mr15">全部错误题回顾</span>
-             
-        <div @click="checkLocalWrongList()" class="lh34 round4 pr15 pl15 select-border1 mr15">错误回顾</div>
+
+        <div
+          @click="checkLocalWrongList()"
+          class="lh34 round4 pr15 pl15 select-border1 mr15"
+        >
+          错误回顾
+        </div>
         <div
           @click="
             () => {
@@ -67,46 +77,38 @@ import api from "@/api";
 import { message } from "ant-design-vue";
 import { useRoute } from "vue-router";
 import router from "@/router";
+import store from "@/store";
 export default defineComponent({
   setup() {
     const route = useRoute();
-    const dialogVisible = ref(false)
-      const checkLocalWrongList=()=>{
-      const subject = route.query.subject as string
-      let name = 'driverExam'+subject+'_local_wrong_list'
-      let list = JSON.parse(window.localStorage.getItem(name)||'[]')
-      if(list.length==0){
+    const subject = route.query.subject;
+    const dialogVisible = ref(false);
+    const checkLocalWrongList = () => {
+      const subject = route.query.subject as string;
+      let name = "driverExam" + subject + "_local_wrong_list";
+      let list = JSON.parse(window.localStorage.getItem(name) || "[]");
+      if (list.length == 0) {
         message.warn({
-          content:'没有对应的错题'
-        })
-        return
+          content: "没有对应的错题",
+        });
+        return;
       }
       router.push({
-        path:'reviewDriverError',
-        query:{
-          subject
-
-        }
-      })
-
-
-    }
+        path: "reviewDriverError",
+        query: {
+          subject,
+        },
+      });
+    };
+    const deleteAllWrong = () => {
+      store.dispatch("driverExam" + subject + "_local_wrong_list");
+      dialogVisible.value = false;
+    };
     return {
       dialogVisible,
       alertVisible: ref(false),
-      deleteAllWrong() {
-        api.question
-          .questionWrongCancelAll({
-            km: Number(route.query.subject),
-          })
-          .then((res) => {
-             dialogVisible.value = false
-            message.success({
-              content: "成功清除",
-            });
-          });
-      },
-      checkLocalWrongList
+      deleteAllWrong,
+      checkLocalWrongList,
     };
   },
   methods: {

+ 3 - 10
src/views/home/threeExam/index.vue

@@ -73,6 +73,7 @@ import { useRoute } from "vue-router";
 import api from "@/api";
 import { message } from "ant-design-vue";
 import router from "@/router";
+import store from "@/store";
 export default defineComponent({
   setup() {
     const route = useRoute();
@@ -97,16 +98,8 @@ export default defineComponent({
       dialogVisible,
       alertVisible: ref(false),
       deleteAllWrong() {
-        api.question
-          .questionWrongCancelAll({
-            km: 5,
-          })
-          .then((res) => {
-            dialogVisible.value = false;
-            message.success({
-              content: "成功清除",
-            });
-          });
+        store.dispatch('ClearThreeWrongList')
+         dialogVisible.value = false;
       },
       checkLocalWrongList
     };

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

@@ -5,7 +5,7 @@
       <div
         @click="
           () => {
-            $router.back();
+           $router.back();
           }
         "
         class="right30 w72 lh40 h40 absolute right0 top0 bg-primary-yellow flex items-center justify-center cursor-pointer"

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

@@ -300,6 +300,7 @@ export default defineComponent({
         {
           autoAnswer: false,
           countDown: false,
+          recordUncomplete:false
         }
       ),
       changeSysConfig,

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

@@ -332,6 +332,7 @@ export default defineComponent({
         {
           autoAnswer: false,
           countDown: false,
+          recordUncomplete: false,
         }
       ),
       changeSysConfig,

+ 2 - 0
src/views/studySkill/index.vue

@@ -250,6 +250,7 @@
       v-model:visible="dialogVisible"
       title="提示"
       content="是否真的要交卷(按确定键交卷,按取消键继续答题)"
+      @confirm="submitDriveExam()"
     ></mProblemDialog>
   </div>
 </template>
@@ -295,6 +296,7 @@ export default defineComponent({
         {
           autoAnswer: false,
           countDown: false,
+          recordUncomplete:false
         }
       ),
       changeSysConfig,

+ 21 - 18
src/views/threeExamAnaly/index.vue

@@ -6,6 +6,11 @@
         class="flex w-full flex-col h137 justify-center content-center relative"
       >
         <div
+          @click="
+            () => {
+              $router.back();
+            }
+          "
           class="flex w72 h40 right0 round4 items-center justify-center absolute bottom16 bg-primary-yellow cursor-pointer"
         >
           <img
@@ -45,11 +50,10 @@
           <div
             :class="{
               yes:
-                userAnswerList[index] !== '0' &&
-                userAnswerList[index].includes(list[index].answertrue),
-              no:
-                userAnswerList[index] !== '0' &&
-                userAnswerList[index].includes('1'),
+                list[index].userAnswer &&
+                list[index]['an1'] ===
+                  list[index]['an' + list[index].answertrue],
+              no: list[index].userAnswer && userAnswerList[index] == '1',
               'text-red-500': userAnswerList[index].includes('0'),
             }"
             key="1"
@@ -59,10 +63,10 @@
           <div
             :class="{
               yes:
-                userAnswerList[index] !== '0' && list[index].answertrue == '2',
-              no:
-                userAnswerList[index] !== '0' &&
-                userAnswerList[index].includes('2'),
+                list[index].userAnswer &&
+                list[index]['an2'] ===
+                  list[index]['an' + list[index].answertrue],
+              no: list[index].userAnswer && userAnswerList[index] == '2',
               'text-red-500': userAnswerList[index].includes('0'),
             }"
             key="2"
@@ -72,10 +76,10 @@
           <div
             :class="{
               yes:
-                userAnswerList[index] !== '0' && list[index].answertrue == '3',
-              no:
-                userAnswerList[index] !== '0' &&
-                userAnswerList[index].includes('3'),
+                list[index].userAnswer &&
+                list[index]['an3'] ===
+                  list[index]['an' + list[index].answertrue],
+              no: list[index].userAnswer && userAnswerList[index] == '3',
               'text-red-500': userAnswerList[index].includes('0'),
             }"
             key="3"
@@ -86,10 +90,10 @@
           <div
             :class="{
               yes:
-                userAnswerList[index] !== '0' && list[index].answertrue == '4',
-              no:
-                userAnswerList[index] !== '0' &&
-                userAnswerList[index].includes('4'),
+                list[index].userAnswer &&
+                list[index]['an4'] ===
+                  list[index]['an' + list[index].answertrue],
+              no: list[index].userAnswer && userAnswerList[index] == '4',
               'text-red-500': userAnswerList[index].includes('0'),
             }"
             key="4"
@@ -116,7 +120,6 @@
       :title="alertTitle"
       :content="alertContent"
     ></mProblemAlert>
-    
   </div>
 </template>
 

+ 2 - 1
src/views/threeStudyExam/index.vue

@@ -50,7 +50,6 @@
                 switchPageNumBySelect(list[listIndex].answertrue)
               }}</span
             >
-           
           </div>
           <div>
             <div
@@ -279,6 +278,7 @@
       v-model:visible="dialogVisible"
       title="提示"
       content="是否真的要交卷(按确定键交卷,按取消键继续答题)"
+      @confirm="submitThreeExam()"
     ></mProblemDialog>
   </div>
 </template>
@@ -326,6 +326,7 @@ export default defineComponent({
       ...useThreeExam(api.three.threeForceList(), {
         autoAnswer: false,
         countDown: false,
+        recordUncomplete: false,
       }),
       changeSysConfig,
       fixedNumber,