Kaynağa Gözat

切换任务时,删除回评产生的markResult

Michael Wang 4 yıl önce
ebeveyn
işleme
b23776cd30

+ 4 - 0
src/api/markPage.ts

@@ -72,6 +72,8 @@ export async function saveTask() {
     markResult = { ...markResult };
     // @ts-ignore
     markResult.__markStartTime = undefined;
+    // @ts-ignore
+    markResult.__previous = undefined;
 
     return httpApp.post("/mark/saveTask", markResult);
   }
@@ -125,6 +127,8 @@ export async function doProblemType(problemId: number) {
     markResult = { ...markResult };
     // @ts-ignore
     markResult.__markStartTime = undefined;
+    // @ts-ignore
+    markResult.__previous = undefined;
     return httpApp.post("/mark/saveTask", markResult);
   } else {
     console.error("无当前评卷结果");

+ 2 - 4
src/features/mark/Mark.vue

@@ -112,7 +112,7 @@ export default defineComponent({
       if (res.data.libraryId) {
         store.tasks.push(res.data);
         if (!store.historyOpen) {
-          // 回评中,不能替换task
+          // 在正评中,才能替换task
           // TODO: 疑似替换多次引起重新渲染
           if (store.currentTask?.studentId !== store.tasks[0].studentId)
             store.currentTask = store.tasks[0];
@@ -162,9 +162,7 @@ export default defineComponent({
       () => store.currentTask,
       () => {
         // 回评切换任务,先删除之前回评任务的markResult
-        if (store.historyOpen) {
-          removeOldPreviousMarkResult();
-        }
+        removeOldPreviousMarkResult();
         store.currentMarkResult = findCurrentTaskMarkResult();
 
         // 重置当前选择的quesiton和score

+ 3 - 4
src/features/mark/store.ts

@@ -66,6 +66,7 @@ export function findCurrentTaskMarkResult() {
     markResult.studentId = studentId;
     markResult.statusValue = statusValue;
     markResult.__markStartTime = Date.now();
+    markResult.__previous = store.currentTask.previous;
     markResult.trackList = store.currentTask.questionList.reduce(
       (all, c) => all.concat(c.trackList),
       [] as Array<Track>
@@ -87,10 +88,8 @@ function clearMarkResultFromTask(task: Task) {
 }
 /** 回评时,切换任务前,删除之前的回评markResult */
 export function removeOldPreviousMarkResult() {
-  for (const task of store.historyTasks) {
-    // 清理不在当前任务中的markResult,防止回评产生的markResult造成垃圾
-    clearMarkResultFromTask(task);
-  }
+  // 清理不在当前任务中的markResult,防止回评产生的markResult造成垃圾
+  store.markResults = store.markResults.filter((m) => !!!m.__previous);
 }
 
 export function removeCurrentMarkResult() {

+ 1 - 0
src/types/index.ts

@@ -173,6 +173,7 @@ export interface MarkResult {
   problemTypeId: number;
 
   __markStartTime: number; // 前端自用,用于标记阅卷开始时间和计算spent
+  __previous: boolean; // 前端只用,用于删除回评产生的 markResult
 }
 
 export interface InspectStore {