浏览代码

评卷端回评可以对应题目和轨迹,抽象轨迹处理办法

Michael Wang 3 年之前
父节点
当前提交
a048417d7c

+ 4 - 37
src/features/library/inspect/MarkBoardInspect.vue

@@ -114,6 +114,10 @@ import type { Question } from "@/types";
 import { message } from "ant-design-vue";
 import { reactive, watch } from "vue";
 import { store } from "@/store/store";
+import {
+  addFocusTrack,
+  removeFocusTrack,
+} from "@/features/mark/use/focusTracks";
 
 const emit = defineEmits(["inspect", "reject"]);
 let checkedQuestions = reactive([] as Array<Question>);
@@ -180,43 +184,6 @@ function groupClicked(groupNumber: number) {
   }
 }
 
-function addFocusTrack(
-  groupNumber: number | undefined,
-  mainNumber: number | undefined,
-  subNumber: string | undefined
-) {
-  store.focusTracks.splice(0);
-
-  if (groupNumber) {
-    questions
-      ?.filter((q) => q.groupNumber === groupNumber)
-      ?.map((q) => q.trackList)
-      .reduce((acc, ts) => acc.concat(ts))
-      .forEach((t) => {
-        store.focusTracks.push(t);
-      });
-  } else {
-    questions
-      ?.map((q) => q.trackList)
-      .reduce((acc, ts) => acc.concat(ts))
-      .filter((t) => {
-        if (mainNumber) {
-          return t.mainNumber === mainNumber && t.subNumber === subNumber;
-        } else {
-          return false;
-        }
-      })
-      .forEach((t) => {
-        store.focusTracks.push(t);
-      });
-  }
-  // console.log(store.focusTracks);
-}
-
-function removeFocusTrack() {
-  store.focusTracks.splice(0);
-}
-
 function reject() {
   if (checkedQuestions.length === 0) {
     message.warn({ content: "请先选择试题。" });

+ 5 - 0
src/features/mark/MarkBoardTrack.vue

@@ -101,6 +101,10 @@
             @click="chooseQuestion(question)"
             class="question tw-rounded tw-cursor-pointer tw-relative tw-mb-2"
             :class="isCurrentQuestion(question) && 'current-question'"
+            @mouseover="
+              addFocusTrack(undefined, question.mainNumber, question.subNumber)
+            "
+            @mouseleave="removeFocusTrack"
           >
             <div>
               {{ question.title }} {{ question.mainNumber }}-{{
@@ -180,6 +184,7 @@ import { store } from "@/store/store";
 import { autoChooseFirstQuestion } from "./use/autoChooseFirstQuestion";
 import { message } from "ant-design-vue";
 import { dragSplitPane } from "./use/splitPane";
+import { addFocusTrack, removeFocusTrack } from "./use/focusTracks";
 
 const emit = defineEmits(["submit", "allZeroSubmit", "unselectiveSubmit"]);
 const { dragSpliter, topPercent } = dragSplitPane();

+ 38 - 0
src/features/mark/use/focusTracks.ts

@@ -0,0 +1,38 @@
+import { store } from "@/store/store";
+
+export function addFocusTrack(
+  groupNumber: number | undefined,
+  mainNumber: number | undefined,
+  subNumber: string | undefined
+) {
+  store.focusTracks.splice(0);
+
+  if (groupNumber) {
+    store.currentTask?.questionList
+      ?.filter((q) => q.groupNumber === groupNumber)
+      ?.map((q) => q.trackList)
+      .reduce((acc, ts) => acc.concat(ts))
+      .forEach((t) => {
+        store.focusTracks.push(t);
+      });
+  } else {
+    store.currentTask?.questionList
+      ?.map((q) => q.trackList)
+      .reduce((acc, ts) => acc.concat(ts))
+      .filter((t) => {
+        if (mainNumber) {
+          return t.mainNumber === mainNumber && t.subNumber === subNumber;
+        } else {
+          return false;
+        }
+      })
+      .forEach((t) => {
+        store.focusTracks.push(t);
+      });
+  }
+  // console.log(store.focusTracks);
+}
+
+export function removeFocusTrack() {
+  store.focusTracks.splice(0);
+}

+ 4 - 37
src/features/student/importInspect/MarkBoardInspect.vue

@@ -94,6 +94,10 @@
 import type { Question } from "@/types";
 import { reactive, watch } from "vue";
 import { store } from "@/store/store";
+import {
+  addFocusTrack,
+  removeFocusTrack,
+} from "@/features/mark/use/focusTracks";
 
 const emit = defineEmits(["makeTag", "fetchTask"]);
 const props =
@@ -118,43 +122,6 @@ let questions = $computed(() => {
 
 let markerScore = $computed(() => store.currentTask?.markerScore || 0);
 
-function addFocusTrack(
-  groupNumber: number | undefined,
-  mainNumber: number | undefined,
-  subNumber: string | undefined
-) {
-  store.focusTracks.splice(0);
-
-  if (groupNumber) {
-    questions
-      ?.filter((q) => q.groupNumber === groupNumber)
-      ?.map((q) => q.trackList)
-      .reduce((acc, ts) => acc.concat(ts))
-      .forEach((t) => {
-        store.focusTracks.push(t);
-      });
-  } else {
-    questions
-      ?.map((q) => q.trackList)
-      .reduce((acc, ts) => acc.concat(ts))
-      .filter((t) => {
-        if (mainNumber) {
-          return t.mainNumber === mainNumber && t.subNumber === subNumber;
-        } else {
-          return false;
-        }
-      })
-      .forEach((t) => {
-        store.focusTracks.push(t);
-      });
-  }
-  // console.log(store.focusTracks);
-}
-
-function removeFocusTrack() {
-  store.focusTracks.splice(0);
-}
-
 function fetchTask(next: boolean) {
   emit("fetchTask", next);
 }

+ 4 - 37
src/features/student/inspect/MarkBoardInspect.vue

@@ -114,6 +114,10 @@ import type { Question } from "@/types";
 import { message } from "ant-design-vue";
 import { reactive, watch } from "vue";
 import { store } from "@/store/store";
+import {
+  addFocusTrack,
+  removeFocusTrack,
+} from "@/features/mark/use/focusTracks";
 
 const emit = defineEmits(["inspect", "reject"]);
 let checkedQuestions = reactive([] as Array<Question>);
@@ -180,43 +184,6 @@ function groupClicked(groupNumber: number) {
   }
 }
 
-function addFocusTrack(
-  groupNumber: number | undefined,
-  mainNumber: number | undefined,
-  subNumber: string | undefined
-) {
-  store.focusTracks.splice(0);
-
-  if (groupNumber) {
-    questions
-      ?.filter((q) => q.groupNumber === groupNumber)
-      ?.map((q) => q.trackList)
-      .reduce((acc, ts) => acc.concat(ts))
-      .forEach((t) => {
-        store.focusTracks.push(t);
-      });
-  } else {
-    questions
-      ?.map((q) => q.trackList)
-      .reduce((acc, ts) => acc.concat(ts))
-      .filter((t) => {
-        if (mainNumber) {
-          return t.mainNumber === mainNumber && t.subNumber === subNumber;
-        } else {
-          return false;
-        }
-      })
-      .forEach((t) => {
-        store.focusTracks.push(t);
-      });
-  }
-  // console.log(store.focusTracks);
-}
-
-function removeFocusTrack() {
-  store.focusTracks.splice(0);
-}
-
 function reject() {
   if (checkedQuestions.length === 0) {
     message.warn({ content: "请先选择试题。" });