From 659db997fd6a0c936cddde3e237e36adbf00d354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Sun, 10 May 2026 16:02:42 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#491:=20=E3=80=90=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=A7=91=E5=AE=A4=E9=85=8D=E7=BD=AE=E3=80=91=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=97=B6=E7=B3=BB=E7=BB=9F=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端修复:时间冲突校验时 organizationService.getById 可能返回 null,增加空值判断避免 NPE 前端修复:保存前校验是否已选择科室,未选择时给出提示并阻断 Co-Authored-By: Claude Opus 4.7 --- .../impl/OrganizationLocationAppServiceImpl.java | 4 ++-- .../implementDepartment/components/batchAddDialog.vue | 4 ++++ .../src/views/basicmanage/implementDepartment/index.vue | 9 ++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java index 7c76d027..e808beb5 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/OrganizationLocationAppServiceImpl.java @@ -147,8 +147,8 @@ public class OrganizationLocationAppServiceImpl implements IOrganizationLocation for (OrganizationLocation organizationLocation : organizationLocationList) if (DateTimeUtils.isOverlap(organizationLocation.getStartTime(), organizationLocation.getEndTime(), orgLoc.getStartTime(), orgLoc.getEndTime())) { - String organizationName = - organizationService.getById(organizationLocation.getOrganizationId()).getName(); + Organization org = organizationService.getById(organizationLocation.getOrganizationId()); + String organizationName = org != null ? org.getName() : "未知科室"; return R.fail("当前诊疗:" + activityName + CommonConstants.Common.DASH + orgLoc.getStartTime() + CommonConstants.Common.DASH + orgLoc.getEndTime() + "与" + organizationName + "时间冲突"); } diff --git a/openhis-ui-vue3/src/views/basicmanage/implementDepartment/components/batchAddDialog.vue b/openhis-ui-vue3/src/views/basicmanage/implementDepartment/components/batchAddDialog.vue index 2f8ea831..9f6cd007 100755 --- a/openhis-ui-vue3/src/views/basicmanage/implementDepartment/components/batchAddDialog.vue +++ b/openhis-ui-vue3/src/views/basicmanage/implementDepartment/components/batchAddDialog.vue @@ -132,6 +132,10 @@ function onCancel() { // 批量添加 async function onConfirm() { + if (!props.organizationId) { + proxy.$message.error('请先在左侧选择科室'); + return; + } if (!formEl) return; formEl.value.validate(async (valid) => { if (!valid) return; diff --git a/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue b/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue index 04eb2f81..b9943008 100755 --- a/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/implementDepartment/index.vue @@ -366,6 +366,10 @@ function handleBlur(row, index) { // 编辑或 保存当前行 function openSaveImplementDepartment(row) { + if (!organizationId.value) { + proxy.$message.error('请先在左侧选择科室'); + return; + } const params = { // 科室id organizationId: organizationId.value, @@ -452,13 +456,12 @@ function handleNodeClick(res, node) { // 实际的节点点击处理逻辑 function continueHandleNodeClick(node) { - // 新增按钮是否 disable - isAddDisable.value = false; // 检查节点是否有子节点 if (node.data.children && node.data.children.length > 0) { - // proxy.$message.warning("不能选择父节点"); return; } + // 新增按钮是否 disable + isAddDisable.value = false; // 选中科室id organizationId.value = node.data.id; // 获取 右侧 table 信息