zhangjie 10 сар өмнө
parent
commit
9c45bf56f1

+ 1 - 1
src/assets/styles/base.scss

@@ -495,7 +495,7 @@ body {
 .el-input-split {
   position: relative;
   display: inline-block;
-  margin: 3px 10px;
+  margin: 3px 8px;
   width: 10px;
   border-bottom: 2px solid #dddddd;
 }

+ 0 - 1
src/modules/base/components/ModifyStudent.vue

@@ -129,7 +129,6 @@ const initModalForm = {
   courseCode: "",
   studentName: "",
   studentCode: "",
-  phoneNumber: "",
   collegeName: "",
   majorName: "",
   className: "",

+ 3 - 3
src/modules/record/api.js

@@ -87,7 +87,7 @@ export const documentListPage = (datas) => {
   return $postParam("/api/admin/paper/document/page", datas);
 };
 export const documentStatistics = (datas) => {
-  return $postParam("/api/admin/paper/document/page", datas);
+  return $postParam("/api/admin/paper/document/stat", datas);
 };
 export const documentDetialListPage = (datas) => {
   return $postParam("/api/admin/paper/document/detail", datas);
@@ -111,10 +111,10 @@ export const documentOtherDetialListPage = (datas) => {
 //   return $postParam("/api/admin/paper/archives/delete", { ids: ids.join() });
 // };
 export const updateDocumentImageRotate = (datas) => {
-  return $postParam("/api/admin/paper/document/other_detail", datas);
+  return $postParam("/api/admin/paper/document/picture/save", datas);
 };
 export const deleteDocumentImage = (datas) => {
-  return $postParam("/api/admin/paper/document/other_detail", datas);
+  return $postParam("/api/admin/paper/document/picture/delete", datas);
 };
 export const buildStudentPdf = (studentIds) => {
   return $postParam("/api/admin/exam/student/pdf/generate", {

+ 21 - 7
src/modules/record/components/ArchivesDetailStudentDialog.vue

@@ -9,6 +9,7 @@
       append-to-body
       fullscreen
       @open="reloadData"
+      @close="closeHandle"
     >
       <div class="archives-student-body">
         <div class="archives-student-content part-box">
@@ -46,6 +47,9 @@
             <p>
               <span>教学班:</span><span>{{ student.teachClass }}</span>
             </p>
+            <p>
+              <span>扫描批次号:</span><span>{{ curPage.batchNo }}</span>
+            </p>
           </div>
           <el-divider></el-divider>
           <el-button v-if="showFix" type="primary" size="small" @click="toFix"
@@ -55,6 +59,7 @@
             type="primary"
             size="small"
             :disabled="!curImageRotate"
+            :loading="loading"
             @click="toSaveRotate"
             >保存旋转</el-button
           >
@@ -111,10 +116,12 @@ export default {
       imageList: [],
       pageList: [],
       studentInfo: {},
+      loading: false,
       // image preview
       curImage: { url: "" },
       curImageIndex: 0,
       curImageRotate: 0,
+      curPage: {},
     };
   },
   methods: {
@@ -135,6 +142,9 @@ export default {
     open() {
       this.modalIsShow = true;
     },
+    closeHandle() {
+      this.$emit("close");
+    },
     async getImageList() {
       const resData = await studentPictureList({
         paperScanTaskId: this.student.paperScanTaskId,
@@ -159,6 +169,7 @@ export default {
       this.$refs.LibraryDialog.open();
     },
     getImageInfo(url) {
+      console.log(url);
       const curPage = this.pageList.find((item) => item.fileUrls.includes(url));
       const pindex = curPage.fileUrls.indexOf(url);
       return { ...curPage, pindex };
@@ -169,15 +180,18 @@ export default {
     async toSaveRotate() {
       if (!this.curImageRotate) return;
 
+      if (this.loading) return;
+      this.loading = true;
+
       const { paperLibraryId, pindex } = this.getImageInfo(this.curImage.url);
 
-      await updateDocumentImageRotate({
-        paperScanTaskId: this.student.paperScanTaskId,
-        studentId: this.student.studentId,
+      const res = await updateDocumentImageRotate({
         paperLibraryId,
-        pindex,
+        isFront: pindex === 0,
         rotate: this.curImageRotate,
-      });
+      }).catch(() => {});
+      this.loading = false;
+      if (!res) return;
       this.curImageRotate = 0;
       this.updateImageSource(this.curImage.url, uncacheUrl(this.curImage.url));
     },
@@ -189,7 +203,7 @@ export default {
       curPage.fileUrls[pindex] = newUrl;
 
       const imgIndex = this.imageList.indexOf(oldUrl);
-      this.imgIndex[imgIndex] = newUrl;
+      this.imageList[imgIndex] = newUrl;
     },
     async toDelete() {
       const res = await this.$confirm(`确认要删除当前页已扫描数据?`, "提示", {
@@ -200,7 +214,6 @@ export default {
       const { paperLibraryId } = this.getImageInfo(this.curImage.url);
 
       await deleteDocumentImage({
-        paperScanTaskId: this.student.paperScanTaskId,
         studentId: this.student.studentId,
         paperLibraryId,
       });
@@ -210,6 +223,7 @@ export default {
     selectImage(index) {
       this.curImage = { url: this.imageList[index] };
       this.curImageRotate = 0;
+      this.curPage = this.getImageInfo(this.curImage.url);
     },
     toPrevImage() {
       if (this.curImageIndex === 0) {

+ 26 - 28
src/modules/record/components/DocumentDetailDialog.vue

@@ -70,13 +70,6 @@
               clearable
             ></el-input>
           </el-form-item>
-          <el-form-item label="考场:">
-            <el-input
-              v-model.trim="filter.examRoom"
-              placeholder="考场"
-              clearable
-            ></el-input>
-          </el-form-item>
           <el-form-item label="姓名/学号:">
             <el-input
               style="width: 142px"
@@ -87,7 +80,7 @@
           </el-form-item>
           <el-form-item label="起止成绩:">
             <el-input-number
-              style="width: 100px"
+              style="width: 80px"
               v-model="filter.minScore"
               :min="0"
               :max="999"
@@ -98,7 +91,7 @@
             ></el-input-number>
             <span class="el-input-split"></span>
             <el-input-number
-              style="width: 100px"
+              style="width: 80px"
               v-model="filter.maxScore"
               :min="0"
               :max="999"
@@ -108,23 +101,24 @@
               placeholder="成绩"
             ></el-input-number>
           </el-form-item>
-          <el-form-item label="起止图片张数:">
-            <el-input-number
+          <el-form-item label="图片张数:">
+            <el-select
+              v-model="filter.pictureSymbol"
+              :clearable="false"
               style="width: 100px"
-              v-model="filter.minBindCount"
-              :min="0"
-              :max="999"
-              :step="1"
-              step-strictly
-              :controls="false"
-              placeholder="图片张数"
-            ></el-input-number>
-            <span class="el-input-split"></span>
+            >
+              <el-option
+                v-for="(val, key) in EQUAL_TYPE"
+                :key="key"
+                :value="key"
+                :label="val"
+              ></el-option>
+            </el-select>
             <el-input-number
-              style="width: 100px"
-              v-model="filter.maxBindCount"
+              style="width: 100px; margin-left: 5px"
+              v-model="filter.pictureCount"
               :min="0"
-              :max="999"
+              :max="9999"
               :step="1"
               step-strictly
               :controls="false"
@@ -181,6 +175,11 @@
             label="学号"
             width="120"
           ></el-table-column>
+          <el-table-column
+            prop="batchNo"
+            label="扫描批次号"
+            width="100"
+          ></el-table-column>
           <el-table-column
             prop="courseCodeName"
             label="课程名称(代码)"
@@ -195,7 +194,6 @@
           <el-table-column prop="collegeName" label="学院"></el-table-column>
           <el-table-column prop="majorName" label="专业"></el-table-column>
           <el-table-column prop="className" label="班级"></el-table-column>
-          <el-table-column prop="examRoom" label="考场"></el-table-column>
           <el-table-column
             prop="score"
             label="成绩"
@@ -251,7 +249,7 @@ import {
   documentDetialDownload,
   buildStudentPdf,
 } from "../api";
-import { BOUND_TYPE } from "@/constants/enumerate";
+import { BOUND_TYPE, EQUAL_TYPE } from "@/constants/enumerate";
 import ArchivesDetailStudentDialog from "./ArchivesDetailStudentDialog.vue";
 import DataTaskDialog from "../../base/components/DataTaskDialog.vue";
 
@@ -277,12 +275,11 @@ export default {
         isBind: "",
         teacher: "",
         teachClass: "",
-        examRoom: "",
         param: "",
         minScore: undefined,
         maxScore: undefined,
-        minBindCount: undefined,
-        maxBindCount: undefined,
+        pictureSymbol: "EQUAL",
+        pictureCount: undefined,
       },
       current: 1,
       size: this.GLOBAL.pageSize,
@@ -291,6 +288,7 @@ export default {
       curRow: {},
       multipleSelection: [],
       BOUND_TYPE,
+      EQUAL_TYPE,
       loading: false,
       taskType: "",
     };

+ 3 - 3
src/modules/record/views/DocumentManage.vue

@@ -29,13 +29,13 @@
         </span>
         <span style="margin-left: 20px">
           图片总计:<i class="color-primary">{{
-            statInfo.imageCount | defaultFieldFilter
+            statInfo.pictureCount | defaultFieldFilter
           }}</i>
         </span>
       </div>
       <div>
-        <el-button type="primary" icon="el-icon-download">导出数据</el-button>
+        <!-- <el-button type="primary" icon="el-icon-download">导出数据</el-button> -->
       </div>
     </div>
 
@@ -156,7 +156,7 @@ export default {
     },
     async search() {
       this.toPage(1);
-      // this.getStatistics();
+      this.getStatistics();
     },
     async getStatistics() {
       const res = await documentStatistics(this.filter);

+ 22 - 28
src/modules/record/views/PictureManage.vue

@@ -15,33 +15,27 @@
             clearable
           ></el-input>
         </el-form-item>
-        <el-form-item label="起止成绩:">
-          <el-input-number
-            style="width: 80px"
-            v-model="filter.minScore"
-            :min="0"
-            :max="999"
-            :step="1"
-            step-strictly
-            :controls="false"
-            placeholder="成绩"
-          ></el-input-number>
+        <el-form-item label="起止学号:">
+          <el-input
+            style="width: 140px"
+            v-model="filter.startStudentCode"
+            placeholder="起始学号"
+            clearable
+          ></el-input>
           <span class="el-input-split"></span>
-          <el-input-number
-            style="width: 80px"
-            v-model="filter.maxScore"
-            :min="0"
-            :max="999"
-            :step="1"
-            step-strictly
-            :controls="false"
-            placeholder="成绩"
-          ></el-input-number>
+          <el-input
+            style="width: 140px"
+            v-model="filter.endStudentCode"
+            placeholder="截止学号"
+            clearable
+          ></el-input>
         </el-form-item>
         <el-form-item label="学期:">
           <semester-select
             v-model.trim="filter.semesterId"
             placeholder="学期"
+            default-select
+            @default-selected="search"
           ></semester-select>
         </el-form-item>
         <el-form-item label="考试:">
@@ -245,6 +239,7 @@
       ref="ArchivesDetailStudentDialog"
       :student="curRow"
       :show-fix="false"
+      @close="getList"
     ></archives-detail-student-dialog>
   </div>
 </template>
@@ -269,8 +264,8 @@ export default {
         teacher: "",
         teachClass: "",
         param: "",
-        minScore: undefined,
-        maxScore: undefined,
+        startStudentCode: "",
+        endStudentCode: "",
         pictureSymbol: "EQUAL",
         pictureCount: undefined,
       },
@@ -299,6 +294,9 @@ export default {
       this.current = page;
       this.getList();
     },
+    search() {
+      this.toPage(1);
+    },
     handleSelectionChange(val) {
       this.multipleSelection = val.map((item) => item.studentId);
     },
@@ -306,11 +304,7 @@ export default {
     toDetail(row) {
       if (!row.bindCount) return;
 
-      this.curRow = {
-        ...row,
-        paperScanTaskId: this.task.paperScanTaskId,
-        semesterId: this.task.semesterId,
-      };
+      this.curRow = row;
       this.$refs.ArchivesDetailStudentDialog.open();
     },
   },