zhangjie 1 an în urmă
părinte
comite
693824f9d3

+ 8 - 2
src/features/check/CommonMarkBody.vue

@@ -51,7 +51,7 @@
 import { onMounted, onUnmounted, reactive, watch, watchEffect } from "vue";
 import { store } from "@/store/store";
 import MarkDrawTrack from "../mark/MarkDrawTrack.vue";
-import type { SliceImage, Track } from "@/types";
+import type { SliceImage, SpecialTag, Track } from "@/types";
 import { useTimers } from "@/setups/useTimers";
 import { loadImage } from "@/utils/utils";
 import { dragImage } from "../mark/use/draggable";
@@ -174,6 +174,12 @@ function addTrackColorAttr(tList: Track[], groupNumber: number): Track[] {
   });
   return tList;
 }
+function addSpecialTrackColorAttr(tList: SpecialTag[]): SpecialTag[] {
+  return tList.map((item) => {
+    item.color = colorMap[item.groupNumber][item.userId] || "green";
+    return item;
+  });
+}
 
 async function processImage() {
   if (!store.currentTask) return;
@@ -193,7 +199,7 @@ async function processImage() {
     .map((q) => addTrackColorAttr(q.trackList, q.groupNumber))
     .flat();
   let tagLists = store.currentTask.specialTagList ?? [];
-  tagLists = addTrackColorAttr(tagLists);
+  tagLists = addSpecialTrackColorAttr(tagLists);
 
   let accumTopHeight = 0;
   let accumBottomHeight = 0;

+ 1 - 0
src/features/check/MarkBody.vue

@@ -163,6 +163,7 @@ const makeSpecialTagTrack = (
     positionX: -1,
     positionY: -1,
     groupNumber: store.currentQuestion.groupNumber,
+    color: "green",
   };
   track.positionX = (track.offsetX - item.dx) / maxSliceWidth;
   track.positionY =

+ 20 - 14
src/features/check/SubjectiveAnswer.vue

@@ -282,14 +282,22 @@ const getMarkData = () => {
     const { groupNumber } =
       taskQuestionInfo[`${track.mainNumber * 1000}${track.subNumber}`];
     if (!groupMap[groupNumber]) {
-      groupMap[groupNumber] = { groupNumber, trackList: [] };
+      groupMap[groupNumber] = {
+        groupNumber,
+        trackList: [],
+        specialTagList: [],
+      };
     }
     groupMap[groupNumber].trackList.push(track);
   });
   markResult.specialTagList.forEach((track) => {
     const { groupNumber } = track;
     if (!groupMap[groupNumber]) {
-      groupMap[groupNumber] = { groupNumber, specialTagList: [] };
+      groupMap[groupNumber] = {
+        groupNumber,
+        trackList: [],
+        specialTagList: [],
+      };
     }
     groupMap[groupNumber].specialTagList.push(track);
   });
@@ -303,7 +311,7 @@ const getMarkData = () => {
     const trackList = item.trackList.filter((track) =>
       modifiedQuestions.includes(`${track.mainNumber}_${track.subNumber}`)
     );
-    if (!trackList.length) return null;
+    if (!trackList.length && !item.specialTagList.length) return null;
 
     trackList.forEach((track) => {
       const qno = `${track.mainNumber * 1000}${track.subNumber}`;
@@ -407,16 +415,10 @@ const saveTaskToServer = async () => {
   //   }
   // }
 
-  console.log("save task to server");
-  void message.loading({ content: "保存检查任务...", key: mkey });
-
   const data = getMarkData();
   const res = await saveStudentSubjectiveConfirmData(data).catch(() => false);
   if (!res) return;
-  if (res.data.success) {
-    void message.success({ content: "保存成功", key: mkey, duration: 2 });
-    store.currentTask = undefined;
-  } else {
+  if (!res.data.success) {
     console.log(res.data.message);
     void message.error({ content: res.data.message, key: mkey, duration: 5 });
     return;
@@ -424,15 +426,19 @@ const saveTaskToServer = async () => {
 
   if (!isMultiStudent) {
     void message.success({
-      content: "页面将在3秒钟之后关闭",
+      content: "保存成功,页面将在3秒钟之后关闭",
       key: mkey,
       duration: 2,
     });
-    // setTimeout(() => {
-    //   window.close();
-    // }, 3000);
+    setTimeout(() => {
+      window.close();
+    }, 3000);
     return;
+  } else {
+    void message.success({ content: "保存成功", key: mkey, duration: 2 });
   }
+
+  store.currentTask = undefined;
   await getNextStudent();
 };
 </script>