From 2aa41fec6734f601751dc2e0e8b49d3194366a31 Mon Sep 17 00:00:00 2001 From: Euni4U <958079825@qq.com> Date: Thu, 10 Apr 2025 13:12:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Medical-examination-vehicle.vue | 89 ++++++++----------- 1 file changed, 38 insertions(+), 51 deletions(-) diff --git a/src/views/Department-entry/Medical-examination-vehicle.vue b/src/views/Department-entry/Medical-examination-vehicle.vue index 64019f9..1d26e28 100644 --- a/src/views/Department-entry/Medical-examination-vehicle.vue +++ b/src/views/Department-entry/Medical-examination-vehicle.vue @@ -981,57 +981,6 @@ const processItemData = (item) => { itemStatus: item.itemStatus || '0', sectionID: item.sectionID } - - // 对体质指数(BMI)进行特殊处理 - if (item.itemName && item.itemName.includes('体质指数') && item.itemName.includes('BMI') && item.itemResult) { - // 应用BMI特定的判断逻辑 - const bmiValue = parseFloat(item.itemResult) - if (!isNaN(bmiValue)) { - // BMI判断标准:体重过低<18.5,正常18.5≤BMI<24,超重24≤BMI<28,肥胖28≤BMI - if (bmiValue < 18.5) { - processedItem.note = '↓' - processedItem.risk = '体重过低' - processedItem.status = 'danger' - } else if (bmiValue >= 18.5 && bmiValue < 24) { - processedItem.note = '-' - processedItem.risk = '正常' - processedItem.status = '' - } else if (bmiValue >= 24 && bmiValue < 28) { - processedItem.note = '↑' - processedItem.risk = '超重' - processedItem.status = 'danger' - } else if (bmiValue >= 28) { - processedItem.note = '↑↑' - processedItem.risk = '肥胖' - processedItem.status = 'danger' - } - } - } - - // 对血压进行特殊处理 - if (item.itemName && item.itemName.includes('血压') && item.itemResult) { - // 血压值通常是systolic/diastolic格式,例如 125/90 - const bpMatch = item.itemResult.match(/(\d+)\/(\d+)/) - if (bpMatch) { - const systolic = parseInt(bpMatch[1]) // 收缩压 - const diastolic = parseInt(bpMatch[2]) // 舒张压 - - if (!isNaN(systolic) && !isNaN(diastolic)) { - // 判断标准: 收缩压<130 且 舒张压<85为正常 - if (systolic >= 130 || diastolic >= 85) { - processedItem.note = '↑' - processedItem.risk = '血压偏高' - processedItem.status = 'danger' - } else { - processedItem.note = '-' - processedItem.risk = '正常' - processedItem.status = '' - } - } - } - } - - return processedItem } // 辅助函数:处理小结数据 @@ -1614,6 +1563,9 @@ const handleSync = async () => { // 重新加载当前患者的数据,但不清空左侧列表 await loadPatientData(currentSelectedPatient) + + // 同步后自动处理BMI和血压值 + processAutoFields() loading.close() ElMessage.success(`同步成功`) @@ -1628,6 +1580,36 @@ const handleSync = async () => { } } +// 添加一个函数处理BMI和血压值,同步完成后调用 +const processAutoFields = () => { + if (!selectedPatient.value?.medicalSn) return + + // 获取当前所有检查项目 + const allItems = Object.values(examItems.value).flat() + + // 处理BMI项目 + const bmiItem = allItems.find(item => + item.name && item.name.includes('体质指数') && item.name.includes('BMI') && + item.value + ) + + if (bmiItem) { + console.log('处理BMI值...') + handleBmiResult(bmiItem) + } + + // 处理血压项目 + const bpItem = allItems.find(item => + item.name && item.name.includes('血压') && + item.value + ) + + if (bpItem) { + console.log('处理血压值...') + handleBloodPressureResult(bpItem) + } +} + const handleRefresh = async (e) => { // 阻止默认行为,防止触发浏览器刷新 if (e) e.preventDefault() @@ -2804,6 +2786,11 @@ const truncateMedicalSn = (sn) => { // 如果编号长度超过10个字符,则截断并添加省略号 return sn.length > 10 ? sn.substring(0, 8) + '...' : sn; } + +// 在组件卸载时清理缓存 +onBeforeUnmount(() => { + clearPatientCache() +})