diff --git a/src/views/Department-entry/Medical-examination-vehicle.vue b/src/views/Department-entry/Medical-examination-vehicle.vue index 7b56f5b..ce46667 100644 --- a/src/views/Department-entry/Medical-examination-vehicle.vue +++ b/src/views/Department-entry/Medical-examination-vehicle.vue @@ -421,7 +421,7 @@ v-for="item in doctorList" :key="item.value" :label="item.label" - :value="`${item.label}|${item.value}`" + :value="item.value" /> @@ -767,8 +767,10 @@ const loadPatientData = async (patient) => { const patientData = await PatientApi.getPatient(patient.id) reportData.value = patientData - // 重置检查医生和日期 - inspectDoctor.value = '' + // 保存当前选择的医生,只在需要时重置 + const currentDoctor = inspectDoctor.value + + // 重置检查日期 inspectTime.value = '' // 检查患者状态,如果已检查则设置检查完成状态为true @@ -799,6 +801,7 @@ const loadPatientData = async (patient) => { // 查找已检查的项目,获取检查医生和日期 const checkedItems = itemsRes.list.filter((item) => item.itemStatus === '1') + let foundDoctorInfo = false if (checkedItems.length > 0) { // 使用第一个已检查项目的检查医生和日期 const firstCheckedItem = checkedItems[0] @@ -806,6 +809,7 @@ const loadPatientData = async (patient) => { // 设置检查医生 if (firstCheckedItem.inspectdoctor) { inspectDoctor.value = firstCheckedItem.inspectdoctor + foundDoctorInfo = true } // 格式化检查时间 @@ -814,6 +818,11 @@ const loadPatientData = async (patient) => { inspectTime.value = formatDate(inspectDate) } } + + // 如果未找到已检查项目的医生信息且不是已检查状态,则保留当前选择的医生 + if (!foundDoctorInfo && !isExamCompleted.value && currentDoctor) { + inspectDoctor.value = currentDoctor + } // 用于存储异常信息 let abnormalSummary = [] @@ -957,14 +966,12 @@ const handlePatientSelect = async (patient) => { // 设置选中患者 selectedPatient.value = patient - // 重置检查医生和日期 - inspectDoctor.value = '' - inspectTime.value = '' - // 根据患者状态设置检查完成状态 isExamCompleted.value = patient.status === '1' || patient.status === 1 - + + // 加载患者数据,包括设置检查医生等 await loadPatientData(patient) + currentTab.value = 'general' } catch (error) { console.error('[handlePatientSelect] 切换患者失败:', error) @@ -1250,19 +1257,34 @@ const getTabColor = (index) => { } onMounted(async () => { - // 清理页面状态 - patients.value = [] - selectedPatient.value = null - - // 已经在定义时设置为20,这里不需要再设置 - // pageSize.value = 20 - pageNo.value = 1 - - // 获取医生列表 - await getDoctorList() - - // 直接调用获取列表方法,不附加任何过滤条件 - await getPatientList() + try { + loading.value = true + // 首先获取用户信息 + const userProfile = await getUserProfile() + user.value = userProfile + + // 然后获取医生列表(会自动匹配当前用户) + await getDoctorList() + + // 初始化患者列表 + await getPatientList() + + // 如果检查医生没有设置,但用户有昵称,再次尝试匹配医生 + if (!inspectDoctor.value && user.value?.nickname && doctorList.value.length > 0) { + const matchedOption = doctorList.value.find(item => + item.label === user.value.nickname + ) + if (matchedOption) { + inspectDoctor.value = matchedOption.value + console.log('在onMounted中设置默认检查医生:', inspectDoctor.value) + } + } + } catch (error) { + console.error('初始化组件失败:', error) + ElMessage.error('初始化组件失败,请刷新页面重试') + } finally { + loading.value = false + } }) // 修改处理时间周期切换的函数 @@ -1539,15 +1561,14 @@ const handleSync = async () => { ) }) - // 如果需要,添加超声报告请求 - if (needsSyncUS) { - syncPromises.push( - PatientApi.getUSTj(medicalSn).catch((error) => { - console.warn('获取超声报告失败:', error) - return null - }) - ) - } + // 直接添加超声报告请求,无需检查是否存在数据 + syncPromises.push( + PatientApi.getUSTj(medicalSn).catch((error) => { + console.warn('获取超声报告失败:', error) + return null + }) + ) + // 如果需要,添加心电图报告请求 if (needsSyncECG) { syncPromises.push( @@ -2051,7 +2072,7 @@ const handleSaveAllResults = async () => { // 获取选择的医生信息 let doctorName = inspectDoctor.value if (doctorName && doctorName.includes('|')) { - doctorName = doctorName.split('|')[0] // 只取医生姓名部分 + doctorName = doctorName.split('|')[1] // 修改为取医生姓名部分,而不是ID } // 收集所有标签页的所有检查项目 @@ -2717,10 +2738,29 @@ const getDoctorList = async () => { pageSize: 100 // 设置较大的数值以获取所有医生 }) if (res && res.list && res.list.length > 0) { + // 保存原始医生列表数据 doctorList.value = res.list.map(doctor => ({ label: doctor.doctorname, - value: doctor.doctorid + value: `${doctor.doctorid}|${doctor.doctorname}` })) + + // 如果已经获取到了用户信息,尝试匹配医生 + if (user.value?.nickname) { + // 使用精确匹配 + const matchedDoctor = res.list.find(doctor => + doctor.doctorname === user.value.nickname + ) + + if (matchedDoctor) { + // 设置检查医生 + inspectDoctor.value = `${matchedDoctor.doctorid}|${matchedDoctor.doctorname}` + console.log('已为检查医生设置默认值:', inspectDoctor.value) + } else { + console.log('未找到与用户昵称匹配的医生:', user.value.nickname) + } + } else { + console.log('未获取到用户昵称') + } } } catch (error) { console.error('获取医生列表失败:', error) diff --git a/src/views/Department-entry/summary.vue b/src/views/Department-entry/summary.vue index d60691c..785d476 100644 --- a/src/views/Department-entry/summary.vue +++ b/src/views/Department-entry/summary.vue @@ -51,6 +51,7 @@ import { ElLoading, ElMessage } from 'element-plus' import { Refresh } from '@element-plus/icons-vue' import TemplateDrawer from '@/views/Department-entry/Drawer-Template.vue' import { DoctorApi } from '@/api/inspect/inspectdoctor' +import { getUserProfile } from '@/api/system/user/profile' const props = defineProps({ patient: { @@ -86,6 +87,9 @@ const editableSummary = ref('') // 添加患者状态检查 const isReadOnly = ref(false) +// 添加用户信息响应式引用 +const user = ref(null) + // 检查患者状态 const checkPatientStatus = () => { if (props.patient?.status) { @@ -420,6 +424,14 @@ const loadDoctorList = async () => { const response = await DoctorApi.getDoctorPage(queryParams) if (response && response.list && response.list.length > 0) { doctorList.value = response.list + + // 如果已经获取到了用户信息,尝试匹配医生 + if (user.value?.nickname) { + const matchedDoctor = response.list.find(doctor => doctor.doctorname === user.value.nickname) + if (matchedDoctor) { + selectedDoctor.value = `${matchedDoctor.doctorid}|${matchedDoctor.doctorname}` + } + } } } catch (error) { console.error('加载医生列表失败:', error) @@ -428,11 +440,18 @@ const loadDoctorList = async () => { } // 初始化数据 -const initData = () => { +const initData = async () => { + // 获取当前登录用户信息 + try { + const userProfile = await getUserProfile() + user.value = userProfile + } catch (error) { + console.error('获取用户信息失败:', error) + } + loadPatientItems() checkPatientStatus() - loadDoctorList() - + await loadDoctorList() } // 组件挂载时加载数据