示例#1
0
        public List <LayuiTreeDto> GetMenuTreeByRole(long roleId)
        {
            List <LayuiTreeDto> trees = new List <LayuiTreeDto>();


            var list = menuService.GetMenuList(new QueryModel()
            {
                limit = 99999999, page = 1
            }).data as List <MenuDto>;

            list = list.OrderBy(p => p.Order).ToList();
            //list存放所有的菜单.
            //只允许用户授权自己才有权限的菜单


            list = list.Where(p => p.State == (int)MenuStatus.Normal).ToList();


            var nowSelected = menuService.FindMenusByRole(new RoleDto()
            {
                Id = roleId
            });
            List <MenuDto> nowSelectResult = new List <MenuDto>();

            foreach (var item in nowSelected)
            {
                nowSelectResult.Add(new MenuDto()
                {
                    CreateTs = item.CreateTs,
                    Icon     = item.Icon,
                    Id       = item.Id,
                    Name     = item.Name,
                    Order    = item.Order,
                    ParentId = item.ParentId,
                    Url      = item.Url
                });
                ExpandTreeViewNode(item.Children, ref nowSelectResult);
            }
            foreach (var item in list)
            {
                if (item.ParentId.HasValue)
                {
                    continue;
                }
                LayuiTreeDto dto = new LayuiTreeDto();
                dto.@checked = nowSelectResult.Where(p => p.Id == item.Id).Any() ? true : false;
                dto.children = findAllParents(item, list, nowSelectResult);
                dto.id       = item.Id;
                dto.title    = item.Name;
                trees.Add(dto);
            }

            foreach (var item in trees)
            {
                item.@checked = false;
                DebugTree(item.children);
            }

            return(trees);
        }
示例#2
0
        /// <summary>
        /// 找到所有的父节点
        /// </summary>
        /// <returns></returns>
        private List <LayuiTreeDto> findAllParents(MenuDto menu, List <MenuDto> allData, List <MenuDto> nowSelected)
        {
            List <LayuiTreeDto> treeList = new List <LayuiTreeDto>();

            if (allData != null)
            {
                foreach (var item in allData)
                {
                    if (item.ParentId == menu.Id)
                    {
                        LayuiTreeDto myTree = new LayuiTreeDto();
                        myTree.@checked = nowSelected.Where(p => p.Id == item.Id).Any();
                        myTree.children = findAllParents(item, allData, nowSelected);
                        myTree.id       = item.Id;
                        myTree.title    = item.Name;
                        treeList.Add(myTree);
                    }
                }
            }
            if (treeList.Count == 0)
            {
                treeList = null;
            }
            return(treeList);
        }