Explorar o código

同步文档校验放开

zhangjie %!s(int64=3) %!d(string=hai) anos
pai
achega
a6bbf401d3
Modificáronse 1 ficheiros con 22 adicións e 15 borrados
  1. 22 15
      src/modules/stmms/components/UploadPaperAnswerDialog.vue

+ 22 - 15
src/modules/stmms/components/UploadPaperAnswerDialog.vue

@@ -18,11 +18,6 @@
           :key="key"
           :prop="`${paperType}.${key}`"
           :label="`${val.name}:`"
-          :rules="{
-            required: true,
-            validator: fileValidator,
-            trigger: 'change'
-          }"
         >
           <select-file
             :format="val.format"
@@ -130,19 +125,27 @@ export default {
         this.infos[paperType][typeKey].md5 = data.md5;
         this.infos[paperType][typeKey].errorMsg = null;
       }
-      this.$refs.modalFormComp.validateField(`${paperType}.${typeKey}`);
+      // this.$refs.modalFormComp.validateField(`${paperType}.${typeKey}`);
     },
     fileValidator(rule, value, callback) {
-      const [paperType, typeKey] = rule.field.split(".");
-      const val = this.infos[paperType][typeKey];
+      // const [paperType, typeKey] = rule.field.split(".");
+      // const val = this.infos[paperType][typeKey];
 
-      if (val.errorMsg) {
-        return callback(new Error(val.errorMsg));
-      } else {
-        if (!val.file) {
-          return callback(new Error("请选择文件"));
-        }
+      // if (val.errorMsg) {
+      //   return callback(new Error(val.errorMsg));
+      // } else {
+      //   if (!val.file) {
+      //     return callback(new Error("请选择文件"));
+      //   }
+      // }
+      const [paperType] = rule.field.split(".");
+      const paperTypeVals = this.infos[paperType];
+      const kvs = Object.vals(paperTypeVals);
+      const valid = kvs.some(val => !!val.file);
+      if (!valid) {
+        return callback(new Error(`卷型${paperType}至少要上传一种文件`));
       }
+
       callback();
     },
     async submit() {
@@ -155,13 +158,17 @@ export default {
       let formData = new FormData();
       formData.append("examPaperStructure", JSON.stringify(this.instance));
       let md5s = [];
-      Object.values(this.infos).forEach(vals => {
+      let keys = [];
+      Object.entries(this.infos).forEach(([paperType, vals]) => {
         this.fileTypeSerial.forEach(typeKey => {
+          if (!vals[typeKey].file) return;
           formData.append(`files`, vals[typeKey].file);
           md5s.push(vals[typeKey].md5);
+          keys.push(`${paperType}-${typeKey}`);
         });
       });
       formData.append(`md5`, md5s.join());
+      formData.append(`keys`, keys.join());
 
       // Object.entries(this.infos).forEach(([paperType, vals], index) => {
       //   const indexName = `files[${index}]`;