胶料快检添加离线模式

This commit is contained in:
2026-06-30 11:28:04 +08:00
parent efcd73a565
commit 840e68a450
19 changed files with 1053 additions and 343 deletions

View File

@@ -195,6 +195,7 @@ namespace YY.Admin.ViewModels
private SubscriptionToken? _openOrActivateTabToken;
private SubscriptionToken? _tabClosedToken;
private SubscriptionToken? _tabCloseRequestToken;
private SubscriptionToken? _refreshTabToken;
private SubscriptionToken? _loginOutToken;
@@ -235,6 +236,7 @@ namespace YY.Admin.ViewModels
// 订阅事件
_openOrActivateTabToken = _eventAggregator.GetEvent<TabSourceSelectedEvent>().Subscribe(OnOpenOrActivateTab);
_tabClosedToken = _eventAggregator.GetEvent<TabClosedEvent>().Subscribe(OnTabClosed);
_tabCloseRequestToken = _eventAggregator.GetEvent<TabCloseRequestEvent>().Subscribe(OnTabCloseRequest, ThreadOption.UIThread);
_refreshTabToken = _eventAggregator.GetEvent<TabRefreshEvent>().Subscribe(OnRefreshTab);
_loginOutToken = _eventAggregator.GetEvent<SysUserEvents.LoginOutEvent>().Subscribe(Destroy);
@@ -489,6 +491,48 @@ namespace YY.Admin.ViewModels
_ = NavigateToViewAsync(CommonConst.ContentRegion, tabItemModel.ViewName, tabItemModel.TabSource.NavigationParameter);
}
/// <summary>
/// 按 ViewName 关闭 Tab并可选激活指定页面
/// </summary>
private void OnTabCloseRequest(TabCloseRequestPayload payload)
{
if (payload == null || string.IsNullOrWhiteSpace(payload.ViewNameToClose))
{
return;
}
var tabsToClose = OpenTabs
.Where(t => t.IsClosable
&& string.Equals(t.ViewName, payload.ViewNameToClose, StringComparison.OrdinalIgnoreCase))
.ToList();
foreach (var tab in tabsToClose)
{
_eventAggregator.GetEvent<TabClosedEvent>().Publish(tab);
OpenTabs.Remove(tab);
}
if (string.IsNullOrWhiteSpace(payload.ActivateViewName))
{
return;
}
var existingTab = OpenTabs.FirstOrDefault(t =>
string.Equals(t.ViewName, payload.ActivateViewName, StringComparison.OrdinalIgnoreCase));
if (existingTab != null)
{
SelectedTab = existingTab;
return;
}
OnOpenOrActivateTab(new TabSource
{
Name = payload.ActivateTabName ?? payload.ActivateViewName,
Icon = "\ue7de",
ViewName = payload.ActivateViewName
});
}
/// <summary>
/// TabItem关闭回调
/// </summary>
@@ -764,6 +808,15 @@ namespace YY.Admin.ViewModels
_tabClosedToken = null;
}
if (_tabCloseRequestToken != null)
{
_eventAggregator
.GetEvent<TabCloseRequestEvent>()
.Unsubscribe(_tabCloseRequestToken);
_tabCloseRequestToken = null;
}
if (_refreshTabToken != null)
{
_eventAggregator