Selaa lähdekoodia

fix: 客观题检查

zhangjie 3 kuukautta sitten
vanhempi
commit
0ca41a9e67

+ 12 - 2
src/features/check-objective/CheckObjective.vue

@@ -181,7 +181,6 @@
             class="board-submit"
             size="medium"
             type="primary"
-            :disabled="!checkObjectiveStore.student?.upload"
             @click="saveStudentAnswer"
           >
             保存
@@ -205,6 +204,8 @@ import { ArrowLeftOutlined, ArrowRightOutlined } from "@ant-design/icons-vue";
 import { PaperRecogData, AnswerTagItem } from "@/types";
 import { doLogout } from "@/api/markPage";
 import vls from "@/utils/storage";
+import { onMounted } from "vue";
+import { message } from "ant-design-vue";
 
 import { useCheckObjectiveStore } from "@/store";
 import useBodyScroll from "../mark/composables/useBodyScroll";
@@ -216,8 +217,9 @@ import useImage from "./composables/useImage";
 
 import ZoomPaper from "@/components/ZoomPaper.vue";
 
-const studentIds: string[] = vls.get("check-students", []);
 const checkObjectiveStore = useCheckObjectiveStore();
+checkObjectiveStore.resetInfo();
+const studentIds: string[] = vls.get("check-students", []);
 checkObjectiveStore.setInfo({
   studentIds,
 });
@@ -239,6 +241,14 @@ const {
   getPreviousStudent,
 } = useStudent();
 
+onMounted(async () => {
+  if (checkObjectiveStore.studentIds.length === 0) {
+    void message.info("没有需要处理的考生,请返回。");
+    return;
+  }
+  await getNextStudent();
+});
+
 // 试卷加载之后,解析答题区域
 let answerTags = $ref<AnswerTagItem[]>([]);
 let optionsBlocks = $ref([]);

+ 9 - 16
src/features/check-objective/composables/useStudent.ts

@@ -1,7 +1,7 @@
 import { StudentObjectiveInfo } from "@/types";
 import { studentObjectiveConfirmData } from "@/api/checkPage";
 import { message } from "ant-design-vue";
-import { onMounted, computed } from "vue";
+import { computed } from "vue";
 import { useCheckObjectiveStore } from "@/store";
 
 export default function useStudent() {
@@ -31,7 +31,11 @@ export default function useStudent() {
   );
 
   const answersComputed = computed(() => {
-    let mains = checkObjectiveStore.student?.answers.map((v) => ({
+    if (!checkObjectiveStore.student) return [];
+
+    const { answers, titles } = checkObjectiveStore.student;
+
+    let mains = answers.map((v) => ({
       mainTitle: "",
       mainNumber: v.mainNumber,
       subs: [v],
@@ -45,17 +49,14 @@ export default function useStudent() {
       }
     });
     mains?.forEach((v) => {
-      v.mainTitle = checkObjectiveStore.student?.titles[v.mainNumber] ?? "";
-      v.subs =
-        checkObjectiveStore.student?.answers.filter(
-          (v2) => v2.mainNumber === v.mainNumber
-        ) ?? [];
+      v.mainTitle = titles ? titles[v.mainNumber] : "";
+      v.subs = answers.filter((v2) => v2.mainNumber === v.mainNumber) ?? [];
     });
     return mains;
   });
 
   async function getNextStudent() {
-    if (isLast.value) {
+    if (isLast.value && !isFirst.value) {
       void message.warning("已经是最后一份!");
       return;
     }
@@ -97,14 +98,6 @@ export default function useStudent() {
     await getStudent(checkObjectiveStore.studentIds[currentIndex]);
   }
 
-  onMounted(async () => {
-    if (checkObjectiveStore.studentIds.length === 0) {
-      void message.info("没有需要处理的考生,请返回。");
-      return;
-    }
-    await getNextStudent();
-  });
-
   return {
     currentIndex,
     isFirst,

+ 2 - 14
src/features/track/TrackBody.vue

@@ -150,12 +150,8 @@ import useTrack from "./composables/useTrack";
 
 const markStore = useMarkStore();
 const { answerPaperScale } = useBodyScroll();
-const {
-  parseMarkDetailList,
-  paserRecogData,
-  parseObjectiveAnswerTags,
-  parseMode4Data,
-} = useTrackTag();
+const { parseMarkDetailList, paserRecogData, parseObjectiveAnswerTags } =
+  useTrackTag();
 const { addTrackColorAttr, addTagColorAttr, addHeaderTrackColorAttr } =
   useTrack();
 
@@ -260,14 +256,6 @@ async function processImage() {
       objectiveAnswerTags: objectiveAnswerTagList[indexInSliceUrls - 1],
     });
   }
-
-  // 无答题卡,模式4
-  if (!markStore.currentTask.cardData?.length) {
-    const summarys = parseMode4Data();
-    if (summarys && summarys.length) {
-      sliceImagesWithTrackList[0].summarys = summarys;
-    }
-  }
 }
 
 // should not render twice at the same time

+ 0 - 2
src/features/track/composables/useTrackTag.ts

@@ -140,8 +140,6 @@ export default function useTrackTag() {
 
   // 解析各试题答题区域
   function parseQuestionAreas(questions: Question[]) {
-    if (!questions.length || !markStore.currentTask.cardData?.length) return [];
-
     if (!questions.length || !markStore.currentTask?.markAreas?.length)
       return [];