From 1fa8407d4d8cd412339d76e3f1304d6ca6cc93f2 Mon Sep 17 00:00:00 2001 From: miaojiale <1123971748@qq.com> Date: Mon, 30 Jan 2023 17:30:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E7=94=9F=E6=97=A5=20=E5=A2=9E=E5=8A=A0=E8=83=83?= =?UTF-8?q?=E9=95=9C=E6=A3=80=E6=9F=A5=E7=9A=84=E8=81=94=E5=8A=A8=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomForm/FormItemSelf.vue | 192 ++++++++++-------- 1 file changed, 104 insertions(+), 88 deletions(-) diff --git a/src/components/FormComponents/CustomForm/FormItemSelf.vue b/src/components/FormComponents/CustomForm/FormItemSelf.vue index 31d79c8..65b2043 100644 --- a/src/components/FormComponents/CustomForm/FormItemSelf.vue +++ b/src/components/FormComponents/CustomForm/FormItemSelf.vue @@ -265,16 +265,22 @@ @change="handleChange" > - +
+ + {{ age + (age ? "岁" : "") }} +
0) { this.$watch( `form.${prop}`, - function (val) { + (val) => { //! val 表单的当前属性值 const columns = this.columns || [] const group = this.group || [] const dyMap = {} //! 显示数据集合 + let filterArr = [ + "early_esophagus_cancer", + "period_esophagus_cancer", + "early_gastric_cancer", + "pathology_path", + "esophagus_level", + ] dynamicshSet.forEach((dy) => { if (dyMap[dy.target]) { dyMap[dy.target].push(dy.value) @@ -647,42 +678,49 @@ export default { const values = dyMap[key] let display = false if (Array.isArray(val)) { - // 胃癌和进展性胃癌控制显隐+自定义规则 - if ( - prop == "early_gastric_cancer" || - prop == "period_gastric_cancer" - ) { - let flag = false + display = values.filter((v) => val.includes(v)).length > 0 + } else { + display = values.includes(val) + } + //! 胃上皮瘤变(高级别)胃癌和进展性胃癌控制显隐+自定义规则 + if ( + prop == "early_gastric_cancer" || + prop == "period_gastric_cancer" || + prop == "esophagus_level" + ) { + let flag = false + this.form.esophagus_level == "high" + ? (flag = true) + : (flag = false) + if (!flag) { if (this.form.early_gastric_cancer) { this.form.early_gastric_cancer.length > 0 ? (flag = true) : (flag = false) } - if (!flag) { - if (this.form.period_gastric_cancer) { - this.form.period_gastric_cancer.length > 0 - ? (flag = true) - : (flag = false) - } + } + if (!flag) { + if (this.form.period_gastric_cancer) { + this.form.period_gastric_cancer.length > 0 + ? (flag = true) + : (flag = false) } - display = flag - if (display) { - targetItem.rules[0] = { + } + console.log(flag, targetItem) + display = flag + if (display) { + targetItem.rules = [ + { required: true, message: "请上传病理报告", - } - } else { - if (targetItem.rules.length > 0) { - targetItem.rules[0].required = false - } - } + }, + ] } else { - display = values.filter((v) => val.includes(v)).length > 0 + if (targetItem.rules.length > 0) { + targetItem.rules[0].required = false + } } - } else { - display = values.includes(val) } - if (!display && targetItem) { // 清空数据 const newVal = Array.isArray(this.form[targetItem.prop]) @@ -699,40 +737,47 @@ export default { }, 200) } else { // ! 设置每个表单中每项显隐的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, - }, - ] + + if (!filterArr.includes(targetItem.prop)) { + if (targetItem.rules && Boolean(display)) { + if (targetItem.type == "checkbox") { + targetItem.rules = [ + { + required: true, + message: "请选择" + targetItem.label, + }, + ] + } else { + targetItem.rules = [ + { + required: true, + message: "请输入" + targetItem.label, + }, + ] + } + } else if (targetItem.rules && !Boolean(display)) { + targetItem.rules = [] } - } 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 } + console.log(e.label, ":", e.rules) if (e.rules && val == 0) { targetItem.column[index].rules = [] } else if (e.rules && val == 1) { + if (filterArr.includes(targetItem.column[index].prop)) { + return + } if (targetItem.column[index].type == "checkbox") { targetItem.column[index].rules = [ { @@ -750,40 +795,7 @@ export default { } } }) - // } 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)) } }) @@ -801,6 +813,10 @@ export default { handleChange(val) { this.checkboxRepel(val) this.handleAlgorithm() + // !设置年龄 + if (this.item.prop == "birthday") { + this.getAge() + } // 该操作判断是否符合筛查条件 this.$emit("formChange") // ['is_one_year','is_subtotal_history','is_ppi','is_symptom','is_subtotal_history','is_disease','is_tumour'] -- 2.22.0