From 771a0e7b6b1276087515bbe94de28358cb92963b Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 04 六月 2026 10:32:27 +0800
Subject: [PATCH] 优化老化;
---
HMI.ParameterManage/ParameterSetting.xaml.cs | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 233 insertions(+), 2 deletions(-)
diff --git a/HMI.ParameterManage/ParameterSetting.xaml.cs b/HMI.ParameterManage/ParameterSetting.xaml.cs
index 8b8c0a0..643bd8b 100644
--- a/HMI.ParameterManage/ParameterSetting.xaml.cs
+++ b/HMI.ParameterManage/ParameterSetting.xaml.cs
@@ -1,8 +1,14 @@
锘縰sing HMI.Base;
+using HMI.Core.Entity;
+using HMI.Core.Manager;
+using HMI.Core.Setting;
using HMI.Core.Util;
using HMI.UI.Util;
+using HMI.Util;
+using Microsoft.Win32;
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
@@ -15,9 +21,20 @@
public partial class ParameterSetting : PluginControl
{
+ private ObservableCollection<ParameterData> datasource;
+ public ObservableCollection<ParameterData> Datasource
+ {
+ get => datasource;
+ set
+ {
+ Set(ref datasource, value);
+ }
+ }
+
+ public List<string> groups = new List<string>();
+
public ParameterSetting()
{
-
this.DataContext = this;
InitializeComponent();
}
@@ -25,13 +42,227 @@
private void Button_Click(object sender, RoutedEventArgs e)
{
var btn = ((Button)sender);
-
+ ParameterData data = btn.DataContext as ParameterData;
+ switch (btn.Name)
+ {
+ case "addBtn":
+ OpenDataModal(null, false);
+ break;
+ case "editBtn":
+ OpenDataModal(data, true);
+ break;
+ case "refreshBtn":
+ LoadData();
+ break;
+ case "delBatchBtn":
+ DeleteBatch();
+ break;
+ case "exportBtn":
+ ExportData();
+ break;
+ case "importBtn":
+ ImportData();
+ break;
+ case "delBtn":
+ DeleteData(data);
+ break;
+ default:
+ break;
+ }
+ }
+
+ /// <summary>
+ /// 鍔犺浇鏁版嵁
+ /// </summary>
+ public void LoadData()
+ {
+ try
+ {
+ Datasource = ParameterManager.GetCommonParameter<ObservableCollection<ParameterData>>()
+ ?? new ObservableCollection<ParameterData>();
+ groups = Datasource.Where(d => !string.IsNullOrEmpty(d.ShowGroup)).Select(d => d.ShowGroup).Distinct().ToList();
+ }
+ catch (Exception ex)
+ {
+ Datasource = new ObservableCollection<ParameterData>();
+ groups = new List<string>();
+ log.Error("Refresh Data Failed.", ex);
+ ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.RefreshFailed")}: {ex.Message}");
+ }
+ }
+
+ /// <summary>
+ /// 鎵撳紑鏂板鎴栫紪杈戠獥鍙�
+ /// </summary>
+ /// <param name="data"></param>
+ public void OpenDataModal(ParameterData data, bool isUpdate)
+ {
+ try
+ {
+ int index = isUpdate ? Datasource.IndexOf(data) : -1;
+ string title = isUpdate ? $"{this.lang("App.Edit")}" : $"{this.lang("App.Add")}";
+ SettingModal modal = new SettingModal()
+ {
+ Title = title,
+ Owner = Window.GetWindow(this)
+ };
+ if (modal.Open(data ?? new ParameterData(), Datasource, groups) == true)
+ {
+ if (index == -1)
+ {
+ Datasource.Add(modal.Data);
+ ParameterManager.SaveCommonParameter(Datasource);
+ }
+ else
+ {
+ ParameterManager.SaveCommonParameter(Datasource);
+ }
+ LoadData();
+ }
+ }
+ catch (Exception ex)
+ {
+ if (isUpdate)
+ {
+ log.Error("Edit Data Failed.", ex);
+ MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.EditFailed")}: {ex.Message}");
+ }
+ else
+ {
+ log.Error("Add Data Failed.", ex);
+ MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.AddFailed")}: {ex.Message}");
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎
+ /// </summary>
+ public void DeleteBatch()
+ {
+ try
+ {
+ var count = Datasource.Where(d => d.IsSelected).Count();
+ if (count <= 0)
+ {
+ ToastHelper.Warning(this, this.lang("HMI.NoDeleteData"));
+ return;
+ }
+ if (MsgBoxHelper.WarnMessage(this, this.lang("HMI.MakeSureDeletes", count))
+ == MessageBoxResult.OK)
+ {
+ var temp = Datasource.Where(d => !d.IsSelected).ToList();
+ ParameterManager.SaveCommonParameter(temp);
+ LoadData();
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Delete Batch Data Failed.", ex);
+ ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.DeleteFailed")}: {ex.Message}");
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍙傛暟
+ /// </summary>
+ /// <param name="data"></param>
+ private void DeleteData(ParameterData data)
+ {
+ try
+ {
+ if (MsgBoxHelper.WarnMessage(this, this.lang("HMI.MakeSureDeleteSingle", data.Name))
+ == MessageBoxResult.OK)
+ {
+ int index = Datasource.IndexOf(data);
+ if (index < 0)
+ {
+ ToastHelper.Error(this, this.lang("App.ParameterException"));
+ return;
+ }
+ var temp = XmlHelper.DeepClone(Datasource);
+ temp.RemoveAt(index);
+ ParameterManager.SaveCommonParameter(temp);
+ LoadData();
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Delete Parameter Failed.", ex);
+ ToastHelper.Error(this, $"{this.lang("App.DeleteFailed")}: {ex.Message}");
+ return;
+ }
+ }
+
+ /// <summary>
+ /// 瀵煎嚭鏁版嵁
+ /// </summary>
+ private void ExportData()
+ {
+ try
+ {
+ SaveFileDialog sfd = new SaveFileDialog();
+
+ sfd.Filter = "";
+ sfd.DefaultExt = "xls";
+ sfd.FileName = this.lang("Pm.Setting.Title");
+ if (sfd.ShowDialog() == true)
+ {
+ string targetPath = sfd.FileName;
+ ExcelHelper.ExportExcel(targetPath, Datasource);
+ ToastHelper.Success(Window.GetWindow(this), this.lang("App.ExportSuccess"));
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Export Data Failed.", ex);
+ MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.ExportFailed")}: {ex.Message}");
+ }
+ }
+
+ private void ImportData()
+ {
+ try
+ {
+ OpenFileDialog openFileDialog = new OpenFileDialog();
+ openFileDialog.Filter = "execl(*.xlsx;*.xls)|*.xlsx;*.xls";
+ openFileDialog.Title = this.lang("App.SelectFile");
+ openFileDialog.Multiselect = false;
+ if (openFileDialog.ShowDialog() == true)
+ {
+ List<ParameterData> datas = ExcelHelper.ReadFromExcel<ParameterData>(openFileDialog.FileName);
+ ParameterManager.SaveCommonParameter(datas);
+ LoadData();
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("Export Data Failed.", ex);
+ MsgBoxHelper.Error(Window.GetWindow(this), $"{this.lang("App.ExportFailed")}: {ex.Message}");
+ }
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
+ LoadData();
Loaded -= UserControl_Loaded;
}
+ public override bool CanActive()
+ {
+ if (ParamSetting.IsOptRequirePassword)
+ {
+ var win = new RequirePasswordWindow
+ {
+ Owner = Window.GetWindow(this),
+ WindowStartupLocation = WindowStartupLocation.CenterScreen
+ };
+ return win.ShowDialog() == true;
+ }
+ else
+ {
+ return true;
+ }
+ }
}
}
--
Gitblit v1.9.1