Преглед изворни кода

currentMarkResult 与 currentTask 自动关联

Michael Wang пре 4 година
родитељ
комит
e3ae19d61a

+ 6 - 4
src/api/markPage.ts

@@ -1,4 +1,4 @@
-import { findCurrentTaskMarkResult } from "@/features/mark/store";
+import { store } from "@/features/mark/store";
 import { httpApp } from "@/plugins/axiosApp";
 import { Setting, UISetting } from "@/types";
 
@@ -64,7 +64,7 @@ export async function getHistoryTask({
 
 /** 保存评卷任务 */
 export async function saveTask() {
-  let markResult = findCurrentTaskMarkResult();
+  let markResult = store.currentMarkResult;
   if (markResult) {
     // markResult.specialTagList = [];
     markResult.problem = false;
@@ -111,7 +111,7 @@ export async function doSwitchGroup(markerId: number) {
 
 /** 评卷用户选择试卷的问题类型 */
 export async function doProblemType(problemId: number) {
-  let markResult = findCurrentTaskMarkResult();
+  let markResult = store.currentMarkResult;
   if (markResult) {
     markResult.problem = true;
     markResult.problemTypeId = problemId;
@@ -125,6 +125,8 @@ export async function doProblemType(problemId: number) {
     markResult = { ...markResult };
     // @ts-ignore
     markResult.__markStartTime = undefined;
+    return httpApp.post("/mark/saveTask", markResult);
+  } else {
+    console.error("无当前评卷结果");
   }
-  return httpApp.post("/mark/saveTask", markResult);
 }

+ 0 - 2
src/features/inspect/MarkBody.vue

@@ -96,8 +96,6 @@ export default defineComponent({
         });
       }
     }
-    // 供回退和清除使用
-    // let trackLen = store.currentMarkResult?.trackList.length;
     const renderPaperAndMark = async () => {
       if (!store.currentTask) return;
 

+ 2 - 2
src/features/mark/Mark.vue

@@ -209,7 +209,7 @@ export default defineComponent({
     };
 
     const allZeroSubmit = async () => {
-      const markResult = findCurrentTaskMarkResult();
+      const markResult = store.currentMarkResult;
       if (!markResult) return;
 
       markResult.markerScore = 0;
@@ -220,7 +220,7 @@ export default defineComponent({
       await saveTaskToServer();
     };
     const saveTaskToServer = async () => {
-      const markResult = findCurrentTaskMarkResult();
+      const markResult = store.currentMarkResult;
       if (!markResult) return;
 
       if (

+ 8 - 11
src/features/mark/MarkBody.vue

@@ -68,7 +68,7 @@ import {
   watch,
   watchEffect,
 } from "vue";
-import { findCurrentTaskMarkResult, getMarkStatus, store } from "./store";
+import { getMarkStatus, store } from "./store";
 import filters from "@/filters";
 import MarkDrawTrack from "./MarkDrawTrack.vue";
 import { ModeEnum, SpecialTag, Track } from "@/types";
@@ -81,7 +81,6 @@ import {
 import { isNumber } from "lodash";
 // @ts-ignore
 import CustomCursor from "custom-cursor.js";
-
 import { dragImage } from "./use/draggable";
 
 interface SliceImage {
@@ -119,7 +118,7 @@ export default defineComponent({
 
     async function processSliceConfig() {
       // check if have MarkResult for currentTask
-      let markResult = findCurrentTaskMarkResult();
+      let markResult = store.currentMarkResult;
 
       if (!markResult || !store.currentTask) return;
 
@@ -194,7 +193,7 @@ export default defineComponent({
 
     async function processSplitConfig() {
       // check if have MarkResult for currentTask
-      let markResult = findCurrentTaskMarkResult();
+      let markResult = store.currentMarkResult;
 
       if (!markResult || !store.currentTask) return;
 
@@ -272,8 +271,6 @@ export default defineComponent({
         }
       }
     }
-    // 供回退和清除使用
-    // let trackLen = store.currentMarkResult?.trackList.length;
     const renderPaperAndMark = async () => {
       if (__lock) {
         if (store.currentTask?.libraryId === __currentLibraryId) {
@@ -287,7 +284,7 @@ export default defineComponent({
       __currentLibraryId = store.currentTask?.libraryId ?? -1;
       sliceImagesWithTrackList.splice(0);
       // check if have MarkResult for currentTask
-      let markResult = findCurrentTaskMarkResult();
+      let markResult = store.currentMarkResult;
       // if (!store.currentTask) {
       //   sliceImagesWithTrackList.splice(0);
       //   _studentId = -1;
@@ -419,7 +416,7 @@ export default defineComponent({
       ) {
         store.currentScore = undefined;
       }
-      const markResult = findCurrentTaskMarkResult();
+      const markResult = store.currentMarkResult;
       if (markResult) {
         const maxNumber =
           markResult.trackList.length === 0
@@ -470,7 +467,7 @@ export default defineComponent({
         console.log("两个轨迹相距过近");
         return;
       }
-      const markResult = findCurrentTaskMarkResult();
+      const markResult = store.currentMarkResult;
       if (markResult) {
         markResult.specialTagList.push(track);
       }
@@ -532,7 +529,7 @@ export default defineComponent({
       () => store.currentMarkResult?.trackList,
       () => {
         if (store.setting.mode !== ModeEnum.TRACK) return;
-        const markResult = findCurrentTaskMarkResult();
+        const markResult = store.currentMarkResult;
         if (markResult && store.currentMarkResult) {
           const cq = store.currentQuestion;
           // 当无轨迹时,不更新;无轨迹时,将分数置null
@@ -563,7 +560,7 @@ export default defineComponent({
 
     // question.score更新后,自动关联markResult.scoreList和markResult.markerScore
     watchEffect(() => {
-      const markResult = findCurrentTaskMarkResult();
+      const markResult = store.currentMarkResult;
 
       if (markResult && store.currentTask) {
         const scoreList = store.currentTask.questionList.map((q) => q.score);

+ 9 - 9
src/features/mark/MarkHeader.vue

@@ -267,15 +267,15 @@ export default defineComponent({
       } else {
         store.setting.mode = ModeEnum.TRACK;
       }
-      if (store.currentMarkResult) {
-        store.currentMarkResult.scoreList = [];
-        store.currentMarkResult.trackList = [];
-      }
-      if (store.currentTask) {
-        store.currentTask.questionList.forEach((q) => (q.score = null));
-      }
-      store.currentQuestion = undefined;
-      store.currentScore = undefined;
+      // if (store.currentMarkResult) {
+      //   store.currentMarkResult.scoreList = [];
+      //   store.currentMarkResult.trackList = [];
+      // }
+      // if (store.currentTask) {
+      //   store.currentTask.questionList.forEach((q) => (q.score = null));
+      // }
+      // store.currentQuestion = undefined;
+      // store.currentScore = undefined;
 
       const body = document.querySelector("body");
       if (body) body.innerHTML = "重新加载中...";

+ 1 - 1
src/features/mark/store.ts

@@ -77,7 +77,7 @@ export function findCurrentTaskMarkResult() {
     store.markResults = [...store.markResults, markResult];
   }
 
-  return store.markResults.find((m) => m.libraryId === libraryId);
+  return store.markResults.find((m) => m.libraryId === libraryId) as MarkResult;
 }
 
 function clearMarkResultFromTask(task: Task) {

+ 0 - 3
src/features/mark/use/autoChooseFirstQuestion.ts

@@ -14,10 +14,7 @@ export function autoChooseFirstQuestion() {
       // FIXed ME: 此时取到的还是score:null,但是 chooseQuestion之后就变成了score:0
       const firstQuestion = store.currentTask?.questionList[0];
       if (firstQuestion) {
-        // const oldScore = firstQuestion.score;
-        // console.log(oldScore);
         chooseQuestion(firstQuestion);
-        // setTimeout(() => (firstQuestion.score = oldScore), 0);
       }
     }
   );