From a794cd0ce348f6ffab66938a113626bde382cad7 Mon Sep 17 00:00:00 2001 From: wzk <2438381872@qq.com> Date: Fri, 14 Nov 2025 09:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E8=AF=8A=E5=8C=BB=E7=94=9F=E7=AB=99?= =?UTF-8?q?=E5=BC=80=E7=AB=8B=E5=8C=BB=E5=98=B1=E4=B8=AD=E6=88=90=E8=8D=AF?= =?UTF-8?q?=E7=9A=84=E5=BC=80=E5=8C=BB=E5=98=B1=E5=BD=95=E5=85=A5=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E5=92=8C=E8=A5=BF=E8=8D=AF=E7=9A=84=E5=BC=80=E5=8C=BB?= =?UTF-8?q?=E5=98=B1=E5=BD=95=E5=85=A5=E7=95=8C=E9=9D=A2=E4=BF=9D=E6=8C=81?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prescription/prescriptionlist.vue | 284 ++++++++++++++++-- 1 file changed, 251 insertions(+), 33 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue index 411d3f10..4dc997e6 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue @@ -353,45 +353,256 @@ - - 总金额:{{ scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '0.00 元' }} - 确定 @@ -1234,7 +1447,7 @@ function selectAdviceBase(key, row) { } expandOrder.value = [key]; nextTick(() => { - if (row.adviceType == 1) { + if (row.adviceType == 1 || row.adviceType == 2) { if (row.injectFlag == 1) { inputRefs.value['executeNum']?.focus(); } else { @@ -1464,7 +1677,7 @@ function handleSaveSign(row, index) { row.patientId = props.patientInfo.patientId; row.encounterId = props.patientInfo.encounterId; row.accountId = accountId.value; - if (row.adviceType == 1) { + if (row.adviceType == 1 || row.adviceType == 2) { row.minUnitQuantity = row.minUnitCode == row.unitCode ? row.quantity : row.quantity * row.partPercent; } else { @@ -2033,20 +2246,8 @@ function convertDoseValues(row, index) { // 总量计算,仅适用只有两种单位的情况 function calculateTotalAmount(row, index) { nextTick(() => { - // 项目为耗材时 - if (row.adviceType == 2) { - // 拆零比为1时 总价等于数量乘以单价 - if (row.partPercent == 1) { - row.totalPrice = row.quantity * row.unitPrice; - } else { - // 拆零比不为1时, 如果当前总量单位是大单位,总价等于数量乘以大单位价格 否则总价等于数量乘以小单位价格 - if (row.unitCodeList.find((k) => k.value == row.unitCode).type == 'unit') { - row.totalPrice = row.quantity * row.unitPrice; - } else { - row.totalPrice = (row.quantity * row.minUnitPrice).toFixed(2); - } - } - } else if (row.adviceType == 1) { + // 项目为西药或中成药时,根据用药天数和用药频次自动计算总量 + if (row.adviceType == 1 || row.adviceType == 2) { if (row.rateCode && row.dispensePerDuration) { // 根据用药天数和用药频次计算数量 let count = calculateQuantityByDays(row.rateCode, row.dispensePerDuration); @@ -2067,6 +2268,23 @@ function calculateTotalAmount(row, index) { prescriptionList.value[index].totalPrice = (quantity * row.unitPrice).toFixed(2); } } + } else { + // 如果没有用药频次或用药天数,则根据数量计算总价(中成药兼容旧逻辑) + if (row.adviceType == 2) { + // 拆零比为1时 总价等于数量乘以单价 + if (row.partPercent == 1) { + row.totalPrice = row.quantity * row.unitPrice; + } else { + // 拆零比不为1时, 如果当前总量单位是大单位,总价等于数量乘以大单位价格 否则总价等于数量乘以小单位价格 + if (row.unitCodeList && row.unitCodeList.find((k) => k.value == row.unitCode)) { + if (row.unitCodeList.find((k) => k.value == row.unitCode).type == 'unit') { + row.totalPrice = row.quantity * row.unitPrice; + } else { + row.totalPrice = (row.quantity * row.minUnitPrice).toFixed(2); + } + } + } + } } } });