From b544d5cccd76735e034c8055918a50927b437474 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期二, 10 十一月 2026 08:29:04 +0800
Subject: [PATCH] fix: 维护模式重复进入失败与按钮灰死 + Broker 并发验证用例

---
 HMI.MenuManage/RoleManage.xaml.cs |  181 +++++++++++++++++++++++++-------------------
 1 files changed, 103 insertions(+), 78 deletions(-)

diff --git a/HMI.MenuManage/RoleManage.xaml.cs b/HMI.MenuManage/RoleManage.xaml.cs
index 15df9a5..2de1f01 100644
--- a/HMI.MenuManage/RoleManage.xaml.cs
+++ b/HMI.MenuManage/RoleManage.xaml.cs
@@ -1,15 +1,14 @@
-锘縰sing System;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-using System.Windows;
-using System.Windows.Controls;
-using log4net;
-using log4net.Repository.Hierarchy;
-using Panuon.WPF.UI;
-using HMI.Core.Api;
+锘縰sing HMI.Base;
+using HMI.Core.Util;
 using HMI.MenuManage.Entity;
 using HMI.MenuManage.Model;
-using HMI.Base;
+using HMI.UI.Util;
+using Panuon.WPF.UI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
 
 namespace HMI.MenuManage
 {
@@ -18,29 +17,8 @@
     /// </summary>
     public partial class RoleManage : PluginControl
     {
-        #region ...
-        public virtual event PropertyChangedEventHandler PropertyChanged;
-
-        protected virtual void RaisePropertyChanged(string name)
-        {
-
-            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
-        }
-
-        protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null)
-        {
-            old = @new;
-            if (propertyName != null)
-            {
-                RaisePropertyChanged(propertyName);
-            }
-        }
-        #endregion
-
         #region 灞炴��
         private RoleManageModel Model;
-        private ILog log;
-
         #endregion
 
         public RoleManage()
@@ -57,29 +35,17 @@
             this.Loaded -= RoleManage_Loaded;
         }
 
-        #region 灞炴��
-
-        #endregion
-
-        public object Active()
+        public override void DoClose(object sender, EventArgs e)
         {
-            return null;
+            try
+            {
+                Model?.sqliteHelper?.Close();
+            }
+            catch (Exception ex)
+            {
+                log.Warn("Do Close Failed.", ex);
+            }
         }
-
-        public object DeActive()
-        {
-            return null;
-        }
-
-        public object Init()
-        {
-            return null;
-        }
-
-        public void OnTabChange(object sender, object args)
-        {
-        }
-
         private void Button_Click(object sender, RoutedEventArgs e)
         {
             try
@@ -87,48 +53,112 @@
                 Button btn = (Button)sender;
                 if (btn.Name == "addBtn")
                 {
-                    RoleModal modal = new RoleModal
+                    try
                     {
-                        Title = "鏂板瑙掕壊",
-                        Owner = Window.GetWindow(this),
-                        sqliteHelper = Model.sqliteHelper
-                    };
-                    if (modal.Open(new RoleData()) == true)
+                        RoleModal modal = new RoleModal
+                        {
+                            Title = this.lang("HMI.Role.Add"),
+                            Owner = Window.GetWindow(this),
+                            sqliteHelper = Model.sqliteHelper
+                        };
+                        if (modal.Open(new RoleData()) == true)
+                        {
+                            Model.LoadData();
+                        }
+                    }
+                    catch (Exception ex)
                     {
-                        Model.LoadData();
+                        log.Error("Add Role Failed.", ex);
+                        ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.AddFailed")}: {ex.Message}");
                     }
                 }
                 else if (btn.Name == "refreshBtn")
                 {
-                    Model.LoadData();
+                    try
+                    {
+                        Model.LoadData();
+                    }
+                    catch (Exception ex)
+                    {
+                        log.Error("Refresh Role Failed.", ex);
+                        ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.RefreshFailed")}: {ex.Message}");
+                    }
                 }
                 else if (btn.Name == "menuBtn")
                 {
-                    Model.LoadRelData((RoleData)btn.DataContext);
+                    try
+                    {
+                        Model.LoadRelData((RoleData)btn.DataContext);
+                    }
+                    catch (Exception ex)
+                    {
+                        log.Error("Load Role-Menu Failed.", ex);
+                        ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.RefreshFailed")}: {ex.Message}");
+                    }
                 }
                 else if (btn.Name == "editBtn")
                 {
-                    RoleModal modal = new RoleModal
+                    try
                     {
-                        Title = "缂栬緫瑙掕壊",
-                        Owner = Window.GetWindow(this),
-                        sqliteHelper = Model.sqliteHelper
-                    };
-                    if (modal.Open((RoleData)btn.DataContext) == true)
+                        RoleModal modal = new RoleModal
+                        {
+                            Title = this.lang("HMI.Role.Edit"),
+                            Owner = Window.GetWindow(this),
+                            sqliteHelper = Model.sqliteHelper
+                        };
+                        if (modal.Open((RoleData)btn.DataContext) == true)
+                        {
+                            Model.LoadData();
+                        }
+                    }
+                    catch (Exception ex)
                     {
-                        Model.LoadData();
+                        log.Error("Edit Role Failed.", ex);
+                        ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.EditFailed")}: {ex.Message}");
+                    }
+                }
+                else if (btn.Name == "deleteBatchBtn")
+                {
+                    try
+                    {
+                        List<string> codes = Model.DataSource.Where(x => x.Selected).Select(x => x.Code).ToList();
+                        if (codes == null || codes.Count <= 0)
+                        {
+                            ToastHelper.Warning(Window.GetWindow(this), this.lang("HMI.NoDeleteData"));
+                            return;
+                        }
+
+                        var res = MsgBoxHelper.WarnMessage(Window.GetWindow(this),
+                            this.lang("HMI.MakeSureDeletes", codes.Count));
+                        if (res == MessageBoxResult.OK)
+                        {
+                            Model.DeleteRoleByCodes(codes);
+                            Model.LoadData();
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        log.Error("Delete Role Batch Failed.", ex);
+                        ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.DeleteFailed")}: {ex.Message}");
                     }
                 }
                 else if (btn.Name == "delBtn")
                 {
                     try
                     {
-                        Model.DelSingleData((RoleData)btn.DataContext);
+                        var data = (RoleData)((Button)sender).DataContext;
+                        var res = MsgBoxHelper.WarnMessage(Window.GetWindow(this),
+                             this.lang("HMI.MakeSureDeleteSingle", data.Name));
+                        if (res == MessageBoxResult.OK)
+                        {
+                            Model.DelSingleData(data);
+                            Model.LoadData();
+                        }
                     }
                     catch (Exception ex)
                     {
                         log.Error("Delete Role Failed.", ex);
-                        Panuon.WPF.UI.Toast.Show((WindowX)Window.GetWindow(this), "鍒犻櫎澶辫触", ToastPosition.Top);
+                        ToastHelper.Error((WindowX)Window.GetWindow(this), LangUtil.Get("App.DeleteFailed"));
                     }
                 }
                 else if (btn.Name == "saveMenuBtn")
@@ -136,24 +166,19 @@
                     try
                     {
                         Model.SaveRelData(Model.SelectedValue);
-                        Panuon.WPF.UI.Toast.Show((WindowX)Window.GetWindow(this), "淇濆瓨鎴愬姛", ToastPosition.Top);
+                        ToastHelper.Success((WindowX)Window.GetWindow(this), LangUtil.Get("App.SaveSuccess"));
                     }
                     catch (Exception ex)
                     {
                         log.Error("Save Role-Menu Failed.", ex);
-                        Panuon.WPF.UI.Toast.Show((WindowX)Window.GetWindow(this), "淇濆瓨澶辫触", ToastPosition.Top);
+                        ToastHelper.Error((WindowX)Window.GetWindow(this), LangUtil.Get("App.SaveFailed"));
                     }
                 }
             }
             catch (Exception ex)
             {
-                log.Error("123", ex);
+                log.Error("Something Error...", ex);
             }
-        }
-
-        public void SetLogger(ILog logger)
-        {
-            this.log = logger;
         }
     }
 }

--
Gitblit v1.9.1