using CommunityToolkit.Mvvm.ComponentModel; using ivf_tl_Entity.Entity.AppSetting; using ivf_tl_Entity.Enums; using ivf_tl_Entity.Response; using ivf_tl_Manage.Converts; using ivf_tl_Manage.Win; using ivf_tl_Service.HttpProvider; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Security.Principal; using System.Text; using System.Threading.Tasks; namespace ivf_tl_Manage.ViewModels { public partial class AppSettingViewModel : BaseViewModel { [ObservableProperty] private string currentTitle = "业务管理"; [ObservableProperty] private ObservableCollection userList = new ObservableCollection(); [ObservableProperty] private ObservableCollection roleList = new ObservableCollection(); private List SearchRoleList = new List(); [ObservableProperty] private ObservableCollection showRoleList = new ObservableCollection(); [ObservableProperty] private ObservableCollection businessList = new ObservableCollection(); [ObservableProperty] private ObservableCollection funcList = new ObservableCollection(); public Dictionary TypeDicSource { get; set; } = new Dictionary { { 1, "启用" }, { 0, "禁用" } }; public int PageSize { get; set; } = 9; public int PageCurrent = 1; private string SearchUrl; private int SearchState = -1; private string SearchName; [ObservableProperty] private int dataCount = -1; private int RolePageCurrent = 1; private long SearchRoleId = -1; [ObservableProperty] private int roleDataCount = -1; private int UserPageCurrent = 1; private string SearchAccount; private string SearchUserName; private long SearchUserRoleId = -1; [ObservableProperty] private int userDataCount = -1; private SettingProvider settingProvider; public AppSettingViewModel() { base.ViewModelName=nameof(AppSettingViewModel); settingProvider = AppData.Instance.GetSettingProvider(); BusinessList = new ObservableCollection(settingProvider.GetAllBusinessApi()); DataCount = Updata(); UserDataCount = -1; UserDataCount = UpdataUser(); RoleList.Clear(); var list = settingProvider.GetAllRoleApi(); int k = 1; foreach (var item in list) { item.num = k++; if (string.IsNullOrEmpty(item.remark)) { item.remark = "---"; } RoleList.Add(item); SearchRoleList.Add(item); if (k <= 10) ShowRoleList.Add(item); } list.Clear(); RoleDataCount = RoleList.Count; } bool up = false; public void DataChange(string newTitle,string dataType) { CurrentTitle = newTitle; switch (dataType) { case "1": up = true; UserDataCount = -1; UserDataCount = UpdataUser(); up = false; break; case "2": //RoleUpdata(); break; } //switch (CurrentTitle) //{ // case "角色管理": // //RoleUpdata(); // break; // case "用户管理": // up = true; // UserDataCount = -1; // UserDataCount = UpdataUser(); // up = false; // break; //} } #region 业务 public void AddBus() { AppData.Instance.MainWindowViewModel.MaskVisibility = true; var addResult = new BusWindow().ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; if (addResult != true) return; BusinessList = new ObservableCollection(settingProvider.GetAllBusinessApi()); } public void EditBus(Business business) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new BusWindow(business).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } public void BusSetting(Business business) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new BusSettingWindow(settingProvider, business.id, business.name).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } public void BusDel(Business business) { try { //MessageBoxShow("删除", $"确定删除此条名为{business.name}的业务吗?") != true if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return; string error = settingProvider.DelFuncAndBusApi(business.id); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } ToastShow(true); BusinessList.Remove(business); } catch (Exception ex) { ExLog(ex, "BusDel"); //MessageBoxShow($"操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } #endregion #region 功能 private int Updata() { FuncList.Clear(); SearchBusinessResponse searchBusinessResponse = new SearchBusinessResponse(); searchBusinessResponse.current = PageCurrent; if (!string.IsNullOrEmpty(SearchName)) searchBusinessResponse.name = SearchName; searchBusinessResponse.size = PageSize; if (SearchState != -1) searchBusinessResponse.state = SearchState; if (!string.IsNullOrEmpty(SearchUrl)) searchBusinessResponse.url = SearchUrl; var k = ((PageCurrent - 1) * PageSize) + 1; var a = settingProvider.SearchFuncApi(searchBusinessResponse); Business currentBus = null; foreach (var item in a.records) { currentBus = BusinessList.FirstOrDefault(x => x.id == item.parentId); if (currentBus == null) item.ParentName = "/"; else item.ParentName = currentBus.name; item.num = k++; FuncList.Add(item); } return a.total; } public void SetPageCurrent(int newPage) { if (up) return; PageCurrent = newPage; Updata(); } public void SetSearchNameAndUrl(string newName, string newUrl) { if (SearchName == newName && SearchUrl == newUrl) return; SearchName = newName; SearchUrl = newUrl; up = true; DataCount = Updata(); up = false; } public void SetSearchState(int newState, string newName, string newUrl) { if (SearchState == newState && SearchName == newName && SearchUrl == newUrl) return; SearchState = newState; SearchName = newName; SearchUrl = newUrl; up = true; DataCount = Updata(); up = false; } public void AddFunc() { AppData.Instance.MainWindowViewModel.MaskVisibility = true; var addResult = new FuncWindow().ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; if (addResult != true) return; up = true; DataCount = -1; DataCount = Updata(); up = false; } public void EdirFunc(Business business) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new FuncWindow(business).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } public void DelFunc(Business business) { try { //MessageBoxShow("删除", $"确定删除此项名为{business.name}的功能吗?") != true if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return; string error = settingProvider.DelFuncAndBusApi(business.id); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } ToastShow(true); up = true; DataCount = -1; DataCount = Updata(); up = false; } catch (Exception ex) { ExLog(ex, "DelFunc"); //MessageBoxShow($"操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } public void StateFunc(Business business) { try { string error = settingProvider.SateFuncApi(business.id, business.state); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } } catch (Exception ex) { ExLog(ex, "StateFunc"); //MessageBoxShow($"操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } #endregion #region 角色 private void RoleUpdata() { RoleDataCount = -1; RoleDataCount = RoleList.Count; } public void SetRolePageCurrent(int newPage) { if (up) return; RolePageCurrent = newPage; var a = SearchRoleList.Skip((newPage - 1) * PageSize).Take(PageSize).ToList(); var k = ((RolePageCurrent - 1) * PageSize) + 1; ShowRoleList.Clear(); foreach (var item in a) { item.num = k++; ShowRoleList.Add(item); } } public void SearchRole(long roleId) { if (SearchRoleId == roleId) return; SearchRoleId = roleId; SearchRoleList.Clear(); if (SearchRoleId == -1) { foreach (var item in RoleList) { SearchRoleList.Add(item); } } else { var a = RoleList.Where(x => x.id == roleId).ToList(); foreach (var item in a) { SearchRoleList.Add(item); } } RoleDataCount = -1; RoleDataCount = SearchRoleList.Count; } public void AddRole() { AppData.Instance.MainWindowViewModel.MaskVisibility = true; var addResult = new RoleWindow().ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; if (addResult != true) return; RoleList.Clear(); SearchRoleList.Clear(); var list = settingProvider.GetAllRoleApi(); int k = 1; foreach (var item in list) { item.num = k++; if (string.IsNullOrEmpty(item.remark)) { item.remark = "---"; } RoleList.Add(item); SearchRoleList.Add(item); } list.Clear(); RoleDataCount = -1; RoleDataCount = SearchRoleList.Count; } public void EditRole(RoleEntity roleEntity) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new RoleWindow(roleEntity).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } public void RoleDel(long id, string name) { try { //MessageBoxShow("删除", $"确定删除此条名为{name}的角色吗?") != true if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return; string error = settingProvider.DeleteRoleApi(id); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } ToastShow(true); RoleList.Clear(); SearchRoleList.Clear(); var list = settingProvider.GetAllRoleApi(); int k = 1; foreach (var item in list) { item.num = k++; if (string.IsNullOrEmpty(item.remark)) { item.remark = "---"; } RoleList.Add(item); SearchRoleList.Add(item); } list.Clear(); RoleDataCount = -1; RoleDataCount = SearchRoleList.Count; } catch (Exception ex) { ExLog(ex, "UserDel"); //MessageBoxShow($"操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } public void SettingRole(RoleEntity roleEntity) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new RoleSettingWindow(settingProvider, roleEntity.id).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } #endregion #region 用户 private int UpdataUser() { UserList.Clear(); SearchUserResponse searchUserResponse = new SearchUserResponse(); if (!string.IsNullOrEmpty(SearchAccount)) searchUserResponse.account = SearchAccount; searchUserResponse.current = UserPageCurrent; if (SearchUserRoleId != -1) searchUserResponse.roleId = SearchUserRoleId; searchUserResponse.size = PageSize; if (!string.IsNullOrEmpty(SearchUserName)) searchUserResponse.username = SearchUserName; var k = ((UserPageCurrent - 1) * PageSize) + 1; var a = settingProvider.SearchUserApi(searchUserResponse); foreach (var item in a.records) { foreach (var roleItem in item.roles) { item.RoleString = $"{item.RoleString}{roleItem.name} "; } if (item.permissionDTOS != null) { foreach (var busItem in item.permissionDTOS) { item.BusString = $"{item.BusString}{busItem.name} "; } } item.num = k++; UserList.Add(item); } return a.total; } public void SetUserPageChange(int newPage) { if (up) return; UserPageCurrent = newPage; UpdataUser(); } public void SetUserNameAndAccount(string uaername, string account) { if (SearchUserName == uaername && SearchAccount == account) return; SearchUserName = uaername; SearchAccount = account; up = true; UserDataCount = -1; UserDataCount = UpdataUser(); up = false; } public void SetUserNameAndAccount(long newroleId, string uaername, string account) { if (SearchUserRoleId == newroleId && SearchUserName == uaername && SearchAccount == account) return; SearchUserName = uaername; SearchUserRoleId = newroleId; SearchAccount = account; up = true; UserDataCount = -1; UserDataCount = UpdataUser(); up = false; } public void AddUser() { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new UserEntityWindow(RoleList).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; up = true; UserDataCount = -1; UserDataCount = UpdataUser(); up = false; } public void EditUser(UserManageEntity userManageEntity) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new UserEntityWindow(userManageEntity, RoleList).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } public void UserBus(UserManageEntity userManageEntity) { try { AppData.Instance.MainWindowViewModel.MaskVisibility = true; new UserBusWindow(userManageEntity.permissionDTOS).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; } catch (Exception) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; } } public void UserRefPass(long id, string account) { try { //MessageBoxShow("重置密码", $"确定对{account}的登录密码进行重置吗?") != true if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey(""), $"确定对{account}的登录密码进行重置吗?") != true) return; string error = settingProvider.ResetUserPassWordApi(id); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } ToastShow(true); } catch (Exception ex) { ExLog(ex, "UserRefPass"); //MessageBoxShow($"操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } public void UserDel(long id, string name) { try { //MessageBoxShow("删除", $"确定删除登录名为{name}的用户吗?") != true if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return; string error = settingProvider.DeleteUserApi(id); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } ToastShow(true); up = true; UserDataCount = -1; UserDataCount = UpdataUser(); up = false; } catch (Exception ex) { ExLog(ex, "UserDel"); //MessageBoxShow($"操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } #endregion } }