| | |
| | | <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') && |
| | | isApprovaler, |
| | | message: header.message || `请输入${header.name}`, |
| | | trigger: ['blur', 'change'], |
| | | }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if ( |
| | | (header.required === true || |
| | | header.required === 'true') && |
| | | (!value || value.trim() === '') && |
| | | isApprovaler |
| | | ) { |
| | | callback(header.message || `请输入${header.name}`); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: ['blur', 'change'], |
| | | }, |
| | | ]" |
| | | v-if="header.type == 'text'" |
| | | > |
| | | <el-input |
| | |
| | | :prop="header.name" |
| | | :rules="{ |
| | | required: |
| | | header.required === true || header.required === 'true', |
| | | (header.required === true || |
| | | header.required === 'true') && |
| | | isApprovaler, |
| | | trigger: ['blur', 'change'], |
| | | }" |
| | | class="image-form-item" |
| | |
| | | :auto-upload="true" |
| | | list-type="picture-card" |
| | | :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-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 |
| | |
| | | :prop="header.name" |
| | | :rules="{ |
| | | required: |
| | | header.required === true || header.required === 'true', |
| | | (header.required === true || |
| | | header.required === 'true') && |
| | | isApprovaler, |
| | | message: header.message || `请输入${header.name}`, |
| | | trigger: ['blur', 'change'], |
| | | }" |
| | |
| | | :prop="header.name" |
| | | :rules="{ |
| | | required: |
| | | header.required === true || header.required === 'true', |
| | | (header.required === true || |
| | | header.required === 'true') && |
| | | isApprovaler, |
| | | message: header.message || `请输入${header.name}`, |
| | | trigger: ['blur', 'change'], |
| | | }" |
| | |
| | | const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); |
| | | return userInfo.userId; |
| | | }, |
| | | isApprovaler() { |
| | | const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); |
| | | return userInfo.roleType != 3; // 不是工艺工程师 |
| | | }, |
| | | }, |
| | | watch: { |
| | | visible: { |
| | |
| | | if (!header.role || !Array.isArray(header.role)) { |
| | | return true; |
| | | } |
| | | return header.role.includes(this.currentUserId); |
| | | const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}"); |
| | | return header.role.includes(this.currentUserId) || (userInfo.roleType == 3); |
| | | }, |
| | | initRules() { |
| | | // 初始化校验规则 |
| | |
| | | if (this.headerList && this.headerList.length) { |
| | | this.headerList.forEach((header) => { |
| | | // 处理required可能是字符串的情况 |
| | | const userInfo = JSON.parse( |
| | | sessionStorage.getItem("userInfo") || "{}" |
| | | ); |
| | | const isRequired = |
| | | header.required === true || header.required === "true"; |
| | | (header.required === true || header.required === "true") && |
| | | userInfo.roleType != 3; |
| | | if (isRequired) { |
| | | rules[header.name] = [ |
| | | { |
| | | required: true, |
| | | message: header.message || `请输入${header.name}`, |
| | | trigger: ["blur", "change"], |
| | | }, |
| | | ]; |
| | | }else{ |
| | | rules[header.name] = [ |
| | | { |
| | | required: false, |
| | | message: header.message || `请输入${header.name}`, |
| | | trigger: ["blur", "change"], |
| | | }, |
| | |
| | | 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" }))); |
| | | 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] || ""; |
| | | } |
| | |
| | | this.initFormData(); |
| | | }, |
| | | handleSubmit() { |
| | | console.log("4444444444444"); |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | const submitData = { |
| | |
| | | this.$set(this.form, fieldName, []); |
| | | } |
| | | // 只保留 fileList 中的 url |
| | | this.$set(this.form, fieldName, fileList.map(f => f.url ? (f.url.startsWith('http') ? f.url : getFullUrl(f.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, fieldName) { |
| | | this.$set(this.form, fieldName, fileList.map(f => f.url ? (f.url.startsWith('http') ? f.url : getFullUrl(f.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); |
| | | }, |
| | | handlePreview(file) { |