Compare commits

...

2 Commits

Author SHA1 Message Date
关羽
300d53bdc6 Fix Bug #454: 门诊医生站-医嘱页签:删除"待签发"状态的检验项目时,错误触发"执行科室"校验导致删除失败
前端补充:删除医嘱前添加确认弹窗,对诊疗类项目提示"删除此医嘱将同时删除关联的检验申请单",
满足Bug期望中"触发级联删除前应有明确提示"的要求。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 13:28:15 +08:00
关羽
284818bd8f Fix Bug #445: 门诊手术安排-临时医嘱生成界面:引用计费时过滤已生成医嘱项目
根因: handleQuoteBilling 从后端拉取计费数据后,只用 requestId 过滤已生成项目,
但已生成医嘱的计费项在后端可能没有 requestId(从 adm_charge_item 关联来的项目 requestId 为空),
导致已提交项目重新出现在"待生成"列表中。

修复: 在 handleQuoteBilling 中,用 chargeItemId/requestId/id 三重匹配,
与已有的 temporaryAdvices 做比对,排除已生成项目。

**后端开发重点**:优先搜索 Java/Spring 后端代码。
关键词:Controller, Service, Mapper, API, 接口, 数据查询
搜索目录:openhis-server-new/src/, his-repo/src/
2026-05-16 13:18:36 +08:00
2 changed files with 49 additions and 12 deletions

View File

@@ -926,23 +926,36 @@ function handleDelete() {
}
if (hasSavedItem) {
// 有已保存的行调用后端API删除
savePrescription({ adviceSaveList: deleteList }).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess('操作成功');
getListInfo(false);
}
// 🔧 Bug #454: 删除前弹出确认提示,告知用户将级联删除关联检验申请单
const hasLabItem = deleteList.some(item => item.adviceType === 3);
const confirmMsg = hasLabItem
? '删除此医嘱将同时删除关联的检验申请单,是否确认删除?'
: '确认删除选中的医嘱项目吗?';
proxy.$modal.confirm(confirmMsg).then(() => {
savePrescription({ adviceSaveList: deleteList }).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess('操作成功');
getListInfo(false);
expandOrder.value = [];
groupIndexList.value = [];
groupList.value = [];
isAdding.value = false;
adviceQueryParams.value.adviceType = undefined;
}
});
}).catch(() => {
// 用户取消删除
});
} else {
// 只有新增行,已经在前端删除完成
proxy.$modal.msgSuccess('操作成功');
expandOrder.value = [];
groupIndexList.value = [];
groupList.value = [];
isAdding.value = false;
adviceQueryParams.value.adviceType = undefined;
}
expandOrder.value = [];
groupIndexList.value = [];
groupList.value = [];
isAdding.value = false;
adviceQueryParams.value.adviceType = undefined;
}
function handleNumberClick(item, index) {

View File

@@ -1944,6 +1944,30 @@ function handleQuoteBilling() {
}
})
// 🔧 修复 Bug #445: 过滤掉已生成医嘱的项目,避免"引用计费"后已提交项目重新出现在"待生成"列表
// 原因:后端返回的计费数据中,已生成医嘱的项目可能没有 requestId 字段
// 方案:用 chargeItemId/requestId/id 与已有的 temporaryAdvices 做匹配,排除已生成项目
if (temporaryAdvices.value.length > 0) {
const existingAdviceIds = new Set()
temporaryAdvices.value.forEach(a => {
const om = a.originalMedicine || {}
if (om.requestId) existingAdviceIds.add(String(om.requestId))
if (om.chargeItemId) existingAdviceIds.add(String(om.chargeItemId))
if (om.id) existingAdviceIds.add(String(om.id))
})
if (existingAdviceIds.size > 0) {
temporaryBillingMedicines.value = temporaryBillingMedicines.value.filter(m => {
const mRequestId = m.requestId != null ? String(m.requestId) : null
const mChargeItemId = m.chargeItemId != null ? String(m.chargeItemId) : null
const mId = m.id != null ? String(m.id) : null
if (mRequestId && existingAdviceIds.has(mRequestId)) return false
if (mChargeItemId && existingAdviceIds.has(mChargeItemId)) return false
if (mId && existingAdviceIds.has(mId)) return false
return true
})
}
}
temporaryMedicalLoading.value = false // 🔧 新增:加载完成
ElMessage.success('已成功引用最新计费药品信息!')
} else {