From a3ba25607612818c28d421bfa8eb2f92339d71ac Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 13 三月 2025 20:30:48 +0800
Subject: [PATCH] 优化项目;

---
 HMI.ParameterManage/ParameterSetting.xaml.cs |  215 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 213 insertions(+), 2 deletions(-)

diff --git a/HMI.ParameterManage/ParameterSetting.xaml.cs b/HMI.ParameterManage/ParameterSetting.xaml.cs
index 8b8c0a0..7db5211 100644
--- a/HMI.ParameterManage/ParameterSetting.xaml.cs
+++ b/HMI.ParameterManage/ParameterSetting.xaml.cs
@@ -1,11 +1,17 @@
 锘縰sing HMI.Base;
 using HMI.Core.Util;
+using HMI.ParameterManage.Entity;
+using HMI.ParameterManage.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;
+using System.Windows.Markup;
 
 namespace HMI.ParameterManage
 {
@@ -15,9 +21,18 @@
     public partial class ParameterSetting : PluginControl
     {
 
+        private ObservableCollection<ParameterData> datasource;
+        public ObservableCollection<ParameterData> Datasource
+        {
+            get => datasource;
+            set
+            {
+                Set(ref datasource, value);
+            }
+        }
+
         public ParameterSetting()
         {
-           
             this.DataContext = this;
             InitializeComponent();
         }
@@ -25,11 +40,207 @@
         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>();
+            }
+            catch (Exception ex)
+            {
+                Datasource = new ObservableCollection<ParameterData>();
+                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) == 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;
         }
 

--
Gitblit v1.9.1