From 49844130b6bc9f3dbaf85b96ed2b33777e4de76a Mon Sep 17 00:00:00 2001 From: Euni4U <958079825@qq.com> Date: Tue, 18 Mar 2025 17:03:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B1=87=E6=80=BB=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Medical-examination-vehicle.vue | 31 +++++++++---------- src/views/Department-entry/summary.vue | 31 ++++++++++--------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/views/Department-entry/Medical-examination-vehicle.vue b/src/views/Department-entry/Medical-examination-vehicle.vue index a5538c0..b10f7d1 100644 --- a/src/views/Department-entry/Medical-examination-vehicle.vue +++ b/src/views/Department-entry/Medical-examination-vehicle.vue @@ -1691,32 +1691,31 @@ const handleSaveAllResults = async () => { } } + // 最后执行汇总保存 + const result = await handleSummarySave() + if (!result) return + ElMessage.success('所有检查结果保存成功') // 重新加载数据以更新界面 await refreshExamData() - - // 如果汇总组件存在,调用其保存方法 - if (summaryRef.value) { - await summaryRef.value.saveSummary() - } - + } catch (error) { ElMessage.error(`保存失败: ${error.message || '请检查数据是否完整'}`) } - // 汇总标签页特殊处理 - const result = await handleSummarySave() - if (!result) return } -// 添加汇总保存方法 +// 修改汇总保存方法 const handleSummarySave = async () => { - // 直接调用汇总组件的保存方法 - if (summaryRef.value) { - await summaryRef.value.saveSummary() - ElMessage.success('汇总数据保存成功') - } else { - throw new Error('未找到汇总组件') + try { + if (summaryRef.value) { + await summaryRef.value.saveSummary() + return true + } + return false + } catch (error) { + ElMessage.error('汇总保存失败: ' + error.message) + return false } } diff --git a/src/views/Department-entry/summary.vue b/src/views/Department-entry/summary.vue index 43637b2..d06fb2d 100644 --- a/src/views/Department-entry/summary.vue +++ b/src/views/Department-entry/summary.vue @@ -3,7 +3,7 @@

体检汇总

- - + -->
@@ -72,9 +72,9 @@ const isReadOnly = ref(false) // 检查患者状态 const checkPatientStatus = () => { - if (props.patient && props.patient.status) { - // 假设状态为2表示已检查完成 - isReadOnly.value = props.patient.status === 2 + if (props.patient?.status) { + // 同时处理字符串和数字类型的状态值 + isReadOnly.value = String(props.patient.status) === '1' console.log('患者状态:', props.patient.status, '只读模式:', isReadOnly.value) } } @@ -303,14 +303,7 @@ const loadPatientItems = async () => { const formattedText = formatSummaryData() console.log('格式化后的文本:', formattedText) editableSummary.value = formattedText - loading.close() - - if (formattedText) { - ElMessage.success('体检汇总数据已刷新') - } else { - ElMessage.warning('未找到可用的体检汇总数据') - } } catch (error) { console.error('加载汇总数据失败:', error) ElMessage.error('加载汇总数据失败: ' + error.message) @@ -321,6 +314,10 @@ const loadPatientItems = async () => { const saving = ref(false) // 保存汇总内容到PatientApi的summaryResult字段 const saveSummary = async () => { + if (isReadOnly.value) { + ElMessage.warning('已检查患者不可修改汇总内容') + return false + } if (!editableSummary.value) { ElMessage.warning('体检汇总内容为空,请检查汇总内容') return false @@ -400,11 +397,15 @@ onMounted(() => { // 监听患者信息变化 watch(() => props.patient, (newVal) => { - if (newVal && newVal.medicalSn) { - loadPatientItems() + if (newVal) { + // 立即检查状态 checkPatientStatus() + // 如果medicalSn变化则重新加载数据 + if (newVal.medicalSn) { + loadPatientItems() + } } -}, { deep: true }) +}, { deep: true, immediate: true }) // 暴露保存汇总方法给父组件调用 defineExpose({ saveSummary }) From 590e4251c77086695c251d4dfd320b9a18009139 Mon Sep 17 00:00:00 2001 From: Euni4U <958079825@qq.com> Date: Tue, 18 Mar 2025 17:25:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Medical-examination-vehicle.vue | 68 ++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/src/views/Department-entry/Medical-examination-vehicle.vue b/src/views/Department-entry/Medical-examination-vehicle.vue index b10f7d1..b1b6a7f 100644 --- a/src/views/Department-entry/Medical-examination-vehicle.vue +++ b/src/views/Department-entry/Medical-examination-vehicle.vue @@ -1708,12 +1708,78 @@ const handleSaveAllResults = async () => { // 修改汇总保存方法 const handleSummarySave = async () => { try { + // 检查summaryRef是否存在 if (summaryRef.value) { + // 如果在汇总标签页,直接调用组件方法 await summaryRef.value.saveSummary() return true + } else { + // 如果不在汇总标签页,需要手动构建汇总内容并保存 + // 格式化汇总数据 + let summaryContent = '' + + // 一般检查 + if (conclusionData.value.general?.summary) { + summaryContent += '【一般检查】\n' + conclusionData.value.general.summary + '\n\n' + } + + // 超声检查 + if (conclusionData.value.ultrasound?.finding || conclusionData.value.ultrasound?.diagnosis) { + summaryContent += '【超声】\n' + if (conclusionData.value.ultrasound.finding) { + summaryContent += '检查所见:' + conclusionData.value.ultrasound.finding + '\n' + } + if (conclusionData.value.ultrasound.diagnosis) { + summaryContent += '检查结果:' + conclusionData.value.ultrasound.diagnosis + '\n' + } + summaryContent += '\n' + } + + // 心电图检查 + if (conclusionData.value.ecg?.finding || conclusionData.value.ecg?.diagnosis) { + summaryContent += '【心电图】\n' + if (conclusionData.value.ecg.finding) { + summaryContent += '检查所见:' + conclusionData.value.ecg.finding + '\n' + } + if (conclusionData.value.ecg.diagnosis) { + summaryContent += '检查结果:' + conclusionData.value.ecg.diagnosis + '\n' + } + summaryContent += '\n' + } + + // 血常规 + if (conclusionData.value.blood?.summary) { + summaryContent += '【血常规】\n' + conclusionData.value.blood.summary + '\n\n' + } + + // 尿常规 + if (conclusionData.value.urine?.summary) { + summaryContent += '【尿常规】\n' + conclusionData.value.urine.summary + '\n\n' + } + + // 生化 + if (conclusionData.value.biochemical?.summary) { + summaryContent += '【生化】\n' + conclusionData.value.biochemical.summary + '\n\n' + } + + // 如果有汇总内容,则保存 + if (summaryContent.trim()) { + // 准备保存的数据 + const saveData = { + medicalSn: selectedPatient.value?.medicalSn, + summaryResult: summaryContent + } + + // 调用API保存数据 + await PatientApi.updatemedicalSn(saveData) + return true + } + + return true // 即使没有内容也返回成功 } - return false + } catch (error) { + console.error('汇总保存失败:', error) ElMessage.error('汇总保存失败: ' + error.message) return false }