@page "/manage/role"
@string.Join(", ", allPremissions.Where(g => role.permissionIds?.Contains(g.Id) == true).Take(dd.MaxSelectedLabels).Select(g => $"{g.PremissionName}"))
@code { @inject IRoleDao roleDao; @inject DialogService dialogService; RadzenDataGrid grid; bool isLoading; int count; private IEnumerable? roleList; RadzenDropDown> dd; IEnumerable allPremissions; string RoleName; protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); List t = new Premission().getAdminPremission(); IEnumerable t2 = Enumerable.Empty(); for (var i = 0; i < t.Count; i++) { t2 = t2.Concat(new Premission[] { t[i] }); t2 = t2.Concat(t[i].Items); } allPremissions = t2; } async Task LoadData(LoadDataArgs args) { isLoading = true; var result = await roleDao.GetRolesByName(RoleName, args.Top, args.Skip); // Update the Data property roleList = result.Desserts; // Update the count count = result.TotalDesserts; isLoading = false; } async Task reloadGrid() { RoleName = ""; await grid.Reload(); } List rolesToInsert = new List(); List rolesToUpdate = new List(); void Reset() { rolesToInsert.Clear(); rolesToUpdate.Clear(); } void Reset(Pojo.Role role) { rolesToInsert.Remove(role); rolesToUpdate.Remove(role); } async Task EditRow(Pojo.Role role) { Reset(); rolesToUpdate.Add(role); await grid.EditRow(role); } void OnUpdateRow(Pojo.Role role) { Reset(role); // 数据库更新 roleDao.UpdateRole(role); } async Task SaveRow(Pojo.Role role) { await grid.UpdateRow(role); } void CancelEdit(Pojo.Role role) { Reset(role); grid.CancelEditRow(role); grid.Reload(); } async Task DeleteRow(Pojo.Role role) { Reset(role); if (roleList.Contains(role)) { //弹出确认提示框 var b = await dialogService.OpenAsync( $"删除确认", new Dictionary() { { "confirmInfo", "确认要删除角色:" + role.RoleName+"吗?" } }, new DialogOptions() { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false }); if (b) { // 数据库删除 roleDao.DeleteRole(role.Id); } await grid.Reload(); } else { grid.CancelEditRow(role); await grid.Reload(); } } async Task InsertRow() { Reset(); var role = new Pojo.Role(); rolesToInsert.Add(role); await grid.InsertRow(role); } void OnCreateRow(Pojo.Role role) { // 数据库添加用户 int id = roleDao.InsertRole(role); rolesToInsert.Remove(role); grid.Reload(); } void ItemRender(DropDownItemRenderEventArgs> args) { // Use this code to prevent default item selection. args.Disabled = true; args.Attributes.Add("style", $"opacity:1;{(((Premission)args.Item).Parent == null ? "" : "margin-inline-start:1rem")}"); } bool? IsGroupSelected(Pojo.Role role,Premission p) { IEnumerable permissionIds = role.permissionIds; if (p.Parent == null) { return p.Items.Any() && p.Items.All(i => permissionIds?.Contains(i.Id) == true) ? true : p.Items.Any(i => permissionIds?.Contains(i.Id) == true) ? null : false; } return permissionIds?.Contains(p.Id) == true; } void SelectGroup(bool? value, Pojo.Role role, Premission p) { IEnumerable permissionIds = role.permissionIds; var newValues = permissionIds ?? Enumerable.Empty(); var items = p.Parent == null ? p.Items.Select(i => i.Id) : new int[] { p.Id }; role.permissionIds = value == true ? newValues.Concat(items) : newValues.Except(items); } }