zhangjie 1 year ago
parent
commit
a058d0c734

+ 5 - 8
src/features/check/ObjectiveAnswer.vue

@@ -144,15 +144,12 @@
           </div>
         </div>
 
-        <div class="board-tips">
-          <p v-if="!allViewed">请先浏览完该学生的所有试卷</p>
-        </div>
         <div :class="['board-footer', { 'is-simple': !isMultiStudent }]">
           <qm-button
             class="board-submit"
             size="medium"
             type="primary"
-            :disabled="!allViewed || !student?.upload"
+            :disabled="!student?.upload"
             @click="saveStudentAnswer"
           >
             保存
@@ -336,10 +333,10 @@ async function saveStudentAnswer() {
 //#region : 显示大图,供查看和翻转
 let currentImage = $ref(0);
 let browsedImageIndexes = $ref([0]);
-let allViewed = $computed(() => {
-  let indexes = Array.from(new Set(browsedImageIndexes));
-  return indexes.length == (student?.sheetUrls || []).length;
-});
+// let allViewed = $computed(() => {
+//   let indexes = Array.from(new Set(browsedImageIndexes));
+//   return indexes.length == (student?.sheetUrls || []).length;
+// });
 watch(
   () => currentImage,
   () => {

+ 22 - 10
src/features/check/SubjectiveAnswer.vue

@@ -68,6 +68,7 @@
       :actions="[
         'allPage',
         'minimap',
+        'answer',
         'sizeScale',
         'shortCut',
         'specialTag',
@@ -90,6 +91,7 @@
       />
     </div>
   </div>
+  <AnswerModal />
   <MinimapModal />
   <AllPaperModal />
   <SheetViewModal />
@@ -108,7 +110,7 @@ import {
   studentSubjectiveConfirmData,
   saveStudentSubjectiveConfirmData,
 } from "@/api/checkPage";
-import { doLogout, updateUISetting } from "@/api/markPage";
+import { doLogout, updateUISetting, getSetting } from "@/api/markPage";
 import { store } from "@/store/store";
 import MarkTool from "../mark/MarkTool.vue";
 import MarkBody from "./MarkBody.vue";
@@ -118,6 +120,7 @@ import MarkBoardKeyBoard from "../mark/MarkBoardKeyBoard.vue";
 import MarkBoardMouse from "../mark/MarkBoardMouse.vue";
 import { debounce, isEmpty, isNumber } from "lodash-es";
 import { message } from "ant-design-vue";
+import AnswerModal from "../mark/AnswerModal.vue";
 import MinimapModal from "../mark/MinimapModal.vue";
 import AllPaperModal from "../mark/AllPaperModal.vue";
 import SheetViewModal from "../mark/SheetViewModal.vue";
@@ -127,7 +130,16 @@ import { calcSum } from "@/utils/utils";
 import MarkBoardTrackDialog from "../mark/MarkBoardTrackDialog.vue";
 import vls from "@/utils/storage";
 
-const studentIds = $ref(vls.get("check-students", []));
+const { examId, paperNumber, studentIds } = vls.get("check-students", {
+  examId: "",
+  paperNumber: "",
+  studentIds: [],
+});
+vls.set("mark", {
+  examId,
+  paperNumber,
+  groupNumber: 1,
+});
 
 let currentStudentId = $ref("");
 const currentIndex = $computed(() => studentIds.indexOf(currentStudentId));
@@ -140,7 +152,7 @@ onMounted(async () => {
     void message.info("没有需要处理的考生,请返回。");
     return;
   }
-  updateSetting();
+  await updateSetting();
   await getNextStudent();
 });
 
@@ -158,11 +170,11 @@ async function getPreviousStudent() {
   await updateTask(studentIds[currentIndex - 1]);
 }
 
-function updateSetting() {
-  let uiSetting = vls.get("user", { uiSetting: "" }).uiSetting;
+async function updateSetting() {
+  const settingRes = await getSetting();
   // 初次使用时,重置并初始化uisetting
-  if (isEmpty(uiSetting)) {
-    uiSetting = {
+  if (isEmpty(settingRes.data.uiSetting)) {
+    settingRes.data.uiSetting = {
       "answer.paper.scale": 1,
       "score.board.collapse": false,
       "normal.mode": "keyboard",
@@ -174,9 +186,9 @@ function updateSetting() {
       "shortCut.modal": false,
     };
   } else {
-    uiSetting = JSON.parse(uiSetting);
+    settingRes.data.uiSetting = JSON.parse(settingRes.data.uiSetting);
   }
-  store.setting.uiSetting = uiSetting;
+  store.setting = settingRes.data;
 }
 
 let taskQuestionInfo = {};
@@ -212,7 +224,7 @@ async function updateTask(studentId) {
 }
 
 const __debounceUpdate = debounce(() => {
-  updateUISetting("", store.setting.uiSetting).catch((e) =>
+  updateUISetting(store.setting.mode, store.setting.uiSetting).catch((e) =>
     console.log("保存设置出错", e)
   );
 }, 3000);

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

@@ -1,6 +1,6 @@
 <template>
   <div class="mark">
-    <mark-header :showTotalScore="store.isMultiMedia" />
+    <mark-header />
     <mark-tool @allZeroSubmit="allZeroSubmit" />
     <div class="mark-main">
       <mark-history showSearch :getHistory="getHistoryTask" />
@@ -203,8 +203,8 @@ onMounted(async () => {
   let result = true;
   try {
     await updateMarkTask();
-    await updateSetting();
     await updateStatus();
+    await updateSetting();
     await updateGroups();
     await nextTask();
   } catch (error) {

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

@@ -39,7 +39,7 @@
           v-if="
             store.currentTask &&
             store.currentTask.objectiveScore !== null &&
-            !!store.setting?.showObjectiveScore
+            !!store.setting?.showObjectScore
           "
           class="header-noun"
         >

+ 5 - 1
src/styles/page.less

@@ -536,6 +536,7 @@
     font-size: 0;
     overflow-x: hidden;
     overflow-y: auto;
+    min-height: 90px;
   }
   .board-question-box {
     display: inline-block;
@@ -649,9 +650,11 @@
     }
   }
   .board-scores {
-    .flex-static;
     font-size: 0;
     margin: 0 -5px;
+    min-height: 80px;
+    max-height: 300px;
+    overflow-y: auto;
   }
   .board-score {
     display: inline-block;
@@ -706,6 +709,7 @@
     display: flex;
     justify-content: space-between;
     align-items: center;
+    background-color: #fff;
 
     .ant-btn {
       width: 156px;