فهرست منبع

关于双评的需求

刘洋 2 سال پیش
والد
کامیت
7acee8076a

+ 12 - 2
src/features/student/studentInspect/MarkBoardInspect.vue

@@ -30,7 +30,7 @@
           </div>
           <div
             class="tw-flex tw-justify-between tw-place-items-center hover:tw-bg-gray-200"
-            @mouseover="addFocusTrack(groupNumber, undefined, undefined)"
+            @mouseover="willAddFocusTrack(groupNumber, undefined, undefined)"
             @mouseleave="removeFocusTrack"
           >
             <span class="secondary-text">分组 {{ groupNumber }}</span>
@@ -49,7 +49,7 @@
                 class="question tw-flex tw-place-items-center tw-mb-1 tw-font-bold hover:tw-bg-gray-200"
                 :class="{ uncalculate: question.uncalculate }"
                 @mouseover="
-                  addFocusTrack(
+                willAddFocusTrack(
                     undefined,
                     question.mainNumber,
                     question.subNumber
@@ -130,6 +130,16 @@ import {
   removeFocusTrack,
 } from "@/features/mark/use/focusTracks";
 import ReviewReturnDialog from "@/features/library/inspect/ReviewReturnDialog.vue";
+
+const willAddFocusTrack = (  groupNumber: number | undefined,
+  mainNumber: number | undefined,
+  subNumber: string | undefined)=>{
+    if(!isMultComments){
+      addFocusTrack(groupNumber,mainNumber,subNumber);
+    }
+}
+
+const {isMultComments} = defineProps<{isMultComments:boolean}>();
 const emit = defineEmits(["inspect", "reject"]);
 let checkedQuestions: Question[] = reactive([]);
 let reviewReturnVisible = $ref(false);

+ 14 - 6
src/features/student/studentInspect/MarkBody.vue

@@ -53,7 +53,7 @@ interface SliceImage {
 const { origImageUrls = "sliceUrls" } = defineProps<{
   origImageUrls?: "sheetUrls" | "sliceUrls";
 }>();
-const emit = defineEmits(["error"]);
+const emit = defineEmits(["error", "getIsMultComments"]);
 
 const { dragContainer } = dragImage();
 
@@ -62,7 +62,10 @@ const { addTimeout } = useTimers();
 let sliceImagesWithTrackList: SliceImage[] = reactive([]);
 let maxImageWidth = 0;
 
-function addColorAttr(tList: (Track | SpecialTag)[]) : (Track | SpecialTag)[] {
+function addColorAttr(
+  tList: (Track | SpecialTag)[],
+  isTrack?: boolean
+): (Track | SpecialTag)[] {
   let markerIds: (number | undefined)[] = tList
     .map((v) => v.markerId)
     .filter((x) => !!x);
@@ -79,6 +82,9 @@ function addColorAttr(tList: (Track | SpecialTag)[]) : (Track | SpecialTag)[] {
       colorMap[mId + ""] = "green";
     }
   }
+  if (Object.keys(colorMap).length > 1) {
+    emit("getIsMultComments", true);
+  }
   tList = tList.map((item: Track | SpecialTag) => {
     item.color = colorMap[item.markerId + ""] || "red";
     return item;
@@ -107,15 +113,17 @@ async function processImage() {
       .map((q) => {
         let tList = q.trackList;
 
-        return addColorAttr(tList);
+        return addColorAttr(tList, true);
       })
       .flat();
     const thisImageTrackList = trackLists.filter(
       (t) => t.offsetIndex === indexInSliceUrls
     );
-    const thisImageTagList = addColorAttr((store.currentTask.specialTagList || [])
-      .filter((t) => t.offsetIndex === indexInSliceUrls))
-
+    const thisImageTagList = addColorAttr(
+      (store.currentTask.specialTagList || []).filter(
+        (t) => t.offsetIndex === indexInSliceUrls
+      )
+    );
 
     sliceImagesWithTrackList.push({
       url,

+ 6 - 2
src/features/student/studentInspect/StudentInspect.vue

@@ -8,8 +8,8 @@
         orderTimeField="inspectTime"
         :getHistory="getInspectedHistory"
       />
-      <mark-body @error="renderError" />
-      <MarkBoardInspect @inspect="saveTaskToServer" @reject="rejectQuestions" />
+      <mark-body @error="renderError" @getIsMultComments="getIsMultComments" />
+      <MarkBoardInspect :isMultComments="isMultComments" @inspect="saveTaskToServer" @reject="rejectQuestions" />
     </div>
   </div>
   <MinimapModal />
@@ -40,6 +40,10 @@ import { getInspectedHistory } from "@/api/inspectPage";
 import EventBus from "@/plugins/eventBus";
 import { addFileServerPrefixToTask } from "@/utils/utils";
 
+let isMultComments = $ref(false);  //是否双评
+const getIsMultComments = (bool:boolean)=>{
+  isMultComments = bool;
+}
 const route = useRoute();
 let isSingleStudent = !!route.query.studentId;
 const {