using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using BLL; using BLL.Dto; using BLL.Dto.UserDto; using Helper; using HZY.Framework.DependencyInjection; using Sunny.UI; namespace Scada.Page { public partial class PageUserManage : UIPage, ISingletonSelfDependency { private readonly UserManager _userManager; public PageUserManage(UserManager userManager) { InitializeComponent(); _userManager = userManager; this.cb_Auth.Items.AddRange(Enum.GetNames(typeof(SystemEnums.UserRole))); this.cb_Auth.SelectedIndex = -1; // 默认不选择 dgv_User.AutoGenerateColumns = false; this.Load += PageUserManage_Load; } private async void PageUserManage_Load(object sender, EventArgs e) { await LoadData(); } private void PageUserManage_Initialize(object sender, EventArgs e) { } private bool VaildInput() { if (this.txt_UserName.Text.IsNullOrEmpty()) { UIMessageTip.ShowWarning("用户名不能为空!"); return false; } if (this.txt_Password.Text.IsNullOrEmpty()) { UIMessageTip.ShowWarning("密码不能为空!"); return false; } if (this.txt_EnterPassword.Text.IsNullOrEmpty()) { UIMessageTip.ShowWarning("确认密码不能为空!"); return false; } if (this.txt_Password.Text != this.txt_EnterPassword.Text) { UIMessageTip.ShowWarning("两次密码输入不一致!"); return false; } if (this.cb_Auth.SelectedIndex == -1) { UIMessageTip.ShowWarning("请选择用户权限!"); return false; } return true; } private async void btn_AddUser_Click(object sender, EventArgs e) { if (!VaildInput()) { return; } UserAddDto userAddDto = new UserAddDto() { UserName = this.txt_UserName.Text.Trim(), UserPassword = this.txt_Password.Text.Trim(), Role = this.cb_Auth.SelectedItem.ToString() // 修复类型转换问题 }; var result = await _userManager.AddUserAsync(userAddDto); if (result.Result == SystemEnums.Result.Success) { UIMessageTip.ShowOk("添加成功"); LogExtension.ShowMessage("添加用户成功", Microsoft.Extensions.Logging.LogLevel.Information); await LoadData(); } else { UIMessageTip.ShowOk("添加失败"); LogExtension.ShowMessage("添加用户失败", Microsoft.Extensions.Logging.LogLevel.Information); } } private async Task LoadData() { var res = await _userManager.GetUserListAsync(); if (res.Result == SystemEnums.Result.Success) { this.dgv_User.DataSource = res.Data; this.dgv_User.Refresh(); } } private void dgv_User_SelectIndexChange(object sender, int index) { var rows = this.dgv_User.Rows[index]; this.txt_UserName.Text = rows.Cells["UserName"].Value.ToString(); this.txt_Password.Text = rows.Cells["UserPassword"].Value.ToString(); this.txt_EnterPassword.Text = rows.Cells["UserPassword"].Value.ToString(); // 确认密码与密码一致 this.cb_Auth.SelectedItem = rows.Cells["Role"].Value.ToString(); // 修复类型转换问题 } private async void btn_Update_Click(object sender, EventArgs e) { if (!VaildInput()) { return; } UserUpdateDto userUpdateDto = new UserUpdateDto() { Id = int.Parse(this.dgv_User.CurrentRow.Cells["Id"].Value.ToString()), UserName = this.txt_UserName.Text.Trim(), UserPassword = this.txt_Password.Text.Trim(), Role = this.cb_Auth.SelectedItem.ToString() // 修复类型转换问题 }; var result = await _userManager.UpdateUserAsync(userUpdateDto); if (result.Result == SystemEnums.Result.Success) { UIMessageTip.ShowOk("更新成功"); LogExtension.ShowMessage("更新用户成功", Microsoft.Extensions.Logging.LogLevel.Information); await LoadData(); } else { UIMessageTip.ShowError("更新失败"); LogExtension.ShowMessage("更新用户失败", Microsoft.Extensions.Logging.LogLevel.Information); } } private async void btn_Delete_Click(object sender, EventArgs e) { if(this.dgv_User.CurrentRow == null) { UIMessageTip.ShowWarning("请选择要删除的用户"); return; } UserDeleteDto userDeleteDto = new UserDeleteDto() { Id = int.Parse(this.dgv_User.CurrentRow.Cells["Id"].Value.ToString()) }; var result = await _userManager.DeleteUserAsync(userDeleteDto); if(result.Result==SystemEnums.Result.Success) { UIMessageTip.ShowOk("删除成功"); LogExtension.ShowMessage("删除用户成功", Microsoft.Extensions.Logging.LogLevel.Information); await LoadData(); } else { UIMessageTip.ShowError("删除失败"); LogExtension.ShowMessage("删除用户失败", Microsoft.Extensions.Logging.LogLevel.Information); } } } }