优化桌面端无用菜单和地磅数据可手动功能。

This commit is contained in:
geht
2026-05-18 15:55:11 +08:00
parent 5800b6b61c
commit c11f3104cb
18 changed files with 628 additions and 118 deletions

View File

@@ -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 ?? "&#xe810;");
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)