| | |
| | | using LB_SmartVision.Forms.Pages.ProcessPage; |
| | | 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.Text; |
| | | using VisionControl.Forms; |
| | | using LB_SmartVision.Forms.Pages.SettingPage; |
| | | using LB_SmartVisionCommon; |
| | | using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; |
| | | using LB_SmartVision.Forms.Pages.CameraPage; |
| | | 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<string, LogInfoType> LogInfo; |
| | | RunSettingPage RunSettingPage = new RunSettingPage(); |
| | | LayoutPage LayoutPage = new LayoutPage(); |
| | | CsvPage CsvPage = new CsvPage(); |
| | | List<RecordUserData> recordUserDatas = new List<RecordUserData>(); |
| | | |
| | | public UserManagementEditPage() |
| | | { |
| | | Name = "UserManagementEditPage"; |
| | | Text = "用户管理设置"; |
| | | |
| | | InitializeComponent(); |
| | | InitializeDataGridView(); |
| | | InitializeComboBox(); |
| | | InitializeDataGridView(); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 表格初始化 |
| | | /// </summary> |
| | | private void InitializeDataGridView() |
| | | { |
| | | this.dataGridViewUM.DataSource = recordUserDatas; |
| | | // 设置DataGridView列宽 |
| | | dataGridViewUM.ColumnCount = 5; |
| | | |
| | | int totalWidth = dataGridViewUM.ClientSize.Width; |
| | | int columnCount = dataGridViewUM.ColumnCount; |
| | | int columnWidth = totalWidth / columnCount; |
| | | |
| | | // 设置最小宽度 |
| | | int minWidth = 100; // 最小宽度 |
| | | if (columnWidth < minWidth) |
| | | { |
| | | columnWidth = minWidth; |
| | | } |
| | | |
| | | for (int i = 0; i < columnCount; i++) |
| | | { |
| | | dataGridViewUM.Columns[i].Width = columnWidth; |
| | | } |
| | | |
| | | // 设置列标题 |
| | | dataGridViewUM.Columns[0].Name = "用户名"; |
| | | dataGridViewUM.Columns[1].Name = "密码"; |
| | | dataGridViewUM.Columns[2].Name = "姓名"; |
| | | dataGridViewUM.Columns[3].Name = "工号"; |
| | | dataGridViewUM.Columns[4].Name = "权限"; |
| | | |
| | | dataGridViewUM.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; |
| | | |
| | | // 禁止编辑单元格(可选) |
| | | dataGridViewUM.ReadOnly = true; |
| | | |
| | | // 允许多行选择(可选) |
| | | dataGridViewUM.MultiSelect = false; |
| | | |
| | | // 显示行标题(可选) |
| | | dataGridViewUM.RowHeadersVisible = true; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 权限下拉框初始化 |
| | | /// </summary> |
| | | private void InitializeComboBox() |
| | | { |
| | | // 添加权限选项 |
| | | comboBoxPermission.Items.Add("管理员"); |
| | | comboBoxPermission.Items.Add("操作员"); |
| | | foreach (var item in Enum.GetValues(typeof(UserPermission))) |
| | | { |
| | | comboBoxPermission.Items.Add(item.ToString()); |
| | | } |
| | | //comboBoxPermission.Items.Add("操作员"); |
| | | |
| | | // 设置默认选择项 |
| | | comboBoxPermission.SelectedIndex = 1; |
| | | comboBoxPermission.SelectedIndex = 0; |
| | | } |
| | | |
| | | private void ClearInputFields() |
| | |
| | | textBoxPassword.Clear(); |
| | | textBoxName.Clear(); |
| | | textBoxEmployeeID.Clear(); |
| | | comboBoxPermission.SelectedIndex = 1; |
| | | comboBoxPermission.SelectedIndex = 0; |
| | | textBoxUsername.Focus(); // 将焦点设置回用户名输入框 |
| | | } |
| | | |
| | | #region 添加用户按钮 |
| | | private void btnAdd_Click(object sender, EventArgs e) |
| | | { |
| | | // 验证输入 |
| | |
| | | return; |
| | | } |
| | | |
| | | // 创建新行数据 |
| | | string[] row = new string[] |
| | | 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) |
| | | { |
| | | textBoxUsername.Text, |
| | | textBoxPassword.Text, // 实际应用中密码应该加密 |
| | | textBoxName.Text, |
| | | textBoxEmployeeID.Text, |
| | | comboBoxPermission.SelectedItem.ToString() |
| | | }; |
| | | recordUserDatas.Add(user); |
| | | |
| | | // 设置整个DataGridView的默认字体和颜色 |
| | | dataGridViewUM.DefaultCellStyle.Font = new Font("宋体", 12); |
| | | dataGridViewUM.DefaultCellStyle.ForeColor = Color.Black; // 字体颜色 |
| | | dataGridViewUM.DefaultCellStyle.BackColor = Color.White; // 背景颜色 |
| | | //MessageBox.Show("用户添加成功!", "提示", |
| | | // MessageBoxButtons.OK, MessageBoxIcon.Information); |
| | | |
| | | // 添加新行到DataGridView |
| | | dataGridViewUM.Rows.Add(row); |
| | | // 清空输入框 |
| | | ClearInputFields(); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("添加用户失败!", "错误", |
| | | MessageBoxButtons.OK, MessageBoxIcon.Error); |
| | | } |
| | | |
| | | // 清空输入框 |
| | | ClearInputFields(); |
| | | } |
| | | #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) |
| | | { |
| | | foreach (DataGridViewRow row in dataGridViewUM.SelectedRows) |
| | | try |
| | | { |
| | | dataGridViewUM.Rows.Remove(row); |
| | | // 先获取要删除的数据 |
| | | string employeeNumber = selectedRow.Cells[0].Value?.ToString(); |
| | | |
| | | if (!string.IsNullOrEmpty(employeeNumber)) |
| | | { |
| | | // 1. 从数据源删除 |
| | | var dataSource = dataGridViewUM.DataSource as List<RecordUserData>; |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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<RecordUserData> recordUserDatas = UserManager.Instance.GetAllUsers(); |
| | | this.dataGridViewUM.DataSource = recordUserDatas; |
| | | this.dataGridViewUM.AutoGenerateColumns = true; |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | } |