From c630470aa18bc849be9f5b91ab38492c75b62a99 Mon Sep 17 00:00:00 2001 From: ZHW <1941286652@qq.com> Date: Tue, 30 Dec 2025 15:01:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=89=87=E5=8C=BA=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/campus/water/service/AreaService.java | 30 ++- .../resources/web/src/views/area/Campus.vue | 146 +++++++++++---- .../resources/web/src/views/area/Urban.vue | 10 - .../web/src/views/equipment/WaterMaker.vue | 173 ++++++++++-------- .../web/src/views/equipment/WaterSupplier.vue | 139 ++++++++------ .../web/src/views/personnel/Admin.vue | 152 +++++++++++++-- .../src/views/personnel/MaintenanceRecord.vue | 32 ++++ 7 files changed, 486 insertions(+), 196 deletions(-) diff --git a/src/main/java/com/campus/water/service/AreaService.java b/src/main/java/com/campus/water/service/AreaService.java index 0121db1..73ad277 100644 --- a/src/main/java/com/campus/water/service/AreaService.java +++ b/src/main/java/com/campus/water/service/AreaService.java @@ -1,3 +1,4 @@ +// src/main/java/com/campus/water/service/AreaService.java package com.campus.water.service; import com.campus.water.entity.Area; @@ -95,7 +96,14 @@ public class AreaService { existingArea.setUpdatedTime(LocalDateTime.now()); // 5. 保存修改 - return areaRepository.save(existingArea); + Area updatedArea = areaRepository.save(existingArea); + + // 6. 更新关联管理员的areaId + if (existingArea.getManager() != null && !existingArea.getManager().trim().isEmpty()) { + bindAdminToArea(existingArea.getManager(), updatedArea.getAreaId()); + } + + return updatedArea; } /** @@ -195,8 +203,11 @@ public class AreaService { String adminId = area.getManager(); if (adminId != null && !adminId.trim().isEmpty()) { // 校验管理员是否存在 - Admin admin = adminRepository.findById(adminId) - .orElseThrow(() -> new RuntimeException("区域管理员不存在,ID:" + adminId)); + Optional adminOpt = adminRepository.findByAdminId(adminId); + if (adminOpt.isEmpty()) { + throw new RuntimeException("区域管理员不存在,ID:" + adminId); + } + Admin admin = adminOpt.get(); // 校验管理员角色是否为区域管理员 if (!RoleConstants.ROLE_AREA_ADMIN.equals(admin.getRole().name())) { @@ -212,10 +223,15 @@ public class AreaService { */ private void bindAdminToArea(String adminId, String areaId) { if (adminId != null && !adminId.trim().isEmpty() && areaId != null) { - Admin admin = adminRepository.findById(adminId).get(); // 已在前序校验,无需再次处理空值 - admin.setAreaId(areaId); // 给管理员设置关联的区域ID(Admin实体需有areaId字段) - adminRepository.save(admin); + Optional adminOpt = adminRepository.findByAdminId(adminId); + if (adminOpt.isPresent()) { + Admin admin = adminOpt.get(); + admin.setAreaId(areaId); // 给管理员设置关联的区域ID + adminRepository.save(admin); + } else { + throw new RuntimeException("管理员不存在,ID:" + adminId); + } } } -} \ No newline at end of file +} diff --git a/src/main/resources/web/src/views/area/Campus.vue b/src/main/resources/web/src/views/area/Campus.vue index b6ac21f..bf196da 100644 --- a/src/main/resources/web/src/views/area/Campus.vue +++ b/src/main/resources/web/src/views/area/Campus.vue @@ -1,4 +1,3 @@ - + @@ -902,6 +951,27 @@ onMounted(async () => { cursor: not-allowed; } +/* 在现有样式基础上添加筛选框样式 */ +.filter-box { + display: flex; + align-items: center; + gap: 8px; + color: #666; +} + +.area-select { + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + min-width: 180px; + font-size: 14px; +} + +.filter-box label { + white-space: nowrap; +} + + /* 响应式调整 */ @media (max-width: 768px) { .action-bar { diff --git a/src/main/resources/web/src/views/area/Urban.vue b/src/main/resources/web/src/views/area/Urban.vue index 724304f..93a6027 100644 --- a/src/main/resources/web/src/views/area/Urban.vue +++ b/src/main/resources/web/src/views/area/Urban.vue @@ -11,16 +11,6 @@ - -
- - -
diff --git a/src/main/resources/web/src/views/equipment/WaterMaker.vue b/src/main/resources/web/src/views/equipment/WaterMaker.vue index 3aa1665..6c7d192 100644 --- a/src/main/resources/web/src/views/equipment/WaterMaker.vue +++ b/src/main/resources/web/src/views/equipment/WaterMaker.vue @@ -1,43 +1,37 @@