zhangjie 3 月之前
父节点
当前提交
1be34e3de3
共有 3 个文件被更改,包括 26 次插入11 次删除
  1. 11 2
      src/api/markPage.ts
  2. 4 6
      src/features/mark/composables/useMarkSubmit.ts
  3. 11 3
      src/features/mark/composables/useTaskQuestion.ts

+ 11 - 2
src/api/markPage.ts

@@ -32,11 +32,20 @@ export async function getSetting() {
 }
 
 /** 获取评卷状态 */
-export async function getStatus(questionModel: Setting["questionModel"]) {
+export async function getStatus(
+  questionModel: Setting["questionModel"],
+  quesionId?: string
+) {
   return httpApp.post<MarkStore["status"]>(
     "/api/mark/getStatus",
     {},
-    { params: { questionModel, ...getMarkInfo() } }
+    {
+      params: {
+        ...getMarkInfo(),
+        questionModel,
+        quesionId: quesionId || undefined,
+      },
+    }
   );
 }
 

+ 4 - 6
src/features/mark/composables/useMarkSubmit.ts

@@ -15,7 +15,7 @@ export default function useMarkSubmit() {
   const { updateStatus } = useStatus();
   const { nextTask } = useMarkTask();
   const { setPrevTips, registTaskChangeTips } = useTaskTips();
-  const { updateStatusQuestionCount } = useTaskQuestion();
+  const { updateQuestionStatus } = useTaskQuestion();
   registTaskChangeTips();
 
   // 检查分数
@@ -159,17 +159,15 @@ export default function useMarkSubmit() {
     if (!res) return;
 
     // 故意不在此处同步等待,因为不必等待
-    updateStatus().catch((e) => console.log("保存任务后获取status出错", e));
     if (res.data.success && markStore.currentTask) {
       // 保存成功后,缓存当前评卷提示信息
       setPrevTips();
 
       // 单题模式下,更新当前题目的状态
       if (markStore.isSingelQuestionModel) {
-        updateStatusQuestionCount({
-          quesionId: markStore.currentQuestion.questionId,
-          leftCount: res.data.data.leftCount,
-        });
+        await updateQuestionStatus(markStore.currentQuestion.questionId);
+      } else {
+        updateStatus().catch((e) => console.log("保存任务后获取status出错", e));
       }
 
       void message.success({ content: "保存成功", duration: 2 });

+ 11 - 3
src/features/mark/composables/useTaskQuestion.ts

@@ -1,4 +1,5 @@
 import { useMarkStore } from "@/store";
+import { getStatus } from "@/api/markPage";
 
 export default function useTaskQuestion() {
   const markStore = useMarkStore();
@@ -24,8 +25,10 @@ export default function useTaskQuestion() {
     if (!firstUnfinishedQuestion) return;
 
     let remainCount = markStore.tasks.length + 1;
+
     for (let i = 0; i < markStore.status.length; i++) {
       const curStatus = markStore.status[i];
+      if (curStatus.leftCount <= 0) continue;
       remainCount = curStatus.leftCount - remainCount;
       if (remainCount >= 0) return curStatus.questionId;
     }
@@ -43,16 +46,21 @@ export default function useTaskQuestion() {
     const questionIndex = markStore.status.findIndex(
       (item) => item.questionId === data.questionId
     );
-    console.log(questionIndex);
-
     if (questionIndex < 0) return;
     markStore.status[questionIndex].leftCount = data.leftCount;
+  }
 
-    console.log(markStore.status[questionIndex]);
+  async function updateQuestionStatus(questionId: string) {
+    const res = await getStatus(markStore.setting.questionModel, questionId);
+    updateStatusQuestionCount({
+      questionId,
+      leftCount: res.data[0]?.leftCount,
+    });
   }
 
   return {
     getNextTaskQuestionId,
     updateStatusQuestionCount,
+    updateQuestionStatus,
   };
 }