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); + } + } + } + } } } });