From f17415f44e376bfe6a29409e67f7243f70363f5e Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 2 Jan 2026 16:27:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E7=BD=AE=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E8=B4=9F=E8=B4=A3=E4=BA=BA=EF=BC=9A=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BAnull=E6=88=960=E6=9D=A5=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E8=B4=9F=E8=B4=A3=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/designhub/service/DepartmentService.java | 12 ++++++++++-- frontend/src/views/Settings.vue | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/DepartmentService.java b/backend/src/main/java/com/designhub/service/DepartmentService.java index d25546a..6e16da4 100644 --- a/backend/src/main/java/com/designhub/service/DepartmentService.java +++ b/backend/src/main/java/com/designhub/service/DepartmentService.java @@ -164,12 +164,20 @@ public class DepartmentService { validateDeptType(request.getDeptType()); existDept.setDeptType(request.getDeptType()); } + // 处理parentId:允许设置为0来清除(设置为null) if (request.getParentId() != null) { - existDept.setParentId(request.getParentId()); + Long parentId = request.getParentId(); + existDept.setParentId(parentId == 0 ? null : parentId); } + // 处理leaderId:允许设置为0或null来清除负责人 + // 注意:由于Java JSON反序列化中无法区分字段不存在和字段为null + // 如果前端发送null,这里会收到null,可以设置为null来清除 + // 如果前端发送0,这里会收到0,也可以设置为null来清除 if (request.getLeaderId() != null) { - existDept.setLeaderId(request.getLeaderId()); + Long leaderId = request.getLeaderId(); + existDept.setLeaderId(leaderId == 0 ? null : leaderId); } + // 注意:如果前端不发送leaderId字段(undefined),这里不会处理,保持原值不变 if (request.getSortOrder() != null) { existDept.setSortOrder(request.getSortOrder()); } diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue index cef7ece..8d03646 100644 --- a/frontend/src/views/Settings.vue +++ b/frontend/src/views/Settings.vue @@ -2133,8 +2133,8 @@ const buildDepartmentPayload = (includeInitial: boolean): DepartmentPayload => { deptName: formData.department.deptName, deptCode: formData.department.deptCode, deptType: formData.department.deptType, - parentId: formData.department.parentId ?? 0, - leaderId: formData.department.leaderId ?? undefined, + parentId: formData.department.parentId ?? 0, + leaderId: formData.department.leaderId ?? null, // 使用null而不是undefined,确保可以清除负责人 sortOrder: formData.department.sortOrder, status: formData.department.status, allowedDemandTypes: isReceivingDept.value ? formData.department.allowedDemandTypes : [],