From bc49691e03c95a66d870da277a2d4b3e2f3bec85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Thu, 14 May 2026 10:07:19 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#455:=20=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99-=E5=8C=BB=E5=98=B1=EF=BC=9A=E5=BC=80?= =?UTF-8?q?=E7=AB=8B=E8=AF=8A=E7=96=97=E5=8C=BB=E5=98=B1=E6=97=B6=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=A7=91=E5=AE=A4=E9=BB=98=E8=AE=A4=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=9C=89=E8=AF=AF=E4=B8=94=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=BA=E5=8E=9F=E5=A7=8BID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:setValue() 中通过展开运算符(...JSON.parse(JSON.stringify(row)))将诊疗目录 的 positionId/orgId 带入处方列表,后续条件判断只处理非诊疗类型(advicetype != 3), 导致诊疗类的 catalog ID 未被覆盖,且该 ID 不在机构树中,el-tree-select 显示原始数字。 修复: 1. setValue() 中显式为诊疗类(adviceType=3)设置 orgId/positionId 为患者就诊科室, 并同步 positionName 为机构树中的名称 2. handleSaveGroup() 组套应用时同样对诊疗类使用患者就诊科室,不使用目录配置的ID Co-Authored-By: Claude Opus 4.7 --- .../components/prescription/prescriptionlist.vue | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 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 31ee811d9..551487cd7 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue @@ -3418,7 +3418,12 @@ async function setValue(row) { console.log('[BugFix] setValue - prescriptionList[rowIndex].adviceType_dictText:', prescriptionList.value[rowIndex.value].adviceType_dictText); // 🔧 Bug #455: 诊疗医嘱(adviceType=3)的执行科室默认使用患者就诊科室, // 不使用positionId(诊疗目录配置的执行科室),避免配置ID不在机构树中导致显示原始ID - if (Number(row.adviceType) != 3) { + if (Number(row.adviceType) == 3) { + // 覆盖 catalog 传来的 positionId/orgId,使用患者就诊科室 + prescriptionList.value[rowIndex.value].orgId = props.patientInfo?.orgId; + prescriptionList.value[rowIndex.value].positionId = props.patientInfo?.orgId; + prescriptionList.value[rowIndex.value].positionName = findOrgNameById(props.patientInfo?.orgId) || props.patientInfo?.orgName || ''; + } else { prescriptionList.value[rowIndex.value].orgId = row.positionId || props.patientInfo?.orgId; } prescriptionList.value[rowIndex.value].dose = row.dose || row.doseQuantity; @@ -3652,7 +3657,10 @@ function handleSaveGroup(orderGroupList) { unitCode_dictText: item.unitCodeName || '', statusEnum: 1, // 🔧 修复执行科室逻辑:优先使用 orgId(所属科室),其次 positionId - orgId: item.orderDetailInfos?.orgId || mergedDetail.orgId || item.positionId || item.orderDetailInfos?.positionId || mergedDetail.positionId, + // 🔧 Bug #455: 诊疗类(adviceType=3)使用患者就诊科室,不使用目录配置的ID + orgId: item.adviceType === 3 + ? props.patientInfo?.orgId + : (item.orderDetailInfos?.orgId || mergedDetail.orgId || item.positionId || item.orderDetailInfos?.positionId || mergedDetail.positionId), dbOpType: prescriptionList.value[rowIndex.value].requestId ? '2' : '1', conditionId: conditionId.value, conditionDefinitionId: conditionDefinitionId.value,