优化桌面端无用菜单和地磅数据可手动功能。
This commit is contained in:
@@ -19,6 +19,11 @@ namespace YY.Admin.ViewModels.Control
|
||||
public MenuItem? Parent { get; set; } // 父节点引用
|
||||
public ObservableCollection<MenuItem> Children { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// 是否为桌面端配置的默认首页
|
||||
/// </summary>
|
||||
public bool IsDefaultDesktopHome { get; set; }
|
||||
|
||||
|
||||
private bool _isExpanded;
|
||||
|
||||
@@ -300,6 +305,7 @@ namespace YY.Admin.ViewModels.Control
|
||||
target.Icon = ConvertHtmlEntityToUnicode(source?.Icon ?? "");
|
||||
target.ViewName = ResolveViewName(source); // 将菜单路由映射到已注册的WPF视图
|
||||
target.Parent = parent; // 设置父节点
|
||||
target.IsDefaultDesktopHome = source?.IsDefaultDesktopHome == true;
|
||||
|
||||
// 添加子菜单(如果有)
|
||||
if (source.Children != null && source.Children.Any())
|
||||
@@ -389,8 +395,9 @@ namespace YY.Admin.ViewModels.Control
|
||||
{
|
||||
try
|
||||
{
|
||||
// 默认菜单
|
||||
var defaultMenuItem = GetFirstLeaf(MenuItems.FirstOrDefault());
|
||||
// 优先使用菜单管理中勾选的「默认首页」,否则取排序后的第一个叶子菜单
|
||||
var defaultMenuItem = FindDefaultHomeLeaf(MenuItems)
|
||||
?? GetFirstLeaf(MenuItems.FirstOrDefault());
|
||||
if (defaultMenuItem != null)
|
||||
{
|
||||
// Tab不允许关闭
|
||||
@@ -419,6 +426,31 @@ namespace YY.Admin.ViewModels.Control
|
||||
return GetFirstLeaf(menu.Children.FirstOrDefault());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按先序遍历查找第一个标记为默认首页的叶子节点(与左侧树展示顺序一致)
|
||||
/// </summary>
|
||||
private static MenuItem? FindDefaultHomeLeaf(IEnumerable<MenuItem>? nodes)
|
||||
{
|
||||
if (nodes == null)
|
||||
return null;
|
||||
|
||||
foreach (var m in nodes)
|
||||
{
|
||||
if (m.Children is not { Count: > 0 })
|
||||
{
|
||||
if (m.IsDefaultDesktopHome)
|
||||
return m;
|
||||
continue;
|
||||
}
|
||||
|
||||
var sub = FindDefaultHomeLeaf(m.Children);
|
||||
if (sub != null)
|
||||
return sub;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void ToggleParents(MenuItem? item, bool IsExpanded)
|
||||
{
|
||||
if (item == null)
|
||||
|
||||
Reference in New Issue
Block a user