<template> <div class="flex flex-col nim-index" style="height: 100vh"> <div class="py-2 px-3 text-black text-center shrink-0 doc-nav-bar" v-if='showNav()'> <span>专家在线咨询</span> </div> <img src="@/assets/image/residentWX/banner.png" alt="" class="shrink-0 w-full"> <div style="color: #8C8C8C;" class="py-2 px-3">以下为您提供慢病筛查的专家,可向其进行慢病咨询</div> <div class="grow flex"> <div class="h-full list-l"> <div v-for="item in orgList" :key="item" :class="['p-3', { 'active': item === activeOrg }]" @click="onOrgChange(item)"> <span>{{ item || '-' }}</span> </div> </div> <div class="h-full p-3 list-r"> <div class="mb-3 p-4 card" v-for="item in innerDoctorList" :key="item.serviceDoctorId"> <div class="mb-3"> <span class="text-16 mr-2 font-semibold">{{item.serviceDoctorName}}</span> <span>{{item.serviceOfficeName || '-'}}</span> </div> <div class="mb-3">{{item.serviceUnitName || '-'}}</div> <div> <van-button plain round type="primary" @click="toSession(item)">咨询医生</van-button> </div> </div> <div class='text-center shrink-0 empty' v-if='!innerDoctorList.length'> <img src='@/assets/image/doctor/empty.png' alt='' style='width: 1.2rem;'> <p>暂无数据</p> </div> </div> </div> </div> </template> <script> import { useStore } from '@/residentWX/store' import { getServiceDoc } from '@/api/residentWX/nim.js' import { showFailToast } from 'vant' import { getSessionInfo } from '@/api/residentWX/nim.js' import { showNav } from '@/utils/common' export default { inject:['showNav', 'isResidentInfo'], data() { return { store: useStore(), orgList: [], doctorList: [], // 沟通过的医生列表 recordList: [], activeOrg: {} } }, computed: { userInfo() { return this.store.userInfo }, innerDoctorList() { if (this.activeOrg === '咨询过的专家') { return this.recordList } return this.doctorList.filter(e => e.serviceUnitName === this.activeOrg) } }, created() { if (!this.showNav()) { document.title = '专家在线咨询' } if (this.isResidentInfo()) { this.init() } }, methods: { init() { console.log(this.userInfo) this.load() }, load() { getServiceDoc({ residentInfoId: this.userInfo.residentInfoId }).then(res => { const result = res.data || {} const orgList = [] let doctorList = [] Reflect.ownKeys(result).forEach(key => { orgList.push(key) doctorList = doctorList.concat(result[key]) }) this.doctorList = doctorList this.orgList = ['咨询过的专家'].concat(orgList) this.activeOrg = this.orgList[0] // 获取咨询过的医生列表 this.loadRecord() }) }, loadRecord() { getSessionInfo(this.userInfo.idCard).then(res =>{ console.log('getSessionInfo', res) const result = res.data || [] const array = [] result.forEach(e => { const item = this.doctorList.find(i => e.idCard === i.identityCard) item && array.push(item) }) this.recordList = array }) }, onOrgChange(item) { this.activeOrg = item || '' }, // 聊天页面 toSession(item = {}) { if (!item.identityCard) { showFailToast('缺失医生信息') return } const path = `/residentWX/nim/${item.identityCard}` this.$router.push({ path, query: { name: item.serviceDoctorName, gender: this.userInfo.gender || 0 } }) } }, } </script> <style lang="less" scoped> @import url('../utils/common.less'); .nim-index { background: #f8fafc; } .list-l { width: 35%; background: transparent; >div { line-height: 1.5; } .active { background-color: #fff; } } .list-r { width: 65%; background: #fff; .card { background-color: #E4E8EE; background: linear-gradient(to bottom, #E5F3FF 0%, #E9FAFC 100%); border-radius: 8px; border: 1px solid #E4E8EE; .van-button { height: 26px; line-height: 26px; font-size: 14px; } } } </style>