using LB_SmartVision.Forms.Pages.CameraPage; using LB_SmartVision.Forms.Pages.ProcessPage; using LB_SmartVision.Forms.Pages.SettingPage; using LB_SmartVision.ProcessRun; using LB_SmartVision.SQL; using LB_SmartVisionCommon; using LB_VisionControl; using LB_VisionProcesses; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System.Collections.Concurrent; using System.Data; using System.Security.Principal; using System.Text; using System.Windows.Forms; using VisionControl.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; namespace LB_SmartVision.Forms.Pages.UserManagementPage { public partial class UserManagementEditPage : UserControl { public Action LogInfo; List recordUserDatas = new List(); public UserManagementEditPage() { Name = "UserManagementEditPage"; Text = "用户管理设置"; InitializeComponent(); InitializeComboBox(); InitializeDataGridView(); } /// /// 表格初始化 /// private void InitializeDataGridView() { this.dataGridViewUM.DataSource = recordUserDatas; // 设置DataGridView列宽 dataGridViewUM.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; } /// /// 权限下拉框初始化 /// private void InitializeComboBox() { // 添加权限选项 foreach (var item in Enum.GetValues(typeof(UserPermission))) { comboBoxPermission.Items.Add(item.ToString()); } //comboBoxPermission.Items.Add("操作员"); // 设置默认选择项 comboBoxPermission.SelectedIndex = 0; } private void ClearInputFields() { textBoxUsername.Clear(); textBoxPassword.Clear(); textBoxName.Clear(); textBoxEmployeeID.Clear(); comboBoxPermission.SelectedIndex = 0; textBoxUsername.Focus(); // 将焦点设置回用户名输入框 } #region 添加用户按钮 private void btnAdd_Click(object sender, EventArgs e) { // 验证输入 if (string.IsNullOrWhiteSpace(textBoxUsername.Text) || string.IsNullOrWhiteSpace(textBoxPassword.Text) || string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxEmployeeID.Text)) { MessageBox.Show("请填写所有必填字段!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } RecordUserData user = new RecordUserData(); user.EmployeeNumber = this.textBoxEmployeeID.Text; user.EmployeeAccount = this.textBoxUsername.Text; user.EmployeePassword = this.textBoxPassword.Text; user.EmployeeName = this.textBoxName.Text; user.EmployeePermission = (UserPermission)this.comboBoxPermission.SelectedIndex; // 添加到 UserManager bool success = UserManager.Instance.AddUser(user); if (success) { recordUserDatas.Add(user); //MessageBox.Show("用户添加成功!", "提示", // MessageBoxButtons.OK, MessageBoxIcon.Information); // 清空输入框 ClearInputFields(); } else { MessageBox.Show("添加用户失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } #endregion #region 删除用户按钮 private void btnDel_Click(object sender, EventArgs e) { if (dataGridViewUM.SelectedRows.Count > 0) { // 获取选中的行 DataGridViewRow selectedRow = dataGridViewUM.SelectedRows[0]; // 确认删除 DialogResult result = MessageBox.Show("确定要删除选中的行吗?", "确认删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { try { // 先获取要删除的数据 string employeeNumber = selectedRow.Cells[0].Value?.ToString(); if (!string.IsNullOrEmpty(employeeNumber)) { // 1. 从数据源删除 var dataSource = dataGridViewUM.DataSource as List; if (dataSource != null) { var itemToRemove = dataSource.FirstOrDefault(u => u.EmployeeNumber == employeeNumber); if (itemToRemove != null) { dataSource.Remove(itemToRemove); } } // 2. 从用户管理器删除 UserManager.Instance.DeleteUser(employeeNumber); // 3. 刷新数据绑定 dataGridViewUM.DataSource = null; dataGridViewUM.DataSource = dataSource; //MessageBox.Show("删除成功!", "提示", // MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show($"删除失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { MessageBox.Show("请先选择要删除的行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } #endregion private int editingRowIndex = -1; private bool isEditingMode = false; private string originalButtonText = "修改"; #region 修改用户信息 private void btnEdit_Click(object sender, EventArgs e) { // 单元格可编辑 //dataGridViewUM.ReadOnly = false; // 第一次点击:进入修改模式 if (!isEditingMode) { // 检查是否选择了行 if (dataGridViewUM.SelectedRows.Count == 0) { MessageBox.Show("请先选择要修改的行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // 获取选中的行索引 editingRowIndex = dataGridViewUM.SelectedRows[0].Index; // 将选中行的数据填充到TextBox中 FillFormWithRowData(editingRowIndex); // 更改按钮文本 btnEdit.Text = "完成"; // 进入编辑模式 isEditingMode = true; // 禁用添加按钮(可选) btnAdd.Enabled = false; // 设置焦点到用户名输入框 textBoxUsername.Focus(); // 高亮显示正在编辑的行(可选) dataGridViewUM.Rows[editingRowIndex].DefaultCellStyle.BackColor = Color.LightYellow; } // 第二次点击:保存修改 else { // 验证输入 if (string.IsNullOrWhiteSpace(textBoxUsername.Text) || string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxEmployeeID.Text)) { MessageBox.Show("请填写所有必填字段!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // 更新DataGridView中的行数据 UpdateRowData(editingRowIndex); // 恢复按钮文本 btnEdit.Text = originalButtonText; // 退出编辑模式 isEditingMode = false; editingRowIndex = -1; // 启用添加按钮(可选) btnAdd.Enabled = true; // 恢复行颜色(可选) dataGridViewUM.DefaultCellStyle.BackColor = Color.White; // 清空输入框 ClearInputFields(); RecordUserData user = new RecordUserData(); user.EmployeeNumber = this.textBoxEmployeeID.Text; user.EmployeeAccount = this.textBoxUsername.Text; user.EmployeePassword = this.textBoxPassword.Text; user.EmployeeName = this.textBoxName.Text; user.EmployeePermission = (UserPermission)this.comboBoxPermission.SelectedIndex; UserManager.Instance.UpdateUser(user); //MessageBox.Show("修改完成!", "提示", // MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void FillFormWithRowData(int rowIndex) { if (rowIndex >= 0 && rowIndex < dataGridViewUM.Rows.Count) { DataGridViewRow row = dataGridViewUM.Rows[rowIndex]; // 填充用户名 if (row.Cells[0].Value != null) textBoxUsername.Text = row.Cells[0].Value.ToString(); else textBoxUsername.Text = ""; // 填充姓名 if (row.Cells[1].Value != null) textBoxName.Text = row.Cells[1].Value.ToString(); else textBoxName.Text = ""; // 填充工号 if (row.Cells[2].Value != null) textBoxEmployeeID.Text = row.Cells[2].Value.ToString(); else textBoxEmployeeID.Text = ""; // 填充权限 if (row.Cells[3].Value != null) { string permission = row.Cells[3].Value.ToString(); int index = comboBoxPermission.FindString(permission); if (index >= 0) comboBoxPermission.SelectedIndex = index; else comboBoxPermission.SelectedIndex = 0; } else { comboBoxPermission.SelectedIndex = 0; } // 密码框清空(通常不会显示密码) textBoxPassword.Clear(); // 如果需要修改密码,可以添加注释或占位符 //textBoxPassword.PlaceholderText = "如需修改密码请填写"; } } private void UpdateRowData(int rowIndex) { if (rowIndex >= 0 && rowIndex < dataGridViewUM.Rows.Count) { DataGridViewRow row = dataGridViewUM.Rows[rowIndex]; // 更新用户名 row.Cells[0].Value = textBoxUsername.Text; // 如果密码不为空,则更新密码(实际应用中应加密) if (!string.IsNullOrWhiteSpace(textBoxPassword.Text)) { // 这里可以添加密码加密逻辑 // row.Cells[1].Value = EncryptPassword(textBoxPassword.Text); } // 更新姓名 row.Cells[1].Value = textBoxName.Text; // 更新工号 row.Cells[2].Value = textBoxEmployeeID.Text; // 更新权限 row.Cells[3].Value = comboBoxPermission.SelectedItem.ToString(); } } #endregion #region 查询用户信息 private void btnFind_Click(object sender, EventArgs e) { List recordUserDatas = UserManager.Instance.GetAllUsers(); this.dataGridViewUM.DataSource = recordUserDatas; this.dataGridViewUM.AutoGenerateColumns = true; } #endregion } }