Răsfoiți Sursa

回评切换任务时,不保存回评产生的markResult

Michael Wang 4 ani în urmă
părinte
comite
251a92bbab
2 a modificat fișierele cu 21 adăugiri și 0 ștergeri
  1. 5 0
      src/features/mark/Mark.vue
  2. 16 0
      src/features/mark/store.ts

+ 5 - 0
src/features/mark/Mark.vue

@@ -28,6 +28,7 @@ import {
 import {
   findCurrentTaskMarkResult,
   removeCurrentMarkResult,
+  removeOldPreviousMarkResult,
   store,
 } from "./store";
 import MarkHeader from "./MarkHeader.vue";
@@ -132,6 +133,10 @@ export default defineComponent({
     watch(
       () => store.currentTask,
       () => {
+        // 回评切换任务,先删除之前回评任务的markResult
+        if (store.historyOpen) {
+          removeOldPreviousMarkResult();
+        }
         store.currentMarkResult = findCurrentTaskMarkResult();
 
         // 重置当前选择的quesiton和score

+ 16 - 0
src/features/mark/store.ts

@@ -82,6 +82,22 @@ export function findCurrentTaskMarkResult() {
   );
 }
 
+/** 回评时,切换任务前,删除之前的回评markResult */
+export function removeOldPreviousMarkResult() {
+  function clearMarkResultFromTask(task: Task) {
+    let { libraryId, studentId } = task;
+    const i = store.markResults.findIndex(
+      (s) => s.libraryId === libraryId && s.studentId === studentId
+    );
+    store.markResults.splice(i, 1);
+  }
+
+  for (const task of store.historyTasks) {
+    // 清理不在当前任务中的markResult,防止回评产生的markResult造成垃圾
+    clearMarkResultFromTask(task);
+  }
+}
+
 export function removeCurrentMarkResult() {
   if (!store.currentTask) return;