feat: 添加新增用户
							parent
							
								
									7e2ba5996f
								
							
						
					
					
						commit
						102f150fa4
					
				|  | @ -9,6 +9,8 @@ namespace UserPointManagement.Application.Services; | ||||||
| public interface IUserService | public interface IUserService | ||||||
| { | { | ||||||
|     Task<PageResultDto<User>> GetUsers(GetUserDto req); |     Task<PageResultDto<User>> GetUsers(GetUserDto req); | ||||||
|  | 
 | ||||||
|  |     Task CreateUser(User input); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| public class UserService : IUserService | public class UserService : IUserService | ||||||
|  | @ -34,4 +36,10 @@ public class UserService : IUserService | ||||||
|             TotalCount = count |             TotalCount = count | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public async Task CreateUser(User input) | ||||||
|  |     { | ||||||
|  |         _userPointManagementDbContext.Users.Add(input); | ||||||
|  |         await _userPointManagementDbContext.SaveChangesAsync().ConfigureAwait(false); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | @ -0,0 +1,137 @@ | ||||||
|  | @inherits MyAntDesignAppServer.Pages.UserManagement.UserManagementBase | ||||||
|  | @page "/" | ||||||
|  | @using UserPointManagement.Application.Services | ||||||
|  | @using UserPointManagement.Model.Dtos | ||||||
|  | @using UserPointManagement.Model.Entities | ||||||
|  | @using System.ComponentModel.DataAnnotations | ||||||
|  | @using System.Text.Json | ||||||
|  | @inject IJSRuntime JS | ||||||
|  | @inject IUserService UserService; | ||||||
|  | 
 | ||||||
|  | <PageContainer Title="用户管理"> | ||||||
|  |     <GridRow Style="margin: 10px 0"> | ||||||
|  |         <GridCol Span="12"> | ||||||
|  |             <Space Direction="@DirectionVHType.Horizontal"> | ||||||
|  |                 <SpaceItem> | ||||||
|  |                     <Search Placeholder="姓名或手机号" WrapperStyle="width: 200px;" OnSearch="OnSearch" ClassicSearchIcon/> | ||||||
|  |                 </SpaceItem> | ||||||
|  |             </Space> | ||||||
|  |         </GridCol> | ||||||
|  |         <GridCol Span="12"> | ||||||
|  |             <Space Direction="@DirectionVHType.Horizontal" Style="display: flex; justify-content: flex-end"> | ||||||
|  |                 <SpaceItem> | ||||||
|  |                     <Button type="primary" OnClick="@ShowModal">新增用户</Button> | ||||||
|  |                 </SpaceItem> | ||||||
|  |             </Space> | ||||||
|  |         </GridCol> | ||||||
|  |     </GridRow> | ||||||
|  |     <Table TItem="User" DataSource="@_users" | ||||||
|  |            Total="_total" | ||||||
|  |            Loading="_loading" | ||||||
|  |            PageIndex="@_pageIndex" | ||||||
|  |            PageSize="@_pageSize" | ||||||
|  |            OnPageIndexChange="OnPageIndexChanged" | ||||||
|  |            OnPageSizeChange="OnPageSizeChange"> | ||||||
|  |         <PropertyColumn Property="c => c.Name" title="姓名"/> | ||||||
|  |         <PropertyColumn Property="c => c.Mobile" title="手机号" Width="80"/> | ||||||
|  |         <ActionColumn Title="操作" Width="220"> | ||||||
|  |             <Space Size=@("middle")> | ||||||
|  |                 <SpaceItem> | ||||||
|  |                     <button>编辑</button> | ||||||
|  |                 </SpaceItem> | ||||||
|  |             </Space> | ||||||
|  |         </ActionColumn> | ||||||
|  |     </Table> | ||||||
|  | </PageContainer> | ||||||
|  | 
 | ||||||
|  | <Modal Title="@("新增用户")" | ||||||
|  |        Visible="@_visible" | ||||||
|  |        OnOk="@HandleOk" | ||||||
|  |        OnCancel="@HandleCancel"> | ||||||
|  |     <Form Loading="loading" Model="@model" | ||||||
|  |           LabelColSpan="8" | ||||||
|  |           WrapperColSpan="16" | ||||||
|  |           OnFinish="OnFinish" | ||||||
|  |           OnFinishFailed="OnFinishFailed" | ||||||
|  |           @ref="@_form"> | ||||||
|  |         <FormItem Label="姓名"> | ||||||
|  |             <Input @bind-Value="@context.Name" /> | ||||||
|  |         </FormItem> | ||||||
|  |         <FormItem Label="手机号"> | ||||||
|  |             <Input @bind-Value="@context.Mobile" /> | ||||||
|  |         </FormItem> | ||||||
|  |     </Form> | ||||||
|  | </Modal> | ||||||
|  | 
 | ||||||
|  | @code { | ||||||
|  | 
 | ||||||
|  |     #region original form coding | ||||||
|  |     public class Model | ||||||
|  |     { | ||||||
|  |         [Required] | ||||||
|  |         public string Name { get; set; } | ||||||
|  |         public string Mobile { get; set; } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private Model model = new Model(); | ||||||
|  | 
 | ||||||
|  |     private void OnFinishFailed(EditContext editContext) | ||||||
|  |     { | ||||||
|  |         Console.WriteLine($"Failed:{JsonSerializer.Serialize(model)}"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     bool loading = false; | ||||||
|  | 
 | ||||||
|  |     void toggle(bool value) => loading = value; | ||||||
|  | 
 | ||||||
|  |     #endregion | ||||||
|  | 
 | ||||||
|  |     #region original modal coding | ||||||
|  | 
 | ||||||
|  |     bool _visible = false; | ||||||
|  | 
 | ||||||
|  |     private void ShowModal() | ||||||
|  |     { | ||||||
|  |         _visible = true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void HandleCancel(MouseEventArgs e) | ||||||
|  |     { | ||||||
|  |         _visible = false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     #endregion | ||||||
|  | 
 | ||||||
|  |     /* | ||||||
|  |      * Careful!  | ||||||
|  |      *  | ||||||
|  |      * next bind submit event to modal OK button  | ||||||
|  |      */ | ||||||
|  | 
 | ||||||
|  |     private Form<Model> _form; | ||||||
|  | 
 | ||||||
|  |     /// <summary> | ||||||
|  |     /// when form is submited, close the modal | ||||||
|  |     /// </summary> | ||||||
|  |     /// <param name="args"></param> | ||||||
|  |     private void OnFinish(EditContext editContext) | ||||||
|  |     { | ||||||
|  |         Console.WriteLine("e"); | ||||||
|  |         _visible = false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /// <summary> | ||||||
|  |     /// on modal OK button is click, submit form manually | ||||||
|  |     /// </summary> | ||||||
|  |     /// <param name="e"></param> | ||||||
|  |     private async Task HandleOk(MouseEventArgs e) | ||||||
|  |     { | ||||||
|  |         _form.Submit(); | ||||||
|  |         await UserService.CreateUser(new User() | ||||||
|  |         { | ||||||
|  |             Name = model.Name, | ||||||
|  |             Mobile = model.Mobile | ||||||
|  |         }).ConfigureAwait(false); | ||||||
|  |         await RefreshTable().ConfigureAwait(false); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,62 @@ | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | using AntDesign; | ||||||
|  | using Microsoft.AspNetCore.Components; | ||||||
|  | using UserPointManagement.Application.Services; | ||||||
|  | using UserPointManagement.Model.Dtos; | ||||||
|  | using UserPointManagement.Model.Entities; | ||||||
|  | 
 | ||||||
|  | namespace MyAntDesignAppServer.Pages.UserManagement; | ||||||
|  | 
 | ||||||
|  | public class UserManagementBase : ComponentBase | ||||||
|  | { | ||||||
|  |     [Inject] private IUserService _userService { get; set; } | ||||||
|  |      | ||||||
|  |     protected List<User> _users; | ||||||
|  |     protected int _pageIndex = 1; | ||||||
|  |     protected int _pageSize = 20; | ||||||
|  |     protected int _total = 0; | ||||||
|  |     protected bool _loading; | ||||||
|  |     private string _searchValue; | ||||||
|  | 
 | ||||||
|  |     protected override async Task OnInitializedAsync() | ||||||
|  |     { | ||||||
|  |         await RefreshTable(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected async Task OnSearch(string arg) | ||||||
|  |     { | ||||||
|  |         _searchValue = arg; | ||||||
|  |         _pageIndex = 1; | ||||||
|  |         await RefreshTable(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected async Task RefreshTable() | ||||||
|  |     { | ||||||
|  |         _loading = true; | ||||||
|  |         var res = await _userService.GetUsers(new GetUserDto() | ||||||
|  |         { | ||||||
|  |             Keyword = _searchValue, | ||||||
|  |             PageIndex = _pageIndex, | ||||||
|  |             PageSize = _pageSize | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         _users = res.Items; | ||||||
|  |         _total = res.TotalCount; | ||||||
|  |         _loading = false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected async Task OnPageIndexChanged(PaginationEventArgs args) | ||||||
|  |     { | ||||||
|  |         _pageIndex = args.Page; | ||||||
|  |         _pageSize = args.PageSize; | ||||||
|  |         await RefreshTable(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected async Task OnPageSizeChange(PaginationEventArgs args) | ||||||
|  |     { | ||||||
|  |         _pageIndex = args.Page; | ||||||
|  |         _pageSize = args.PageSize; | ||||||
|  |         await RefreshTable(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -1,82 +0,0 @@ | ||||||
| @page "/" |  | ||||||
| @using UserPointManagement.Application.Services |  | ||||||
| @using UserPointManagement.Model.Dtos |  | ||||||
| @using UserPointManagement.Model.Entities |  | ||||||
| @inject IUserService _userService; |  | ||||||
| @inject IJSRuntime JS |  | ||||||
| 
 |  | ||||||
| <PageContainer Title="用户管理"> |  | ||||||
|     <Space Direction="@DirectionVHType.Horizontal" Style="margin: 10px 0"> |  | ||||||
|         <SpaceItem> |  | ||||||
|             <Search Placeholder="姓名或手机号" WrapperStyle="width: 200px;" OnSearch="OnSearch" ClassicSearchIcon/> |  | ||||||
|         </SpaceItem> |  | ||||||
|     </Space> |  | ||||||
|     <Table TItem="User" DataSource="@_users" |  | ||||||
|            Total="_total" |  | ||||||
|            Loading="_loading" |  | ||||||
|            PageIndex="@_pageIndex" |  | ||||||
|            PageSize="@_pageSize" |  | ||||||
|            OnPageIndexChange="OnPageIndexChanged" |  | ||||||
|            OnPageSizeChange="OnPageSizeChange"> |  | ||||||
|         <PropertyColumn Property="c => c.Name" title="姓名"/> |  | ||||||
|         <PropertyColumn Property="c => c.Mobile" title="手机号" Width="80"/> |  | ||||||
|         <ActionColumn Title="操作" Width="220"> |  | ||||||
|             <Space Size=@("middle")> |  | ||||||
|                 <SpaceItem> |  | ||||||
|                     <button>编辑</button> |  | ||||||
|                 </SpaceItem> |  | ||||||
|             </Space> |  | ||||||
|         </ActionColumn> |  | ||||||
|     </Table> |  | ||||||
| </PageContainer> |  | ||||||
| 
 |  | ||||||
| @code { |  | ||||||
|     private List<User> _users; |  | ||||||
|     int _pageIndex = 1; |  | ||||||
|     int _pageSize = 20; |  | ||||||
|     int _total = 0; |  | ||||||
|     bool _loading; |  | ||||||
|     string _searchValue; |  | ||||||
| 
 |  | ||||||
|     protected override async Task OnInitializedAsync() |  | ||||||
|     { |  | ||||||
|         await RefreshTable(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private async Task OnSearch(string arg) |  | ||||||
|     { |  | ||||||
|         _searchValue = arg; |  | ||||||
|         _pageIndex = 1; |  | ||||||
|         await RefreshTable(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private async Task RefreshTable() |  | ||||||
|     { |  | ||||||
|         _loading = true; |  | ||||||
|         var res = await _userService.GetUsers(new GetUserDto() |  | ||||||
|         { |  | ||||||
|             Keyword = _searchValue, |  | ||||||
|             PageIndex = _pageIndex, |  | ||||||
|             PageSize = _pageSize |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         _users = res.Items; |  | ||||||
|         _total = res.TotalCount; |  | ||||||
|         _loading = false; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     private async Task OnPageIndexChanged(PaginationEventArgs args) |  | ||||||
|     { |  | ||||||
|         _pageIndex = args.Page; |  | ||||||
|         _pageSize = args.PageSize; |  | ||||||
|         await RefreshTable(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private async Task OnPageSizeChange(PaginationEventArgs args) |  | ||||||
|     { |  | ||||||
|         _pageIndex = args.Page; |  | ||||||
|         _pageSize = args.PageSize; |  | ||||||
|         await RefreshTable(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
		Loading…
	
		Reference in New Issue