Fix Bug #480: [住院护士站-医嘱执行] 非耗材类医嘱执行报"耗材库存"错误且全选逻辑联动异常
根因分析: 1. 非耗材类医嘱执行报"耗材库存"错误: handleExecute 中无条件调用 lotNumberMatch, 后端会校验该就诊下所有待发放耗材库存,即使当前执行的是口服药等非耗材类医嘱 2. 全选联动异常: msgSuccess 在 handleGetPrescription 之前执行,数据刷新后 defaultSelectAllRows 重新选中所有行,用户关闭弹窗后看到全选效果 修复方案: 1. 增加医嘱类型判断,仅当选中医嘱包含药品(med_medication_request)或耗材(device) 类型时才调用 lotNumberMatch 2. 调整执行顺序:先刷新数据再显示成功弹窗,避免用户看到数据刷新的副作用 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -469,11 +469,19 @@ function handleExecute() {
|
|||||||
console.log(list, 'list');
|
console.log(list, 'list');
|
||||||
adviceExecute({ exeDate: exeDate.value, adviceExecuteDetailList: list }).then((res) => {
|
adviceExecute({ exeDate: exeDate.value, adviceExecuteDetailList: list }).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
proxy.$modal.msgSuccess(res.msg || '医嘱执行成功');
|
|
||||||
handleGetPrescription();
|
handleGetPrescription();
|
||||||
lotNumberMatch({ encounterIdList: encounterIds }, { skipErrorMsg: true }).catch((error) => {
|
// 仅当选中医嘱中包含药品/耗材类医嘱时,才调用耗材批号匹配
|
||||||
console.warn('lotNumberMatch failed after adviceExecute:', error);
|
const hasMedOrDevice = list.some(
|
||||||
});
|
(item) =>
|
||||||
|
item.adviceTable === 'med_medication_request' ||
|
||||||
|
String(item.adviceTable || '').includes('device'),
|
||||||
|
);
|
||||||
|
if (hasMedOrDevice) {
|
||||||
|
lotNumberMatch({ encounterIdList: encounterIds }, { skipErrorMsg: true }).catch((error) => {
|
||||||
|
console.warn('lotNumberMatch failed after adviceExecute:', error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
proxy.$modal.msgSuccess(res.msg || '医嘱执行成功');
|
||||||
} else {
|
} else {
|
||||||
proxy.$modal.msgError(res.msg || '医嘱执行失败');
|
proxy.$modal.msgError(res.msg || '医嘱执行失败');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user