|
@@ -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}]`;
|