From 527efb36f35b471710e445972673abff45bacdac Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期五, 12 九月 2025 17:36:09 +0800
Subject: [PATCH] 401跳转登录
---
laboratory/src/components/DynamicComponent/addTableData.vue | 83 +++++++++++++++++++++++------------------
1 files changed, 47 insertions(+), 36 deletions(-)
diff --git a/laboratory/src/components/DynamicComponent/addTableData.vue b/laboratory/src/components/DynamicComponent/addTableData.vue
index 500f311..de40882 100644
--- a/laboratory/src/components/DynamicComponent/addTableData.vue
+++ b/laboratory/src/components/DynamicComponent/addTableData.vue
@@ -28,12 +28,23 @@
<el-form-item
:label="header.name"
:prop="header.name"
- :rules="{
- required:
- header.required === true || header.required === 'true',
- message: header.message || `请输入${header.name}`,
- trigger: ['blur', 'change'],
- }"
+ :rules="[
+ {
+ required: header.required === true || header.required === 'true',
+ message: header.message || `请输入${header.name}`,
+ trigger: ['blur', 'change'],
+ },
+ {
+ validator: (rule, value, callback) => {
+ if ((header.required === true || header.required === 'true') && (!value || value.trim() === '')) {
+ callback(header.message || `请输入${header.name}`);
+ } else {
+ callback();
+ }
+ },
+ trigger: ['blur', 'change'],
+ }
+ ]"
v-if="header.type == 'text'"
>
<el-input
@@ -57,15 +68,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 +228,7 @@
uploadHeaders: {
Authorization: sessionStorage.getItem("token") || "",
},
+ imageListMap: {},
};
},
computed: {
@@ -273,11 +286,11 @@
label: user.nickName || user.userName,
}));
} else {
- this.$message.error("获取用户列表失败");
+ // this.$message.error("获取用户列表失败");
}
})
.catch((err) => {
- console.error("获取用户列表失败", err);
+ // console.error("获取用户列表失败", err);
});
},
checkEditPermission(header) {
@@ -318,6 +331,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 +356,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] || "";
}
@@ -396,6 +415,7 @@
this.initFormData();
},
handleSubmit() {
+ console.log('4444444444444')
this.$refs.form.validate((valid) => {
if (valid) {
const submitData = {
@@ -440,34 +460,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