Procházet zdrojové kódy

feat: 评卷管理

zhangjie před 3 měsíci
rodič
revize
50e8dc48bd

+ 4 - 0
src/modules/mark/api.js

@@ -111,6 +111,10 @@ export const markProgressMarkerExport = (datas) => {
     responseType: "blob",
   });
 };
+// mark-detail-progress-detail
+export const markProgressClassQuestionListPage = (datas) => {
+  return $postParam("/api/admin/mark/group/class/question/list", datas);
+};
 // mark-detail-marker
 export const markMarkerListPage = (datas) => {
   return $postParam("/api/admin/mark/marker/list", datas);

+ 78 - 0
src/modules/mark/components/markDetail/ClassMarkProgressDialog.vue

@@ -0,0 +1,78 @@
+<template>
+  <el-dialog
+    class="class-mark-progress-dialog"
+    :visible.sync="modalIsShow"
+    :title="data.className"
+    top="10vh"
+    width="500px"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @opened="visibleChange"
+    @close="closeHandle"
+  >
+    <el-table :data="dataList">
+      <el-table-column
+        prop="groupQuestions"
+        label="评阅题目"
+        width="120"
+      ></el-table-column>
+      <el-table-column
+        prop="taskCount"
+        label="任务总数"
+        width="100"
+      ></el-table-column>
+      <el-table-column
+        prop="markedCount"
+        label="完成总数"
+        width="100"
+      ></el-table-column>
+      <el-table-column prop="loginName" label="评卷员" min-width="100">
+        <template slot-scope="scope">
+          {{ scope.row.name }}({{ scope.row.loginName }})
+        </template>
+      </el-table-column>
+    </el-table>
+    <div slot="footer"></div>
+  </el-dialog>
+</template>
+
+<script>
+import { markProgressClassQuestionListPage } from "../../api";
+
+export default {
+  name: "class-mark-progress-dialog",
+  props: {
+    data: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      dataList: [],
+    };
+  },
+  methods: {
+    visibleChange() {
+      this.initData();
+    },
+    closeHandle() {
+      this.dataList = [];
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async initData() {
+      const res = await markProgressClassQuestionListPage(this.data);
+      this.dataList = res || [];
+    },
+  },
+};
+</script>

+ 1 - 1
src/modules/mark/components/markDetail/MarkDetailArbitration.vue

@@ -64,7 +64,7 @@
         <el-table-column
           prop="groupQuestions"
           label="评阅题目"
-          min-width="200"
+          width="120"
         ></el-table-column>
         <el-table-column
           prop="statusName"

+ 9 - 3
src/modules/mark/components/markDetail/MarkDetailMarker.vue

@@ -24,6 +24,11 @@
           >
           </el-input>
         </el-form-item>
+        <el-form-item label-width="0px">
+          <el-checkbox v-model="filter.showMarking"
+            >仅显示当前评卷员记录
+          </el-checkbox>
+        </el-form-item>
         <el-form-item label-width="0px">
           <el-button type="primary" @click="search">查询</el-button>
         </el-form-item>
@@ -63,9 +68,9 @@
           width="55"
           align="center"
         ></el-table-column>
-        <el-table-column prop="courseName" label="评卷员" min-width="100">
+        <el-table-column prop="loginName" label="评卷员" min-width="100">
           <template slot-scope="scope">
-            <el-tag size="medium" type="info">
+            <el-tag size="medium" :type="scope.row.status === 1 ? '' : 'info'">
               {{ scope.row.name }}({{ scope.row.loginName }})
             </el-tag>
           </template>
@@ -73,7 +78,7 @@
         <el-table-column
           prop="groupQuestions"
           label="评阅题目"
-          min-width="200"
+          width="120"
         ></el-table-column>
         <el-table-column prop="markedCount" label="已评数量" width="100">
           <span slot-scope="scope">
@@ -206,6 +211,7 @@ export default {
       filter: {
         groupNumber: "",
         loginName: "",
+        showMarking: false,
       },
       current: 1,
       size: this.GLOBAL.pageSize,

+ 32 - 13
src/modules/mark/components/markDetail/MarkDetailProgress.vue

@@ -28,7 +28,7 @@
     </div>
     <div v-if="openMarkClass" class="part-box part-box-pad">
       <div class="part-box-head">
-        <h3>班级卷进度</h3>
+        <h3>班级卷进度</h3>
       </div>
 
       <el-form label-position="left" label-width="0" inline>
@@ -46,11 +46,6 @@
       </el-form>
 
       <el-table ref="TableList" :data="classList">
-        <el-table-column
-          prop="groupQuestions"
-          label="评阅题目"
-          min-width="200"
-        ></el-table-column>
         <el-table-column
           prop="className"
           label="班级"
@@ -105,6 +100,22 @@
             >
           </template>
         </el-table-column>
+        <el-table-column
+          class-name="action-column"
+          label="操作"
+          width="100"
+          align="center"
+          fixed="right"
+        >
+          <template slot-scope="scope">
+            <el-button
+              class="btn-primary"
+              type="text"
+              @click="toDetail(scope.row)"
+              >查看详情</el-button
+            >
+          </template>
+        </el-table-column>
       </el-table>
       <div class="part-page">
         <el-pagination
@@ -122,13 +133,13 @@
     </div>
     <div class="part-box part-box-pad">
       <div class="part-box-head">
-        <h3>评阅题目进度</h3>
+        <h3>题目评卷进度</h3>
       </div>
       <el-table ref="TableList" :data="questionList">
         <el-table-column
           prop="groupQuestions"
           label="评阅题目"
-          min-width="200"
+          width="120"
         ></el-table-column>
         <el-table-column
           class-name="action-column"
@@ -145,11 +156,6 @@
             >
           </template>
         </el-table-column>
-        <el-table-column
-          prop="scoreList"
-          label="步骤分"
-          min-width="140"
-        ></el-table-column>
         <el-table-column
           prop="taskCount"
           label="任务总数"
@@ -191,6 +197,10 @@
         </el-table-column>
       </el-table>
     </div>
+    <class-mark-progress-dialog
+      ref="ClassMarkProgressDialog"
+      :data="curClass"
+    />
   </div>
 </template>
 
@@ -201,9 +211,13 @@ import {
   markProgressMarkerExport,
 } from "../../api";
 import { downloadByApi } from "@/plugins/download";
+import ClassMarkProgressDialog from "./ClassMarkProgressDialog.vue";
 
 export default {
   name: "mark-detail-progress",
+  components: {
+    ClassMarkProgressDialog,
+  },
   props: {
     baseInfo: {
       type: Object,
@@ -221,6 +235,7 @@ export default {
       current: 1,
       total: 0,
       classList: [],
+      curClass: {},
       summary: {},
       questionList: [],
       curRow: {},
@@ -295,6 +310,10 @@ export default {
       if (!res) return;
       this.$message.success("下载成功!");
     },
+    toDetail(row) {
+      this.curClass = row;
+      this.$refs.ClassMarkProgressDialog.open();
+    },
   },
 };
 </script>

+ 2 - 2
src/modules/mark/components/markDetail/MarkDetailQuality.vue

@@ -50,7 +50,7 @@
           width="55"
           align="center"
         ></el-table-column>
-        <el-table-column prop="courseName" label="评卷员" min-width="100">
+        <el-table-column prop="loginName" label="评卷员" min-width="100">
           <template slot-scope="scope">
             <el-tag size="medium" type="info">
               {{ scope.row.name }}({{ scope.row.loginName }})
@@ -60,7 +60,7 @@
         <el-table-column
           prop="groupQuestions"
           label="评阅题目"
-          min-width="200"
+          width="120"
         ></el-table-column>
         <el-table-column
           prop="finishCount"

+ 5 - 5
src/modules/mark/components/markDetail/MarkDetailTask.vue

@@ -80,7 +80,7 @@
         <el-table-column
           prop="groupQuestions"
           label="评阅题目"
-          min-width="200"
+          width="120"
         ></el-table-column>
         <el-table-column
           prop="studentCode"
@@ -116,13 +116,13 @@
           </template>
         </el-table-column>
         <el-table-column
-          prop="markerScore"
-          label="评卷总分"
+          prop="questionScore"
+          label="小题满分"
           width="90"
         ></el-table-column>
         <el-table-column
-          prop="markerScoreList"
-          label="给分明细"
+          prop="markerScore"
+          label="评分"
           width="90"
         ></el-table-column>
         <el-table-column prop="markerTime" label="评卷时间" width="170">