/// <summary> /// 获取子菜单,递归调用 /// </summary> /// <param name="data"></param> /// <param name="parentId">父级Id</param> /// <returns></returns> private List <MenuTreeTableOutputDto> GetSubMenus(List <Menu> data, string parentId) { List <MenuTreeTableOutputDto> list = new List <MenuTreeTableOutputDto>(); MenuTreeTableOutputDto menuTreeTableOutputDto = new MenuTreeTableOutputDto(); var ChilList = data.FindAll(t => t.ParentId == parentId); foreach (Menu entity in ChilList) { menuTreeTableOutputDto = entity.MapTo <MenuTreeTableOutputDto>(); menuTreeTableOutputDto.Children = GetSubMenus(data, entity.Id).OrderBy(t => t.SortCode).MapTo <MenuTreeTableOutputDto>(); list.Add(menuTreeTableOutputDto); } return(list); }
/// <summary> /// 获取功能菜单适用于Vue 树形列表 /// </summary> /// <param name="systemTypeId">子系统Id</param> /// <returns></returns> public async Task <List <MenuTreeTableOutputDto> > GetAllMenuTreeTable(string systemTypeId) { string where = "1=1"; List <MenuTreeTableOutputDto> reslist = new List <MenuTreeTableOutputDto>(); if (!string.IsNullOrEmpty(systemTypeId)) { IEnumerable <Menu> elist = await _MenuRepository.GetListWhereAsync("SystemTypeId='" + systemTypeId + "'"); List <Menu> list = elist.OrderBy(t => t.SortCode).ToList(); List <Menu> oneMenuList = list.FindAll(t => t.ParentId == ""); foreach (Menu item in oneMenuList) { MenuTreeTableOutputDto menuTreeTableOutputDto = new MenuTreeTableOutputDto(); menuTreeTableOutputDto = item.MapTo <MenuTreeTableOutputDto>(); menuTreeTableOutputDto.Children = GetSubMenus(list, item.Id).ToList <MenuTreeTableOutputDto>(); reslist.Add(menuTreeTableOutputDto); } } else { IEnumerable <SystemType> listSystemType = await systemTypeRepository.GetListWhereAsync(where); foreach (SystemType systemType in listSystemType) { MenuTreeTableOutputDto menuTreeTableOutputDto = new MenuTreeTableOutputDto(); menuTreeTableOutputDto.Id = systemType.Id; menuTreeTableOutputDto.FullName = systemType.FullName; menuTreeTableOutputDto.EnCode = systemType.EnCode; menuTreeTableOutputDto.UrlAddress = systemType.Url; menuTreeTableOutputDto.EnabledMark = systemType.EnabledMark; menuTreeTableOutputDto.SystemTag = true; IEnumerable <Menu> elist = await _MenuRepository.GetListWhereAsync("SystemTypeId='" + systemType.Id + "'"); if (elist.Count() > 0) { List <Menu> list = elist.OrderBy(t => t.SortCode).ToList(); menuTreeTableOutputDto.Children = GetSubMenus(list, "").ToList <MenuTreeTableOutputDto>(); } reslist.Add(menuTreeTableOutputDto); } } return(reslist); }