From ca9b145d3e62a9a3a81e786991ca7f1a2f2e4ca4 Mon Sep 17 00:00:00 2001 From: chenjinyang <1950285536@qq.com> Date: Tue, 10 Feb 2026 17:10:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=8B=E6=9C=AF=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=B8=B4=E6=97=B6=E5=8C=BB=E5=98=B1=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/surgicalschedule/index.vue | 40 +++++++++++++++++-- .../surgicalschedule/temporaryMedical.vue | 19 ++++----- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/openhis-ui-vue3/src/views/surgicalschedule/index.vue b/openhis-ui-vue3/src/views/surgicalschedule/index.vue index 6ea0a1e6..c9fb135d 100644 --- a/openhis-ui-vue3/src/views/surgicalschedule/index.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/index.vue @@ -1386,12 +1386,46 @@ function handleMedicalAdvice(row) { // 如果没有数据或接口调用失败,初始化空列表 temporaryBillingMedicines.value = [] } + + // 将计费药品转换为临时医嘱数据 + temporaryAdvices.value = temporaryBillingMedicines.value.map((medicine, index) => { + // 解析规格中的数值和单位 + const specMatch = medicine.specification ? medicine.specification.match(/(\d+)(\D+)/) : null + const specValue = specMatch ? parseInt(specMatch[1]) : 1 + const specUnit = specMatch ? specMatch[2] : 'ml' + + // 计算剂量 = 规格数值 × 数量 + const dosage = specValue * (medicine.quantity || 1) + + // 根据药品名称判断用法 + let usage = '静脉注射' + if (medicine.medicineName && medicine.medicineName.includes('注射液')) { + usage = '静脉注射' + } else if (medicine.medicineName && medicine.medicineName.includes('片')) { + usage = '口服' + } else if (medicine.medicineName && medicine.medicineName.includes('胶囊')) { + usage = '口服' + } + + return { + id: index + 1, + adviceName: medicine.medicineName || '', + dosage: dosage, + unit: specUnit, + usage: usage, + frequency: '临时', + executeTime: new Date().toLocaleString('zh-CN'), + originalMedicine: medicine + } + }) + + // 打开临时医嘱弹窗 + showTemporaryMedical.value = true }).catch(() => { temporaryBillingMedicines.value = [] + temporaryAdvices.value = [] + showTemporaryMedical.value = true }) - - // 打开临时医嘱弹窗 - showTemporaryMedical.value = true } // 关闭临时医嘱弹窗 diff --git a/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue b/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue index dfd09089..bbea16eb 100644 --- a/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue +++ b/openhis-ui-vue3/src/views/surgicalschedule/temporaryMedical.vue @@ -265,7 +265,7 @@ const convertedAdvices = computed(() => { // 使用转换后的数据或传入的临时医嘱数据 const displayAdvices = computed(() => { - return props.temporaryAdvices.length > 0 ? props.temporaryAdvices : convertedAdvices.value + return props.temporaryAdvices }) // 方法 @@ -369,16 +369,13 @@ const handleDeleteAdvice = (index) => { cancelButtonText: '取消', type: 'warning' }).then(() => { - // 检查数据来源 - if (props.temporaryAdvices.length > 0) { - // 如果使用的是传入的临时医嘱数据,通知父组件删除 - emit('delete-advice', index) - } else { - // 如果使用的是转换的数据,需要构建新的临时医嘱数据并通知父组件 - const updatedAdvices = [...displayAdvices.value] - updatedAdvices.splice(index, 1) - emit('update:temporaryAdvices', updatedAdvices) - } + // 构建新的临时医嘱数据 + const updatedAdvices = [...props.temporaryAdvices] + updatedAdvices.splice(index, 1) + + // 通知父组件更新数据 + emit('update:temporaryAdvices', updatedAdvices) + ElMessage.success('删除成功') }).catch(() => { // 用户取消删除