From fb4b8642cfbd157ae0635b182b4f578bf337dbef Mon Sep 17 00:00:00 2001
From: C3204 <zhengyabo@lanpucloud.cn>
Date: 星期一, 19 一月 2026 08:41:11 +0800
Subject: [PATCH] user
---
LB_SmartVision/CSV/CsvDataHelperRecordProductData.cs | 110 +++++++++++
LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.cs | 159 +++++++++------
LB_SmartVision/VisionForm.cs | 2
LB_SmartVision/CSV/CsvRecordProductDataMap.cs | 25 ++
LB_SmartVisionCommon/UserManager.cs | 33 +-
LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.cs | 119 ++++++-----
LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.Designer.cs | 79 ++++---
LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.Designer.cs | 8
LB_SmartVision/SQL/DatabaseRecordProductDataHelper.cs | 2
LB_SmartVision/VisionForm.Designer.cs | 32 +-
LB_SmartVision/LB_SmartVision.csproj | 1
11 files changed, 376 insertions(+), 194 deletions(-)
diff --git a/LB_SmartVision/CSV/CsvDataHelperRecordProductData.cs b/LB_SmartVision/CSV/CsvDataHelperRecordProductData.cs
new file mode 100644
index 0000000..813ccb6
--- /dev/null
+++ b/LB_SmartVision/CSV/CsvDataHelperRecordProductData.cs
@@ -0,0 +1,110 @@
+锘縰sing LB_SmartVision.SQL;
+using LB_SmartVisionCommon;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using CsvHelper;
+namespace LB_SmartVision.CSV
+{
+ internal class CsvDataHelperRecordProductData
+ {
+ /// <summary>
+ /// 灏哛ecordProductDatas瀛楀吀淇濆瓨鍒癈SV鏂囦欢
+ /// </summary>
+ /// <param name="filePath">CSV鏂囦欢璺緞</param>
+ /// <param name="recordProductDatas">瑕佷繚瀛樼殑鏁版嵁瀛楀吀</param>
+ public static void SaveToCsv(string filePath, List<RecordProductData> recordProductDatas)
+ {
+ try
+ {
+ using (var writer = new StreamWriter(filePath))
+ using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
+ {
+ csv.Context.RegisterClassMap<CsvRecordProductDataMap>();
+ // 灏嗗瓧鍏歌浆鎹负CsvRecord鍒楄〃
+ var records = recordProductDatas.Select(kvp => new CsvRecordProductData
+ {
+ //DictionaryKey = kvp.Key,
+ ProductName = kvp.ProductName,
+ ProductSN = kvp.ProductSN,
+ InspectionOperator = kvp.InspectionOperator,
+ NGType = kvp.NGType,
+ NGSize = kvp.NGSize,
+ DetectionTime = kvp.DetectionTime,
+ CameraInspection = kvp.CameraInspection,
+
+ }).ToList();
+ for (int i = 0; i < records.Count; i++)
+ {
+ AsyncLogHelper.Warn("鐗╂枡鍙锋垨浜у搧鍚嶇О锛�" + records[i].ProductName + "\r\n" +
+ "锛屼骇鍝丼N鍙凤細" + records[i].ProductSN + "\r\n" +
+ "锛屾娴嬩綔涓氬憳锛�" + records[i].InspectionOperator + "\r\n" +
+ "锛孨G绫诲瀷锛�" + records[i].NGType + " mm" + "\r\n" +
+ "锛孨G澶у皬锛�" + records[i].NGSize + " mm" + "\r\n" +
+ "锛屾娴嬫椂闂达細" + records[i].DetectionTime + "\r\n" +
+ "锛屾娴嬬浉鏈猴細" + records[i].CameraInspection + " mm" + "\r\n" );
+
+ }
+ csv.WriteRecords(records);
+ }
+ LogHelper.Info($"鏁版嵁鎴愬姛淇濆瓨鍒�: {filePath}");
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Error($"淇濆瓨CSV鏂囦欢鏃跺嚭閿�: {ex.Message}");
+ //throw;
+ }
+ //Task.Factory.StartNew(() =>
+ //{
+ //});
+ }
+ /// <summary>
+ /// 浠嶤SV鏂囦欢璇诲彇鏁版嵁鍒癛ecordProductDatas瀛楀吀
+ /// </summary>
+ /// <param name="filePath">CSV鏂囦欢璺緞</param>
+ /// <returns>璇诲彇鐨勬暟鎹瓧鍏�</returns>
+ public static List<RecordProductData> LoadFromCsv(string filePath)
+ {
+ var recordProductDatas = new List<RecordProductData>();
+ try
+ {
+ if (!File.Exists(filePath))
+ {
+ LogHelper.Info($"鏂囦欢涓嶅瓨鍦�: {filePath}");
+ return recordProductDatas;
+ }
+ using (var reader = new StreamReader(filePath))
+ using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
+ {
+ csv.Context.RegisterClassMap<CsvRecordProductDataMap>();
+ var records = csv.GetRecords<CsvRecordProductData>();
+ foreach (var record in records)
+ {
+ var productData = new RecordProductData
+ {
+ ProductName = record.ProductName,
+ ProductSN = record.ProductSN,
+ InspectionOperator = record.InspectionOperator,
+ NGType = record.NGType,
+ NGSize = record.NGSize,
+ DetectionTime = record.DetectionTime,
+ CameraInspection = record.CameraInspection,
+ };
+ recordProductDatas.Add(productData);
+ }
+ }
+ LogHelper.Info($"浠� {filePath} 鎴愬姛璇诲彇 {recordProductDatas.Count} 鏉¤褰�");
+ }
+ catch (Exception ex)
+ {
+ LogHelper.Error($"璇诲彇CSV鏂囦欢鏃跺嚭閿�: {ex.Message}");
+ //throw;
+ }
+ return recordProductDatas;
+ }
+
+ }
+}
diff --git a/LB_SmartVision/CSV/CsvRecordProductDataMap.cs b/LB_SmartVision/CSV/CsvRecordProductDataMap.cs
new file mode 100644
index 0000000..a954f32
--- /dev/null
+++ b/LB_SmartVision/CSV/CsvRecordProductDataMap.cs
@@ -0,0 +1,25 @@
+锘縰sing CsvHelper.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LB_SmartVision.CSV
+{
+ internal class CsvRecordProductDataMap:ClassMap<CsvRecordProductData>
+ {
+ public CsvRecordProductDataMap()
+ {
+ //Map(m => m.DictionaryKey).Name("璁板綍鏃堕棿");
+ Map(m => m.ProductName).Name("鐗╂枡鍙锋垨浜у搧鍚嶇О");
+ Map(m => m.ProductSN).Name("浜у搧SN鍙�");
+ Map(m => m.InspectionOperator).Name("妫�娴嬩綔涓氬憳");
+ Map(m => m.NGType).Name("NG绫诲瀷");
+ Map(m => m.NGSize).Name("NG澶у皬");
+ Map(m => m.DetectionTime).Name("妫�娴嬫椂闂�");
+ Map(m => m.CameraInspection).Name("妫�娴嬬浉鏈�");
+ }
+ }
+}
+
diff --git a/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.Designer.cs b/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.Designer.cs
index 4796997..f4c14e7 100644
--- a/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.Designer.cs
@@ -283,14 +283,14 @@
//
tableLayoutPanel4.Anchor = AnchorStyles.Top | AnchorStyles.Right;
tableLayoutPanel4.ColumnCount = 2;
- tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
- tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
+ tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
+ tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.3333321F));
tableLayoutPanel4.Controls.Add(btnHisDataFind, 0, 0);
tableLayoutPanel4.Controls.Add(btnHisDataExport, 1, 0);
tableLayoutPanel4.Location = new Point(657, 509);
tableLayoutPanel4.Name = "tableLayoutPanel4";
tableLayoutPanel4.RowCount = 1;
- tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
+ tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableLayoutPanel4.Size = new Size(200, 39);
tableLayoutPanel4.TabIndex = 1;
//
@@ -312,6 +312,7 @@
btnHisDataFind.Text = "鏌ヨ";
btnHisDataFind.TextColor = Color.White;
btnHisDataFind.WarningColor = Color.FromArgb(230, 162, 60);
+ btnHisDataFind.Click += btnHisDataFind_Click;
//
// btnHisDataExport
//
@@ -341,6 +342,7 @@
Name = "HistoricalDataEditPage";
Size = new Size(866, 580);
grpHisData.ResumeLayout(false);
+ grpHisData.PerformLayout();
tableLayoutPanel1.ResumeLayout(false);
tableLayoutPanel2.ResumeLayout(false);
tableLayoutPanel3.ResumeLayout(false);
diff --git a/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.cs b/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.cs
index 28694cc..477bcfd 100644
--- a/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.cs
+++ b/LB_SmartVision/Forms/Pages/HistoricalDataPage/HistoricalDataEditPage.cs
@@ -1,9 +1,12 @@
-锘縰sing LB_SmartVisionCommon;
+锘縰sing LB_SmartVision.CSV;
+using LB_SmartVision.SQL;
+using LB_SmartVisionCommon;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
+using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -14,9 +17,13 @@
public partial class HistoricalDataEditPage : UserControl
{
public Action<string, LogInfoType> LogInfo;
+ // 淇濆瓨鍘熷鏁版嵁鐨勫垪琛�
+ private List<DataGridViewRow> originalRows = new List<DataGridViewRow>();
private int row2OriginalHeight;
private int row3OriginalHeight;
+
+ List<RecordProductData> RecordProductDatas = new List<RecordProductData>();
public HistoricalDataEditPage()
{
Name = "HistoricalDataEditPage";
@@ -37,30 +44,7 @@
/// </summary>
private void InitializeDataGridView()
{
- // 璁剧疆DataGridView鍒楀
- dataGridViewHD.ColumnCount = 4;
-
- int totalWidth = dataGridViewHD.ClientSize.Width;
- int columnCount = dataGridViewHD.ColumnCount;
- int columnWidth = totalWidth / columnCount;
-
- // 璁剧疆鏈�灏忓搴�
- int minWidth = 100; // 鏈�灏忓搴�
- if (columnWidth < minWidth)
- {
- columnWidth = minWidth;
- }
-
- for (int i = 0; i < columnCount; i++)
- {
- dataGridViewHD.Columns[i].Width = columnWidth;
- }
-
- // 璁剧疆鍒楁爣棰�
- dataGridViewHD.Columns[0].Name = "SN鍙�";
- dataGridViewHD.Columns[1].Name = "鏃堕棿";
- dataGridViewHD.Columns[2].Name = "NG绫�";
- dataGridViewHD.Columns[3].Name = "缂洪櫡澶у皬";
+ this.dataGridViewHD.DataSource = RecordProductDatas;
dataGridViewHD.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
@@ -151,45 +135,68 @@
{
dateTimePickerEnd.MinDate = dateTimePickerStart.Value;
}
-
- private void btnHisDataExport_Click(object sender, EventArgs e)
+ public string OpenFileForSave()
{
-
- }
-
- public void SaveToCSV(string filePath, int rowIndex)
- {
- // 浣跨敤 StreamWriter 鏉ュ啓鍏ユ枃浠�
- using (StreamWriter writer = new StreamWriter(filePath))
+ using (SaveFileDialog saveFileDialog = new SaveFileDialog())
{
- DataGridViewRow row = dataGridViewHD.Rows[rowIndex];
+ // 璁剧疆榛樿鏂囦欢鍚嶅拰鎵╁睍鍚�
+ saveFileDialog.FileName = $"鍘嗗彶鏁版嵁_{DateTime.Now:yyyyMMdd_HHmmss}";
+ saveFileDialog.DefaultExt = "xlsx";
- int rowCount = 10;//10鏀逛负閲囬泦娆℃暟
+ // 璁剧疆鏂囦欢杩囨护鍣�
+ saveFileDialog.Filter = "Excel鏂囦欢 (*.xlsx)|*.xlsx|" +
+ "CSV鏂囦欢 (*.csv)|*.csv|" +
+ "鏂囨湰鏂囦欢 (*.txt)|*.txt|" +
+ "鎵�鏈夋枃浠� (*.*)|*.*";
- writer.WriteLine("SN鍙�, 鏃堕棿, NG绫�, 缂洪櫡澶у皬");
+ saveFileDialog.Title = "閫夋嫨鏂囦欢淇濆瓨浣嶇疆";
+ saveFileDialog.RestoreDirectory = true; // 璁颁綇涓婃鎵撳紑鐨勭洰褰�
+ saveFileDialog.OverwritePrompt = true; // 瑕嗙洊鏃舵彁绀�
- // 閬嶅巻姣忎竴琛屾暟鎹�
- for (int i = 0; i < rowCount; i++)
+ if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
- int batchSize = 4;
-
- // 鍐欏叆杩欎竴鎵规鐨勬瘡涓�鍒楁暟鎹�
- for (int k = 0; k < batchSize; k++)
- {
- writer.Write($"{row.Cells[k].Value}");
-
- // 鍦ㄥ厓绱犱箣闂存坊鍔犻�楀彿锛岄櫎闈炶繖鏄渶鍚庝竴涓厓绱�
- if (k < batchSize - 1)
- {
- writer.Write(",");
- }
- }
-
- // 鍐欏叆瀹屼竴琛屽悗锛屾崲琛�
- writer.WriteLine();
-
+ string filePathHD = saveFileDialog.FileName;
+ return filePathHD;
}
}
+
+ return null;
}
+ private void btnHisDataExport_Click(object sender, EventArgs e)
+ {
+ CsvDataHelperRecordProductData.SaveToCsv(OpenFileForSave(), RecordProductDatas);
+ }
+
+ private void btnHisDataFind_Click(object sender, EventArgs e)
+ {
+
+ DateTime startDate = dateTimePickerStart.Value.Date;
+ DateTime endDate = dateTimePickerEnd.Value.Date;
+
+ switch(comboBoxSearchBasis.SelectedIndex)
+ {
+ //渚濇嵁鏃ユ湡鏌ヨ
+ case 0:
+ RecordProductDatas = RecordProductDataRepository.GetRecordsByTimeRange(DateTime.Parse(this.dateTimePickerStart.Value.ToString()), DateTime.Parse(this.dateTimePickerEnd.Value.ToString()));
+ break;
+ //渚濇嵁SN鍙锋煡璇�
+ case 1:
+ if(string.IsNullOrEmpty(textBoxSN.Text))
+ {
+ MessageBox.Show("璇峰~鍐橲N鍙凤紒", "鎻愮ず", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else
+ {
+ RecordProductDatas = RecordProductDataRepository.GetRecordsByProductNumber(textBoxSN.Text);
+ }
+ break;
+ }
+
+ this.dataGridViewHD.DataSource = RecordProductDatas;
+ this.dataGridViewHD.AutoGenerateColumns = true;
+
+ }
+
}
}
+
diff --git a/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.Designer.cs b/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.Designer.cs
index a1dcd6f..1ddac98 100644
--- a/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.Designer.cs
+++ b/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.Designer.cs
@@ -50,10 +50,10 @@
comboBoxPermission = new ComboBox();
dataGridViewUM = new DataGridView();
tableLayoutPanel4 = new TableLayoutPanel();
- btnEdit = new HopeButton();
btnFind = new HopeButton();
- btnDel = new HopeButton();
+ btnEdit = new HopeButton();
btnAdd = new ForeverButton();
+ btnDel = new HopeButton();
grpSetting.SuspendLayout();
tableLayoutPanel1.SuspendLayout();
tableLayoutPanel2.SuspendLayout();
@@ -250,20 +250,40 @@
//
tableLayoutPanel4.Anchor = AnchorStyles.Top | AnchorStyles.Right;
tableLayoutPanel4.ColumnCount = 4;
- tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
- tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
- tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
- tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
- tableLayoutPanel4.Controls.Add(btnEdit, 1, 0);
+ tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
+ tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
+ tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
+ tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 20F));
tableLayoutPanel4.Controls.Add(btnFind, 0, 0);
- tableLayoutPanel4.Controls.Add(btnDel, 3, 0);
+ tableLayoutPanel4.Controls.Add(btnEdit, 1, 0);
tableLayoutPanel4.Controls.Add(btnAdd, 2, 0);
+ tableLayoutPanel4.Controls.Add(btnDel, 3, 0);
tableLayoutPanel4.Location = new Point(457, 509);
tableLayoutPanel4.Name = "tableLayoutPanel4";
tableLayoutPanel4.RowCount = 1;
tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableLayoutPanel4.Size = new Size(400, 39);
tableLayoutPanel4.TabIndex = 1;
+ //
+ // btnFind
+ //
+ btnFind.BorderColor = Color.FromArgb(220, 223, 230);
+ btnFind.ButtonType = ReaLTaiizor.Util.HopeButtonType.Primary;
+ btnFind.DangerColor = Color.FromArgb(245, 108, 108);
+ btnFind.DefaultColor = Color.FromArgb(255, 255, 255);
+ btnFind.Font = new Font("Segoe UI", 12F);
+ btnFind.HoverTextColor = Color.FromArgb(48, 49, 51);
+ btnFind.InfoColor = Color.FromArgb(144, 147, 153);
+ btnFind.Location = new Point(3, 3);
+ btnFind.Name = "btnFind";
+ btnFind.PrimaryColor = Color.FromArgb(64, 158, 255);
+ btnFind.Size = new Size(94, 33);
+ btnFind.SuccessColor = Color.FromArgb(103, 194, 58);
+ btnFind.TabIndex = 1;
+ btnFind.Text = "鏌ヨ";
+ btnFind.TextColor = Color.White;
+ btnFind.WarningColor = Color.FromArgb(230, 162, 60);
+ btnFind.Click += btnFind_Click;
//
// btnEdit
//
@@ -285,24 +305,19 @@
btnEdit.WarningColor = Color.FromArgb(230, 162, 60);
btnEdit.Click += btnEdit_Click;
//
- // btnFind
+ // btnAdd
//
- btnFind.BorderColor = Color.FromArgb(220, 223, 230);
- btnFind.ButtonType = ReaLTaiizor.Util.HopeButtonType.Primary;
- btnFind.DangerColor = Color.FromArgb(245, 108, 108);
- btnFind.DefaultColor = Color.FromArgb(255, 255, 255);
- btnFind.Font = new Font("Segoe UI", 12F);
- btnFind.HoverTextColor = Color.FromArgb(48, 49, 51);
- btnFind.InfoColor = Color.FromArgb(144, 147, 153);
- btnFind.Location = new Point(3, 3);
- btnFind.Name = "btnFind";
- btnFind.PrimaryColor = Color.FromArgb(64, 158, 255);
- btnFind.Size = new Size(94, 33);
- btnFind.SuccessColor = Color.FromArgb(103, 194, 58);
- btnFind.TabIndex = 1;
- btnFind.Text = "鏌ヨ";
- btnFind.TextColor = Color.White;
- btnFind.WarningColor = Color.FromArgb(230, 162, 60);
+ btnAdd.BackColor = Color.Transparent;
+ btnAdd.BaseColor = Color.FromArgb(35, 168, 109);
+ btnAdd.Font = new Font("Segoe UI", 12F);
+ btnAdd.Location = new Point(203, 3);
+ btnAdd.Name = "btnAdd";
+ btnAdd.Rounded = false;
+ btnAdd.Size = new Size(94, 33);
+ btnAdd.TabIndex = 4;
+ btnAdd.Text = "娣诲姞";
+ btnAdd.TextColor = Color.FromArgb(243, 243, 243);
+ btnAdd.Click += btnAdd_Click;
//
// btnDel
//
@@ -323,20 +338,6 @@
btnDel.TextColor = Color.White;
btnDel.WarningColor = Color.FromArgb(230, 162, 60);
btnDel.Click += btnDel_Click;
- //
- // btnAdd
- //
- btnAdd.BackColor = Color.Transparent;
- btnAdd.BaseColor = Color.FromArgb(35, 168, 109);
- btnAdd.Font = new Font("Segoe UI", 12F);
- btnAdd.Location = new Point(203, 3);
- btnAdd.Name = "btnAdd";
- btnAdd.Rounded = false;
- btnAdd.Size = new Size(94, 33);
- btnAdd.TabIndex = 4;
- btnAdd.Text = "娣诲姞";
- btnAdd.TextColor = Color.FromArgb(243, 243, 243);
- btnAdd.Click += btnAdd_Click;
//
// UserManagementEditPage
//
diff --git a/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.cs b/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.cs
index f017dce..3c7371d 100644
--- a/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.cs
+++ b/LB_SmartVision/Forms/Pages/UserManagementPage/UserManagementEditPage.cs
@@ -1,25 +1,27 @@
-锘縰sing LB_SmartVision.Forms.Pages.ProcessPage;
+锘縰sing 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;
+ List<RecordUserData> recordUserDatas = new List<RecordUserData>();
public UserManagementEditPage()
{
@@ -27,8 +29,9 @@
Text = "鐢ㄦ埛绠$悊璁剧疆";
InitializeComponent();
- InitializeDataGridView();
InitializeComboBox();
+ InitializeDataGridView();
+
}
/// <summary>
@@ -36,42 +39,9 @@
/// </summary>
private void InitializeDataGridView()
{
+ this.dataGridViewUM.DataSource = recordUserDatas;
// 璁剧疆DataGridView鍒楀
- dataGridViewUM.ColumnCount = 4;
-
- 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[1].Name = "濮撳悕";
- dataGridViewUM.Columns[2].Name = "宸ュ彿";
- dataGridViewUM.Columns[3].Name = "鏉冮檺";
-
dataGridViewUM.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
-
- // 绂佹缂栬緫鍗曞厓鏍硷紙鍙�夛級
- dataGridViewUM.ReadOnly = true;
-
- // 鍏佽澶氳閫夋嫨锛堝彲閫夛級
- dataGridViewUM.MultiSelect = false;
-
- // 鏄剧ず琛屾爣棰橈紙鍙�夛級
- dataGridViewUM.RowHeadersVisible = true;
}
/// <summary>
@@ -99,6 +69,8 @@
comboBoxPermission.SelectedIndex = 0;
textBoxUsername.Focus(); // 灏嗙劍鐐硅缃洖鐢ㄦ埛鍚嶈緭鍏ユ
}
+
+ #region 娣诲姞鐢ㄦ埛鎸夐挳
private void btnAdd_Click(object sender, EventArgs e)
{
// 楠岃瘉杈撳叆
@@ -112,41 +84,81 @@
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);
- // 娣诲姞鏂拌鍒癉ataGridView
- 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);
}
}
}
@@ -156,9 +168,11 @@
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)
{
// 鍗曞厓鏍煎彲缂栬緫
@@ -227,8 +241,16 @@
// 娓呯┖杈撳叆妗�
ClearInputFields();
- MessageBox.Show("淇敼瀹屾垚锛�", "鎻愮ず",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
+ 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);
}
}
@@ -277,7 +299,6 @@
//textBoxPassword.PlaceholderText = "濡傞渶淇敼瀵嗙爜璇峰~鍐�";
}
}
-
private void UpdateRowData(int rowIndex)
{
if (rowIndex >= 0 && rowIndex < dataGridViewUM.Rows.Count)
@@ -304,5 +325,17 @@
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
+
}
}
diff --git a/LB_SmartVision/LB_SmartVision.csproj b/LB_SmartVision/LB_SmartVision.csproj
index e242bd3..184052f 100644
--- a/LB_SmartVision/LB_SmartVision.csproj
+++ b/LB_SmartVision/LB_SmartVision.csproj
@@ -47,6 +47,7 @@
</ItemGroup>
<ItemGroup>
+ <PackageReference Include="CsvHelper" Version="33.1.0" />
<PackageReference Include="MaterialSkin.NET5" Version="1.0.2" />
</ItemGroup>
diff --git a/LB_SmartVision/SQL/DatabaseRecordProductDataHelper.cs b/LB_SmartVision/SQL/DatabaseRecordProductDataHelper.cs
index ae357bf..7e46d51 100644
--- a/LB_SmartVision/SQL/DatabaseRecordProductDataHelper.cs
+++ b/LB_SmartVision/SQL/DatabaseRecordProductDataHelper.cs
@@ -47,7 +47,7 @@
InspectionOperator VARCHAR(255),
NGType VARCHAR(255),
NGSize VARCHAR(255),
- DetectionTime VARCHAR(255)),
+ DetectionTime VARCHAR(255),
CameraInspection VARCHAR(255),
CreatedDate DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_created_date (CreatedDate),
diff --git a/LB_SmartVision/VisionForm.Designer.cs b/LB_SmartVision/VisionForm.Designer.cs
index 3cbbadf..bbb7b57 100644
--- a/LB_SmartVision/VisionForm.Designer.cs
+++ b/LB_SmartVision/VisionForm.Designer.cs
@@ -61,7 +61,7 @@
theme_VisionForm.Font = new Font("Microsoft YaHei UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 0);
theme_VisionForm.Image = (Image)resources.GetObject("theme_VisionForm.Image");
theme_VisionForm.Location = new Point(0, 0);
- theme_VisionForm.Margin = new Padding(4, 4, 4, 4);
+ theme_VisionForm.Margin = new Padding(4);
theme_VisionForm.Name = "theme_VisionForm";
theme_VisionForm.Padding = new Padding(12, 88, 12, 11);
theme_VisionForm.RoundCorners = true;
@@ -77,7 +77,7 @@
sc_VisionForm.Dock = DockStyle.Fill;
sc_VisionForm.FixedPanel = FixedPanel.Panel2;
sc_VisionForm.Location = new Point(12, 88);
- sc_VisionForm.Margin = new Padding(4, 4, 4, 4);
+ sc_VisionForm.Margin = new Padding(4);
sc_VisionForm.Name = "sc_VisionForm";
sc_VisionForm.Orientation = Orientation.Horizontal;
//
@@ -89,7 +89,7 @@
//
sc_VisionForm.Panel2.Controls.Add(grb_Info);
sc_VisionForm.Size = new Size(1416, 781);
- sc_VisionForm.SplitterDistance = 595;
+ sc_VisionForm.SplitterDistance = 593;
sc_VisionForm.SplitterWidth = 5;
sc_VisionForm.TabIndex = 1;
//
@@ -108,7 +108,7 @@
tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F));
tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 39F));
tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
- tlp_MainView.Size = new Size(1416, 595);
+ tlp_MainView.Size = new Size(1416, 593);
tlp_MainView.TabIndex = 1;
tlp_MainView.TagString = null;
//
@@ -122,7 +122,7 @@
materialTabControl.MouseState = MaterialSkin.MouseState.HOVER;
materialTabControl.Name = "materialTabControl";
materialTabControl.SelectedIndex = 0;
- materialTabControl.Size = new Size(1412, 492);
+ materialTabControl.Size = new Size(1412, 490);
materialTabControl.TabIndex = 0;
//
// tlp_VisionMainOperator
@@ -144,7 +144,7 @@
tlp_VisionMainOperator.Controls.Add(com_ProductName, 8, 0);
tlp_VisionMainOperator.Dock = DockStyle.Fill;
tlp_VisionMainOperator.Location = new Point(4, 64);
- tlp_VisionMainOperator.Margin = new Padding(4, 4, 4, 4);
+ tlp_VisionMainOperator.Margin = new Padding(4);
tlp_VisionMainOperator.Name = "tlp_VisionMainOperator";
tlp_VisionMainOperator.RowCount = 1;
tlp_VisionMainOperator.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
@@ -158,7 +158,7 @@
ckb_AllowRun.Font = new Font("瀹嬩綋", 10.5F, FontStyle.Regular, GraphicsUnit.Point, 134);
ckb_AllowRun.ForeColor = SystemColors.Control;
ckb_AllowRun.Location = new Point(4, 4);
- ckb_AllowRun.Margin = new Padding(4, 4, 4, 4);
+ ckb_AllowRun.Margin = new Padding(4);
ckb_AllowRun.MinimumSize = new Size(1, 1);
ckb_AllowRun.Name = "ckb_AllowRun";
ckb_AllowRun.Size = new Size(148, 23);
@@ -177,7 +177,7 @@
btn_Login.ImageAlign = ContentAlignment.MiddleLeft;
btn_Login.InactiveColor = Color.FromArgb(32, 34, 37);
btn_Login.Location = new Point(160, 4);
- btn_Login.Margin = new Padding(4, 4, 4, 4);
+ btn_Login.Margin = new Padding(4);
btn_Login.Name = "btn_Login";
btn_Login.PressedBorderColor = Color.FromArgb(165, 37, 37);
btn_Login.PressedColor = Color.FromArgb(165, 37, 37);
@@ -199,7 +199,7 @@
btn_GlobalVar.ImageAlign = ContentAlignment.MiddleLeft;
btn_GlobalVar.InactiveColor = Color.FromArgb(32, 34, 37);
btn_GlobalVar.Location = new Point(1096, 4);
- btn_GlobalVar.Margin = new Padding(4, 4, 4, 4);
+ btn_GlobalVar.Margin = new Padding(4);
btn_GlobalVar.Name = "btn_GlobalVar";
btn_GlobalVar.PressedBorderColor = Color.FromArgb(165, 37, 37);
btn_GlobalVar.PressedColor = Color.FromArgb(165, 37, 37);
@@ -219,7 +219,7 @@
com_ProductName.FormattingEnabled = true;
com_ProductName.ItemHeight = 20;
com_ProductName.Location = new Point(1252, 4);
- com_ProductName.Margin = new Padding(4, 4, 4, 4);
+ com_ProductName.Margin = new Padding(4);
com_ProductName.Name = "com_ProductName";
com_ProductName.Size = new Size(152, 26);
com_ProductName.TabIndex = 5;
@@ -231,7 +231,7 @@
materialTabSelector.Depth = 0;
materialTabSelector.Dock = DockStyle.Fill;
materialTabSelector.Location = new Point(4, 4);
- materialTabSelector.Margin = new Padding(4, 4, 4, 4);
+ materialTabSelector.Margin = new Padding(4);
materialTabSelector.MouseState = MaterialSkin.MouseState.HOVER;
materialTabSelector.Name = "materialTabSelector";
materialTabSelector.Size = new Size(1408, 52);
@@ -249,7 +249,7 @@
grb_Info.MinimumSize = new Size(1, 1);
grb_Info.Name = "grb_Info";
grb_Info.Padding = new Padding(0, 40, 0, 0);
- grb_Info.Size = new Size(1416, 181);
+ grb_Info.Size = new Size(1416, 183);
grb_Info.TabIndex = 1;
grb_Info.Text = "鏃ュ織鏄剧ず鍖猴細";
grb_Info.TextAlignment = ContentAlignment.MiddleLeft;
@@ -265,7 +265,7 @@
rich_Info.Name = "rich_Info";
rich_Info.Padding = new Padding(2);
rich_Info.ShowText = false;
- rich_Info.Size = new Size(1416, 141);
+ rich_Info.Size = new Size(1416, 143);
rich_Info.TabIndex = 0;
rich_Info.TextAlignment = ContentAlignment.MiddleLeft;
//
@@ -279,8 +279,8 @@
cb_VisionForm.EnableMaximizeButton = true;
cb_VisionForm.EnableMinimizeButton = true;
cb_VisionForm.ForeColor = Color.FromArgb(155, 155, 155);
- cb_VisionForm.Location = new Point(1330, 13);
- cb_VisionForm.Margin = new Padding(4, 4, 4, 4);
+ cb_VisionForm.Location = new Point(1330, 18);
+ cb_VisionForm.Margin = new Padding(4);
cb_VisionForm.MaximizeHoverColor = Color.FromArgb(74, 74, 74);
cb_VisionForm.MinimizeHoverColor = Color.FromArgb(63, 63, 65);
cb_VisionForm.Name = "cb_VisionForm";
@@ -296,7 +296,7 @@
Controls.Add(theme_VisionForm);
FormBorderStyle = FormBorderStyle.None;
Icon = (Icon)resources.GetObject("$this.Icon");
- Margin = new Padding(4, 4, 4, 4);
+ Margin = new Padding(4);
MinimumSize = new Size(326, 76);
Name = "VisionForm";
Text = "杞儙澶栬瑙嗚妫�娴嬬郴缁�";
diff --git a/LB_SmartVision/VisionForm.cs b/LB_SmartVision/VisionForm.cs
index 31f11a8..7b5d3c5 100644
--- a/LB_SmartVision/VisionForm.cs
+++ b/LB_SmartVision/VisionForm.cs
@@ -10,6 +10,7 @@
using LB_SmartVision.Forms.Pages.SettingPage;
using LB_SmartVision.Forms.Pages.UserManagementPage;
using LB_SmartVision.ProcessRun;
+using LB_SmartVision.SQL;
using LB_SmartVision.Tool;
using LB_SmartVisionCommon;
using LB_SmartVisionLoginUI;
@@ -687,6 +688,7 @@
com_ProductName.Items.Add("鏂板");
com_ProductName.Text = GlobalVar.strProductName;
this.WindowState = FormWindowState.Maximized;
+ DatabaseRecordProductDataHelper.InitializeDatabase();
}
public void SaveAllSetting()
diff --git a/LB_SmartVisionCommon/UserManager.cs b/LB_SmartVisionCommon/UserManager.cs
index 22bef7d..847f25f 100644
--- a/LB_SmartVisionCommon/UserManager.cs
+++ b/LB_SmartVisionCommon/UserManager.cs
@@ -113,11 +113,11 @@
{
_currentUser = user;
}
- if (!CheckPermission(true))
- {
- MessageBox.Show("闇�瑕佺鐞嗗憳鏉冮檺鎵嶈兘娣诲姞鐢ㄦ埛锛�", "鏉冮檺涓嶈冻", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return false;
- }
+ //if (!CheckPermission(true))
+ //{
+ // MessageBox.Show("闇�瑕佺鐞嗗憳鏉冮檺鎵嶈兘娣诲姞鐢ㄦ埛锛�", "鏉冮檺涓嶈冻", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ // return false;
+ //}
if (_users.Any(u => u.Value.EmployeeNumber == user.EmployeeNumber ||
u.Value.EmployeeAccount == user.EmployeeAccount))
@@ -125,6 +125,7 @@
MessageBox.Show("鍛樺伐鍙锋垨璐﹀彿宸插瓨鍦紒", "娣诲姞澶辫触", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
+
RecordUserData recordUserData = new RecordUserData();
recordUserData.EmployeeNumber = user.EmployeeNumber;
recordUserData.EmployeeAccount = user.EmployeeAccount;
@@ -143,18 +144,18 @@
/// <returns>鏄惁鍒犻櫎鎴愬姛</returns>
public bool DeleteUser(string employeeNumber)
{
- if (!CheckPermission(true))
- {
- MessageBox.Show("闇�瑕佺鐞嗗憳鏉冮檺鎵嶈兘鍒犻櫎鐢ㄦ埛锛�", "鏉冮檺涓嶈冻", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return false;
- }
+ //if (!CheckPermission(true))
+ //{
+ // MessageBox.Show("闇�瑕佺鐞嗗憳鏉冮檺鎵嶈兘鍒犻櫎鐢ㄦ埛锛�", "鏉冮檺涓嶈冻", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ // return false;
+ //}
- // 绠$悊鍛樹笉鑳藉垹闄よ嚜宸�
- if (_currentUser.EmployeeNumber == employeeNumber)
- {
- MessageBox.Show("涓嶈兘鍒犻櫎褰撳墠鐧诲綍鐨勭敤鎴凤紒", "鍒犻櫎澶辫触", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return false;
- }
+ //// 绠$悊鍛樹笉鑳藉垹闄よ嚜宸�
+ //if (_currentUser.EmployeeNumber == employeeNumber)
+ //{
+ // MessageBox.Show("涓嶈兘鍒犻櫎褰撳墠鐧诲綍鐨勭敤鎴凤紒", "鍒犻櫎澶辫触", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ // return false;
+ //}
var user = _users.FirstOrDefault(u => u.Value.EmployeeNumber == employeeNumber);
if (user.Value != null)
--
Gitblit v1.9.3