xy 12 months ago
parent 1a0df6c1d1
commit 5c42597980

@ -15,7 +15,7 @@ import { flowList } from "@/api/flow";
* @param {Boolean} pReadable * @param {Boolean} pReadable
* @return {VNode} 主表单包含el-form-item 子表单表单组件 * @return {VNode} 主表单包含el-form-item 子表单表单组件
**/ **/
export default function formBuilder(device, info, h, row, pWrite = false,pReadable = false) { export default function formBuilder(device, info, h, row, pWrite = false,pReadable = false,pname) {
let formItem; let formItem;
//下拉选项 //下拉选项
let options = []; let options = [];
@ -1002,6 +1002,12 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
} }
if (device === "mobile") { if (device === "mobile") {
if (info._writeable || pWrite) { if (info._writeable || pWrite) {
let myRules = []
if (row && this.subRules && this.subRules[`${pname}_rules`] && this.subRules[`${pname}_rules`][info.name]) {
myRules = this.subRules[`${pname}_rules`][info.name]
} else {
myRules = this.rules[info.name]
}
switch (info.type) { switch (info.type) {
case "text": case "text":
formItem = h(formBuilderMap(device).get(info.type), { formItem = h(formBuilderMap(device).get(info.type), {
@ -1011,8 +1017,19 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
value: row ? row[info.name] : this.form[info.name], value: row ? row[info.name] : this.form[info.name],
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: myRules.map(rule => {
required: !!this.rules[info.name]?.find(j => j.required) if (rule.hasOwnProperty('required')) {
return rule
} else if (rule.hasOwnProperty('pattern')) {
return {
pattern: rule.pattern,
message: rule.message
}
} else {
return rule
}
}),
required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
placeholder: info.help_text, placeholder: info.help_text,
@ -1037,7 +1054,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
placeholder: info.help_text, placeholder: info.help_text,
@ -1063,7 +1080,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
placeholder: info.help_text, placeholder: info.help_text,
@ -1089,7 +1106,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
for: info.name for: info.name
@ -1119,7 +1136,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
for: info.name for: info.name
@ -1154,7 +1171,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
for: info.name for: info.name
@ -1180,7 +1197,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
props: { props: {
title: info.label, title: info.label,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
for: info.name for: info.name
@ -1342,7 +1359,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true, clearable: true,
placeholder: info.help_text, placeholder: info.help_text,
rules: this.rules[info.name], rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required) required: !!myRules?.find(j => j.required)
}, },
attrs: { attrs: {
for: info.name for: info.name
@ -1420,7 +1437,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
h( h(
"van-form", "van-form",
{ {
ref: "vanForm", ref: "subVanForm-"+sIndex,
props: { props: {
"scroll-to-error": true, "scroll-to-error": true,
}, },
@ -1438,6 +1455,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
h, h,
sForm, sForm,
info._writeable, info._writeable,
null,
info.name
) )
) )
), ),
@ -1576,6 +1595,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
h( h(
"van-form", "van-form",
{ {
ref: "subVanForm",
props: { props: {
"scroll-to-error": true, "scroll-to-error": true,
}, },

@ -108,10 +108,16 @@ export default {
getToken, getToken,
async validate() { async validate() {
const $vanForm = this.$refs['vanForm'] const $vanForm = this.$refs['vanForm']
console.log($vanForm)
if ($vanForm) { if ($vanForm) {
const res = await $vanForm.validate() const res = await $vanForm.validate()
} }
let subFormName = this.fields.filter(i => i.type === 'relation').map(i => i.name)
for (let i = 0;i < subFormName.length;i++) {
const $subVanForm = this.$refs[`subVanForm-${i}`]
if ($subVanForm) {
await $subVanForm.validate()
}
}
}, },
}, },
computed: {}, computed: {},

Loading…
Cancel
Save