菜单页限制仅显示2层,避免菜单太多页面太长
This commit is contained in:
parent
e2662097f6
commit
97e16081c5
|
@ -80,7 +80,7 @@ public class EntityTreeController<TEntity, TModel> : EntityController<TEntity, T
|
|||
{
|
||||
var pkey = p[set.Parent].ToInt(-1);
|
||||
if (pkey >= 0)
|
||||
return EntityTree<TEntity>.FindAllChildsNoParent(pkey);
|
||||
return EntityTree<TEntity>.FindAllChildsByParent(pkey);
|
||||
}
|
||||
|
||||
return EntityTree<TEntity>.Root.AllChilds;
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
using System.ComponentModel;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace NewLife.Cube.Areas.Admin.Controllers;
|
||||
|
@ -15,4 +17,29 @@ public class MenuController : EntityTreeController<Menu, MenuModel>
|
|||
// 过滤要显示的字段
|
||||
ListFields.RemoveField("Remark");
|
||||
}
|
||||
|
||||
/// <summary>实体树的数据来自缓存</summary>
|
||||
/// <param name="p"></param>
|
||||
/// <returns></returns>
|
||||
protected override IEnumerable<Menu> Search(Pager p)
|
||||
{
|
||||
// 一页显示全部菜单,取自缓存
|
||||
p.PageSize = 10000;
|
||||
|
||||
var menus = EntityTree<Menu>.Root.AllChilds.Where(e => e.Deepth <= 2).ToList();
|
||||
|
||||
var set = GetSetting();
|
||||
if (set != null && !set.Parent.IsNullOrEmpty())
|
||||
{
|
||||
var pkey = p[set.Parent].ToInt(-1);
|
||||
if (pkey >= 0)
|
||||
{
|
||||
var m = XCode.Membership.Menu.FindByID(pkey);
|
||||
var deepth = ((m?.Deepth - 1) ?? 0) + 2;
|
||||
menus = EntityTree<Menu>.FindAllChildsByParent(pkey).Where(e => e.Deepth <= deepth).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
return menus;
|
||||
}
|
||||
}
|
|
@ -269,11 +269,7 @@ public class IndexController : ControllerBaseX
|
|||
// 如果顶级只有一层,并且至少有三级目录,则提升一级
|
||||
if (menus.Count == 1 && menus[0].Childs.All(m => m.Childs.Count > 0)) { menus = menus[0].Childs; }
|
||||
|
||||
var menuTree = MenuTree.GetMenuTree(pMenuTree =>
|
||||
{
|
||||
var subMenus = fact.GetMySubMenus(pMenuTree.ID, user, true);
|
||||
return subMenus;
|
||||
}, list =>
|
||||
var menuTree = MenuTree.GetMenuTree(m => fact.GetMySubMenus(m.ID, user, true), list =>
|
||||
{
|
||||
|
||||
var menuList = (from menu in list
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<td class="text-center"><input type="checkbox" name="keys" value="@entity.ID" /></td>
|
||||
}
|
||||
<td class="text-center">@entity.ID</td>
|
||||
<td>@entity.TreeNodeName</td>
|
||||
<td><a href="?parentId=@entity.ID">@entity.TreeNodeName</a></td>
|
||||
<td class="text-center">
|
||||
@if (entity.Icon.StartsWithIgnoreCase("fa-"))
|
||||
{
|
||||
|
|
|
@ -118,7 +118,7 @@ public class EntityTreeController<TEntity, TModel> : EntityController<TEntity, T
|
|||
{
|
||||
var pkey = p[set.Parent].ToInt(-1);
|
||||
if (pkey >= 0)
|
||||
return EntityTree<TEntity>.FindAllChildsNoParent(pkey);
|
||||
return EntityTree<TEntity>.FindAllChildsByParent(pkey);
|
||||
}
|
||||
|
||||
return EntityTree<TEntity>.Root.AllChilds;
|
||||
|
|
|
@ -1,47 +1,30 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace NewLife.Cube.ViewModels;
|
||||
|
||||
namespace NewLife.Cube.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// 菜单树
|
||||
/// </summary>
|
||||
/// <summary>菜单树</summary>
|
||||
public class MenuTree
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
/// <summary>编号</summary>
|
||||
public Int32 ID { get; set; }
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
|
||||
/// <summary>名称</summary>
|
||||
public String Name { get; set; }
|
||||
/// <summary>
|
||||
/// 显示名
|
||||
/// </summary>
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
public String DisplayName { get; set; }
|
||||
|
||||
/// <summary>全名</summary>
|
||||
public String FullName { get; set; }
|
||||
/// <summary>
|
||||
/// 父级id
|
||||
/// </summary>
|
||||
|
||||
/// <summary>父级编号</summary>
|
||||
public Int32? ParentID { get; set; }
|
||||
/// <summary>
|
||||
/// 链接
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
|
||||
/// <summary>链接</summary>
|
||||
public String Url { get; set; }
|
||||
/// <summary>
|
||||
/// 图标
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
|
||||
/// <summary>图标</summary>
|
||||
public String Icon { get; set; }
|
||||
/// <summary>
|
||||
/// 是否可见
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
|
||||
/// <summary>是否可见</summary>
|
||||
public Boolean Visible { get; set; }
|
||||
|
||||
/// <summary>是否新窗口打开</summary>
|
||||
|
@ -49,10 +32,8 @@ namespace NewLife.Cube.ViewModels
|
|||
|
||||
/// <summary>可选权限子项</summary>
|
||||
public Dictionary<Int32, String> Permissions { get; set; }
|
||||
/// <summary>
|
||||
/// 子菜单
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
|
||||
/// <summary>子菜单</summary>
|
||||
public IList<MenuTree> Children { get => GetChildren?.Invoke(this) ?? null; set { } }
|
||||
|
||||
/// <summary>
|
||||
|
@ -67,8 +48,7 @@ namespace NewLife.Cube.ViewModels
|
|||
/// <param name="getMenuList">获取菜单列表的方法</param>
|
||||
/// <param name="src">获取菜单列表的初始数据来源</param>
|
||||
/// <returns></returns>
|
||||
public static IList<MenuTree> GetMenuTree<T>(Func<MenuTree, T> getChildrenSrc,
|
||||
Func<T, IList<MenuTree>> getMenuList, T src) where T : class
|
||||
public static IList<MenuTree> GetMenuTree<T>(Func<MenuTree, T> getChildrenSrc, Func<T, IList<MenuTree>> getMenuList, T src) where T : class
|
||||
{
|
||||
GetChildren = m => getMenuList?.Invoke(getChildrenSrc(m));
|
||||
|
||||
|
@ -81,4 +61,3 @@ namespace NewLife.Cube.ViewModels
|
|||
/// <returns></returns>
|
||||
public override String ToString() => Name;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue