From 554beaf6e79707b214fddace4795a87afb1f2c50 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期六, 08 二月 2020 18:30:09 +0800
Subject: [PATCH] 修改在角色管理页修改菜单权限偶尔未选中问题

---
 ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml                         |    2 +-
 ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java |   16 ++++++++++++++--
 ruoyi-ui/src/views/system/role/index.vue                                          |   12 ++++++------
 ruoyi/src/main/java/com/ruoyi/project/system/service/ISysMenuService.java         |    8 ++++++++
 ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java    |    7 ++++++-
 ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java    |    6 +++++-
 6 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/ruoyi-ui/src/views/system/role/index.vue b/ruoyi-ui/src/views/system/role/index.vue
index 497fed6..49152bb 100644
--- a/ruoyi-ui/src/views/system/role/index.vue
+++ b/ruoyi-ui/src/views/system/role/index.vue
@@ -369,15 +369,15 @@
     /** 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戠粨鏋� */
     getRoleMenuTreeselect(roleId) {
       roleMenuTreeselect(roleId).then(response => {
-        this.getMenuTreeselect();
-        this.$refs.menu.setCheckedKeys(response.data);
+        this.menuOptions = response.menus;
+        this.$refs.menu.setCheckedKeys(response.checkedKeys);
       });
     },
     /** 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戠粨鏋� */
     getRoleDeptTreeselect(roleId) {
       roleDeptTreeselect(roleId).then(response => {
-        this.getDeptTreeselect();
-        this.$refs.dept.setCheckedKeys(response.data);
+        this.deptOptions = response.depts;
+        this.$refs.dept.setCheckedKeys(response.checkedKeys);
       });
     },
     // 瑙掕壊鐘舵�佷慨鏀�
@@ -407,8 +407,8 @@
     },
     // 琛ㄥ崟閲嶇疆
     reset() {
-      if (this.$refs.tree != undefined) {
-        this.$refs.tree.setCheckedKeys([]);
+      if (this.$refs.menu != undefined) {
+        this.$refs.menu.setCheckedKeys([]);
       }
       this.form = {
         roleId: undefined,
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java b/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
index e344a39..314af5d 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDeptController.java
@@ -70,7 +70,11 @@
     @GetMapping(value = "/roleDeptTreeselect/{roleId}")
     public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId)
     {
-        return AjaxResult.success(deptService.selectDeptListByRoleId(roleId));
+        List<SysDept> depts = deptService.selectDeptList(new SysDept());
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
+        ajax.put("depts", deptService.buildDeptTreeSelect(depts));
+        return ajax;
     }
 
     /**
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java b/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
index 1e6ce5e..0cb277e 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
@@ -80,7 +80,12 @@
     @GetMapping(value = "/roleMenuTreeselect/{roleId}")
     public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
     {
-        return AjaxResult.success(menuService.selectMenuListByRoleId(roleId));
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        List<SysMenu> menus = menuService.selectMenuList(loginUser.getUser().getUserId());
+        AjaxResult ajax = AjaxResult.success();
+        ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
+        ajax.put("menus", menuService.buildMenuTreeSelect(menus));
+        return ajax;
     }
 
     /**
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysMenuService.java b/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysMenuService.java
index cb4d7b7..95f49ae 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysMenuService.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysMenuService.java
@@ -16,6 +16,14 @@
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
      * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    public List<SysMenu> selectMenuList(Long userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
      * @param menu 鑿滃崟淇℃伅
      * @param userId 鐢ㄦ埛ID
      * @return 鑿滃崟鍒楄〃
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
index b8d8603..cfb85d0 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
@@ -39,6 +39,18 @@
     private SysRoleMenuMapper roleMenuMapper;
 
     /**
+     * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
+     * 
+     * @param userId 鐢ㄦ埛ID
+     * @return 鑿滃崟鍒楄〃
+     */
+    @Override
+    public List<SysMenu> selectMenuList(Long userId)
+    {
+        return selectMenuList(new SysMenu(), userId);
+    }
+
+    /**
      * 鏌ヨ绯荤粺鑿滃崟鍒楄〃
      * 
      * @param menu 鑿滃崟淇℃伅
@@ -83,9 +95,9 @@
     }
 
     /**
-     * 鏍规嵁鐢ㄦ埛鍚嶇О鏌ヨ鑿滃崟
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ鑿滃崟
      * 
-     * @param username 鐢ㄦ埛鍚嶇О
+     * @param userId 鐢ㄦ埛鍚嶇О
      * @return 鑿滃崟鍒楄〃
      */
     @Override
diff --git a/ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml b/ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml
index 98aee20..2ed824f 100644
--- a/ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml
+++ b/ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml
@@ -117,7 +117,7 @@
 		update sys_menu
 		<set>
 			<if test="menuName != null and menuName != ''">menu_name = #{menuName},</if>
-			<if test="parentId != null and parentId != 0">parent_id = #{parentId},</if>
+			<if test="parentId != null">parent_id = #{parentId},</if>
 			<if test="orderNum != null and orderNum != ''">order_num = #{orderNum},</if>
 			<if test="path != null and path != ''">path = #{path},</if>
 			<if test="component != null and component != ''">component = #{component},</if>

--
Gitblit v1.9.3