From 47806c6cc4663bee8a57833000a8bc70c518ad78 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Fri, 7 Jul 2023 17:57:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E3=80=90=E8=8F=9C=E5=8D=95=E3=80=81=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E3=80=91=E7=A7=BB=E5=8A=A8=E8=8A=82=E7=82=B9=E6=97=B6?= =?UTF-8?q?=E5=87=BA=E7=8E=B0PID=E6=95=B0=E6=8D=AE=E7=8E=AF=E5=BD=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9Ahttps://github.com/elunez/eladmin/is?= =?UTF-8?q?sues/803?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-web/src/views/system/dept/index.vue | 12 ++++++------ .../modules/system/rest/DeptController.java | 13 ++++++++++++- .../modules/system/rest/MenuController.java | 11 +++++++++-- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/eladmin-web/src/views/system/dept/index.vue b/eladmin-web/src/views/system/dept/index.vue index d02b846..5311ccc 100644 --- a/eladmin-web/src/views/system/dept/index.vue +++ b/eladmin-web/src/views/system/dept/index.vue @@ -161,10 +161,10 @@ export default { } }, getSupDepts(id) { - crudDept.getDeptSuperior(id).then(res => { - const date = res.content - this.buildDepts(date) - this.depts = date + crudDept.getDeptSuperior(id, true).then(res => { + const data = res.content + this.buildDepts(data) + this.depts = data }) }, buildDepts(depts) { @@ -224,7 +224,7 @@ export default { cancelButtonText: '取消', type: 'warning' }).then(() => { - crudDept.edit(data).then(res => { + crudDept.edit(data).then(() => { this.crud.notify(this.dict.label.dept_status[val] + '成功', CRUD.NOTIFICATION_TYPE.SUCCESS) }).catch(err => { data.enabled = !data.enabled @@ -234,7 +234,7 @@ export default { data.enabled = !data.enabled }) }, - checkboxT(row, rowIndex) { + checkboxT(row) { return row.id !== 1 } } diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java index b465cdb..ef264ef 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java @@ -33,6 +33,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.*; +import java.util.stream.Collectors; /** * @author Zheng Jie @@ -65,11 +66,21 @@ public class DeptController { @ApiOperation("查询部门:根据ID获取同级与上级数据") @PostMapping("/superior") @PreAuthorize("@el.check('user:list','dept:list')") - public ResponseEntity getDeptSuperior(@RequestBody List ids) { + public ResponseEntity getDeptSuperior(@RequestBody List ids, + @RequestParam(defaultValue = "false") Boolean exclude) { Set deptSet = new LinkedHashSet<>(); for (Long id : ids) { Dept dept = deptService.findById(id); List depts = deptService.getSuperior(dept, new ArrayList<>()); + if(exclude){ + for (Dept data : depts) { + if(data.getId().equals(dept.getPid())) { + data.setSubCount(data.getSubCount() - 1); + } + } + // 编辑部门时不显示自己以及自己下级的数据,避免出现PID数据环形问题 + depts = depts.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toList()); + } deptSet.addAll(depts); } return new ResponseEntity<>(deptService.buildTree(new ArrayList<>(deptSet)),HttpStatus.OK); diff --git a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index fd7ccce..75bf7c3 100644 --- a/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java +++ b/eladmin/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -41,7 +41,6 @@ import java.util.stream.Collectors; * @author Zheng Jie * @date 2018-12-03 */ - @RestController @RequiredArgsConstructor @Api(tags = "系统:菜单管理") @@ -101,8 +100,16 @@ public class MenuController { if(CollectionUtil.isNotEmpty(ids)){ for (Long id : ids) { Menu menu = menuService.findById(id); - menus.addAll(menuService.getSuperior(menu, new ArrayList<>())); + List menuList = menuService.getSuperior(menu, new ArrayList<>()); + for (Menu data : menuList) { + if(data.getId().equals(menu.getPid())) { + data.setSubCount(data.getSubCount() - 1); + } + } + menus.addAll(menuList); } + // 编辑菜单时不显示自己以及自己下级的数据,避免出现PID数据环形问题 + menus = menus.stream().filter(i -> !ids.contains(i.getId())).collect(Collectors.toSet()); return new ResponseEntity<>(menuService.buildTree(new ArrayList<>(menus)),HttpStatus.OK); } return new ResponseEntity<>(menuService.getMenus(null),HttpStatus.OK);