using LB_SmartVision.Forms.Pages.SettingPage;
|
using LB_SmartVision.SQL;
|
using LB_SmartVisionCommon;
|
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 static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
|
|
namespace LB_SmartVision.Forms.Pages.UserManagementPage
|
{
|
public partial class UserManagementEditPage : UserControl
|
{
|
public Action<string, LogInfoType> LogInfo;
|
List<RecordUserData> recordUserDatas = new List<RecordUserData>();
|
|
public UserManagementEditPage()
|
{
|
Name = "UserManagementEditPage";
|
Text = "用户管理设置";
|
|
InitializeComponent();
|
InitializeComboBox();
|
InitializeDataGridView();
|
}
|
|
/// <summary>
|
/// 表格初始化
|
/// </summary>
|
private void InitializeDataGridView()
|
{
|
this.dataGridViewUM.DataSource = recordUserDatas;
|
// 设置DataGridView列宽
|
dataGridViewUM.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
|
dataGridViewUM.ForeColor=Color.Black;
|
}
|
|
/// <summary>
|
/// 权限下拉框初始化
|
/// </summary>
|
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<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);
|
}
|
}
|
}
|
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<RecordUserData> recordUserDatas = UserManager.Instance.GetAllUsers();
|
this.dataGridViewUM.DataSource = recordUserDatas;
|
this.dataGridViewUM.AutoGenerateColumns = true;
|
}
|
#endregion
|
|
}
|
}
|