Commit 1fa8407d authored by miaojiale's avatar miaojiale

增加自动计算生日

增加胃镜检查的联动校验
parent 32048369
......@@ -265,8 +265,8 @@
@change="handleChange"
></el-time-picker>
<!-- 日期 -->
<div class="flex" v-else-if="item.type === 'date'">
<el-date-picker
v-else-if="item.type === 'date'"
v-model="form[item.prop]"
:placeholder="item.placeholder ? item.placeholder : '请选择'"
:value-format="item.valueFormat"
......@@ -275,6 +275,12 @@
clearable
@change="handleChange"
></el-date-picker>
<span
v-if="item.prop == 'birthday'"
style="margin-left: 12px"
>{{ age + (age ? "岁" : "") }}</span
>
</div>
<!-- 年 -->
<el-date-picker
v-else-if="item.type === 'year'"
......@@ -431,6 +437,7 @@ export default {
},
data() {
return {
age: "",
pickerOptions,
rangeOptions,
showChildren: false, // 用来控制不同表单
......@@ -604,6 +611,23 @@ export default {
}
val && this.$set(this.form, ruleTarget, val)
},
getAge() {
if (this.form.birthday) {
var birthday = new Date(this.form.birthday.replace(/-/g, "/"))
var d = new Date()
var age =
d.getFullYear() -
birthday.getFullYear() -
(d.getMonth() < birthday.getMonth() ||
(d.getMonth() == birthday.getMonth() &&
d.getDate() < birthday.getDate())
? 1
: 0)
this.age = age + ""
} else {
this.age = ""
}
},
// 获取prop prop 以{}包裹
getProp(value) {
if (!value) return ""
......@@ -624,11 +648,18 @@ export default {
if (dynamicshSet && dynamicshSet.length > 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,17 +678,27 @@ export default {
const values = dyMap[key]
let display = false
if (Array.isArray(val)) {
// 胃癌和进展性胃癌控制显隐+自定义规则
display = values.filter((v) => val.includes(v)).length > 0
} else {
display = values.includes(val)
}
//! 胃上皮瘤变(高级别)胃癌和进展性胃癌控制显隐+自定义规则
if (
prop == "early_gastric_cancer" ||
prop == "period_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
......@@ -665,24 +706,21 @@ export default {
: (flag = false)
}
}
console.log(flag, targetItem)
display = flag
if (display) {
targetItem.rules[0] = {
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
}
} else {
display = values.includes(val)
}
if (!display && targetItem) {
// 清空数据
const newVal = Array.isArray(this.form[targetItem.prop])
......@@ -699,8 +737,9 @@ export default {
}, 200)
} else {
// ! 设置每个表单中每项显隐的rules
if (!filterArr.includes(targetItem.prop)) {
if (targetItem.rules && Boolean(display)) {
console.log(targetItem)
if (targetItem.type == "checkbox") {
targetItem.rules = [
{
......@@ -719,20 +758,26 @@ export default {
} 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']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment