using AntDesign.TableModels; using EasyTemplate.Tool; using EasyTemplate.Tool.Util; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using SqlSugar; namespace EasyTemplate.Blazor.Web.Components.Pages.Management.User; public partial class User { protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { await NavigationManager.RedirectLogin(IJSRuntime); //await Query(); var area = await _area.AsQueryable().OrderBy(x => x.Sort).ToTreeAsync(x => x.Children, x => x.ParentCode, 0, x => x.AreaCode); Areas = area.Select(ConvertToAreaItem).ToList(); Roles = _role.GetList(x => x.Enabled == true); Departments = _department.GetList(x => x.Enabled == true); } } private CascaderNode ConvertToAreaItem(SystemArea area) { return new CascaderNode { Value = area.Id.ToString(), Label = area.AreaName, Children = area.Children?.Select(ConvertToAreaItem).ToArray() }; } /// /// 查 /// /// private async Task Query() { Loading = true; RefAsync total = 0; var list = await _repository.AsQueryable() .LeftJoin((c, u) => c.RoleId == u.Id) .LeftJoin((c, u, d) => c.DepartmentId == d.Id) .WhereIF(!string.IsNullOrWhiteSpace(Q_Account), (c, u, d) => c.Account.Contains(Q_Account)) .OrderByDescending((c, u, d) => c.Id) .Select((c, u, d) => new SystemUser { Id = c.Id, Avatar = c.Avatar, Account = c.Account, NickName = c.NickName, RoleId = c.RoleId, RoleName = u.Name, DepartmentId = c.DepartmentId, DepartmentName = d.Name, Mobile = c.Mobile, Email = c.Email, Address = c.Address, Enabled = c.Enabled, Signature = c.Signature, AreaIds = c.AreaIds, CreateTime = c.CreateTime }) .ToPageListAsync(Pi, Ps, total); list.ForEach(x => { if (!string.IsNullOrWhiteSpace(x.AreaIds)) { var ids = x.AreaIds?.Split(','); x.LastAreadId = ids[^1].Trim(); var area = _area.AsQueryable() .Where(item => SqlFunc.SplitIn(x.AreaIds, item.Id.ToString())) .Select(item => item.AreaName) .ToArray(); x.Area = $"{string.Join(" ", area)} {x.Address}"; } }); Total = total.Value; DataSource = list; Loading = false; } /// /// 增/改 /// /// /// private async Task InsertOrUpdate(SystemUser data) { if (data.Id == 0) { if (data.Password != data.ConfirmPassword) { MessageService.Error("两次输入密码不一致"); return false; } if (await _repository.AsQueryable().AnyAsync(x => x.Account.ToLower() == data.Account.ToLower() || x.NickName.ToLower() == data.NickName.ToLower())) { MessageService.Error("该账号名已存在"); return false; } return await _repository.AsInsertable(data).ExecuteCommandAsync() > 0; } else { if (await _repository.AsQueryable().AnyAsync(x => x.NickName.ToLower() == data.NickName.ToLower() && x.Id != data.Id)) { MessageService.Error("该账号名已存在"); return false; } var res = await _repository.AsUpdateable() .SetColumns(x => x.NickName == data.NickName) .SetColumns(x => x.RoleId == data.RoleId) .SetColumns(x => x.DepartmentId == data.DepartmentId) .SetColumns(x => x.Mobile == data.Mobile) .SetColumns(x => x.Email == data.Email) .SetColumns(x => x.Address == data.Address) .SetColumns(x => x.Enabled == data.Enabled) .SetColumns(x => x.Signature == data.Signature) .SetColumns(x => x.AreaIds == AreadIds) .Where(x => x.Id == data.Id) .ExecuteCommandAsync() > 0; return res; } } /// /// 删除 /// /// /// private async Task Delete(SystemUser row) { if (row.Account.ToLower().Contains("admin")) { MessageService.Error("不能删除超级管理员"); return; } if (!await Comfirm($"确认删除 [{row.Account}] ?")) return; var flag = await _repository.AsUpdateable() .SetColumns(x => x.IsDelete == true) .Where(x => x.Id == row.Id) .ExecuteCommandAsync() > 0; _Table.ReloadData(Pi, Ps); } /// /// 重置查询 /// private async Task ResetQuery() { Q_Account = string.Empty; Pi = 1; await Query(); } /// /// 表格使用它来初始化,不要在页面初始化时调用,否则会导致重复加载 /// /// /// private async Task OnChange(QueryModel query) => await Query(); private async Task Search() { Pi = 1; await Query(); } private void OnChange(CascaderNode[] selectedNodes) { AreadIds = string.Join(",", selectedNodes.Select(x => x.Value)); } private void CheckedChanged(SystemUser row) { _repository.AsUpdateable() .SetColumns(x => x.Enabled == row.Enabled) .Where(x => x.Id == row.Id) .ExecuteCommand(); //_table.ReloadData(); } /// /// 注入实例 /// [Inject] private SqlSugarRepository _repository { get; set; } /// /// /// [Inject] private SqlSugarRepository _role { get; set; } /// /// /// [Inject] private SqlSugarRepository _area { get; set; } /// /// /// [Inject] private SqlSugarRepository _department { get; set; } /// /// /// [Inject] NavigationManager NavigationManager { get; set; } /// /// /// [Inject] IJSRuntime IJSRuntime { get; set; } /// /// 账号 /// private string Q_Account { get; set; } /// /// /// private string AreadIds { get; set; } /// /// /// private List Areas { get; set; } = new List(); /// /// /// private ITable _Table; /// /// /// private IEnumerable SelectedRows = []; /// /// /// private List DataSource; /// /// /// private int Pi = 1; /// /// /// private int Ps = 20; /// /// /// private int Total; /// /// /// private List Roles; /// /// /// private List Departments; /// /// /// private bool Loading = false; /// /// /// Func ShowTotal => x => $"总共 {Total} 条"; }