| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- @page "/system/menu"
- @using AntDesign.TableModels
- @attribute [ReuseTabsPage(Title = "菜单管理")]
- <Spin Spinning="Loading">
- <Table @ref="Table" AutoHeight TItem="SystemMenu" DataSource="DataSource" @bind-PageSize="Ps" @bind-PageIndex="Pi"
- TreeChildren="item=>item.Children" @bind-SelectedRows="SelectedRows" OnChange="OnChange">
- <ColumnDefinitions Context="row">
- <PropertyColumn Align="ColumnAlign.Left" Property="c => c.Name" Title="菜单名称" />
- <PropertyColumn Align="ColumnAlign.Left" Property="c => c.Path" Title="路由" />
- <PropertyColumn Align="ColumnAlign.Center" Width="100" Property="c=>c.Enabled" Title="是否启用">
- @if (row.ParentId != 0)
- {
- <Switch Checked="@row.Enabled" @bind-Value="@row.Enabled" CheckedChildren="启用" UnCheckedChildren="禁用" OnChange="() => CheckedChanged(row)" />
- }
- </PropertyColumn>
- <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.Necessary" Title="是否必需">
- @{
- var tag = row.Necessary ? "必需" : "非必需";
- var color = row.Necessary ? TagColor.Green : TagColor.Blue;
- }
- <Tag Color="@color">@tag</Tag>
- </PropertyColumn>
- <PropertyColumn Align="ColumnAlign.Center" Property="c => c.Key" Title="自定义唯一键值" />
- <PropertyColumn Align="ColumnAlign.Center" Property="c => c.Icon" Title="图标">
- @{
- var type = row.Icon;
- }
- <Icon Type="@type" Theme="IconThemeType.Outline" />
- </PropertyColumn>
- <PropertyColumn Align="ColumnAlign.Center" Property="c => c.Sort" Title="排序" />
- </ColumnDefinitions>
- <PaginationTemplate>
- <Pagination Class="@(context.PaginationClass + " my-custom-pagination")"
- Total="context.Total"
- PageSize="context.PageSize"
- Current="context.PageIndex"
- ShowSizeChanger
- OnChange="context.HandlePageChange" />
- </PaginationTemplate>
- </Table>
- </Spin>
- @inject ModalService ModalService;
- @inject ConfirmService ComfirmService;
- @inject IMessageService Message;
- @inject NavigationManager NavigationManager;
- @inject SqlSugarRepository<SystemMenu> Repository;
- @inject IJSRuntime IJSRuntime;
- @code {
- /// <summary>
- /// 查
- /// </summary>
- /// <returns></returns>
- private async Task Query()
- {
- Loading = true;
- DataSource = await Repository.AsQueryable().OrderBy(x => x.Sort).ToTreeAsync(x => x.Children, x => x.ParentId, 0);
- Loading = false;
- }
- protected override async void OnInitialized()
- {
- }
- protected override async Task OnAfterRenderAsync(bool firstRender)
- {
- if (firstRender)
- {
- await NavigationManager.RedirectLogin(IJSRuntime);
- await Query();
- }
- }
- private async Task OnChange(QueryModel<SystemMenu> query)
- => await Query();
- private void CheckedChanged(SystemMenu row)
- {
- Repository.AsUpdateable()
- .SetColumns(x => x.Enabled == row.Enabled)
- .Where(x => x.Id == row.Id)
- .ExecuteCommand();
- }
- /// <summary>
- ///
- /// </summary>
- private ITable Table;
- /// <summary>
- ///
- /// </summary>
- private IEnumerable<SystemMenu> SelectedRows = [];
- /// <summary>
- ///
- /// </summary>
- private List<SystemMenu> DataSource;
- /// <summary>
- ///
- /// </summary>
- private int Pi = 1;
- /// <summary>
- ///
- /// </summary>
- private int Ps = 20;
- /// <summary>
- ///
- /// </summary>
- private bool Loading = false;
- }
|