xy 12 months ago
parent 1a0df6c1d1
commit 5c42597980

@ -15,7 +15,7 @@ import { flowList } from "@/api/flow";
* @param {Boolean} pReadable
* @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 options = [];
@ -1002,6 +1002,12 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
}
if (device === "mobile") {
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) {
case "text":
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],
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
rules: myRules.map(rule => {
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: {
placeholder: info.help_text,
@ -1037,7 +1054,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
placeholder: info.help_text,
@ -1063,7 +1080,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
placeholder: info.help_text,
@ -1089,7 +1106,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
for: info.name
@ -1119,7 +1136,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
for: info.name
@ -1154,7 +1171,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
for: info.name
@ -1180,7 +1197,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
props: {
title: info.label,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
for: info.name
@ -1342,7 +1359,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
clearable: true,
placeholder: info.help_text,
rules: this.rules[info.name],
required: !!this.rules[info.name]?.find(j => j.required)
required: !!myRules?.find(j => j.required)
},
attrs: {
for: info.name
@ -1420,7 +1437,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
h(
"van-form",
{
ref: "vanForm",
ref: "subVanForm-"+sIndex,
props: {
"scroll-to-error": true,
},
@ -1438,6 +1455,8 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
h,
sForm,
info._writeable,
null,
info.name
)
)
),
@ -1576,6 +1595,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab
h(
"van-form",
{
ref: "subVanForm",
props: {
"scroll-to-error": true,
},

@ -108,10 +108,16 @@ export default {
getToken,
async validate() {
const $vanForm = this.$refs['vanForm']
console.log($vanForm)
if ($vanForm) {
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: {},

Loading…
Cancel
Save