xy 1 year ago
parent 8b3d339942
commit 6de809beba

@ -563,6 +563,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
"keep-source": true, "keep-source": true,
"column-config": { resizable: true }, "column-config": { resizable: true },
"show-overflow": true, "show-overflow": true,
"edit-rules": info._writeable ? this.subRules[`${info.name}_rules`] : {},
"edit-config": info._writeable "edit-config": info._writeable
? { ? {
trigger: "click", trigger: "click",
@ -854,7 +855,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
props: { props: {
prop: info.name, prop: info.name,
label: info.label_show ? info.label : '', label: info.label_show ? info.label : '',
'label-width': !info.label_show ? '0': '' 'label-width': !info.label_show ? '0': '',
}, },
style: { style: {
"grid-column-start": info.gs_x + 1, "grid-column-start": info.gs_x + 1,

@ -54,6 +54,10 @@ export default {
type: Object, type: Object,
default: () => ({}), default: () => ({}),
}, },
subRules: {
type: Object,
default: () => ({}),
},
}, },
data() { data() {
return { return {

@ -55,6 +55,7 @@
:script-content="scriptContent" :script-content="scriptContent"
:writeable="writeableFields" :writeable="writeableFields"
:rules="rules" :rules="rules"
:sub-rules="subRules"
></DesktopForm> ></DesktopForm>
</template> </template>
<template v-else> <template v-else>
@ -300,6 +301,7 @@ export default {
result: {}, result: {},
fileList: {}, fileList: {},
rules: {}, rules: {},
subRules: {},
flows: [], flows: [],
}; };
}, },
@ -421,10 +423,9 @@ export default {
} }
}, },
generateForm(object, fields) { generateForm(object, fields, relation = false, pname) {
this.rules = {};
fields.forEach((field) => { fields.forEach((field) => {
if (field.rules && field.rules.length > 0 && this.writeableFields.find(i => i.id === field.id)) { if (field.rules && field.rules.length > 0 && this.writeableFields.find(i => i === field.id) && !relation) {
this.rules[field.name] = field.rules.map((rule) => { this.rules[field.name] = field.rules.map((rule) => {
switch (rule) { switch (rule) {
case "required": case "required":
@ -451,21 +452,52 @@ export default {
} }
}); });
} }
if (relation) {
this.subRules[`${pname}_rules`][field.name] = field.rules.map((rule) => {
switch (rule) {
case "required":
return {
required: true,
message: `请填写${field.label}`,
};
default:
return {
validator: ({ cellValue }) => {
return new Promise((resolve, reject) => {
if (validation.get(rule).test(cellValue) || cellValue === '') {
resolve()
} else {
reject(
new Error(
`${field.label}必须为${validationName.get(rule)}`
)
);
}
})
},
trigger: "blur",
};
}
});
}
if (field.type === "file") { if (field.type === "file") {
this.fileList[field.name] = []; this.fileList[field.name] = [];
} }
if (field.type === "relation") { if (field.type === "relation") {
this.subRules[`${field.name}_rules`] = {}
object[field.name] = [{}]; object[field.name] = [{}];
this.generateForm( this.generateForm(
object[field.name][0], object[field.name][0],
this.subConfig.get(field.sub_custom_model_id)?.customModel?.fields this.subConfig.get(field.sub_custom_model_id)?.customModel?.fields,
true,
field.name
); );
} else { } else {
object[field.name] = field.default_value ? field.default_value : ""; object[field.name] = field.default_value ? field.default_value : "";
} }
}); });
console.log(345, this.rules)
this.form['flow_title'] = this.config?.flow?.title ?? `${this.config.customModel.name}${this.$store.getters.name} ${this.$moment().format('YYYY-MM-DD HH:mm')}` this.form['flow_title'] = this.config?.flow?.title ?? `${this.config.customModel.name}${this.$store.getters.name} ${this.$moment().format('YYYY-MM-DD HH:mm')}`
}, },
formatTime(time) { formatTime(time) {

Loading…
Cancel
Save