Sfoglia il codice sorgente

以 libraryId 为主键来关联 task 和 markResult

Michael Wang 4 anni fa
parent
commit
60dd0f1b85
2 ha cambiato i file con 10 aggiunte e 31 eliminazioni
  1. 1 0
      src/features/mark/MarkSwitchGroupDialog.vue
  2. 9 31
      src/features/mark/store.ts

+ 1 - 0
src/features/mark/MarkSwitchGroupDialog.vue

@@ -61,6 +61,7 @@ export default defineComponent({
 
     const chooseGroup = async (markerId: number) => {
       const res = await doSwitchGroup(markerId).then((res) => {
+        // 切换分组相当于刷新页面,此时之前的所有的状态消失,即task/markResult不存在了
         if (res.data.success) {
           window.location.reload();
         } else {

+ 9 - 31
src/features/mark/store.ts

@@ -54,17 +54,11 @@ const obj = {
 /** 如果currentTask不存在,则返回undefined; 如果currentMarkResult不存在,则创建一个对应的markResult并返回 */
 export function findCurrentTaskMarkResult() {
   if (!store.currentTask) return;
-  const { libraryId, studentId } = store.currentTask;
-  const statusValue = store.setting.statusValue;
-  let markResult = store.markResults.find(
-    (m) =>
-      m.libraryId === libraryId &&
-      m.studentId === studentId &&
-      m.statusValue === statusValue
-  );
+  const { libraryId } = store.currentTask;
+  let markResult = store.markResults.find((m) => m.libraryId === libraryId);
 
   if (!markResult) {
-    const { libraryId, studentId } = store.currentTask;
+    const { studentId } = store.currentTask;
     const statusValue = store.setting.statusValue;
     markResult = {} as MarkResult;
     markResult.libraryId = libraryId;
@@ -85,24 +79,16 @@ export function findCurrentTaskMarkResult() {
     store.markResults = [...store.markResults, markResult];
   }
 
-  return store.markResults.find(
-    (m) =>
-      m.libraryId === libraryId &&
-      m.studentId === studentId &&
-      m.statusValue === statusValue
-  );
+  return store.markResults.find((m) => m.libraryId === libraryId);
 }
 
+function clearMarkResultFromTask(task: Task) {
+  let { libraryId } = task;
+  const i = store.markResults.findIndex((s) => s.libraryId === libraryId);
+  if (i >= 0) store.markResults.splice(i, 1);
+}
 /** 回评时,切换任务前,删除之前的回评markResult */
 export function removeOldPreviousMarkResult() {
-  function clearMarkResultFromTask(task: Task) {
-    let { libraryId, studentId } = task;
-    const i = store.markResults.findIndex(
-      (s) => s.libraryId === libraryId && s.studentId === studentId
-    );
-    if (i >= 0) store.markResults.splice(i, 1);
-  }
-
   for (const task of store.historyTasks) {
     // 清理不在当前任务中的markResult,防止回评产生的markResult造成垃圾
     clearMarkResultFromTask(task);
@@ -112,14 +98,6 @@ export function removeOldPreviousMarkResult() {
 export function removeCurrentMarkResult() {
   if (!store.currentTask) return;
 
-  function clearMarkResultFromTask(task: Task) {
-    let { libraryId, studentId } = task;
-    const i = store.markResults.findIndex(
-      (s) => s.libraryId === libraryId && s.studentId === studentId
-    );
-    if (i >= 0) store.markResults.splice(i, 1);
-  }
-
   clearMarkResultFromTask(store.currentTask);
 
   for (const task of store.tasks) {