新增MES模块,包含供应商、客户、车辆和地磅数据记录管理功能,支持免密接口和数据同步。更新相关控制器、实体、服务和数据库配置,优化权限管理和数据字典支持,确保系统的灵活性和可扩展性。
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Windows.Threading;
|
||||
using YY.Admin.Core;
|
||||
using YY.Admin.Core.Util;
|
||||
using YY.Admin.Event;
|
||||
using Prism.Events;
|
||||
using YY.Admin.Module;
|
||||
using YY.Admin.Services;
|
||||
using YY.Admin.Services.Service.Menu;
|
||||
@@ -64,7 +65,40 @@ namespace YY.Admin.ViewModels.Control
|
||||
["/system/tenant"] = "TenantManagementView",
|
||||
["/system/tenant/index"] = "TenantManagementView",
|
||||
["/platform/tenant"] = "TenantManagementView",
|
||||
["sysTenant"] = "TenantManagementView"
|
||||
["sysTenant"] = "TenantManagementView",
|
||||
|
||||
// 已实现页面:菜单管理
|
||||
["MenuManagementView"] = "MenuManagementView",
|
||||
["/platform/menu"] = "MenuManagementView",
|
||||
["/system/menu/index"] = "MenuManagementView",
|
||||
["sysMenu"] = "MenuManagementView",
|
||||
|
||||
// 已实现页面:登录设置
|
||||
["LoginSettingsView"] = "LoginSettingsView",
|
||||
["/system/loginSettings"] = "LoginSettingsView",
|
||||
["/system/login-setting"] = "LoginSettingsView",
|
||||
["/system/login-settings"] = "LoginSettingsView",
|
||||
["loginSettings"] = "LoginSettingsView",
|
||||
["登录设置"] = "LoginSettingsView",
|
||||
["登陆设置"] = "LoginSettingsView",
|
||||
|
||||
// 已实现页面:车辆管理
|
||||
["VehicleListView"] = "VehicleListView",
|
||||
["/xslmes/mesXslVehicle"] = "VehicleListView",
|
||||
["/xslmes/vehicle"] = "VehicleListView",
|
||||
["mesXslVehicle"] = "VehicleListView",
|
||||
|
||||
// 已实现页面:客户管理
|
||||
["CustomerListView"] = "CustomerListView",
|
||||
["/xslmes/mesXslCustomer"] = "CustomerListView",
|
||||
["/xslmes/customer"] = "CustomerListView",
|
||||
["mesXslCustomer"] = "CustomerListView",
|
||||
|
||||
// 已实现页面:供应商管理
|
||||
["SupplierListView"] = "SupplierListView",
|
||||
["/xslmes/mesXslSupplier"] = "SupplierListView",
|
||||
["/xslmes/supplier"] = "SupplierListView",
|
||||
["mesXslSupplier"] = "SupplierListView"
|
||||
};
|
||||
|
||||
private MenuItem? _selectedMenuItem;
|
||||
@@ -83,6 +117,7 @@ namespace YY.Admin.ViewModels.Control
|
||||
|
||||
private SubscriptionToken? tabSelectedToken;
|
||||
private SubscriptionToken? tabClosedToken;
|
||||
private SubscriptionToken? _menuStructureToken;
|
||||
|
||||
public MenuTreeViewModel(
|
||||
ISysMenuService sysMenuService,
|
||||
@@ -99,10 +134,30 @@ namespace YY.Admin.ViewModels.Control
|
||||
// 订阅事件
|
||||
tabSelectedToken = _eventAggregator.GetEvent<TabSelectedEvent>().Subscribe(OnTabSelected);
|
||||
tabClosedToken = _eventAggregator.GetEvent<TabClosedEvent>().Subscribe(OnTabClosed);
|
||||
_menuStructureToken = _eventAggregator.GetEvent<MenuStructureChangedEvent>()
|
||||
.Subscribe(async _ => await ReloadMenusAsync(), ThreadOption.UIThread);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 菜单数据变更后刷新左侧树(不重复执行默认页签导航)
|
||||
/// </summary>
|
||||
private async Task ReloadMenusAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
var menuTree = await _sysMenuService.GetLoginMenuTree();
|
||||
MenuItems.Clear();
|
||||
ConvertMenuTreeToViewModel(menuTree);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error($"菜单重新加载失败: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenOrActivateTab(MenuItem menuItem)
|
||||
{
|
||||
_logger.Debug($"菜单点击触发: Name={menuItem?.Name}, ViewName={menuItem?.ViewName}, ChildrenCount={menuItem?.Children?.Count ?? 0}");
|
||||
// 发布事件
|
||||
_eventAggregator.GetEvent<TabSourceSelectedEvent>().Publish(menuItem);
|
||||
}
|
||||
@@ -169,6 +224,7 @@ namespace YY.Admin.ViewModels.Control
|
||||
/// </summary>
|
||||
private void ConvertMenuTreeToViewModel(List<MenuOutput> menuTree)
|
||||
{
|
||||
MenuItems.Clear();
|
||||
// 过滤并排序菜单项:只包含目录和菜单类型,排除按钮类型,并按排序号排序
|
||||
var rootMenus = menuTree
|
||||
.Where(m => m.Type == MenuTypeEnum.Dir || m.Type == MenuTypeEnum.Menu)
|
||||
@@ -244,10 +300,14 @@ namespace YY.Admin.ViewModels.Control
|
||||
continue;
|
||||
|
||||
if (RouteToViewMap.TryGetValue(candidate.Trim(), out var viewName))
|
||||
{
|
||||
_logger.Debug($"菜单路由命中: Title={menu.Title}, Candidate={candidate}, View={viewName}");
|
||||
return viewName;
|
||||
}
|
||||
}
|
||||
|
||||
// 保留原始Path,若未注册将统一展示NotFoundView
|
||||
_logger.Warning($"菜单路由未命中映射: Title={menu.Title}, Path={menu.Path}, Component={menu.Component}, Name={menu.Name}");
|
||||
return menu.Path;
|
||||
}
|
||||
|
||||
@@ -336,6 +396,12 @@ namespace YY.Admin.ViewModels.Control
|
||||
.Unsubscribe(tabClosedToken);
|
||||
tabClosedToken = null;
|
||||
}
|
||||
|
||||
if (_menuStructureToken != null)
|
||||
{
|
||||
_eventAggregator.GetEvent<MenuStructureChangedEvent>().Unsubscribe(_menuStructureToken);
|
||||
_menuStructureToken = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user