Browse Source

客观题检查轨迹颜色区分

zhangjie 1 năm trước cách đây
mục cha
commit
dcf0174cb0
3 tập tin đã thay đổi với 22 bổ sung14 xóa
  1. 17 12
      src/features/check/CommonMarkBody.vue
  2. 1 0
      src/features/check/MarkBody.vue
  3. 4 2
      src/types/index.ts

+ 17 - 12
src/features/check/CommonMarkBody.vue

@@ -148,23 +148,27 @@ watch(
   { deep: true }
 );
 
-const colors = ["red", "blue", "gray"];
+const colors = ["red", "blue", "green"];
 let colorMap = {};
-function addTrackColorAttr(tList: Track[]): Track[] {
+function addTrackColorAttr(tList: Track[], groupNumber: number): Track[] {
   let userIds: (number | undefined)[] = tList
-    .map((v) => v.userId + "")
+    .map((v) => v.userId)
     .filter((x) => !!x);
   userIds = Array.from(new Set(userIds));
-
-  let userNo = Object.keys(colorMap).length;
-  userIds.forEach((mid) => {
-    // 双评的时候保证同一个人的轨迹颜色是一致的
-    colorMap[mid] = colorMap[mid] || colors[userNo] || "gray";
-  });
-  const isByMultMark = Object.keys(colorMap).length > 1;
+  const isByMultMark = userIds.length > 1;
 
   tList = tList.map((item) => {
-    item.color = colorMap[item.userId] || "gray";
+    const uid = item.userId;
+    if (item.headerMarkScore) {
+      item.color = "green";
+    } else {
+      if (!colorMap[groupNumber]) colorMap[groupNumber] = {};
+      if (!colorMap[groupNumber][uid]) {
+        colorMap[groupNumber][uid] =
+          colors[Object.keys(colorMap[groupNumber]).length] || "green";
+      }
+      item.color = colorMap[groupNumber][uid];
+    }
     item.isByMultMark = isByMultMark;
     return item;
   });
@@ -173,6 +177,7 @@ function addTrackColorAttr(tList: Track[]): Track[] {
 
 async function processImage() {
   if (!store.currentTask) return;
+  colorMap = {};
   const images = [];
   const urls = store.currentTask.sheetUrls || [];
   for (const url of urls) {
@@ -185,7 +190,7 @@ async function processImage() {
   sliceImagesWithTrackList.splice(0);
 
   let trackLists = store.currentTask.questionList
-    .map((q) => addTrackColorAttr(q.trackList))
+    .map((q) => addTrackColorAttr(q.trackList, q.groupNumber))
     .flat();
   let tagLists = store.currentTask.specialTagList ?? [];
   tagLists = addTrackColorAttr(tagLists);

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

@@ -60,6 +60,7 @@ const makeScoreTrack = (
     positionX: -1,
     positionY: -1,
     number: -1,
+    color: "green",
   };
   track.positionX = (track.offsetX - item.dx) / maxSliceWidth;
   track.positionY =

+ 4 - 2
src/types/index.ts

@@ -289,9 +289,11 @@ export interface Track {
   score: number;
   /** 是否此处未作答,未作答时,score默认是-0分 */
   unanswered: boolean;
-  markerId?: number;
+  userId?: string;
   color?: string;
   isByMultMark?: boolean;
+  // 是否是科组长评卷轨迹
+  headerMarkScore?: boolean;
 }
 
 /** 特殊标记数据 */
@@ -309,7 +311,7 @@ export interface SpecialTag {
   tagType: "TEXT" | "CIRCLE" | "RIGHT" | "WRONG" | "HALF_RIGTH";
   // 分组号
   groupNumber?: number;
-  markerId?: number;
+  userId?: number;
   color?: string;
   isByMultMark?: boolean;
 }