浏览代码

feat: 上传图片排序问题以及正反斜杠限制输入

zhangjie 10 月之前
父节点
当前提交
c83f4e1483

二进制
extra/database/org.rdb


+ 5 - 0
src/modules/client/components/ManualBindDialog.vue

@@ -148,6 +148,7 @@
 
 
 <script>
 <script>
 import { getStudentInfo, updateStudent, fieldListQuery } from "../api";
 import { getStudentInfo, updateStudent, fieldListQuery } from "../api";
+import { slashesLimitValidator } from "@/plugins/formRules";
 
 
 const initModalForm = {
 const initModalForm = {
   id: null,
   id: null,
@@ -249,6 +250,7 @@ export default {
             max: 50,
             max: 50,
             trigger: "change",
             trigger: "change",
           },
           },
+          ...slashesLimitValidator,
         ],
         ],
         teacher: [
         teacher: [
           {
           {
@@ -285,6 +287,7 @@ export default {
             max: 50,
             max: 50,
             trigger: "change",
             trigger: "change",
           },
           },
+          ...slashesLimitValidator,
         ],
         ],
         courseCode: [
         courseCode: [
           {
           {
@@ -297,6 +300,7 @@ export default {
             max: 50,
             max: 50,
             trigger: "change",
             trigger: "change",
           },
           },
+          ...slashesLimitValidator,
         ],
         ],
         examRoom: [
         examRoom: [
           {
           {
@@ -309,6 +313,7 @@ export default {
             max: 50,
             max: 50,
             trigger: "change",
             trigger: "change",
           },
           },
+          ...slashesLimitValidator,
         ],
         ],
         score: [
         score: [
           {
           {

+ 6 - 4
src/modules/client/views/ScanOther.vue

@@ -277,6 +277,7 @@ export default {
           isFormal: 0,
           isFormal: 0,
           studentName: "",
           studentName: "",
           studentCode: "",
           studentCode: "",
+          studentPaperNo: 0,
           ocrArea: "",
           ocrArea: "",
           fileTypeId: this.modalForm.fileTypeId,
           fileTypeId: this.modalForm.fileTypeId,
           fileTypeName: this.modalForm.fileTypeName,
           fileTypeName: this.modalForm.fileTypeName,
@@ -301,10 +302,11 @@ export default {
 
 
       logger.info(`04-1开始保存数据`);
       logger.info(`04-1开始保存数据`);
       try {
       try {
-        this.scanStageList = await batchSaveImages(
-          this.scanStageList,
-          this.task.courseCode
-        );
+        const datas = this.scanStageList.map((item, index) => {
+          item.studentPaperNo = index + 1;
+          return item;
+        });
+        this.scanStageList = await batchSaveImages(datas, this.task.courseCode);
         await db.batchSaveUploadInfo(this.scanStageList);
         await db.batchSaveUploadInfo(this.scanStageList);
       } catch (err) {
       } catch (err) {
         console.error(err);
         console.error(err);

+ 10 - 5
src/modules/client/views/ScanPaper.vue

@@ -328,6 +328,7 @@ export default {
           isFormal: 1,
           isFormal: 1,
           studentName: "",
           studentName: "",
           studentCode: "",
           studentCode: "",
+          studentPaperNo: 0,
           ocrArea: ocrAreaContent,
           ocrArea: ocrAreaContent,
           fileTypeId: "0",
           fileTypeId: "0",
           fileTypeName: "答题卡",
           fileTypeName: "答题卡",
@@ -434,12 +435,16 @@ export default {
       logger.info(`04-1开始保存数据`);
       logger.info(`04-1开始保存数据`);
       try {
       try {
         let datas = this.scanStageList
         let datas = this.scanStageList
-          .map((item) => item.papers)
-          .flat()
           .map((item) => {
           .map((item) => {
-            item.batchNo = batchNo;
-            return item;
-          });
+            item.papers.forEach((paper, pindex) => {
+              paper.studentPaperNo = pindex + 1;
+              paper.batchNo = batchNo;
+            });
+
+            return item.papers;
+          })
+          .flat();
+
         datas = await batchSaveImages(datas, this.task.courseCode);
         datas = await batchSaveImages(datas, this.task.courseCode);
         await db.batchSaveUploadInfo(datas);
         await db.batchSaveUploadInfo(datas);
       } catch (err) {
       } catch (err) {

+ 4 - 2
src/plugins/db.js

@@ -60,7 +60,7 @@ function serializeWhere(params) {
 
 
 // scan
 // scan
 function saveUploadInfo(params) {
 function saveUploadInfo(params) {
-  const sql = `INSERT INTO scan (taskId, schoolId, semesterId, examId, courseCode, courseName, frontOriginImgPath, versoOriginImgPath, studentCode, ocrArea,fileTypeId,fileTypeName,roomOrClass,batchNo, isFormal, clientUserId, clientUsername, clientUserLoginTime, isUpload,createdTime, finishTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
+  const sql = `INSERT INTO scan (taskId, schoolId, semesterId, examId, courseCode, courseName, frontOriginImgPath, versoOriginImgPath, studentCode,studentPaperNo, ocrArea,fileTypeId,fileTypeName,roomOrClass,batchNo, isFormal, clientUserId, clientUsername, clientUserLoginTime, isUpload,createdTime, finishTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
   const datas = [
   const datas = [
     params.taskId,
     params.taskId,
     params.schoolId,
     params.schoolId,
@@ -71,6 +71,7 @@ function saveUploadInfo(params) {
     params.frontOriginImgPath,
     params.frontOriginImgPath,
     params.versoOriginImgPath,
     params.versoOriginImgPath,
     params.studentCode,
     params.studentCode,
+    params.studentPaperNo,
     params.ocrArea,
     params.ocrArea,
     params.fileTypeId,
     params.fileTypeId,
     params.fileTypeName,
     params.fileTypeName,
@@ -107,6 +108,7 @@ function batchSaveUploadInfo(dataList) {
       item.frontOriginImgPath,
       item.frontOriginImgPath,
       item.versoOriginImgPath,
       item.versoOriginImgPath,
       item.studentCode,
       item.studentCode,
+      item.studentPaperNo,
       item.ocrArea,
       item.ocrArea,
       item.fileTypeId,
       item.fileTypeId,
       item.fileTypeName,
       item.fileTypeName,
@@ -123,7 +125,7 @@ function batchSaveUploadInfo(dataList) {
   });
   });
 
 
   return new Promise((resolve, reject) => {
   return new Promise((resolve, reject) => {
-    const sql = `INSERT INTO scan (taskId, schoolId, semesterId, examId, courseCode, courseName, frontOriginImgPath, versoOriginImgPath, studentCode, ocrArea,fileTypeId,fileTypeName,roomOrClass,batchNo, isFormal, clientUserId, clientUsername, clientUserLoginTime, isUpload,createdTime, finishTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
+    const sql = `INSERT INTO scan (taskId, schoolId, semesterId, examId, courseCode, courseName, frontOriginImgPath, versoOriginImgPath, studentCode, studentPaperNo, ocrArea,fileTypeId,fileTypeName,roomOrClass,batchNo, isFormal, clientUserId, clientUsername, clientUserLoginTime, isUpload,createdTime, finishTime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;
     db.serialize(() => {
     db.serialize(() => {
       const stmt = db.prepare(sql);
       const stmt = db.prepare(sql);
 
 

+ 1 - 0
src/plugins/db.sql

@@ -26,6 +26,7 @@ CREATE TABLE "scan" (
   "frontOriginImgPath" TEXT,
   "frontOriginImgPath" TEXT,
   "versoOriginImgPath" TEXT,
   "versoOriginImgPath" TEXT,
   "studentCode" TEXT,
   "studentCode" TEXT,
+  "studentPaperNo" TEXT NOT NULL,
   "ocrArea" TEXT,
   "ocrArea" TEXT,
   "fileTypeId" TEXT NOT NULL DEFAULT '',
   "fileTypeId" TEXT NOT NULL DEFAULT '',
   "fileTypeName" TEXT NOT NULL DEFAULT '',
   "fileTypeName" TEXT NOT NULL DEFAULT '',

+ 14 - 0
src/plugins/formRules.js

@@ -73,6 +73,19 @@ const numberValidator = (message) => {
   ];
   ];
 };
 };
 
 
+// 正反斜杠限制输入
+const slashesLimitValidator = [
+  {
+    validator: (rule, value, callback) => {
+      if (value.match(/[\\/]/g)) {
+        callback(new Error("禁止输入正斜杠和反斜杠"));
+      } else {
+        callback();
+      }
+    },
+  },
+];
+
 export {
 export {
   username,
   username,
   commonCode,
   commonCode,
@@ -81,4 +94,5 @@ export {
   phone,
   phone,
   smscode,
   smscode,
   numberValidator,
   numberValidator,
+  slashesLimitValidator,
 };
 };

+ 1 - 0
src/plugins/imageUpload.js

@@ -26,6 +26,7 @@ export async function toUploadImg(options) {
   formData.append("scanUserId", options.clientUserId);
   formData.append("scanUserId", options.clientUserId);
 
 
   if (options.isFormal) {
   if (options.isFormal) {
+    formData.append("studentPaperNo", Number(options.studentPaperNo));
     formData.append("batchNo", options.batchNo);
     formData.append("batchNo", options.batchNo);
     formData.append("studentCode", options.studentCode);
     formData.append("studentCode", options.studentCode);
     if (options.ocrArea) {
     if (options.ocrArea) {