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