95 lines
3.0 KiB
C#
95 lines
3.0 KiB
C#
using HandyControl.Controls;
|
|
using YY.Admin.Core;
|
|
using YY.Admin.Core.Extension;
|
|
using YY.Admin.Core.Helper;
|
|
using YY.Admin.Services.Service;
|
|
using YY.Admin.ViewModels.Control;
|
|
|
|
namespace YY.Admin.ViewModels.SysManage;
|
|
|
|
public class DataDictionaryManagementViewModel : BaseViewModel
|
|
{
|
|
private readonly IJeecgDictSyncService _dictSyncService;
|
|
|
|
private PaginationDataGridViewModel<JeecgDictItemOutput> _paginationDataGridViewModel;
|
|
public PaginationDataGridViewModel<JeecgDictItemOutput> PaginationDataGridViewModel
|
|
{
|
|
get => _paginationDataGridViewModel;
|
|
set => SetProperty(ref _paginationDataGridViewModel, value);
|
|
}
|
|
|
|
private PageJeecgDictItemInput _input;
|
|
public PageJeecgDictItemInput Input
|
|
{
|
|
get => _input;
|
|
set => SetProperty(ref _input, value);
|
|
}
|
|
|
|
public List<KeyValuePair<string, int>> StatusList =>
|
|
Enum.GetValues(typeof(StatusEnum))
|
|
.Cast<StatusEnum>()
|
|
.Select(e => new KeyValuePair<string, int>(e.GetDescription(), (int)e))
|
|
.ToList();
|
|
|
|
public DelegateCommand SearchCommand { get; }
|
|
public DelegateCommand ResetCommand { get; }
|
|
public DelegateCommand SyncCommand { get; }
|
|
|
|
public DataDictionaryManagementViewModel(
|
|
IJeecgDictSyncService dictSyncService,
|
|
IContainerExtension container,
|
|
IRegionManager regionManager) : base(container, regionManager)
|
|
{
|
|
_dictSyncService = dictSyncService;
|
|
_paginationDataGridViewModel = new PaginationDataGridViewModel<JeecgDictItemOutput>(FetchAsync);
|
|
_input = new PageJeecgDictItemInput();
|
|
|
|
SearchCommand = new DelegateCommand(async () => await SearchAsync());
|
|
ResetCommand = new DelegateCommand(async () => await ResetAsync());
|
|
SyncCommand = new DelegateCommand(async () => await SyncAsync());
|
|
|
|
_ = InitializeAsync();
|
|
}
|
|
|
|
private async Task InitializeAsync()
|
|
{
|
|
await UIHelper.WaitForRenderAsync();
|
|
await PaginationDataGridViewModel.LoadDataAsync();
|
|
}
|
|
|
|
private async Task<(IEnumerable<JeecgDictItemOutput> data, int totalCount)> FetchAsync()
|
|
{
|
|
Input.Page = PaginationDataGridViewModel.PageIndex;
|
|
Input.PageSize = PaginationDataGridViewModel.DataCountPerPage;
|
|
var result = await _dictSyncService.PageAsync(Input);
|
|
return (result.Items, result.Total);
|
|
}
|
|
|
|
private async Task SearchAsync()
|
|
{
|
|
PaginationDataGridViewModel.PageIndex = 1;
|
|
await PaginationDataGridViewModel.LoadDataAsync();
|
|
}
|
|
|
|
private async Task ResetAsync()
|
|
{
|
|
Input = new PageJeecgDictItemInput();
|
|
await UIHelper.WaitForRenderAsync();
|
|
await SearchAsync();
|
|
}
|
|
|
|
private async Task SyncAsync()
|
|
{
|
|
var count = await _dictSyncService.SyncFromJeecgAsync();
|
|
if (count > 0)
|
|
{
|
|
Growl.Success($"同步完成,共处理 {count} 条数据字典项");
|
|
}
|
|
else
|
|
{
|
|
Growl.Warning("未同步到数据字典,请确认后端可访问");
|
|
}
|
|
await SearchAsync();
|
|
}
|
|
}
|