From 4ca375b2e3dae98d6ececc1b7b421a12f3fa8a26 Mon Sep 17 00:00:00 2001 From: 董国庆 <364620639@qq.com> Date: 星期二, 01 七月 2025 09:00:38 +0800 Subject: [PATCH] 修改bug,验收通过 --- laboratory/src/components/DynamicComponent/addTableData.vue | 55 +++++++++++++++++++++++++++---------------------------- 1 files changed, 27 insertions(+), 28 deletions(-) diff --git a/laboratory/src/components/DynamicComponent/addTableData.vue b/laboratory/src/components/DynamicComponent/addTableData.vue index 500f311..f800ee9 100644 --- a/laboratory/src/components/DynamicComponent/addTableData.vue +++ b/laboratory/src/components/DynamicComponent/addTableData.vue @@ -57,15 +57,16 @@ class="upload-demo" :action="uploadUrl" :headers="uploadHeaders" - :file-list="imageList" + :file-list="imageListMap[header.name] || []" :auto-upload="true" list-type="picture-card" - :beforeUpload="beforeImageUpload" - :on-change="handleImageChange" - :on-remove="handleImageRemove" - :on-success="handleImageSuccess" + :before-upload="beforeImageUpload" + :on-change="(file, fileList) => handleImageChange(file, fileList, header.name)" + :on-remove="(file, fileList) => handleImageRemove(file, fileList, header.name)" + :on-success="(res, file, fileList) => handleImageSuccess(res, file, fileList, header.name)" :on-preview="handlePreview" :disabled="!checkEditPermission(header)" + multiple > <div style=" @@ -216,6 +217,7 @@ uploadHeaders: { Authorization: sessionStorage.getItem("token") || "", }, + imageListMap: {}, }; }, computed: { @@ -318,6 +320,9 @@ this.headerList.forEach((header) => { if (header.type === "user") { formData[header.name] = []; + } else if (header.type === "image") { + formData[header.name] = []; + this.$set(this.imageListMap, header.name, []); } else { formData[header.name] = ""; } @@ -340,6 +345,9 @@ this.headerList.forEach((header) => { if (header.type === "user") { formData[header.name] = data[header.name] || []; + } else if (header.type === "image") { + formData[header.name] = Array.isArray(data[header.name]) ? data[header.name] : (data[header.name] ? [data[header.name]] : []); + this.$set(this.imageListMap, header.name, (formData[header.name] || []).map(url => ({ name: "image", url: getFullUrl(url), status: "success" }))); } else { formData[header.name] = data[header.name] || ""; } @@ -440,34 +448,25 @@ } return true; }, - handleImageChange(file, fileList) { - this.imageList = fileList; - const imageHeader = this.headerList.find((h) => h.type === "image"); - if (imageHeader) { - this.$refs.form.validateField(imageHeader.name); - } + handleImageChange(file, fileList, fieldName) { + this.$set(this.imageListMap, fieldName, fileList); + // 校验 + this.$refs.form && this.$refs.form.validateField(fieldName); }, - handleImageSuccess(res, file, fileList) { + handleImageSuccess(res, file, fileList, fieldName) { const url = res.msg; file.url = getFullUrl(url); - const imageHeader = this.headerList.find((h) => h.type === "image"); - if (imageHeader) { - this.$set(this.form, imageHeader.name, url); - this.$refs.form.validateField(imageHeader.name); + if (!Array.isArray(this.form[fieldName])) { + this.$set(this.form, fieldName, []); } - this.imageList = fileList.map((f) => { - if (f.uid === file.uid) { - return file; - } - return f; - }); + // 只保留 fileList 中的 url + this.$set(this.form, fieldName, fileList.map(f => f.url ? (f.url.startsWith('http') ? f.url : getFullUrl(f.url)) : '')); + this.$set(this.imageListMap, fieldName, fileList); + this.$refs.form && this.$refs.form.validateField(fieldName); }, - handleImageRemove(file, fileList) { - const imageHeader = this.headerList.find((h) => h.type === "image"); - if (imageHeader) { - this.$set(this.form, imageHeader.name, ""); - } - this.imageList = fileList; + handleImageRemove(file, fileList, fieldName) { + this.$set(this.form, fieldName, fileList.map(f => f.url ? (f.url.startsWith('http') ? f.url : getFullUrl(f.url)) : '')); + this.$set(this.imageListMap, fieldName, fileList); }, handlePreview(file) { this.imagePreviewUrl = file.url; -- Gitblit v1.7.1