zhangjie пре 2 година
родитељ
комит
b7f4ed2c2b

+ 6 - 2
src/api.js

@@ -46,8 +46,8 @@ export const rotatePaper = (imageId, degree) => {
 export const absentPaper = imageId => {
   return $post(`/api/score/missing/${imageId}`, {});
 };
-export const markPaper = ({ paperId, isMark }) => {
-  return $post(`/api/papers/mark_paper`, { paperId, isMark });
+export const markPaper = ({ paperId, isMark, role }) => {
+  return $post(`/api/papers/mark_paper`, { paperId, isMark, role });
 };
 
 // client-monitor
@@ -495,6 +495,10 @@ export const markerChangeLevelPaperList = datas => {
   // ?markerId=49&size=6&page=0&isShift=true&isShiftScore=false&questionId=10
   return $get(`/api/marktasks/shift`, datas);
 };
+export const markerMarkPaperList = datas => {
+  // ?markerId=15&questionId=2&subject=SC&workId=25&stage=&page=0&size=12
+  return $get(`/api/marktasks/markedPapers`, datas);
+};
 
 // inspection -------------------------->
 // inspection-log

+ 9 - 0
src/assets/styles/marker.less

@@ -427,9 +427,18 @@
       &:hover {
         color: @color-text-act;
       }
+
+      &.is-disabled {
+        color: tint(@color-text, 20%);
+        cursor: not-allowed;
+      }
     }
     .mark-act {
       color: @warning-color;
+      &.is-disabled {
+        color: tint(@warning-color, 20%);
+        cursor: not-allowed;
+      }
     }
   }
   .image-sn {

+ 6 - 0
src/modules/grading/leader/LeaderGrading.vue

@@ -308,6 +308,8 @@ export default {
       return data;
     },
     async getMarkList(params) {
+      const userId = this.$ls.get("user", { id: "" }).id;
+      const markDisabled = userId !== params.markerId;
       const datas = {
         ...params,
         workId: this.workId,
@@ -318,6 +320,10 @@ export default {
       };
 
       const data = await markTaskPaperList(datas);
+      data.data.forEach(item => {
+        item.markDisabled = markDisabled;
+        item.mark = true;
+      });
       return data;
     },
     async toPage(page) {

+ 32 - 11
src/modules/grading/marker/MarkerGrading.vue

@@ -124,6 +124,7 @@ import GradeRibbon from "../components/GradeRibbon";
 
 import {
   markerTaskList,
+  markerMarkPaperList,
   markerLevelTotalStatData,
   workLevelList,
   paperSelectLevelOrScore,
@@ -160,7 +161,8 @@ export default {
         undo: {},
         reject: {
           reject: true
-        }
+        },
+        markPaper: {}
       },
       workId: this.$route.params.workId,
       subjectId: this.$route.params.subjectId,
@@ -245,7 +247,14 @@ export default {
         datas.sort = "updatedOn,desc";
       }
 
-      const data = await markerTaskList(datas);
+      let requestAction = null;
+      if (this.curStep.type === "markPaper") {
+        requestAction = markerMarkPaperList;
+      } else {
+        requestAction = markerTaskList;
+      }
+
+      const data = await requestAction(datas);
       this.papers = data.data.map(paper => {
         paper.key = this.$randomCode();
         paper.title = `NO.${paper.sn}`;
@@ -291,15 +300,27 @@ export default {
         count: undo.rejected,
         type: "reject"
       });
-      let levelStep = data.map(item => {
-        // 评卷员不展示kdpt
-        item.kdpt = null;
-        return {
-          ...item,
-          name: item.id,
-          type: "done"
-        };
-      });
+      const mpInfo = data.find(item => item.id === "markPaper");
+      if (mpInfo) {
+        otherStep.push({
+          count: mpInfo.count,
+          name: "标记",
+          type: "markPaper"
+        });
+      }
+
+      let levelStep = data
+        .filter(item => item.id !== "markPaper")
+        .map(item => {
+          // 评卷员不展示kdpt
+          item.kdpt = null;
+          return {
+            ...item,
+            name: item.id,
+            type: "done"
+          };
+        });
+
       this.setSteps({ levelStep, otherStep });
 
       if (!this.curStep.name) {

+ 5 - 0
src/modules/grading/marker/MarkerHeader.vue

@@ -383,6 +383,11 @@ export default {
         markerId
       });
       this.markers = data || [];
+      const user = this.$ls.get("user", { id: "", name: "" });
+      this.markers.push({
+        id: user.id,
+        name: "我自己"
+      });
     },
     getStageName(stage, roughLevelEnable) {
       let stageName = SUBJECT_STAGE[stage];

+ 21 - 7
src/modules/grading/marker/MarkerImageView.vue

@@ -35,7 +35,10 @@
           {{ image.title }}
         </div>
         <div class="image-action">
-          <div class="image-action-li" title="标记" @click="toMark">
+          <div
+            :class="['image-action-li', { 'is-disabled': image.markDisabled }]"
+            @click="toMark"
+          >
             <Icon :class="{ 'mark-act': image.mark }" type="md-bookmark" />
           </div>
           <div class="image-action-li" @click="toRotate">
@@ -49,7 +52,7 @@
 
 <script>
 import ImageViewContain from "@/components/ImageViewContain";
-import { markTask } from "@/api";
+import { markTask, markPaper } from "@/api";
 
 export default {
   name: "marker-image-view",
@@ -87,6 +90,7 @@ export default {
   },
   data() {
     return {
+      curUserRoleType: this.$ls.get("user", { role: "" }).role,
       initImage: {
         id: "",
         thumbSrc: "",
@@ -95,6 +99,7 @@ export default {
         score: "",
         deg: 0,
         mark: false,
+        markDisabled: false,
         sample: false,
         selected: false
       },
@@ -118,13 +123,22 @@ export default {
       this.$refs.ImageViewContain.resizeImage(image.deg);
     },
     async toMark() {
+      if (this.image.markDisabled) return;
       if (this.loading) return;
       this.loading = true;
-      const res = await markTask({
-        markTaskId: this.image.id,
-        isMark: !this.image.mark,
-        stage: this.stage
-      }).catch(() => {});
+      let res = null;
+      if (this.curUserRoleType === "MARK_LEADER") {
+        res = await markPaper({
+          paperId: this.image.id,
+          isMark: !this.image.mark,
+          role: this.curUserRoleType
+        }).catch(() => {});
+      } else {
+        res = await markTask({
+          markTaskId: this.image.id,
+          isMark: !this.image.mark
+        }).catch(() => {});
+      }
       this.loading = false;
       if (!res) return;
       this.image.mark = !this.image.mark;

+ 1 - 1
src/modules/main/PaperManage.vue

@@ -253,7 +253,7 @@ export default {
           imgSrc: paper.imgSrc,
           thumbSrc: paper.thumbSrc,
           missing: paper.missing,
-          mark: paper.mark,
+          mark: paper.adminMark,
           stage: paper.stage,
           styles: {},
           deg: 0

+ 4 - 2
src/modules/main/components/ImageActionList.vue

@@ -95,7 +95,8 @@ export default {
     return {
       curImageIndex: 0,
       stepDeg: 0,
-      saving: false
+      saving: false,
+      curUserRoleType: this.$ls.get("user", { role: "" }).role
     };
   },
   computed: {
@@ -149,7 +150,8 @@ export default {
     async toMark(image) {
       await markPaper({
         paperId: image.id,
-        isMark: !image.mark
+        isMark: !image.mark,
+        role: this.curUserRoleType
       });
       image.mark = !image.mark;
     },

+ 16 - 2
src/modules/mark/marker/MarkerMarking.vue

@@ -120,6 +120,7 @@ import GradeRibbon from "../../grading/components/GradeRibbon";
 import {
   getParamsSet,
   markerTaskList,
+  markerMarkPaperList,
   subjectDetail,
   markerChangeLevelPaperList,
   markerScoreTotalStatData,
@@ -162,7 +163,10 @@ export default {
           isShift: false,
           isShiftScore: true
         },
-        manualScore: {}
+        manualScore: {},
+        markPaper: {
+          stage: "SCORE"
+        }
       },
       stage: "SCORE",
       workId: this.$route.params.workId,
@@ -252,6 +256,8 @@ export default {
       let requestAction = null;
       if (this.curStep.type.includes("shift")) {
         requestAction = markerChangeLevelPaperList;
+      } else if (this.curStep.type === "markPaper") {
+        requestAction = markerMarkPaperList;
       } else {
         requestAction = markerTaskList;
       }
@@ -311,7 +317,7 @@ export default {
       }
 
       let levelStep = data
-        .filter(item => item.id !== "manualScore")
+        .filter(item => item.id !== "manualScore" && item.id !== "markPaper")
         .map(item => {
           return {
             ...item,
@@ -327,6 +333,14 @@ export default {
           type: "manualScore"
         });
       }
+      const mpInfo = data.find(item => item.id === "markPaper");
+      if (mpInfo) {
+        otherStep.push({
+          count: mpInfo.count,
+          name: "标记",
+          type: "markPaper"
+        });
+      }
 
       this.setSteps({ levelStep, otherStep });