Users.razor.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. using Blazor.App.Common;
  2. using Blazor.App.Dtos;
  3. using BootstrapBlazor.Components;
  4. using Microsoft.AspNetCore.Components;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.ComponentModel.DataAnnotations;
  8. using System.Diagnostics.CodeAnalysis;
  9. using System.Linq;
  10. using System.Net.Http;
  11. using System.Net.Http.Json;
  12. using System.Text.Json;
  13. using System.Text.Json.Serialization;
  14. using System.Threading.Tasks;
  15. namespace Blazor.App.Pages
  16. {
  17. public partial class Users : ComponentBase
  18. {
  19. [Inject]
  20. private HttpClient Http { get; set; }
  21. [NotNull]
  22. private List<UserDto>? Items { get; set; }
  23. private List<SelectedItem> RoleItems { get; set; } = new List<SelectedItem>();
  24. private static IEnumerable<int> PageItemsSource => new int[] { 4, 10, 20 };
  25. [Inject]
  26. [NotNull]
  27. public MessageService? MessageService { get; set; }
  28. protected override async Task OnInitializedAsync()
  29. {
  30. await base.OnInitializedAsync();
  31. var result = await Http.GetFromJsonAsync<PagedResultDto<UserDto>>("/api/base/user");
  32. var roles = await GetRoleListAsync();
  33. Items = result.Items;
  34. foreach (var role in roles)
  35. {
  36. RoleItems.Add(new SelectedItem
  37. {
  38. Text = role.Name,
  39. Value = role.Name
  40. });
  41. }
  42. }
  43. private static Task<UserDto> OnAddAsync() => Task.FromResult(new UserDto());
  44. private async Task<bool> OnDeleteAsync(IEnumerable<UserDto> items)
  45. {
  46. if (items.Count() > 1)
  47. {
  48. await MessageService.Show(new MessageOption()
  49. {
  50. Content = "暂不支持多选删除",
  51. Icon = "fa fa-info-circle",
  52. Color = Color.Warning
  53. });
  54. return false;
  55. }
  56. var result = await Http.DeleteAsync("/api/identity/users/" + items.First().Id);
  57. return true;
  58. }
  59. private async Task<bool> OnSaveAsync(UserDto item, ItemChangedType changedType)
  60. {
  61. if (changedType == ItemChangedType.Add)
  62. {
  63. var response = await Http.PostAsJsonAsync("/api/base/user", item);
  64. //var result = await response.Content.ReadFromJsonAsync<UserDto>();
  65. //System.Console.WriteLine(JsonSerializer.Serialize(result));
  66. }
  67. else
  68. {
  69. //if (oldItem != null)
  70. //{
  71. // oldItem.Name = item.Name;
  72. // oldItem.Address = item.Address;
  73. // oldItem.DateTime = item.DateTime;
  74. // oldItem.Count = item.Count;
  75. // oldItem.Complete = item.Complete;
  76. // oldItem.Education = item.Education;
  77. //}
  78. //var oldItem = Items.FirstOrDefault(i => i.Id == item.Id);
  79. var jobList = await GetJobListAsync();
  80. var OrgList = await GetOrgListAsync();
  81. var user = await Http.GetFromJsonAsync<UserDto>("/api/base/user/" + item.Id);
  82. var userRoles = await GetUserRoles(item.Id);
  83. //item.RoleNames = string.Join(",", userRoles.Select(_ => _.Name).ToList());
  84. }
  85. return false;
  86. }
  87. private async Task<QueryData<UserDto>> OnQueryAsync(QueryPageOptions options)
  88. {
  89. var result = await Http.GetFromJsonAsync<PagedResultDto<UserDto>>("/api/base/user");
  90. var items = result.Items;
  91. // 设置记录总数
  92. var total = result.TotalCount;
  93. return new QueryData<UserDto>()
  94. {
  95. Items = items,
  96. TotalCount = total,
  97. IsSorted = true,
  98. IsFiltered = true,
  99. IsSearch = true
  100. };
  101. }
  102. private async Task<List<RoleItem>> GetRoleListAsync()
  103. {
  104. var result = await Http.GetFromJsonAsync<ListResultDto<RoleItem>>("/api/identity/roles/all");
  105. return new List<RoleItem>(result.Items);
  106. }
  107. private async Task<List<JobItem>> GetJobListAsync()
  108. {
  109. var result = await Http.GetFromJsonAsync<ListResultDto<JobItem>>("/api/base/job/jobs");
  110. return new List<JobItem>(result.Items);
  111. }
  112. private async Task<List<OrgItem>> GetOrgListAsync()
  113. {
  114. var result = await Http.GetFromJsonAsync<ListResultDto<OrgItem>>("/api/base/orgs/loadNodes");
  115. return new List<OrgItem>(result.Items);
  116. }
  117. private async Task<List<RoleItem>> GetUserRoles(Guid id)
  118. {
  119. var result = await Http.GetFromJsonAsync<ListResultDto<RoleItem>>("/api/identity/users/" + id + "/roles");
  120. return new List<RoleItem>(result.Items);
  121. }
  122. }
  123. public class UserDto
  124. {
  125. [Display(Name = "Id")]
  126. [AutoGenerateColumn(Ignore = true)]
  127. public Guid Id { get; set; }
  128. [Required(ErrorMessage = "{0}不能为空")]
  129. [Display(Name = "用户名")]
  130. [AutoGenerateColumn(Ignore = true)]
  131. public string UserName { get; set; }
  132. [Required(ErrorMessage = "{0}姓名")]
  133. [Display(Name = "姓名")]
  134. [AutoGenerateColumn(Ignore = true)]
  135. public string Name { get; set; }
  136. //public string Surname { get; set; }
  137. [Display(Name = "邮箱")]
  138. [AutoGenerateColumn(Ignore = true)]
  139. public string Email { get; set; }
  140. [Display(Name = "允许锁定")]
  141. [AutoGenerateColumn(Ignore = true)]
  142. public bool LockoutEnabled { get; set; }
  143. [Display(Name = "角色")]
  144. [AutoGenerateColumn(Ignore = true)]
  145. public string RoleNames { get; set; }
  146. [Display(Name = "密码")]
  147. [AutoGenerateColumn(Ignore = true)]
  148. public string Password { get; set; }
  149. public List<Guid> OrganizationIds { get; set; } = new List<Guid>();
  150. public List<Guid> JobIds { get; set; } = new List<Guid>();
  151. [Display(Name = "电话")]
  152. [AutoGenerateColumn(Ignore = true)]
  153. public string PhoneNumber { get; set; }
  154. [Display(Name = "创建时间")]
  155. [AutoGenerateColumn(Ignore = true)]
  156. public DateTime CreationTime { get; set; }
  157. }
  158. public class RoleItem
  159. {
  160. public Guid Id { get; set; }
  161. public string Name { get; set; }
  162. public bool IsDefault { get; set; }
  163. public bool IsStatic { get; set; }
  164. public bool IsPublic { get; set; }
  165. }
  166. public class JobItem
  167. {
  168. public Guid Id { get; set; }
  169. public string Name { get; set; }
  170. public bool Enabled { get; set; }
  171. public int Sort { get; set; }
  172. public string Description { get; set; }
  173. }
  174. public class OrgItem
  175. {
  176. public Guid Id { get; set; }
  177. public int CategoryId { get; set; }
  178. public Guid? Pid { get; set; }
  179. public string Name { get; set; }
  180. public string FullName { get; set; }
  181. public int Sort { get; set; }
  182. public bool Enabled { get; set; }
  183. public bool HasChildren { get; set; }
  184. public bool Leaf { get; set; }
  185. public string Label { get; set; }
  186. }
  187. }