소스 검색

修正paper/answer/questionList查找逻辑

Michael Wang 3 년 전
부모
커밋
9a895fedd2
1개의 변경된 파일23개의 추가작업 그리고 22개의 파일을 삭제
  1. 23 22
      src/features/mark/MultiMediaMarkBody.vue

+ 23 - 22
src/features/mark/MultiMediaMarkBody.vue

@@ -122,19 +122,19 @@ watch(
     if (!store.currentTask?.jsonUrl) return;
     const res = await updateStudentAnswerJSON();
 
-    const stuQuestions = res.data; // TODO: add type
-    for (const q of stuQuestions) {
-      if (q.answer && !Array.isArray(q.answer)) {
-        q.answer = [q.answer];
+    const stuAnswers = res.data; // TODO: add type
+    for (const ans of stuAnswers) {
+      if (ans.answer && !Array.isArray(ans.answer)) {
+        ans.answer = [ans.answer];
       }
     }
-    // 试卷轨迹显示全部题目
+    // 查看原卷显示全部题目
     if (isSeePaper) {
       for (const questionBody of store.setting.subject.questions || []) {
         const questionForRender = {} as QuestionForRender;
 
         const [mainNumber, subNumber] = questionBody.unionOrder.split("-");
-        const q: StudentAnswer = stuQuestions.find(
+        const stuAns: StudentAnswer = stuAnswers.find(
           (v: StudentAnswer) =>
             questionBody.unionOrder ===
             [v.mainNumber, v.subNumber, v.subIndex]
@@ -146,20 +146,17 @@ watch(
           answer: [],
         };
         const taskQuestion = (store.currentTask?.questionList || []).find(
-          (v) => v.mainNumber + "" == mainNumber && v.subNumber == subNumber
+          (v) =>
+            [v.mainNumber, v.subNumber].join("-") === questionBody.unionOrder
         );
 
-        // const questionBody = store.setting.subject.questions.find(
-        //   (ques) => ques.unionOrder === `${q.mainNumber}-${q.subNumber}`
-        // );
-        // if (!questionBody) continue;
         questionForRender.unionOrder = questionBody.unionOrder;
         questionForRender.parentBody = questionBody.parentBody;
         questionForRender.body = questionBody.body;
         questionForRender.options = questionBody.options;
         questionForRender.objective = questionBody.objective;
         questionForRender.standardAnswer = questionBody.answer;
-        questionForRender.studentAnswer = q.answer;
+        questionForRender.studentAnswer = stuAns.answer;
         questionForRender.score = taskQuestion?.score || null;
         questionForRender.totalScore = taskQuestion?.maxScore || 0;
         questions.value.push(questionForRender);
@@ -168,25 +165,29 @@ watch(
       for (const taskQuestion of store.currentTask?.questionList || []) {
         const questionForRender = {} as QuestionForRender;
 
-        const q: StudentAnswer = stuQuestions.find(
+        const { mainNumber, subNumber } = taskQuestion;
+        const questionBody = store.setting.subject.questions.find(
+          (ques) => ques.unionOrder === `${mainNumber}-${subNumber}`
+        );
+        if (!questionBody) continue;
+
+        const stuAns: StudentAnswer = stuAnswers.find(
           (v: StudentAnswer) =>
-            v.mainNumber === taskQuestion.mainNumber &&
-            v.subNumber == taskQuestion.subNumber
+            questionBody.unionOrder ===
+            [v.mainNumber, v.subNumber, v.subIndex]
+              .filter((v) => typeof v !== "undefined")
+              .join("-")
         ) || {
-          mainNumber: taskQuestion.mainNumber,
-          subNumber: taskQuestion.subNumber,
+          mainNumber: mainNumber,
+          subNumber: subNumber,
           answer: [],
         };
 
-        const questionBody = store.setting.subject.questions.find(
-          (ques) => ques.unionOrder === `${q.mainNumber}-${q.subNumber}`
-        );
-        if (!questionBody) continue;
         questionForRender.unionOrder = questionBody.unionOrder;
         questionForRender.parentBody = questionBody.parentBody;
         questionForRender.body = questionBody.body;
         questionForRender.standardAnswer = questionBody.answer;
-        questionForRender.studentAnswer = q.answer;
+        questionForRender.studentAnswer = stuAns.answer;
         questionForRender.score = taskQuestion.score;
         questionForRender.totalScore = taskQuestion.maxScore;
         questions.value.push(questionForRender);