zhangjie 3 ماه پیش
والد
کامیت
0f306cf333

+ 4 - 5
src/features/check-objective/CheckObjective.vue

@@ -217,17 +217,16 @@ import useImage from "./composables/useImage";
 import ZoomPaper from "@/components/ZoomPaper.vue";
 
 const studentIds: string[] = vls.get("check-students", []);
-
 const checkObjectiveStore = useCheckObjectiveStore();
+checkObjectiveStore.setInfo({
+  studentIds,
+});
+
 const { parseAnswerTagsFromRecogData } = useTrackTag();
 const { saveStudentAnswer, onPreventAnswerKey, changeAnswer } = useAnswer();
 const { switchImageArrow, switchImage } = useImage();
 const { showBigImage } = useBigImage();
 
-checkObjectiveStore.setInfo({
-  studentIds,
-});
-
 const {
   currentIndex,
   isFirst,

+ 13 - 13
src/features/check-objective/composables/useStudent.ts

@@ -1,36 +1,36 @@
 import { StudentObjectiveInfo } from "@/types";
 import { studentObjectiveConfirmData } from "@/api/checkPage";
 import { message } from "ant-design-vue";
-import { onMounted } from "vue";
+import { onMounted, computed } from "vue";
 import { useCheckObjectiveStore } from "@/store";
 
 export default function useStudent() {
   const checkObjectiveStore = useCheckObjectiveStore();
 
-  const currentIndex = $computed(() =>
+  const currentIndex = computed(() =>
     checkObjectiveStore.studentIds.indexOf(checkObjectiveStore.currentStudentId)
   );
-  const isFirst = $computed(() => currentIndex === 0);
-  const isLast = $computed(
-    () => currentIndex === checkObjectiveStore.studentIds.length - 1
+  const isFirst = computed(() => currentIndex.value === 0);
+  const isLast = computed(
+    () => currentIndex.value === checkObjectiveStore.studentIds.length - 1
   );
-  const isMultiStudent = $computed(
+  const isMultiStudent = computed(
     () => checkObjectiveStore.studentIds.length > 1
   );
 
-  const totalScore = $computed(() => {
+  const totalScore = computed(() => {
     if (!checkObjectiveStore.student) return 0;
     return checkObjectiveStore.student.objectiveScore || 0;
   });
 
-  const curImageUrl = $computed(() =>
+  const curImageUrl = computed(() =>
     checkObjectiveStore.student
       ? checkObjectiveStore.student.sheetUrls[checkObjectiveStore.currentImage]
           ?.url
       : ""
   );
 
-  const answersComputed = $computed(() => {
+  const answersComputed = computed(() => {
     let mains = checkObjectiveStore.student?.answers.map((v) => ({
       mainTitle: "",
       mainNumber: v.mainNumber,
@@ -55,19 +55,19 @@ export default function useStudent() {
   });
 
   async function getNextStudent() {
-    if (isLast) {
+    if (isLast.value) {
       void message.warning("已经是最后一份!");
       return;
     }
-    await getStudent(checkObjectiveStore.studentIds[currentIndex + 1]);
+    await getStudent(checkObjectiveStore.studentIds[currentIndex.value + 1]);
   }
 
   async function getPreviousStudent() {
-    if (isFirst) {
+    if (isFirst.value) {
       void message.warning("已经是第一份!");
       return;
     }
-    await getStudent(checkObjectiveStore.studentIds[currentIndex - 1]);
+    await getStudent(checkObjectiveStore.studentIds[currentIndex.value - 1]);
   }
 
   async function getStudent(studentId: string) {

+ 28 - 22
src/features/mark/composables/useBodyScroll.ts

@@ -1,6 +1,6 @@
 import { useTimers } from "@/setups/useTimers";
 import { useMarkStore } from "@/store";
-import { onMounted, onUnmounted, watch } from "vue";
+import { onMounted, onUnmounted, watch, computed } from "vue";
 
 export default function useBodyScroll({
   shortCut = false,
@@ -97,34 +97,40 @@ export default function useBodyScroll({
   }
 
   // 放大缩小和之后的滚动
-  const answerPaperScale = $computed(() => {
-    // 放大、缩小不影响页面之前的滚动条定位
-    let percentWidth = 0;
-    let percentTop = 0;
-    const container = getContainer();
-    if (container) {
-      const { scrollLeft, scrollTop, scrollWidth, scrollHeight } = container;
-      percentWidth = scrollLeft / scrollWidth;
-      percentTop = scrollTop / scrollHeight;
-    }
-
-    addTimeout(() => {
-      if (!container) return;
-
-      const { scrollWidth, scrollHeight } = container;
-      container.scrollTo({
-        left: scrollWidth * percentWidth,
-        top: scrollHeight * percentTop,
-      });
-    }, 10);
+  const answerPaperScale = computed(() => {
     const scale = markStore.setting.uiSetting["answer.paper.scale"];
     return scale * 100 + "%";
   });
 
-  const answerPaperFontSize = $computed(() => {
+  const answerPaperFontSize = computed(() => {
     const scale = markStore.setting.uiSetting["answer.paper.scale"];
     return scale * 14 + "px";
   });
 
+  watch(
+    () => markStore.setting.uiSetting["answer.paper.scale"],
+    () => {
+      // 放大、缩小不影响页面之前的滚动条定位
+      let percentWidth = 0;
+      let percentTop = 0;
+      const container = getContainer();
+      if (container) {
+        const { scrollLeft, scrollTop, scrollWidth, scrollHeight } = container;
+        percentWidth = scrollLeft / scrollWidth;
+        percentTop = scrollTop / scrollHeight;
+      }
+
+      addTimeout(() => {
+        if (!container) return;
+
+        const { scrollWidth, scrollHeight } = container;
+        container.scrollTo({
+          left: scrollWidth * percentWidth,
+          top: scrollHeight * percentTop,
+        });
+      }, 10);
+    }
+  );
+
   return { answerPaperScale, answerPaperFontSize };
 }

+ 1 - 2
src/features/track/Track.vue

@@ -29,7 +29,7 @@
         </div>
       </div>
     </div>
-    <mark-tool :actions="['minimap', 'sizeScale', 'imgScale']" />
+    <mark-tool :actions="['sizeScale', 'imgScale']" />
 
     <div class="mark-main">
       <track-body @error="renderError" />
@@ -102,7 +102,6 @@ async function updateTask() {
 
     rawTask.sliceUrls = [...rawTask.sheetUrls];
     markStore.currentTask = rawTask;
-
     markStore.setting.doubleTrack = true;
   } else {
     markStore.message = res.data.message;

+ 7 - 1
src/features/track/TrackBody.vue

@@ -148,7 +148,14 @@ import useBodyScroll from "@/features/mark/composables/useBodyScroll";
 import useTrackTag from "./composables/useTrackTag";
 import useTrack from "./composables/useTrack";
 
+const markStore = useMarkStore();
 const { answerPaperScale } = useBodyScroll();
+// const answerPaperScale = $computed(() => {
+//   const scale = markStore.setting.uiSetting["answer.paper.scale"];
+//   console.log("scale", scale);
+//   return scale * 100 + "%";
+// });
+
 const {
   parseMarkDetailList,
   paserRecogData,
@@ -188,7 +195,6 @@ const { origImageUrls = "sliceUrls", onlyTrack = false } = defineProps<{
 const emit = defineEmits(["error", "getIsMultComments", "getScrollStatus"]);
 
 const { dragContainer } = useDraggable();
-const markStore = useMarkStore();
 
 const viewScrollHandle = () => {
   if (

+ 4 - 4
src/features/track/composables/useTrackTag.ts

@@ -266,10 +266,10 @@ export default function useTrackTag() {
             (s) => s.subNumber === track.subNumber
           );
           if (existUserScore) {
-            existUserScore.score += track.markerScore;
+            existUserScore.score += track.score;
           } else {
             userMap[track.userId].scores.push({
-              score: track.markerScore,
+              score: track.score,
               subNumber: track.subNumber,
             });
           }
@@ -365,7 +365,7 @@ export default function useTrackTag() {
           };
         }
         userMap[track.userId].scores.push({
-          score: track.markerScore,
+          score: track.score,
           subNumber: track.subNumber,
         });
       });
@@ -408,7 +408,7 @@ export default function useTrackTag() {
         mainNumber: question.mainNumber,
         subNumber: question.subNumber,
         isFillQuestion: false,
-        score: question.score,
+        score: question.markerScore,
         maxScore: question.maxScore,
         users,
         area,