Files
KinginfoGateway/src/Admin/ThingsGateway.Admin.Razor/Pages/Resource/SysResourcePage.razor.cs

165 lines
5.4 KiB
C#
Raw Normal View History

2025-01-24 22:42:26 +08:00
//------------------------------------------------------------------------------
// 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
// 此代码版权除特别声明外的代码归作者本人Diego所有
// 源代码使用协议遵循本仓库的开源协议及附加协议
// Gitee源代码仓库https://gitee.com/diego2098/ThingsGateway
// Github源代码仓库https://github.com/kimdiego2098/ThingsGateway
// 使用文档https://thingsgateway.cn/
// QQ群605534569
//------------------------------------------------------------------------------
using ThingsGateway.Admin.Application;
namespace ThingsGateway.Admin.Razor;
public partial class SysResourcePage
{
private ResourceTableSearchModel CustomerSearchModel { get; set; } = new ResourceTableSearchModel();
private List<SelectedItem> ModuleSelectedItems { get; set; }
private List<TreeViewItem<SysResource>> MenuTreeItems { get; set; }
private List<SelectedItem> MenuItems { get; set; }
[CascadingParameter(Name = "ReloadMenu")]
private Func<Task>? ReloadMenu { get; set; }
[CascadingParameter(Name = "ReloadUser")]
private Func<Task>? ReloadUser { get; set; }
[Inject]
[NotNull]
private ISysResourceService? SysResourceService { get; set; }
protected override async Task OnInitializedAsync()
{
CustomerSearchModel.Module = (await SysResourceService.GetAllAsync()).FirstOrDefault(a => a.Category == ResourceCategoryEnum.Module)?.Id ?? ResourceConst.SystemId;
await base.OnInitializedAsync();
}
protected override async Task OnParametersSetAsync()
{
2025-08-09 13:07:08 +08:00
ModuleSelectedItems = AdminResourceUtil.BuildModuleSelectList((await SysResourceService.GetAllAsync())).ToList();
MenuItems = AdminResourceUtil.BuildMenuSelectList((await SysResourceService.GetAllAsync())).Concat(new List<SelectedItem>() { new("0", AdminLocalizer["Root"]) }).ToList();
2025-01-24 22:42:26 +08:00
await base.OnParametersSetAsync();
}
#region
private async Task<QueryData<SysResource>> OnQueryAsync(QueryPageOptions options)
{
2025-08-09 13:07:08 +08:00
MenuTreeItems = new List<TreeViewItem<SysResource>>() { new TreeViewItem<SysResource>(new SysResource()) { Text = AdminLocalizer["Root"] } }.Concat(AdminResourceUtil.BuildTreeItemList((await SysResourceService.GetAllAsync()).Where(a => a.Module == CustomerSearchModel.Module), new(), null)).ToList();
2025-01-24 22:42:26 +08:00
var data = await SysResourceService.PageAsync(options, CustomerSearchModel);
return data;
}
#endregion
#region
private List<SysResource> SelectedRows { get; set; } = new();
private long CopyModule { get; set; }
private long ChangeParentId { get; set; }
private async Task OnCopy()
{
try
{
await SysResourceService.CopyAsync(SelectedRows.Select(a => a.Id), CopyModule);
await table.QueryAsync();
await ToastService.Default();
}
catch (Exception ex)
{
await ToastService.Warn(ex);
}
}
private async Task OnChangeParent()
{
try
{
await SysResourceService.ChangeParentAsync(SelectedRows.Select(a => a.Id).FirstOrDefault(), ChangeParentId);
await table.QueryAsync();
await ToastService.Default();
}
catch (Exception ex)
{
await ToastService.Warn(ex);
}
}
private async Task<bool> Delete(IEnumerable<SysResource> sysResources)
{
try
{
2025-07-24 19:46:30 +08:00
var result = await SysResourceService.DeleteResourceAsync(sysResources.Select(a => a.Id).ToHashSet());
2025-01-24 22:42:26 +08:00
if (ReloadUser != null)
{
await ReloadUser();
}
return result;
}
catch (Exception ex)
{
await ToastService.Warn(ex);
return false;
}
}
private async Task<bool> Save(SysResource sysResource, ItemChangedType itemChangedType)
{
try
{
if (itemChangedType == ItemChangedType.Add && sysResource.Category != ResourceCategoryEnum.Module)
sysResource.Module = CustomerSearchModel.Module;
var result = await SysResourceService.SaveResourceAsync(sysResource, itemChangedType);
if (ReloadUser != null)
{
await ReloadUser();
}
return result;
}
catch (Exception ex)
{
await ToastService.Warn(ex);
return false;
}
}
#endregion
#region
private static bool ModelEqualityComparer(SysResource x, SysResource y) => x.Id == y.Id;
private async Task<IEnumerable<TableTreeNode<SysResource>>> OnTreeExpand(SysResource menu)
{
var sysResources = await SysResourceService.GetAllAsync();
2025-08-09 13:07:08 +08:00
var result = AdminResourceUtil.BuildTableTrees(sysResources, menu.Id);
2025-01-24 22:42:26 +08:00
return result;
}
private static async Task<IEnumerable<TableTreeNode<SysResource>>> TreeNodeConverter(IEnumerable<SysResource> items)
{
await Task.CompletedTask;
2025-08-09 13:07:08 +08:00
var result = AdminResourceUtil.BuildTableTrees(items, 0);
2025-01-24 22:42:26 +08:00
return result;
}
#endregion
#region
private async Task OnAfterModifyAsync()
{
if (ReloadMenu != null)
{
await ReloadMenu();
}
await OnParametersSetAsync();
}
#endregion
}