Эх сурвалжийг харах

feat: 批量打分分档调整

zhangjie 1 сар өмнө
parent
commit
9eb08ea1ad

+ 10 - 4
src/modules/grading/leader/LeaderGrading.vue

@@ -78,7 +78,9 @@
           :class="[
             'marker-image-item',
             {
-              'marker-image-item-act': curPaperIndex === index,
+              'marker-image-item-act':
+                !isMultipleSelection && curPaperIndex === index,
+              'is-multiple-selected': isMultipleSelection && paper.selected,
             },
           ]"
         >
@@ -86,8 +88,8 @@
             <marker-image-view
               ref="MarkerImageView"
               :data="paper"
-              :can-select="ACTION_CAN_BATCH"
               @to-review="toReview(index)"
+              @to-switch="toSwitch(index)"
               @to-select="selectMultiplePaper"
             ></marker-image-view>
           </div>
@@ -249,8 +251,8 @@ export default {
     IS_TEST() {
       return this.curSubject.test === 2;
     },
-    ACTION_CAN_BATCH() {
-      return this.curStep.type === "done" && !this.paramsSet.paperStage;
+    isMultipleSelection() {
+      return this.multipleGradingList.length > 0;
     },
   },
   created() {
@@ -488,6 +490,10 @@ export default {
       this.multiplebtnClicked = false;
     },
     // paper view action
+    toSwitch(index) {
+      this.clearMultiplePaper();
+      this.selectPaper(index);
+    },
     toReview(index) {
       this.isFullscreenMarking = true;
       this.clearMultiplePaper();

+ 17 - 5
src/modules/grading/marker/MarkerGrading.vue

@@ -454,9 +454,9 @@ export default {
       const multipleGradingListCount = this.multipleGradingList.length;
 
       let result = true;
-      const paperIds = this.multipleGradingList.map((item) => item.id).join();
+      const paperIds = this.multipleGradingList.map((item) => item.id);
       await paperSelectLevelBatch(
-        paperIds, // is taskId
+        paperIds.join(), // is taskId
         level.name,
         "LEVEL"
       ).catch(() => {
@@ -465,15 +465,27 @@ export default {
 
       this.multiplebtnClicked = false;
       if (!result) return;
-
-      this.multipleGradingList = [];
       // this.getStepLevels();
       this.updateStepLevel(
         this.curStep,
         level.name,
         multipleGradingListCount,
-        paperIds
+        paperIds.join()
       );
+      this.clearMultiplePaper();
+
+      if (this.ribbonSet.listHandleRefresh) {
+        this.papers.forEach((paper) => {
+          if (paperIds.includes(paper.id)) {
+            paper.level = level.name;
+          }
+        });
+        const nextPaperIndex = this.papers.findIndex((paper) => !paper.level);
+        this.selectPaper(
+          nextPaperIndex === -1 ? this.papers.length - 1 : nextPaperIndex
+        );
+        return;
+      }
 
       // update paper list
       if (

+ 1 - 1
src/modules/grading/marker/MarkerImageView.vue

@@ -11,7 +11,7 @@
           <div v-if="image.level" class="image-level">{{ image.level }}</div>
           <div v-if="image.sample" class="image-sample">标</div>
           <div
-            v-else
+            v-if="canSelect && !image.sample"
             :class="[
               'image-checkbox',
               {

+ 17 - 9
src/modules/mark/marker/MarkerMarking.vue

@@ -45,6 +45,11 @@
         <div class="action-paper-info">
           <p><span>任务密号:</span><span>--</span></p>
         </div>
+        <div class="action-grade-info">
+          <h3 class="grade-info-name">
+            {{ curPaperLevel }}
+          </h3>
+        </div>
         <div class="action-mark-list">
           <div
             class="action-mark-item"
@@ -224,6 +229,7 @@ export default {
       paramsSetReady: false,
       cacheUpdateLevelInfos: null,
       scores: [],
+      curPaperLevel: "",
       // multiple grading
       multiplebtnClicked: false,
       multipleGradingList: [],
@@ -520,7 +526,7 @@ export default {
         console.log(curPaper);
 
         this.updateScoreList(curPaper.level);
-      } else if (this.multipleGradingList.length > 1 && paper.selected) {
+      } else if (this.multipleGradingList.length >= 1 && paper.selected) {
         if (this.multipleGradingList.some((p) => p.level !== curPaper.level)) {
           this.$Message.error("批量打分只能选择同一档的试卷");
           curPaper.selected = false;
@@ -537,6 +543,7 @@ export default {
     },
     updateScoreList(level) {
       let scores = [];
+      this.curPaperLevel = level;
       const curLevel = this.levels.find((item) => item.name === level);
       if (curLevel.levelType === "ADMITED") {
         const { minScore, maxScore, intervalScore } = curLevel;
@@ -557,9 +564,9 @@ export default {
       const curPaperlevel = this.multipleGradingList[0].level;
 
       let result = true;
-      const paperIds = this.multipleGradingList.map((item) => item.id).join();
+      const paperIds = this.multipleGradingList.map((item) => item.id);
       await paperSelectScoreBatch(
-        paperIds, // is taskId
+        paperIds.join(), // is taskId
         score,
         "SCORE"
       ).catch(() => {
@@ -576,15 +583,17 @@ export default {
           manualScore: 0,
         },
         multipleGradingListCount,
-        paperIds
+        paperIds.join()
       );
+      this.clearMultiplePaper();
 
       if (this.ribbonSet.listHandleRefresh) {
-        this.multipleGradingList.forEach((paper) => {
-          paper.level = score;
-          paper.result = score;
+        this.papers.forEach((paper) => {
+          if (paperIds.includes(paper.id)) {
+            paper.score = score;
+            paper.result = score;
+          }
         });
-        this.clearMultiplePaper();
         const nextPaperIndex = this.papers.findIndex(
           (paper) => !paper.score && paper.score !== 0
         );
@@ -594,7 +603,6 @@ export default {
         return;
       }
 
-      this.clearMultiplePaper();
       // update paper list
       if (
         this.page.current > 1 &&