Example #1
0
        /// <summary>
        /// 递归组织用户的菜单和权限集合
        /// </summary>
        private void GetUserRoleMenuPrivilegeTree(List<TreeNode> tree, List<SysMenu> userMenus, List<SysPrivilege> userPrivileges, List<SysMenu> roleMenus, List<SysPrivilege> rolePrivileges, long parentmenu)
        {
            var menus = userMenus.Where(x => x.Parent == parentmenu && x.ID != parentmenu);
            foreach (var menu in menus)
            {
                var menunode = new TreeNode();
                menunode.id = menu.ID;
                menunode.text = menu.Name;
                menunode.attributes = new { type = 1 };//1菜单节点  2权限节点
                //节点的选中状态
                if (roleMenus.Any(x => x.ID == menu.ID))
                {
                    menunode.@checked = true;
                }
                else
                {
                    menunode.@checked = false;
                }

                menunode.children = new List<TreeNode>();

                //递归加载子节点
                GetUserRoleMenuPrivilegeTree(menunode.children, userMenus, userPrivileges, roleMenus, rolePrivileges,
                    menu.ID);

                //菜单下的权限节点
                var menuPrivileges = userPrivileges.Where(x => x.Menu == menu.ID);
                foreach (var menuprivilege in menuPrivileges)
                {
                    var privilegenode = new TreeNode();
                    privilegenode.id = menuprivilege.ID;
                    privilegenode.text = menuprivilege.Name;
                    privilegenode.attributes = new { type = 2 };//1菜单节点  2权限节点
                    //节点的选中状态
                    if (rolePrivileges.Any(x => x.ID == menuprivilege.ID))
                    {
                        privilegenode.@checked = true;
                    }
                    else
                    {
                        privilegenode.@checked = false;
                    }
                    privilegenode.state = null;//节点展开或关闭状态 open  
                    menunode.children.Add(privilegenode);
                }
                if (menunode.children.Count > 0)
                {
                    menunode.state = "closed";
                    menunode.@checked = false;//只要有子节点,自身的选中状态就只能依赖所有层级子节点是否都选中
                }
                tree.Add(menunode);
            }
        }
Example #2
0
 private TreeNode wrapTree(SysArea parent,List<SysArea> areas)
 {
     TreeNode result = new TreeNode();
     result.id = Int64.Parse(parent.Code);
     result.children = new List<TreeNode>();
     result.state = "closed";
     result.text = parent.Name;
     foreach (SysArea sysArea in areas.Where(a => a.Parent == parent.Code && a.Parent != a.Code))
     {
         result.children.Add(wrapTree(sysArea,areas));
     }
     return result;
 }
Example #3
0
 public List<TreeNode> getAreaTree()
 {
     TreeNode result = new TreeNode();
     result.children = new List<TreeNode>();
     result.state = "closed";
     result.text = "系统区域";
     List<SysArea> areas = sysAreaService.getAll();
     foreach (SysArea sysArea in areas.Where(a => a.Parent == a.Code))
     {
         result.children.Add(wrapTree(sysArea, areas));
     }
     return new List<TreeNode>{result};
 }