1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<template>
<div class="disease-select">
<div class="mb-4">请选择慢病类型</div>
<div v-for="(item, index) in store.getDict('CP00117')" :key="index"
:class="['flex justify-between items-center text-16 mb-3 disease-checked',
{ 'disease-checked-active': item.value == diseaseType },
{ 'disease-checked-disabled': excludeType.includes(item.value) }
]"
@click="onSelect(item)">
<span>{{ item.name }}</span>
<span class="text-14 text-primary">
<span v-if="excludeType.includes(item.value)">已确诊</span>
</span>
</div>
</div>
</template>
<script>
import { useStore } from '@/doctor/store/index.js'
export default {
props: {
// 排除已选择的疾病
excludeType: { default: () => [] },
value: Number
},
data() {
return {
store: useStore(),
// 选中的疾病类型
diseaseType: null
}
},
methods: {
onSelect(item) {
if (this.excludeType.includes(item.value)) return
if (this.value) {
this.$message.info('无法修改已选中的慢病类型')
return
}
this.diseaseType = item.value
},
submit() {
return new Promise((resolve, reject) => {
if (!this.diseaseType) {
this.$message.info('请选择慢病类型')
reject('请选择慢病类型')
return
}
resolve(this.diseaseType)
})
}
},
watch: {
value: {
handler(val) {
this.diseaseType = val
},
immediate: true
}
}
}
</script>
<style lang="less" scoped>
.disease-checked {
border: 1px solid #BFBFBF;
border-radius: 40px;
color: #595959;
background-color: #fff;
padding: 10px 12px;
}
.disease-checked-active {
color: var(--van-primary-color);
border-color: var(--van-primary-color);
}
.disease-checked-disabled {
border-color: #EFF2F7;
background-color: #EFF2F7;
}
</style>