diff --git a/openhis-ui-vue3/src/views/inpatientNurse/medicalOrderExecution/components/prescriptionList.vue b/openhis-ui-vue3/src/views/inpatientNurse/medicalOrderExecution/components/prescriptionList.vue index eb46516bd..646a03252 100755 --- a/openhis-ui-vue3/src/views/inpatientNurse/medicalOrderExecution/components/prescriptionList.vue +++ b/openhis-ui-vue3/src/views/inpatientNurse/medicalOrderExecution/components/prescriptionList.vue @@ -459,10 +459,15 @@ function handleGetPrescription(skipAutoSelectAll = false) { // 执行 function handleExecute() { let list = getSelectRows(); + if (list.length === 0) { + proxy.$modal.msgWarning('请选择需要执行的医嘱'); + return; + } let encounterIds = patientInfoList.value.map((i) => i.encounterId).join(','); list = list.map((item) => { return { requestId: item.requestId, + encounterId: item.encounterId, accountId: item.accountId, adviceTable: item.adviceTable, executeTimes: item.executeTimes, @@ -473,14 +478,23 @@ function handleExecute() { if (res.code == 200) { // 仅当选中医嘱中包含诊疗类医嘱(可能绑定耗材)时,才调用耗材批号匹配 // adviceTable 取值为 med_medication_request(药品)或 wor_service_request(诊疗/耗材) - // 原代码用 includes('device') 判断有误,两个表名均不含 "device" 字符串 const hasServiceRequest = list.some((item) => String(item.adviceTable || '') === 'wor_service_request', ); if (hasServiceRequest) { - lotNumberMatch({ encounterIdList: encounterIds }, { skipErrorMsg: true }).catch((error) => { - console.warn('lotNumberMatch failed after adviceExecute:', error); - }); + // 仅传入选中医嘱对应的 encounterId,避免其他患者的耗材记录干扰 + const selectedEncounterIds = [...new Set(list.map((item) => item.encounterId).filter(Boolean))]; + if (selectedEncounterIds.length > 0) { + lotNumberMatch({ encounterIdList: selectedEncounterIds }, { skipErrorMsg: true }) + .then((matchRes) => { + if (matchRes && matchRes.code !== 200) { + console.warn('lotNumberMatch returned error:', matchRes.msg); + } + }) + .catch((error) => { + console.warn('lotNumberMatch failed after adviceExecute:', error); + }); + } } // 刷新列表(不自动全选,保持用户操作前的选择状态) handleGetPrescription(true); @@ -488,6 +502,9 @@ function handleExecute() { } else { proxy.$modal.msgError(res.msg || '医嘱执行失败'); } + }).catch((error) => { + console.error('医嘱执行接口调用失败:', error); + proxy.$modal.msgError('医嘱执行失败,请稍后重试'); }); }