alielie
2025-11-21 3a471ae651b228231bebb3a2d438baa1d4ac0261
HMI.MenuManage/UserManage.xaml.cs
@@ -1,7 +1,9 @@
using HMI.Base;
using HMI.Core.Util;
using HMI.MenuManage.Entity;
using HMI.MenuManage.Model;
using HMI.UI.Util;
using HMI.Util;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -31,6 +33,18 @@
            this.Loaded -= UserManage_Loaded;
        }
        public override void DoClose(object sender, EventArgs e)
        {
            try
            {
                Model?.sqliteHelper?.Close();
            }
            catch (Exception ex)
            {
                log.Warn("Do Close Failed.", ex);
            }
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Button btn = (Button)sender;
@@ -40,7 +54,7 @@
                {
                    UserModal userModal = new UserModal
                    {
                        Title = "新增用户",
                        Title = LangUtil.Get("HMI.User.Add"),
                        Owner = Window.GetWindow(this),
                        sqliteHelper = Model.sqliteHelper
                    };
@@ -52,7 +66,7 @@
                catch (Exception ex)
                {
                    log.Error("Add User Failed.", ex);
                    ToastHelper.Error(Window.GetWindow(this), $"新增失败!{ex.Message}");
                    ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.AddFailed")}: {ex.Message}");
                }
            }
            else if (btn.Name == "refreshBtn")
@@ -64,7 +78,7 @@
                catch (Exception ex)
                {
                    log.Error("Refresh User Failed.", ex);
                    ToastHelper.Error(Window.GetWindow(this), $"刷新失败!{ex.Message}");
                    ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.RefreshFailed")}: {ex.Message}");
                }
            }
            else if (btn.Name == "editBtn")
@@ -73,7 +87,7 @@
                {
                    UserModal userModal = new UserModal
                    {
                        Title = "编辑用户",
                        Title = LangUtil.Get("HMI.User.Edit"),
                        Owner = Window.GetWindow(this),
                        sqliteHelper = Model.sqliteHelper
                    };
@@ -85,7 +99,7 @@
                catch (Exception ex)
                {
                    log.Error("Edit User Failed.", ex);
                    ToastHelper.Error(Window.GetWindow(this), $"编辑失败!{ex.Message}");
                    ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.EditFailed")}: {ex.Message}");
                }
            }
            else if (btn.Name == "deleteBatchBtn")
@@ -95,23 +109,22 @@
                    List<string> usernames = Model.DataSource.Where(x => x.Selected).Select(x => x.Username).ToList();
                    if (usernames == null || usernames.Count <= 0)
                    {
                        ToastHelper.Warning(Window.GetWindow(this), "请选择要删除的用户!");
                        ToastHelper.Warning(Window.GetWindow(this), LangUtil.Get("HMI.NoDeleteData"));
                        return;
                    }
                    var res = MsgBoxHelper.WarnMessage(Window.GetWindow(this),
                        $"确定删除选中的[{usernames.Count}]条用户吗?该操作不可逆!");
                        string.Format(LangUtil.Get("HMI.MakeSureDeletes"), usernames.Count));
                    if (res == MessageBoxResult.OK)
                    {
                        Model.DeleteUserByUsernames(usernames);
                        Model.LoadData();
                        ToastHelper.Success(Window.GetWindow(this), "删除成功");
                    }
                }
                catch (Exception ex)
                {
                    log.Error("Delete User Batch Failed.", ex);
                    ToastHelper.Error(Window.GetWindow(this), $"删除失败!{ex.Message}");
                    ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.DeleteFailed")}: {ex.Message}");
                }
            }
            else if (btn.Name == "delBtn")
@@ -120,7 +133,7 @@
                {
                    var data = (UserData)((Button)sender).DataContext;
                    var res = MsgBoxHelper.WarnMessage(Window.GetWindow(this),
                        $"确定删除用户[{data.Name}]吗?该操作不可逆!");
                        string.Format(LangUtil.Get("HMI.MakeSureDeleteSingle"), data.Name));
                    if (res == MessageBoxResult.OK)
                    {
                        Model.DeleteUserByUsername(data.Username);
@@ -130,7 +143,7 @@
                catch (Exception ex)
                {
                    log.Error("Delete User Failed.", ex);
                    ToastHelper.Error(Window.GetWindow(this), $"删除失败!{ex.Message}");
                    ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.DeleteFailed")}: {ex.Message}");
                }
            }
            else if (btn.Name == "saveRoleBtn")
@@ -139,14 +152,77 @@
                {
                    Model.SaveUserRole();
                    Model.LoadUserRole();
                    ToastHelper.Success(Window.GetWindow(this), "保存成功");
                    ToastHelper.Success(Window.GetWindow(this), LangUtil.Get("App.SaveSuccess"));
                }
                catch (Exception ex)
                {
                    log.Error("Update User-Role Rel Failed.", ex);
                    ToastHelper.Error(Window.GetWindow(this), $"保存失败!{ex.Message}");
                    ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.SaveFailed")}: {ex.Message}");
                }
            }
            else if (btn.Name == "exportBtn")
            {
                ExportToExcel();
            }
            else if (btn.Name == "importBtn")
            {
                ImportFromExcel();
            }
        }
        public void ExportToExcel()
        {
            try
            {
                if (Model.DataSource == null || Model.DataSource.Count <= 0)
                {
                    ToastHelper.Warning(this.lang("App.NoExportData"));
                    return;
                }
                System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog();
                string fname = string.Empty;
                sfd.Filter = "";
                sfd.DefaultExt = "xls";
                sfd.FileName = this.lang("HMI.User.Title");
                if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    fname = sfd.FileName;
                    ExcelHelper.ExportExcel(fname, Model.DataSource);
                    ToastHelper.Success(this.lang("App.ExportSuccess"));
                }
            }
            catch (Exception ex)
            {
                log.Error("Export User Data Failed.", ex);
                ToastHelper.Error(ex.Message);
            }
        }
        public void ImportFromExcel()
        {
            try
            {
                System.Windows.Forms.OpenFileDialog openDialog = new System.Windows.Forms.OpenFileDialog();
                openDialog.Filter = "execl(*.xlsx;*.xls)|*.xlsx;*.xls";
                if (openDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    List<UserData> users = ExcelHelper.ReadFromExcel<UserData>(openDialog.FileName);
                    if (users == null || users.Count <= 0)
                    {
                        ToastHelper.Warning(this.lang("App.NoImportData"));
                        return;
                    }
                    Model.ImportUser(users);
                    Model.LoadData();
                    ToastHelper.Success(this.lang("App.ImportSuccess"));
                }
            }
            catch (Exception ex)
            {
                log.Error("AlarmText Import Failed.", ex);
                ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.ImportFailed")}: {ex.Message}");
            }
        }
    }
}