Jelajahi Sumber

线上问题修复:关于特殊标记的给色逻辑

刘洋 1 tahun lalu
induk
melakukan
a5c6615ad6

+ 19 - 19
src/devLoginParams.ts

@@ -9,16 +9,16 @@
 // export const markerId="419";
 
 /** 244 评卷员 */
-export const LOGIN_CONFIG = {
-  isAdmin: false,
-  forceChange: true,
-  loginName: "1-339-5-1",
-  // loginName: "liuyang",
-  password: "123456",
-  examId: "1",
-  // markerId: "438",
-  markerId: "147",
-};
+// export const LOGIN_CONFIG = {
+//   isAdmin: false,
+//   forceChange: true,
+//   loginName: "1-339-5-1",
+//   // loginName: "liuyang",
+//   password: "123456",
+//   examId: "1",
+//   // markerId: "438",
+//   markerId: "147",
+// };
 /** 244 评卷员 */
 // export const LOGIN_CONFIG = {
 //   isAdmin: false,
@@ -85,15 +85,15 @@ export const LOGIN_CONFIG = {
 //   examId: "1",
 //   markerId: null,
 // };
-// export const LOGIN_CONFIG = {
-//   isAdmin: true,
-//   forceChange: true,
-//   // loginName: "fh161301",
-//   loginName: "24-FH-111-1",
-//   password: "654321",
-//   examId: "341",
-//   markerId: null,
-// };
+export const LOGIN_CONFIG = {
+  isAdmin: true,
+  forceChange: true,
+  // loginName: "fh161301",
+  loginName: "admin-jhdx",
+  password: "jhdx!@#",
+  examId: "1274",
+  markerId: null,
+};
 
 /** 255 评卷员 */
 // export const LOGIN_CONFIG = {

+ 49 - 52
src/features/student/scoreVerify/markBody.vue

@@ -77,61 +77,60 @@ const { addTimeout } = useTimers();
 let sliceImagesWithTrackList: SliceImage[] = reactive([]);
 let maxImageWidth = 0;
 
-function addTrackColorAttr(tList: Track[]): Track[] {
-  let markerIds: (number | undefined)[] = tList
-    .map((v) => v.markerId)
-    .filter((x) => !!x);
-  markerIds = Array.from(new Set(markerIds));
-  // markerIds.sort();
+function buildColorMap(colorMap: ColorMap, markerId) {
+  if (!colorMap[markerId + ""]) {
+    let keyLength = Object.keys(colorMap);
+    colorMap[markerId + ""] =
+      keyLength == 0
+        ? "#F53F3F"
+        : keyLength == 1
+        ? "#165DFF"
+        : keyLength == 2
+        ? "#FAAD14"
+        : "gray";
+  }
+}
+
+function addColorAttr(
+  trackList: Track[] = [],
+  tagList: SpecialTag[] = [],
+  groupNumber: number
+): { trackList: Track[]; tagList: SpecialTag[] } {
   let colorMap: ColorMap = {};
-  for (let i = 0; i < markerIds.length; i++) {
-    const mId: any = markerIds[i];
-    if (i == 0) {
-      colorMap[mId + ""] = "#F53F3F";
-    } else if (i == 1) {
-      colorMap[mId + ""] = "#165DFF";
-    } else if (i == 2) {
-      colorMap[mId + ""] = "#FAAD14";
-    } else if (i > 2) {
-      colorMap[mId + ""] = "gray";
+  for (let i = 0; i < trackList.length; i++) {
+    const track = trackList[i];
+    if (track?.markerId) {
+      buildColorMap(colorMap, track.markerId);
+      track.color = colorMap[track.markerId + ""];
+    } else if (track?.markerId == 0) {
+      track.color = "#F53F3F";
+    } else {
+      track.color = "gray";
     }
   }
   if (Object.keys(colorMap).length > 1) {
     emit("getIsMultComments", true);
+    for (let i = 0; i < trackList.length; i++) {
+      trackList[i].isByMultMark = true;
+    }
   }
-  tList = tList.map((item: Track) => {
-    item.color = colorMap[item.markerId + ""] || "gray";
-    item.isByMultMark = markerIds.length > 1;
-    return item;
-  });
-  return tList;
-}
 
-function addTagColorAttr(tList: SpecialTag[]): SpecialTag[] {
-  let markerIds: (number | undefined)[] = tList
-    .map((v) => v.markerId)
-    .filter((x) => !!x);
-  markerIds = Array.from(new Set(markerIds));
-  // markerIds.sort();
-  let colorMap: ColorMap = {};
-  for (let i = 0; i < markerIds.length; i++) {
-    const mId: any = markerIds[i];
-    if (i == 0) {
-      colorMap[mId + ""] = "#F53F3F";
-    } else if (i == 1) {
-      colorMap[mId + ""] = "#165DFF";
-    } else if (i == 2) {
-      colorMap[mId + ""] = "#FAAD14";
-    } else if (i > 2) {
-      colorMap[mId + ""] = "gray";
+  for (let j = 0; j < tagList.length; j++) {
+    const tag: SpecialTag = tagList[j];
+    if (tag.groupNumber == groupNumber) {
+      if (tag.markerId) {
+        buildColorMap(colorMap, tag.markerId);
+        tag.color = colorMap[tag.markerId + ""];
+      } else if (tag?.markerId == 0) {
+        tag.color = "#F53F3F";
+      } else {
+        tag.color = "gray";
+      }
+      tag.isByMultMark = Object.keys(colorMap).length > 1;
     }
   }
-  tList = tList.map((item: SpecialTag) => {
-    item.color = colorMap[item.markerId + ""] || "gray";
-    item.isByMultMark = markerIds.length > 1;
-    return item;
-  });
-  return tList;
+
+  return { trackList, tagList };
 }
 
 async function processImage() {
@@ -157,7 +156,8 @@ async function processImage() {
 
         return q.headerTrack?.length
           ? addHeaderTrackColorAttr(q.headerTrack)
-          : addTrackColorAttr(tList);
+          : addColorAttr(tList, store.currentTask.specialTagList || [])
+              .trackList;
       })
       .flat();
     const thisImageTrackList = trackLists.filter(
@@ -170,12 +170,9 @@ async function processImage() {
             (t) => t.offsetIndex === indexInSliceUrls
           )
         )
-      : addTagColorAttr(
-          (store.currentTask.specialTagList || []).filter(
-            (t) => t.offsetIndex === indexInSliceUrls
-          )
+      : (store.currentTask.specialTagList || []).filter(
+          (t) => t.offsetIndex === indexInSliceUrls
         );
-
     // const thisImageTagList = addTagColorAttr(
     //   (store.currentTask.specialTagList || []).filter(
     //     (t) => t.offsetIndex === indexInSliceUrls

+ 49 - 52
src/features/student/studentInspect/MarkBody.vue

@@ -70,61 +70,60 @@ const { addTimeout } = useTimers();
 let sliceImagesWithTrackList: SliceImage[] = reactive([]);
 let maxImageWidth = 0;
 
-function addTrackColorAttr(tList: Track[]): Track[] {
-  let markerIds: (number | undefined)[] = tList
-    .map((v) => v.markerId)
-    .filter((x) => !!x);
-  markerIds = Array.from(new Set(markerIds));
-  // markerIds.sort();
+function buildColorMap(colorMap: ColorMap, markerId) {
+  if (!colorMap[markerId + ""]) {
+    let keyLength = Object.keys(colorMap);
+    colorMap[markerId + ""] =
+      keyLength == 0
+        ? "#F53F3F"
+        : keyLength == 1
+        ? "#165DFF"
+        : keyLength == 2
+        ? "#FAAD14"
+        : "gray";
+  }
+}
+
+function addColorAttr(
+  trackList: Track[] = [],
+  tagList: SpecialTag[] = [],
+  groupNumber: number
+): { trackList: Track[]; tagList: SpecialTag[] } {
   let colorMap: ColorMap = {};
-  for (let i = 0; i < markerIds.length; i++) {
-    const mId: any = markerIds[i];
-    if (i == 0) {
-      colorMap[mId + ""] = "#F53F3F";
-    } else if (i == 1) {
-      colorMap[mId + ""] = "#165DFF";
-    } else if (i == 2) {
-      colorMap[mId + ""] = "#FAAD14";
-    } else if (i > 2) {
-      colorMap[mId + ""] = "gray";
+  for (let i = 0; i < trackList.length; i++) {
+    const track = trackList[i];
+    if (track?.markerId) {
+      buildColorMap(colorMap, track.markerId);
+      track.color = colorMap[track.markerId + ""];
+    } else if (track?.markerId == 0) {
+      track.color = "#F53F3F";
+    } else {
+      track.color = "gray";
     }
   }
   if (Object.keys(colorMap).length > 1) {
     emit("getIsMultComments", true);
+    for (let i = 0; i < trackList.length; i++) {
+      trackList[i].isByMultMark = true;
+    }
   }
-  tList = tList.map((item: Track) => {
-    item.color = colorMap[item.markerId + ""] || "gray";
-    item.isByMultMark = markerIds.length > 1;
-    return item;
-  });
-  return tList;
-}
 
-function addTagColorAttr(tList: SpecialTag[]): SpecialTag[] {
-  let markerIds: (number | undefined)[] = tList
-    .map((v) => v.markerId)
-    .filter((x) => !!x);
-  markerIds = Array.from(new Set(markerIds));
-  // markerIds.sort();
-  let colorMap: ColorMap = {};
-  for (let i = 0; i < markerIds.length; i++) {
-    const mId: any = markerIds[i];
-    if (i == 0) {
-      colorMap[mId + ""] = "#F53F3F";
-    } else if (i == 1) {
-      colorMap[mId + ""] = "#165DFF";
-    } else if (i == 2) {
-      colorMap[mId + ""] = "#FAAD14";
-    } else if (i > 2) {
-      colorMap[mId + ""] = "gray";
+  for (let j = 0; j < tagList.length; j++) {
+    const tag: SpecialTag = tagList[j];
+    if (tag.groupNumber == groupNumber) {
+      if (tag.markerId) {
+        buildColorMap(colorMap, tag.markerId);
+        tag.color = colorMap[tag.markerId + ""];
+      } else if (tag?.markerId == 0) {
+        tag.color = "#F53F3F";
+      } else {
+        tag.color = "gray";
+      }
+      tag.isByMultMark = Object.keys(colorMap).length > 1;
     }
   }
-  tList = tList.map((item: SpecialTag) => {
-    item.color = colorMap[item.markerId + ""] || "gray";
-    item.isByMultMark = markerIds.length > 1;
-    return item;
-  });
-  return tList;
+
+  return { trackList, tagList };
 }
 
 async function processImage() {
@@ -149,7 +148,8 @@ async function processImage() {
         let tList = q.trackList;
         return q.headerTrack?.length
           ? addHeaderTrackColorAttr(q.headerTrack)
-          : addTrackColorAttr(tList);
+          : addColorAttr(tList, store.currentTask.specialTagList || [])
+              .trackList;
       })
       .flat();
     const thisImageTrackList = trackLists.filter(
@@ -161,12 +161,9 @@ async function processImage() {
             (t) => t.offsetIndex === indexInSliceUrls
           )
         )
-      : addTagColorAttr(
-          (store.currentTask.specialTagList || []).filter(
-            (t) => t.offsetIndex === indexInSliceUrls
-          )
+      : (store.currentTask.specialTagList || []).filter(
+          (t) => t.offsetIndex === indexInSliceUrls
         );
-
     sliceImagesWithTrackList.push({
       url,
       trackList: thisImageTrackList,

+ 2 - 1
src/types/index.ts

@@ -264,7 +264,7 @@ export interface Question extends RawQuestion {
 }
 
 export interface ColorMap {
-  [key: string]: string;
+  [key: string]: any;
 }
 /** 轨迹数据 */
 export interface Track {
@@ -293,6 +293,7 @@ export interface Track {
 
 /** 特殊标记数据 */
 export interface SpecialTag {
+  groupNumber: number;
   /** 第几张图 */
   offsetIndex: number;
   /** 左上角为原点 */

+ 2 - 1
vite.config.ts

@@ -3,7 +3,8 @@ import vue from "@vitejs/plugin-vue";
 import ViteComponents from "unplugin-vue-components/vite";
 import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
 
-const SERVER_URL = "http://192.168.10.224";
+// const SERVER_URL = "http://192.168.10.224";
+const SERVER_URL = "https://www.markingcloud.com";
 // const SERVER_URL = "http://192.168.11.103:8090";
 // const SERVER_URL = "http://192.168.11.81:8090";