Detail.vue 9.51 KB
<template>
    <div>
        <van-nav-bar title='随访详情' left-text='' left-arrow @click-left='toBack'></van-nav-bar>
        <div class='p-4 detail-info'>
            <div class='title'>居民信息</div>
            <div class='detail-div mt-2'>
                <div class='flex items-center justify-between'>
                    <div>证件类型</div>
                    <div>{{ residentInfo.certificateTypeName || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>证件号码</div>
                    <div>{{ residentInfo.idCard || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>姓名</div>
                    <div>{{ residentInfo.residentName || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>性别</div>
                    <div>{{ residentInfo.genderName || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>出生日期</div>
                    <div>{{ residentInfo.dataBirth || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>民族</div>
                    <div>{{ residentInfo.nationalName || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>年龄</div>
                    <div>{{ residentInfo.currentAge || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>本人电话</div>
                    <div>{{ residentInfo.telephone || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>联系人姓名</div>
                    <div>{{ residentInfo.contactName || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>与居民关系</div>
                    <div>{{ residentInfo.relationName || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>联系电话</div>
                    <div>{{ residentInfo.contactPhone || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>现住址</div>
                    <div>{{ residentInfo.fullNowAddress || '-' }}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>户籍地址</div>
                    <div>{{ residentInfo.fullPermanentAddress || '-' }}</div>
                </div>
            </div>
            <div class='title mt-2'>随访信息</div>
            <div class='detail-div mt-2'>
                <div class='flex items-center justify-between'>
                    <div>本次随访情况</div>
                    <div>{{ info.visitSituationName }}</div>
                </div>
                <div class='flex items-center justify-between mt-2' v-if='info.visitSituation == 2'>
                    <div>失访原因</div>
                    <div>
                        <span v-if='info.lossReason != 9'>{{ info.lossReasonName || '-' }}</span>
                        <span v-if='info.lossReason == 9'>{{ info.lossReasonOther || '-' }}</span>
                    </div>
                </div>
                <div class='flex items-center justify-between mt-2' v-if='info.lossReason == 3'>
                    <div>死亡原因</div>
                    <div>{{ info.deathReason }}</div>
                </div>
                <div class='flex items-center justify-between mt-2' v-if='info.visitSituation == 1'>
                    <div>随访方式</div>
                    <div>{{ info.visitWayName }}</div>
                </div>
                <div class='white-b mt-2' v-if='showOne && info.visitSituation == 1'>
                    <span>居民电话: </span><span>{{ residentInfo.telephone || '-' }}</span>
                </div>
                <div class='white-b mt-2' v-if='showThree && info.visitSituation == 1'>
                    <div>催检内容:</div>
                    <div>{{ info.urgentInsContent }}</div>
                </div>
                <div class='mt-2' v-if="showOne && info.visitSituation == 1">
                    <div>随访内容</div>
                    <div class='white-b mt-2'>
                        <div>{{ info.visitContent }}</div>
                    </div>
                </div>
                <div class='mt-2' v-if="showOne && info.visitSituation == 1">
                    <div>处置意见</div>
                    <div class='white-b mt-2'>
                        <div>{{ info.disposalOpinion }}</div>
                    </div>
                </div>
                <div class='mt-2' v-if="(showOne || showTwo) && info.visitSituation == 1 && info.isHealthGuide == 1">
                    <div>健康指导</div>
                    <div class='white-b mt-2'>
                        <div class='flex flex-wrap' v-for="(item, index) in healthInterventionsInfo.visitHealthGuideList"  >
                            <div v-if="item.name != '无'">{{item.name}}</div>
                            <div>{{item.templateContent || '-'}}</div>
                        </div>
                    </div>
                </div>

                <div class='flex items-center justify-between mt-2' v-if="info.visitSituation == 1">
                    <div>下次随访日期</div>
                    <div>{{ info.nextVisitDate || '-'}}</div>
                </div>

                <div class='flex items-center justify-between mt-2'>
                    <div>随访单位</div>
                    <div>{{ info.visitUnitName || '-'}}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>随访科室</div>
                    <div>{{ info.visitOfficeName || '-'}}</div>
                </div>
                <div class='flex items-center justify-between mt-2'>
                    <div>随访医生</div>
                    <div>{{ info.visitDoctorName || '-'}}</div>
                </div>
            </div>
        </div>
        <div class="px-5  flex align-center justify-around">
            <van-button type="primary" round plain style="width: 70%;background: #F0F3FF;border: 0px"
                        @click="toBack">返回</van-button>
        </div>
    </div>
</template>

<script>
import { fetchCurrencyById } from '@/api/doctor/generalFU'

export default {
    name: 'Detail',
    props: {
        id: [String, Number]
    },
    data() {
        return {
            info: {},
            residentInfo: {}
        }
    },
    computed: {
        routerDetail() {
            return this.$route.query
        },
        //复检指导
        showOne() {
            const { visitWay } = this.info
            let res = false
            if (visitWay == 5 || visitWay == 6 || visitWay == 7 || visitWay == 8) {
                res = true
            }
            return res
        },
        //微信、短信指导
        showTwo() {
            const { visitWay } = this.info
            let res = false
            if (visitWay == 9 || visitWay == 11) {
                res = true
            }
            return res
        },
        //催检
        showThree() {
            const { visitWay } = this.info
            let res = false
            if (visitWay == 10 || visitWay == 12) {
                res = true
            }
            return res
        },
        //健康指导
        healthInterventionsInfo() {
            const modeArray = this.$dict('DC00084')
            let visitHealthGuideList = []
            if (this.info.healthGuideContent) {
                visitHealthGuideList = JSON.parse(this.info.healthGuideContent)
            }
            const res = {
                visitHealthGuideList: modeArray.map(e => {
                    const item = visitHealthGuideList.find(i => i.templateMode === e.value)
                    return {
                        templateMode: e.value,
                        name: e.name,
                        templateContent: item ? item.templateContent : '',
                        id: item ? item.visitId : ''
                    }
                })
            }
            return res
        }
    },
    created() {
        this.load()
    },
    methods: {
        async load() {
            if (!this.routerDetail.relationId) {
                this.$message.info('未获取到信息')
                return
            }
            let par = {
                id: this.routerDetail.relationId
            }
            fetchCurrencyById(par).then(res => {
                let result = res.data || {}
                this.info = result
                this.residentInfo = result.residentsRecord || {}
            }).finally(() => {
            })
        },
        toBack() {
            this.$router.back()
        }
    }
}
</script>

<style scoped lang='less'>
.title {
    font-weight: bold;
}
.detail-info {
    height: calc(100vh - 110px);
    overflow-y: auto;
}
.detail-div {
    padding: 12px;
    border: 1px solid #EEEEEE;
    background: #F8FAFC;
    border-radius: 8px;
}

.white-b {
    background: #FFFFFF;
    padding: 12px;
    border: 1px solid #EEEEEE;
    border-radius: 8px;
}

:deep(.van-nav-bar .van-icon) {
    color: #000000;
}
</style>