zhangjie 1 年之前
父节点
当前提交
7975ab0954
共有 2 个文件被更改,包括 48 次插入5 次删除
  1. 3 0
      src/modules/mark/api.js
  2. 45 5
      src/modules/mark/components/ScoreCheckDetail.vue

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

@@ -149,6 +149,9 @@ export const scoreDetailListPage = (datas) => {
 export const packageListPage = (datas) => {
   return $postParam("/api/admin/mark/paper/package/list", datas);
 };
+export const objectiveScoreCalculate = (datas) => {
+  return $postParam("/api/admin/mark/student/objective/calculate", datas);
+};
 
 // score manage --------->
 export const scoreListPage = (datas) => {

+ 45 - 5
src/modules/mark/components/ScoreCheckDetail.vue

@@ -130,6 +130,13 @@
         </el-form-item>
       </el-form>
       <div class="part-box-action">
+        <el-button
+          class="mr-2"
+          type="primary"
+          :loading="loading"
+          @click="toCalcObjective"
+          >客观题统分</el-button
+        >
         <el-dropdown
           :disabled="!multipleSelection.length"
           @command="toBatchCheck"
@@ -150,6 +157,7 @@
         ref="TableList"
         :data="dataList"
         @selection-change="handleSelectionChange"
+        @sort-change="sortChange"
       >
         <el-table-column
           type="selection"
@@ -162,6 +170,7 @@
           prop="studentCode"
           label="学号"
           width="140"
+          sortable
         ></el-table-column>
         <el-table-column
           prop="secretNumber"
@@ -172,28 +181,32 @@
           prop="className"
           label="班级"
           min-width="160"
+          sortable
         ></el-table-column>
         <el-table-column
           prop="objectiveScore"
           label="客观分"
-          width="80"
+          width="85"
+          sortable
         ></el-table-column>
         <el-table-column
           prop="subjectiveScore"
           label="主观分"
-          width="80"
+          width="85"
+          sortable
         ></el-table-column>
         <el-table-column
           prop="totalScore"
           label="总分"
           width="80"
+          sortable
         ></el-table-column>
         <el-table-column
           prop="subjectiveScoreList"
           label="主观题明细"
           min-width="240"
         ></el-table-column>
-        <el-table-column prop="checkUserName" label="检查人" width="140">
+        <el-table-column prop="checkUserName" label="检查人" min-width="140">
           <span slot-scope="scope"
             >{{ scope.row.checkUserName | defaultFieldFilter }}({{
               scope.row.checkUserLoginName | defaultFieldFilter
@@ -208,7 +221,7 @@
         <el-table-column
           class-name="action-column"
           label="操作"
-          width="300"
+          width="260"
           fixed="right"
         >
           <template slot-scope="scope">
@@ -269,7 +282,7 @@
 </template>
 
 <script>
-import { scoreDetailListPage } from "../api";
+import { scoreDetailListPage, objectiveScoreCalculate } from "../api";
 import SimpleImagePreview from "@/components/SimpleImagePreview";
 import markMinxin from "../markMinxin";
 
@@ -302,11 +315,14 @@ export default {
         objectiveScoreRateLt: undefined,
         studentName: "",
         studentCode: "",
+        orderType: undefined,
+        orderField: undefined,
       },
       current: 1,
       size: this.GLOBAL.pageSize,
       total: 0,
       dataList: [],
+      loading: false,
       multipleSelection: [],
       // img view
       curImage: {},
@@ -354,6 +370,16 @@ export default {
     handleSelectionChange(val) {
       this.multipleSelection = val;
     },
+    sortChange({ prop, order }) {
+      if (!order) {
+        this.filter.orderField = undefined;
+        this.filter.orderType = undefined;
+      } else {
+        this.filter.orderField = prop;
+        this.filter.orderType = order === "ascending" ? "ASC" : "DESC";
+      }
+      this.getList();
+    },
     toBatchCheck(type) {
       if (!this.multipleSelection.length) return;
       const studentIds = this.multipleSelection.map((item) => item.studentId);
@@ -378,6 +404,20 @@ export default {
         });
       }
     },
+    async toCalcObjective() {
+      if (this.loading) return;
+
+      this.loading = true;
+      const res = await objectiveScoreCalculate({
+        examId: this.instance.examId,
+        paperNumber: this.instance.paperNumber,
+      }).catch(() => {});
+      this.loading = false;
+
+      if (!res) return;
+      this.$message.success("操作成功!");
+      this.getList();
+    },
     // img view
     toViewSheetPaper(row) {
       this.curImageIndex = 0;