Ver Fonte

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

zhangjie há 10 meses atrás
pai
commit
c83f4e1483

BIN
extra/database/org.rdb


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

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

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

@@ -277,6 +277,7 @@ export default {
           isFormal: 0,
           studentName: "",
           studentCode: "",
+          studentPaperNo: 0,
           ocrArea: "",
           fileTypeId: this.modalForm.fileTypeId,
           fileTypeName: this.modalForm.fileTypeName,
@@ -301,10 +302,11 @@ export default {
 
       logger.info(`04-1开始保存数据`);
       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);
       } catch (err) {
         console.error(err);

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

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

+ 4 - 2
src/plugins/db.js

@@ -60,7 +60,7 @@ function serializeWhere(params) {
 
 // scan
 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 = [
     params.taskId,
     params.schoolId,
@@ -71,6 +71,7 @@ function saveUploadInfo(params) {
     params.frontOriginImgPath,
     params.versoOriginImgPath,
     params.studentCode,
+    params.studentPaperNo,
     params.ocrArea,
     params.fileTypeId,
     params.fileTypeName,
@@ -107,6 +108,7 @@ function batchSaveUploadInfo(dataList) {
       item.frontOriginImgPath,
       item.versoOriginImgPath,
       item.studentCode,
+      item.studentPaperNo,
       item.ocrArea,
       item.fileTypeId,
       item.fileTypeName,
@@ -123,7 +125,7 @@ function batchSaveUploadInfo(dataList) {
   });
 
   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(() => {
       const stmt = db.prepare(sql);
 

+ 1 - 0
src/plugins/db.sql

@@ -26,6 +26,7 @@ CREATE TABLE "scan" (
   "frontOriginImgPath" TEXT,
   "versoOriginImgPath" TEXT,
   "studentCode" TEXT,
+  "studentPaperNo" TEXT NOT NULL,
   "ocrArea" TEXT,
   "fileTypeId" 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 {
   username,
   commonCode,
@@ -81,4 +94,5 @@ export {
   phone,
   smscode,
   numberValidator,
+  slashesLimitValidator,
 };

+ 1 - 0
src/plugins/imageUpload.js

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