Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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",
                });
            }
        }
Пример #5
0
        /// <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));
        }
Пример #6
0
        /// <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);
            }
        }
Пример #7
0
        /// <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);
        }
Пример #9
0
        /// <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);
        }
Пример #11
0
        /// <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);
            }
        }
Пример #12
0
        /// <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);
            }
        }
Пример #13
0
 /// <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;
     }
 }
Пример #14
0
        /// <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);
        }