From e3d195a627082a368b08aba01ef2a76792d4f7d2 Mon Sep 17 00:00:00 2001 From: miaojiale <1123971748@qq.com> Date: Mon, 9 Jan 2023 17:57:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E6=9F=A5=E6=9F=A5=E8=AF=A2=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=A1=E6=81=AF=E5=92=8C=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomForm/FormItemSelf.vue | 117 +++-- .../CustomForm/FormItemText.vue | 27 +- .../FormComponents/CustomForm/text.js | 145 ------ ...45\207\206JSON\346\225\260\346\215\256.js" | 476 ++++++++++++++++++ src/utils/index.js | 2 +- .../screening/components/ConfigForms.vue | 11 +- src/views/screening/components/FormTab.vue | 227 +-------- src/views/screening/index.vue | 17 +- 8 files changed, 612 insertions(+), 410 deletions(-) delete mode 100644 src/components/FormComponents/CustomForm/text.js create mode 100644 "src/components/FormComponents/CustomForm/\347\255\233\346\237\245\345\205\245\351\200\211\346\216\222\351\231\244\346\240\207\345\207\206JSON\346\225\260\346\215\256.js" diff --git a/src/components/FormComponents/CustomForm/FormItemSelf.vue b/src/components/FormComponents/CustomForm/FormItemSelf.vue index 6b4c02d..31d79c8 100644 --- a/src/components/FormComponents/CustomForm/FormItemSelf.vue +++ b/src/components/FormComponents/CustomForm/FormItemSelf.vue @@ -433,6 +433,7 @@ export default { return { pickerOptions, rangeOptions, + showChildren: false, // 用来控制不同表单 } }, computed: { @@ -624,10 +625,10 @@ export default { this.$watch( `form.${prop}`, function (val) { + //! val 表单的当前属性值 const columns = this.columns || [] const group = this.group || [] - const dyMap = {} // 显示数据集合 - + const dyMap = {} //! 显示数据集合 dynamicshSet.forEach((dy) => { if (dyMap[dy.target]) { dyMap[dy.target].push(dy.value) @@ -635,10 +636,11 @@ export default { dyMap[dy.target] = [dy.value] } }) - Object.keys(dyMap).forEach((key) => { + // !获取显隐目标 let targetItem = columns.find((_) => _.prop === key) if (!targetItem) { + // !没有在表单子组件中找到,查找大表单id targetItem = group.find((_) => _.prop === key) } if (!targetItem) return @@ -680,6 +682,7 @@ export default { } else { display = values.includes(val) } + if (!display && targetItem) { // 清空数据 const newVal = Array.isArray(this.form[targetItem.prop]) @@ -695,35 +698,91 @@ export default { this.$set(this.form, "$_hidden" + targetItem.prop, !display) }, 200) } else { - // 家族史动态规则 - - if ( - (prop == "is_first_degree" || prop == "is_other_sickness") && - Boolean(display) - ) { - targetItem.rules = [ - { - required: true, - message: "请输入" + targetItem.label, - }, - ] - } else if ( - prop == "is_first_degree" || - prop == "is_other_sickness" - ) { - this.$nextTick(() => { - targetItem.rules = [] - }) - } - // 内镜报告动态上传 - if (prop == "check_type" && Boolean(display)) { - targetItem.rules[0] = { - required: true, - message: "请上传内镜报告", + // ! 设置每个表单中每项显隐的rules + if (targetItem.rules && Boolean(display)) { + console.log(targetItem) + if (targetItem.type == "checkbox") { + targetItem.rules = [ + { + required: true, + message: "请选择" + targetItem.label, + }, + ] + } else { + targetItem.rules = [ + { + required: true, + message: "请输入" + targetItem.label, + }, + ] } - } else if (prop == "check_type") { + } else if (targetItem.rules && !Boolean(display)) { targetItem.rules = [] } + // !设置大表单里的每个小表单显隐rules + if (targetItem.prop == "1669874397313_56690") { + console.log(targetItem.column) + // !只能写死,当前情况下,定义一个字段用来缓存是否回显,根据val + // if (val == 0) { + // this.showChildren = false + targetItem.column.forEach((e, index) => { + // 去除esd报告 + if (e.prop == "esd_path") { + return + } + if (e.rules && val == 0) { + targetItem.column[index].rules = [] + } else if (e.rules && val == 1) { + if (targetItem.column[index].type == "checkbox") { + targetItem.column[index].rules = [ + { + required: true, + message: "请选择" + targetItem.column[index].label, + }, + ] + } else { + targetItem.column[index].rules = [ + { + required: true, + message: "请输入" + targetItem.column[index].label, + }, + ] + } + } + }) + // } else { + // this.showChildren = true + // } + } + + // 家族史动态规则 + // if ( + // (prop == "is_first_degree" || prop == "is_other_sickness") && + // Boolean(display) + // ) { + // targetItem.rules = [ + // { + // required: true, + // message: "请输入" + targetItem.label, + // }, + // ] + // } else if ( + // prop == "is_first_degree" || + // prop == "is_other_sickness" + // ) { + // this.$nextTick(() => { + // targetItem.rules = [] + // }) + // } + // // 内镜报告动态上传 + // if (prop == "check_type" && Boolean(display)) { + // targetItem.rules[0] = { + // required: true, + // message: "请上传内镜报告", + // } + // } else if (prop == "check_type") { + // targetItem.rules = [] + // } this.$set(targetItem, "display", Boolean(display)) } diff --git a/src/components/FormComponents/CustomForm/FormItemText.vue b/src/components/FormComponents/CustomForm/FormItemText.vue index c35360e..c93ffcc 100644 --- a/src/components/FormComponents/CustomForm/FormItemText.vue +++ b/src/components/FormComponents/CustomForm/FormItemText.vue @@ -1,29 +1,31 @@