zhangjie преди 2 години
родител
ревизия
98b8f23b4f

BIN
public/temps/scanTaskTemplate.xlsx


BIN
public/temps/taskStudentTemplate.xlsx


+ 33 - 9
src/modules/record/components/LibraryDialog.vue

@@ -17,13 +17,22 @@
             <el-button size="mini" type="primary" @click="toSelectTaskStd"
               >所有任务考生信息</el-button
             >
-            <el-button
-              v-if="openOcr"
-              size="mini"
-              type="success"
-              @click="toSetOcrArea"
-              >设置OCR识别区</el-button
-            >
+            <div v-if="openCodeOcr">
+              <el-button
+                v-if="openCodeOcr"
+                size="mini"
+                type="success"
+                @click="toSetOcrArea"
+                >设置信息识别区</el-button
+              >
+              <el-radio-group v-model="areaType">
+                <el-radio v-if="openOcr" label="OCR">OCR识别</el-radio>
+                <el-radio v-if="openBarCode" label="BAR_CODE"
+                  >条码识别</el-radio
+                >
+              </el-radio-group>
+            </div>
+
             <el-divider></el-divider>
             <div v-if="openGlobalMatch" class="box-justify mb-2">
               <h4>绑定学生</h4>
@@ -209,8 +218,10 @@ export default {
       // ocr
       isSetOcrSet: false,
       openOcr: false,
+      openBarCode: false,
       openGlobalMatch: false,
       globalMatch: false,
+      areaType: "",
       ocrArea: { x: null, y: null, width: null, height: null, rotate: 0 },
       ocrResult: [],
       ocrResultDialogIsShow: false
@@ -219,6 +230,9 @@ export default {
   computed: {
     IS_UNDO_MODEL() {
       return this.mode === "undo";
+    },
+    openCodeOcr() {
+      return this.openBarCode || this.openOcr;
     }
   },
   mounted() {
@@ -267,11 +281,20 @@ export default {
           if (field.code === "openOcr") {
             this.openOcr = field.value === "true";
           }
+          if (field.code === "openBarCode") {
+            this.openBarCode = field.value === "true";
+          }
           if (field.code === "openGlobalMatch") {
             this.openGlobalMatch = field.value === "true";
           }
         });
       });
+
+      if (this.openOcr) {
+        this.areaType = "OCR";
+      } else if (this.openBarCode) {
+        this.areaType = "BAR_CODE";
+      }
     },
     nameOrNoInput() {
       this.clearSetTs();
@@ -301,7 +324,7 @@ export default {
       this.curPagePaper = {
         url: this.curPagePapers[this.curPagePaperIndex]
       };
-      if (this.openOcr) {
+      if (this.openCodeOcr) {
         this.isSwitchFb = true;
         await this.getOrcResult().catch(() => {});
         this.isSwitchFb = false;
@@ -375,7 +398,7 @@ export default {
     },
     // ocr
     toSetOcrArea() {
-      if (!this.openOcr) return;
+      if (!this.openOcr && !this.openBarCode) return;
       this.isSetOcrSet = true;
     },
     ocrAreaChange(ocrArea) {
@@ -397,6 +420,7 @@ export default {
       const res = await libraryOcrResult({
         paperLibraryId: this.curPage.id,
         index: this.curPagePaperIndex,
+        type: this.areaType,
         ...this.ocrArea
       });
       if (res && res.length) {

+ 29 - 1
src/modules/record/views/ScanTaskManage.vue

@@ -141,6 +141,13 @@
               @click="toDetail(scope.row)"
               >查看详情</el-button
             >
+            <el-button
+              v-if="checkPrivilege('link', 'import')"
+              class="btn-primary"
+              type="text"
+              @click="toImportStudent(scope.row)"
+              >导入考生</el-button
+            >
             <el-button
               v-if="checkPrivilege('link', 'delete')"
               class="btn-danger"
@@ -226,6 +233,18 @@
       ref="DataTaskDialog"
       task-type="PAPER_SCAN_TASK_IMPORT"
     ></data-task-dialog>
+    <!-- import-student -->
+    <import-file
+      v-if="checkPrivilege('link', 'import')"
+      ref="ImportStudent"
+      title="导入考生"
+      :upload-url="uploadStdUrl"
+      :upload-data="uploadStdData"
+      :downloadUrl="downloadStdUrl"
+      :downloadFilename="stdDfilename"
+      :format="['xls', 'xlsx']"
+      @upload-success="uploadSuccess"
+    ></import-file>
   </div>
 </template>
 
@@ -279,7 +298,12 @@ export default {
       uploadData: {},
       uploadUrl: "/api/admin/paper/scan_task/scan_task_import",
       downloadUrl: "/temps/scanTaskTemplate.xlsx",
-      dfilename: "扫描任务导入模板.xlsx"
+      dfilename: "扫描任务导入模板.xlsx",
+      // import student
+      uploadStdData: {},
+      uploadStdUrl: "/api/admin/paper/scan_task/import_student",
+      downloadStdUrl: "/temps/taskStudentTemplate.xlsx",
+      stdDfilename: "考生导入模板.xlsx"
     };
   },
   mounted() {
@@ -318,6 +342,10 @@ export default {
       this.curRow = row;
       this.$refs.ScanTaskDetailDialog.open();
     },
+    toImportStudent(row) {
+      this.uploadStdData = { paperScanTaskId: row.paperScanTaskId };
+      this.$refs.ImportStudent.open();
+    },
     toShowProgress(row) {
       this.curRow = row;
       this.$refs.LibraryStateDialog.open();