From 9ed52b7c4804a2305c37ac9e4ed636ca1f8fd305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Wed, 13 May 2026 14:13:56 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#403:=20=E4=BD=8F=E9=99=A2=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E5=B7=A5=E4=BD=9C=E7=AB=99=EF=BC=9A=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=8C=BB=E5=98=B1=E7=BB=84=E5=A5=97=E5=90=8E=EF=BC=8C=E8=8D=AF?= =?UTF-8?q?=E5=93=81=E6=98=8E=E7=BB=86=E5=AD=97=E6=AE=B5=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E6=9C=AA=E6=AD=A3=E7=A1=AE=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 handleSaveGroup 中 mergedDetail 和 newRow 构建时的空值处理问题: 1. mergedDetail 中 dose/doseQuantity/dispensePerDuration 使用严格 null 检查, 避免组套中值为 null 时错误回退到 orderDetailInfos 2. newRow 中关键字段增加 mergedDetail 回退(?? 操作符), 确保当 item 中字段为 null/undefined 时能从 setValue 填充的完整数据中获取 Co-Authored-By: Claude Opus 4.7 --- .../home/components/order/index.vue | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue index 27491ed6c..ef47a8e7d 100755 --- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue +++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue @@ -1571,17 +1571,21 @@ function handleSaveGroup(orderGroupList) { // 🔥 新版组件已经预处理了数据,优先使用 mergedDetail const mergedDetail = item.mergedDetail || { ...(item.orderDetailInfos || {}), - adviceName: item.orderDetailInfos?.adviceName || item.orderDefinitionName || '未知项目', + adviceName: item.orderDefinitionName || item.orderDetailInfos?.adviceName || '未知项目', adviceType: item.orderDetailInfos?.adviceType, adviceDefinitionId: item.orderDefinitionId || item.orderDetailInfos?.adviceDefinitionId, quantity: item.quantity, unitCode: item.unitCode || item.orderDetailInfos?.unitCode, unitCodeName: item.unitCodeName, - dose: item.dose || item.orderDetailInfos?.dose, + // 🔧 Bug #403 修复:dose/doseQuantity/dispensePerDuration 需用 null 检查, + // 避免组套中值为 null 时回退到医嘱库的 orderDetailInfos + dose: item.dose !== undefined && item.dose !== null ? item.dose : item.orderDetailInfos?.dose, rateCode: item.rateCode || item.orderDetailInfos?.rateCode, methodCode: item.methodCode || item.orderDetailInfos?.methodCode, - dispensePerDuration: item.dispensePerDuration || item.orderDetailInfos?.dispensePerDuration, - doseQuantity: item.doseQuantity, + dispensePerDuration: item.dispensePerDuration !== undefined && item.dispensePerDuration !== null + ? item.dispensePerDuration : item.orderDetailInfos?.dispensePerDuration, + doseQuantity: item.doseQuantity !== undefined && item.doseQuantity !== null + ? item.doseQuantity : item.orderDetailInfos?.doseQuantity, inventoryList: item.orderDetailInfos?.inventoryList || [], priceList: item.orderDetailInfos?.priceList || [], partPercent: item.orderDetailInfos?.partPercent || 1, @@ -1600,20 +1604,21 @@ function handleSaveGroup(orderGroupList) { setValue(mergedDetail); // 创建新的处方项目 + // 🔧 Bug #403 修复:关键字段使用 null-safe 回退到 mergedDetail(已由 setValue 填充完整数据) const newRow = { ...prescriptionList.value[rowIndex.value], patientId: patientInfo.value.patientId, encounterId: patientInfo.value.encounterId, accountId: accountId.value, - quantity: item.quantity, - methodCode: item.methodCode, - rateCode: item.rateCode, - dispensePerDuration: item.dispensePerDuration, - dose: item.dose, - doseQuantity: item.doseQuantity, + quantity: item.quantity ?? mergedDetail.quantity, + methodCode: item.methodCode ?? mergedDetail.methodCode, + rateCode: item.rateCode ?? mergedDetail.rateCode, + dispensePerDuration: item.dispensePerDuration ?? mergedDetail.dispensePerDuration, + dose: item.dose ?? mergedDetail.dose, + doseQuantity: item.doseQuantity ?? mergedDetail.doseQuantity, executeNum: 1, - unitCode: item.unitCode, - unitCode_dictText: item.unitCodeName || '', + unitCode: item.unitCode ?? mergedDetail.unitCode, + unitCode_dictText: item.unitCodeName || mergedDetail.unitCodeName || '', statusEnum: 1, orgId: resolveOrgId(item.orderDetailInfos?.orgId || mergedDetail.orgId || patientInfo.value?.inHospitalOrgId) || '', // 🔧 修复:同时保存 orgName,确保树匹配不到时仍有中文名称可显示