Browse Source

回评复原分数:似乎有问题,需要更加清晰的状态流

Michael Wang 4 years ago
parent
commit
1431208909

+ 1 - 1
src/components/mark/MarkBoardKeyBoard.vue

@@ -36,7 +36,7 @@
                 }}
                 }}
               </div>
               </div>
               <div class="text-center text-3xl">
               <div class="text-center text-3xl">
-                {{ question.score || 0 }}
+                {{ question.score }}
               </div>
               </div>
             </div>
             </div>
             <div>
             <div>

+ 5 - 0
src/components/mark/MarkBody.vue

@@ -84,6 +84,11 @@ export default defineComponent({
           (all, c) => all.concat(c.trackList),
           (all, c) => all.concat(c.trackList),
           [] as Array<Track>
           [] as Array<Track>
         );
         );
+        markResult.scoreList = store.currentTask.questionList.map(
+          (q) => q.score
+        );
+        markResult.markerScore =
+          markResult.scoreList.reduce((acc, v) => (acc += v * 100), 0) / 100;
         store.markResults = [...store.markResults, markResult];
         store.markResults = [...store.markResults, markResult];
         // console.log("watcheffect markResult 2", markResult, store.markResults);
         // console.log("watcheffect markResult 2", markResult, store.markResults);
       }
       }

+ 10 - 1
src/components/mark/MarkHeader.vue

@@ -14,7 +14,7 @@
     <div class="flex gap-1">
     <div class="flex gap-1">
       <div>
       <div>
         编号<span class="highlight-text">{{
         编号<span class="highlight-text">{{
-          store.currentTask?.studentCode
+          store.currentTask?.secretNumber
         }}</span>
         }}</span>
       </div>
       </div>
       <div
       <div
@@ -142,6 +142,15 @@ export default defineComponent({
       } else {
       } else {
         store.setting.mode = ModeEnum.TRACK;
         store.setting.mode = ModeEnum.TRACK;
       }
       }
+      if (store.currentMarkResult) {
+        store.currentMarkResult.scoreList = [];
+        store.currentMarkResult.trackList = [];
+      }
+      if (store.currentTask) {
+        store.currentTask.questionList.forEach((q) => (q.score = null));
+      }
+      store.currentQuestion = undefined;
+      store.currentScore = undefined;
     }
     }
     const progress = computed(() => {
     const progress = computed(() => {
       const { totalCount, markedCount } = store.status;
       const { totalCount, markedCount } = store.status;

+ 12 - 5
src/components/mark/store.ts

@@ -82,7 +82,11 @@ watch(
   () => store.currentMarkResult?.trackList,
   () => store.currentMarkResult?.trackList,
   () => {
   () => {
     const markResult = findCurrentTaskMarkResult();
     const markResult = findCurrentTaskMarkResult();
-    if (markResult) {
+    if (
+      markResult &&
+      store.currentMarkResult &&
+      store.currentMarkResult.trackList.length > 0
+    ) {
       const scoreGroups = groupBy(
       const scoreGroups = groupBy(
         markResult.trackList,
         markResult.trackList,
         (obj) =>
         (obj) =>
@@ -125,21 +129,24 @@ watch(
       //   }
       //   }
       // }, [0])
       // }, [0])
       markResult.markerScore =
       markResult.markerScore =
-        markResult.trackList
-          .map((t) => t.score)
-          .reduce((acc, v) => (acc += v * 100), 0) / 100;
+        markResult.scoreList.reduce((acc, v) => (acc += v * 100), 0) / 100;
+
+      console.log(markResult.scoreList, markResult.markerScore);
     }
     }
   },
   },
   { deep: true }
   { deep: true }
 );
 );
 
 
+// 普通模式更新分数时
 watch(
 watch(
   () => store.currentQuestion?.score,
   () => store.currentQuestion?.score,
   () => {
   () => {
     if (store.setting.mode === ModeEnum.COMMON) {
     if (store.setting.mode === ModeEnum.COMMON) {
       const markResult = findCurrentTaskMarkResult();
       const markResult = findCurrentTaskMarkResult();
       if (markResult && store.currentTask) {
       if (markResult && store.currentTask) {
-        const scoreList = store.currentTask.questionList.map((q) => q.score);
+        const scoreList = store.currentTask.questionList.map(
+          (q) => q.score || 0
+        );
         markResult.scoreList = scoreList as number[];
         markResult.scoreList = scoreList as number[];
         markResult.markerScore =
         markResult.markerScore =
           scoreList.reduce((acc, v) => (acc += v * 100), 0) / 100;
           scoreList.reduce((acc, v) => (acc += v * 100), 0) / 100;

+ 2 - 2
src/types/index.ts

@@ -103,7 +103,7 @@ export interface Question {
   maxScore: number;
   maxScore: number;
   title: string; // 题目名称
   title: string; // 题目名称
   trackList: Array<Track>; // 轨迹列表
   trackList: Array<Track>; // 轨迹列表
-  score: number; //得分;null的值时是为打回时可以被修改的;null也是从未评分过的情况,要通过rejected来判断
+  score: number | null; //得分;null的值时是为打回时可以被修改的;null也是从未评分过的情况,要通过rejected来判断
 }
 }
 
 
 export interface Track {
 export interface Track {
@@ -150,7 +150,7 @@ export interface MarkResult {
   // 轨迹 or 键盘
   // 轨迹 or 键盘
   markerScore: number;
   markerScore: number;
   trackList: Array<Track>;
   trackList: Array<Track>;
-  scoreList: Array<number>;
+  scoreList: Array<number | null>;
   specialTagList: Array<SpecialTag>; // 轨迹和键盘都需要
   specialTagList: Array<SpecialTag>; // 轨迹和键盘都需要
 
 
   // 问题卷
   // 问题卷