Browse Source

评卷员可以标记试卷

zhangjie 3 years ago
parent
commit
da4afc7c15
3 changed files with 40 additions and 11 deletions
  1. 3 0
      src/api.js
  2. 16 9
      src/assets/styles/marker.less
  3. 21 2
      src/modules/grading/marker/MarkerImageView.vue

+ 3 - 0
src/api.js

@@ -356,6 +356,9 @@ export const paperSelectLevelBatch = (taskIds, result, stage) => {
 export const paperTaskPass = taskId => {
   return $post(`/api/marktasks/${taskId}/skip`, {});
 };
+export const markTask = ({ markTaskId, isMark }) => {
+  return $post(`/api/marktasks/mark_task`, { markTaskId, isMark });
+};
 // grade or mark history
 export const markHistoryList = (paperId, stage) => {
   return $get(`/api/papers/${paperId}/marktasks`, { stage });

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

@@ -388,15 +388,6 @@
       color: @color-text-act;
     }
   }
-  .image-rotate {
-    height: 26px;
-    font-size: 26px;
-    margin-right: -5px;
-    cursor: pointer;
-    &:hover {
-      color: @color-text-act;
-    }
-  }
   .image-action {
     .ivu-btn {
       width: 26px;
@@ -409,6 +400,22 @@
         color: @color-text-act;
       }
     }
+
+    &-li {
+      display: inline-block;
+      vertical-align: top;
+      margin-left: 5px;
+      height: 26px;
+      font-size: 26px;
+      cursor: pointer;
+
+      &:hover {
+        color: @color-text-act;
+      }
+    }
+    .mark-act {
+      color: @warning-color;
+    }
   }
 }
 .marker-image-none {

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

@@ -30,8 +30,13 @@
           <div v-if="image.level" class="image-level">{{ image.level }}</div>
           <div v-if="image.score" class="image-level">{{ image.score }}</div>
         </div>
-        <div class="image-rotate" @click="toRotate">
-          <Icon type="md-refresh-circle" />
+        <div class="image-action">
+          <div class="image-action-li" @click="toMark">
+            <Icon :class="{ 'mark-act': image.isMark }" type="md-bookmark" />
+          </div>
+          <div class="image-action-li" @click="toRotate">
+            <Icon type="md-refresh-circle" />
+          </div>
         </div>
       </slot>
     </div>
@@ -40,6 +45,7 @@
 
 <script>
 import ImageViewContain from "@/components/ImageViewContain";
+import { markTask } from "@/api";
 
 export default {
   name: "marker-image-view",
@@ -77,9 +83,11 @@ export default {
         level: "",
         score: "",
         deg: 0,
+        isMark: false,
         sample: false,
         selected: false
       },
+      loading: false,
       image: {}
     };
   },
@@ -94,6 +102,17 @@ export default {
 
       this.$refs.ImageViewContain.resizeImage(image.deg);
     },
+    async toMark() {
+      if (this.loading) return;
+      this.loading = true;
+      const res = await markTask({
+        markTaskId: this.image.id,
+        isMark: !this.image.isMark
+      }).catch(() => {});
+      this.loading = false;
+      if (!res) return;
+      this.image.isMark = !this.image.isMark;
+    },
     toSelect() {
       if (this.image.sample) return;
       this.image.selected = !this.image.selected;