wyling 3 жил өмнө
parent
commit
8633a1e3c4

+ 31 - 31
src/views/mockTest/components/hooks.ts

@@ -168,10 +168,7 @@ const useSubjectList = () => {
   };
 };
 
-const useSubjectCheck = (
-  currentSubject: ComputedRef<any>,
-  nextSubject: () => Promise<void>
-) => {
+const useSubjectCheck = (nextSubject: () => Promise<void>) => {
   const trueNum = ref(0); //正确数量
   const falseNum = ref(0); //错误数量
   const isJumpNext = ref(false); //答对跳转下一题
@@ -179,37 +176,41 @@ const useSubjectCheck = (
   /**
    * 选择答案后进行校验
    */
-  const userAnswerChange = () => {
-    currentSubject.value.optsBack = currentSubject.value.opts.map(
-      (val: String) => {
+  const userAnswerChange = (currentSubject: any) => {
+    try {
+      if (!currentSubject.userAnswer) return;
+
+      currentSubject.optsBack = currentSubject.opts.map((val: String) => {
         let status;
-        if (currentSubject.value.answer.includes(val)) {
+        if (currentSubject.answer.includes(val)) {
           status = 1;
         } else {
           status = 0;
         }
-        if (currentSubject.value.userAnswer.includes(val)) {
+        if (currentSubject.userAnswer.includes(val)) {
           status += 2;
         }
         return { opt: val, status };
+      });
+      if (
+        JSON.stringify(currentSubject.answer) ==
+        JSON.stringify(currentSubject.userAnswer)
+      ) {
+        console.log("答案正确");
+        currentSubject.isTrue = true;
+        trueNum.value++;
+        if (isJumpNext.value) {
+          nextTick(() => {
+            nextSubject();
+          });
+        }
+      } else {
+        console.log("错误");
+        currentSubject.isTrue = false;
+        falseNum.value++;
       }
-    );
-    if (
-      JSON.stringify(currentSubject.value.answer) ==
-      JSON.stringify(currentSubject.value.userAnswer)
-    ) {
-      console.log("答案正确");
-      currentSubject.value.isTrue = true;
-      trueNum.value++;
-      if (isJumpNext.value) {
-        nextTick(() => {
-          nextSubject();
-        });
-      }
-    } else {
-      console.log("错误");
-      currentSubject.value.isTrue = false;
-      falseNum.value++;
+    } catch (error) {
+      console.log(error);
     }
   };
 
@@ -231,7 +232,7 @@ export const useSubjectShowLogic = () => {
   } = useSubjectList(); //获取题目列表
 
   const nextBtnState = ref(true); //下一题数据请求锁
-  
+
   /**
    * 展示下一题
    */
@@ -249,10 +250,8 @@ export const useSubjectShowLogic = () => {
     }
   };
 
-  const { trueNum, falseNum, isJumpNext, userAnswerChange } = useSubjectCheck(
-    currentSubject,
-    nextSubject
-  );
+  const { trueNum, falseNum, isJumpNext, userAnswerChange } =
+    useSubjectCheck(nextSubject);
 
   return {
     currentSubject,
@@ -263,6 +262,7 @@ export const useSubjectShowLogic = () => {
     trueNum,
     falseNum,
     isJumpNext,
+    subjectList,
     userAnswerChange,
   };
 };

+ 14 - 3
src/views/mockTest/components/startTest.vue

@@ -203,11 +203,21 @@ const { back } = useRouter();
 const props = defineProps(["userTestData"]);
 const emits = defineEmits(["next", "update:userTestData"]);
 
+const useTime = ref(0);
 const useTimeChange = (e: any) => {
+  useTime.value = 45 * 60 * 1000 - e.total;
+};
+
+//计算分数
+const scoreCalc = () => {
+  subjectList.value.forEach((item) => {
+    userAnswerChange(item);
+  });
   emits("update:userTestData", {
-    ...props.userTestData,
-    useTime: 45 * 60 * 1000 - e.total,
+    useTime: useTime.value,
+    testScores: trueNum.value,
   });
+  emits("next");
 };
 
 const gotoTest = () => {
@@ -215,7 +225,7 @@ const gotoTest = () => {
     message: "确认交卷吗?",
   })
     .then(() => {
-      emits("next");
+      scoreCalc();
     })
     .catch(() => {});
 };
@@ -230,6 +240,7 @@ const {
   trueNum,
   falseNum,
   isJumpNext,
+  subjectList,
   userAnswerChange,
 } = useSubjectShowLogic();
 

+ 2 - 3
src/views/mockTest/index.vue

@@ -10,16 +10,15 @@
 import initMockTest from "./components/initMockTest.vue";
 import mockTestEnd from "./components/mockTestEnd.vue";
 import startTest from "./components/startTest.vue";
-console.log({ startTest });
 
-import { defineComponent, ref, reactive } from "vue";
+import { ref, reactive } from "vue";
 
 const userTestData = reactive({
   testScores: 0,
   useTime: 0,
 });
 
-const currentComponent = ref(initMockTest);
+const currentComponent = ref<any>(initMockTest);
 const comIndex = ref(0);
 const next = () => {
   comIndex.value++;