void AuditNode(EasyUiTreeNode orgNode, List <PositionPersonnelData> users) { if (orgNode.HaseChildren) { foreach (var ch in orgNode.Children) { AuditNode(ch, users); } } var array = users.Where(p => p.DepartmentId == orgNode.ID).ToArray(); if (array.Length == 0) { orgNode.IsFolder = false; return; } orgNode.IsFolder = true; foreach (var personnel in array) { orgNode.Children.Add(new EasyUiTreeNode { ID = personnel.UserId, IsOpen = true, Text = $"{personnel.Personnel}({personnel.Position})", Tag = "personnel" }); } orgNode.ID = 0 - orgNode.ID; }
private static EasyUiTreeNode CreatePageNode(PageItemData page) { var node = new EasyUiTreeNode { ID = page.Id, IsOpen = page.ItemType <= PageItemType.Folder, Tag = page.Url == "Folder" ? "folder" : "page", Text = page.Caption, Title = page.Name, IsFolder = page.ItemType <= PageItemType.Folder }; if (!String.IsNullOrWhiteSpace(page.Icon)) { node.Icon = page.Icon; } else { switch (page.ItemType) { case PageItemType.Folder: node.Icon = "icon-tree-folder"; break; case PageItemType.Page: node.Icon = "icon-tree-page"; break; } } return(node); }
/// <summary> /// 生成页面权限树形基础数据 /// </summary> public void CreatePowerTree(RedisProxy proxy) { var root = new EasyUiTreeNode { ID = 0, IsOpen = true, Text = ConfigurationManager.AppSettings["ProjectName"], Title = ConfigurationManager.AppSettings["ProjectName"], IsFolder = true }; foreach (var filter in _pages.Where(p => p.ItemType == PageItemType.Root)) { var node = new EasyUiTreeNode { IsOpen = true, Icon = "icon-item", Text = filter.Caption, Title = filter.Caption, Tag = filter.ExtendValue, IsFolder = true }; CreatePowerTree(node, filter); root.Children.Add(node); } proxy.Set("role:power:tree", root); }
/// <summary> /// 生成页面权限树形基础数据 /// </summary> private void CreatePowerTree(EasyUiTreeNode parentNode, PageItemData page) { parentNode.IsFolder = true; var node = CreatePageNode(page); foreach (var ch in _pages.Where(p => p.ParentId == page.Id).OrderBy(p => p.Index)) { CreatePowerTree(node, ch); } parentNode.Attributes = null; parentNode.Children.Add(node); if (page.ItemType != PageItemType.Page) { parentNode.IsOpen = true; return; } node.IsFolder = true; var items = _piAccess.All(p => p.ParentId == page.Id && p.ItemType >= PageItemType.Button); foreach (var item in items) { node.Children.Add(new EasyUiTreeNode { ID = item.ID, Text = item.Caption, Title = item.Name, Tag = item.ExtendValue, Memo = item.Memo, IsOpen = true, Icon = item.ItemType == PageItemType.Action ? "icon-cmd" : "icon-cus", }); } }
/// <summary> /// 生成角色菜单 /// </summary> private void CreateMenu(int roleId, RedisProxy proxy) { var root = new EasyUiTreeNode { ID = 0, IsOpen = true, Text = ConfigurationManager.AppSettings["ProjectName"], IsFolder = true }; foreach (var folder in _pages.Where(p => p.ItemType == PageItemType.Root).OrderBy(p => p.Index)) { var node = new EasyUiTreeNode { IsOpen = true, Text = folder.Caption, Icon = "icon-item", Attributes = "home.aspx", Tag = folder.ExtendValue, IsFolder = true }; foreach (var page in _pages.Where(p => p.ParentId == folder.Id && p.ItemType <= PageItemType.Page).OrderBy(p => p.Index)) { CreateRoleMenu(node, roleId, page); } if (node.HaseChildren) { root.Children.Add(node); } } proxy.Set(ToRolePageKey(roleId, 0, "menu"), root.Children.OrderByDescending(p => p.ID)); }
/// <summary> /// 生成角色菜单 /// </summary> private void CreateRoleMenu(EasyUiTreeNode parentNode, int roleId, PageItemData page) { if (_allPowers != null && !_allPowers.Any(p => p.RoleId == roleId && p.PageItemId == page.Id)) { return; } var node = CreatePageNode(page); node.Attributes = page.Url; node.Tag = page.Url == "Folder" ? "folder" : "page"; var array = _pages.Where(p => p.ParentId == page.Id && !p.Config.Hide).OrderBy(p => p.Index).ToArray(); if (array.Length > 0) { node.IsFolder = true; } foreach (var ch in array) { CreateRoleMenu(node, roleId, ch); } if (page.ItemType == PageItemType.Page || node.HaseChildren) { parentNode.Children.Add(node); } }
/// <summary> /// 载入完整的结构树(UI相关) /// </summary> /// <returns></returns> public List <EasyUiTreeNode> LoadTreeRootForUi() { var rootNode = new EasyUiTreeNode { ID = -1, IsOpen = true, Icon = "icon-tree-folder", Attributes = "root", Text = "系统页面", IsFolder = true }; var roots = Access.All(p => p.ItemType == PageItemType.Root, p => p.Index, false); foreach (var root in roots) { var node = new EasyUiTreeNode { ID = root.Id, IsOpen = true, Tag = root.Name, Icon = "icon-tree-folder", Attributes = root.ItemType.ToString(), Text = root.Caption, IsFolder = true }; LoadTreeForUi(root.Id, node); rootNode.Children.Add(node); } return(new List <EasyUiTreeNode> { rootNode }); }
/// <summary> /// 设置子级以构成树 /// </summary> /// <param name="pid"></param> /// <param name="proxy"></param> /// <param name="par"></param> /// <param name="orgs"></param> /// <param name="posts"></param> internal static void CreateOrgPosTree(int pid, RedisProxy proxy, EasyUiTreeNode par, List <OrganizationData> orgs, List <OrganizePositionData> posts) { par.IsFolder = true; par.Children.AddRange(posts.Where(p => p.OrganizationId == pid).Select(CreateNode)); var childs = orgs.Where(p => p.ParentId == pid).ToArray(); if (childs.Length != 0) { foreach (var data in childs.OrderBy(p => p.Type)) { var node = new EasyUiTreeNode { Icon = Icon(data.Type), IsOpen = true, IsFolder = true, Attributes = "org", Title = data.TreeName, Text = data.ShortName, Tag = data.Id.ToString() }; par.Children.Add(node); CreateOrgPosTree(data.Id, proxy, node, orgs, posts); } } if (!par.HaseChildren) { par.IsFolder = false; par.IsOpen = true; } proxy.Set("ui:org:PostTree:" + pid, par); }
/// <summary> /// 载入完整的结构树(UI相关) /// </summary> /// <returns></returns> public List <EasyUiTreeNode> LoadTreeForUi(int pid) { if (pid <= 0) { return(LoadTreeRootForUi()); } var root = new EasyUiTreeNode { IsFolder = true }; LoadTreeForUi(pid, root); return(root.Children); }
/// <summary> /// 设置子级以构成树 /// </summary> /// <param name="par"></param> /// <param name="lists"></param> /// <param name="proxy"></param> private void CreateOrgTree(EasyUiTreeNode par, List <OrganizationData> lists, RedisProxy proxy) { var childs = lists.Where(p => p.ParentId == par.ID).ToArray(); if (childs.Length != 0) { par.IsFolder = true; foreach (var child in childs) { var node = CreateNode(child); par.Children.Add(node); CreateOrgTree(node, lists, proxy); } } proxy.Set("ui:org:OrgTree:" + par.ID, par); }
/// <summary> /// 载入完整的结构树(UI相关) /// </summary> /// <returns></returns> public void LoadTreeForUi(long pid, EasyUiTreeNode parent) { var childs = Access.All(p => p.ParentId == pid && p.ItemType <= PageItemType.Page); if (childs.Count == 0) { return; } foreach (var child in childs.OrderBy(p => p.Index)) { var node = new EasyUiTreeNode { ID = child.Id, IsOpen = true, Tag = child.Name, Attributes = child.ItemType.ToString(), Text = child.Caption, IsFolder = true }; switch (child.ItemType) { case PageItemType.Folder: node.Icon = "icon-tree-folder"; node.IsOpen = false; break; case PageItemType.Page: node.Icon = "icon-tree-page"; break; case PageItemType.Action: node.Icon = "icon-tree-action"; break; case PageItemType.Button: node.Icon = "icon-tree-button"; break; } LoadTreeForUi(child.Id, node); parent.Children.Add(node); } }
/// <summary> /// 生成角色菜单 /// </summary> static void CreateRoleMenu(EasyUiTreeNode parentNode, List <PageItemData> pages, PageItemData page) { var node = CreatePageNode(page); node.Attributes = page.Url; node.Tag = page.Url == "Folder" ? "folder" : "page"; var array = pages.Where(p => p.ParentId == page.Id && p.ItemType <= PageItemType.Page && !p.Config.Hide).OrderBy(p => p.Index).ToArray(); if (array.Length > 0) { node.IsFolder = true; } foreach (var ch in array) { CreateRoleMenu(node, pages, ch); } if (page.ItemType == PageItemType.Page || node.HaseChildren) { parentNode.Children.Add(node); } }
/// <summary> /// 载入角色的树形页面权限数据 /// </summary> /// <param name="node"></param> /// <param name="powers"></param> /// <returns></returns> static void SyncPower(EasyUiTreeNode node, Dictionary <int, RolePowerData> powers) { if (node.Children == null) { return; } if (node.Tag == "page") { node.IsOpen = false; } foreach (var item in node.Children) { SyncPower(item, powers); RolePowerData pwoer; if (!powers.TryGetValue(item.ID, out pwoer)) { continue; } item.Extend = item.Extend; item.Attributes = ((int)pwoer.DataScope).ToString(); item.IsSelect = true; } }
/// <summary> /// 生成角色菜单 /// </summary> static List <EasyUiTreeNode> CreateMenu(RedisProxy proxy) { var root = new EasyUiTreeNode { ID = 0, IsOpen = true, Text = ConfigurationManager.AppSettings["ProjectName"], IsFolder = true }; var access = new PageItemDataAccess(); var pages = access.All(p => p.ItemType <= PageItemType.Page); foreach (var folder in pages.Where(p => p.ItemType == PageItemType.Root).OrderBy(p => p.Index)) { var node = new EasyUiTreeNode { IsOpen = true, Text = folder.Caption, Icon = "icon-item", Attributes = "home.aspx", Tag = folder.ExtendValue, IsFolder = true }; foreach (var page in pages.Where(p => p.ParentId == folder.Id && p.ItemType <= PageItemType.Page).OrderBy(p => p.Index)) { CreateRoleMenu(node, pages, page); } if (node.HaseChildren) { root.Children.Add(node); } } var result = root.Children.OrderByDescending(p => p.ID).ToList( ); proxy.Set(DataKeyBuilder.ToKey("auth", "menu", 0), result); return(result); }