DiseaseSelect.vue 1.89 KB
<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'
import { showToast } from 'vant'

export default {
    props: {
        // 排除已选择的疾病
        excludeType: { default: () => [] }
    },
    data() {
        return {
            store: useStore(),
            // 选中的疾病类型
            diseaseType: null
        }
    },
    methods: {
        onSelect(item) {
            if (this.excludeType.includes(item.value)) return
            this.diseaseType = item.value
        },
        submit() {
            return new Promise((resolve, reject) => {
                if (!this.diseaseType) {
                    showToast('请选择慢病类型')
                    reject('请选择慢病类型')
                    return
                }
                resolve(this.diseaseType)
            })
        }
    }
}
</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>