AppSettingViewModel.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. using ivf_tl_Entity.Entity.AppSetting;
  3. using ivf_tl_Entity.Enums;
  4. using ivf_tl_Entity.Response;
  5. using ivf_tl_Manage.Converts;
  6. using ivf_tl_Manage.Win;
  7. using ivf_tl_Service.HttpProvider;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Collections.ObjectModel;
  11. using System.Linq;
  12. using System.Security.Principal;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace ivf_tl_Manage.ViewModels
  16. {
  17. public partial class AppSettingViewModel : BaseViewModel
  18. {
  19. [ObservableProperty]
  20. private string currentTitle = "业务管理";
  21. [ObservableProperty]
  22. private ObservableCollection<UserManageEntity> userList = new ObservableCollection<UserManageEntity>();
  23. [ObservableProperty]
  24. private ObservableCollection<RoleEntity> roleList = new ObservableCollection<RoleEntity>();
  25. private List<RoleEntity> SearchRoleList = new List<RoleEntity>();
  26. [ObservableProperty]
  27. private ObservableCollection<RoleEntity> showRoleList = new ObservableCollection<RoleEntity>();
  28. [ObservableProperty]
  29. private ObservableCollection<Business> businessList = new ObservableCollection<Business>();
  30. [ObservableProperty]
  31. private ObservableCollection<Business> funcList = new ObservableCollection<Business>();
  32. public Dictionary<int, string> TypeDicSource { get; set; } = new Dictionary<int, string> { { 1, "启用" }, { 0, "禁用" } };
  33. public int PageSize { get; set; } = 9;
  34. public int PageCurrent = 1;
  35. private string SearchUrl;
  36. private int SearchState = -1;
  37. private string SearchName;
  38. [ObservableProperty]
  39. private int dataCount = -1;
  40. private int RolePageCurrent = 1;
  41. private long SearchRoleId = -1;
  42. [ObservableProperty]
  43. private int roleDataCount = -1;
  44. private int UserPageCurrent = 1;
  45. private string SearchAccount;
  46. private string SearchUserName;
  47. private long SearchUserRoleId = -1;
  48. [ObservableProperty]
  49. private int userDataCount = -1;
  50. private SettingProvider settingProvider;
  51. public AppSettingViewModel()
  52. {
  53. base.ViewModelName=nameof(AppSettingViewModel);
  54. settingProvider = AppData.Instance.GetSettingProvider();
  55. BusinessList = new ObservableCollection<Business>(settingProvider.GetAllBusinessApi());
  56. DataCount = Updata();
  57. UserDataCount = -1;
  58. UserDataCount = UpdataUser();
  59. RoleList.Clear();
  60. var list = settingProvider.GetAllRoleApi();
  61. int k = 1;
  62. foreach (var item in list)
  63. {
  64. item.num = k++;
  65. if (string.IsNullOrEmpty(item.remark))
  66. {
  67. item.remark = "---";
  68. }
  69. RoleList.Add(item);
  70. SearchRoleList.Add(item);
  71. if (k <= 10) ShowRoleList.Add(item);
  72. }
  73. list.Clear();
  74. RoleDataCount = RoleList.Count;
  75. }
  76. bool up = false;
  77. public void DataChange(string newTitle,string dataType)
  78. {
  79. CurrentTitle = newTitle;
  80. switch (dataType)
  81. {
  82. case "1":
  83. up = true;
  84. UserDataCount = -1;
  85. UserDataCount = UpdataUser();
  86. up = false;
  87. break;
  88. case "2":
  89. //RoleUpdata();
  90. break;
  91. }
  92. //switch (CurrentTitle)
  93. //{
  94. // case "角色管理":
  95. // //RoleUpdata();
  96. // break;
  97. // case "用户管理":
  98. // up = true;
  99. // UserDataCount = -1;
  100. // UserDataCount = UpdataUser();
  101. // up = false;
  102. // break;
  103. //}
  104. }
  105. #region 业务
  106. public void AddBus()
  107. {
  108. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  109. var addResult = new BusWindow().ShowDialog();
  110. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  111. if (addResult != true) return;
  112. BusinessList = new ObservableCollection<Business>(settingProvider.GetAllBusinessApi());
  113. }
  114. public void EditBus(Business business)
  115. {
  116. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  117. new BusWindow(business).ShowDialog();
  118. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  119. }
  120. public void BusSetting(Business business)
  121. {
  122. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  123. new BusSettingWindow(settingProvider, business.id, business.name).ShowDialog();
  124. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  125. }
  126. public void BusDel(Business business)
  127. {
  128. try
  129. {
  130. //MessageBoxShow("删除", $"确定删除此条名为{business.name}的业务吗?") != true
  131. if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return;
  132. string error = settingProvider.DelFuncAndBusApi(business.id);
  133. if (!string.IsNullOrEmpty(error))
  134. {
  135. //MessageBoxShow("操作失败", error);
  136. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error);
  137. return;
  138. }
  139. ToastShow(true);
  140. BusinessList.Remove(business);
  141. }
  142. catch (Exception ex)
  143. {
  144. ExLog(ex, "BusDel");
  145. //MessageBoxShow($"操作异常", ex.Message);
  146. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message);
  147. }
  148. }
  149. #endregion
  150. #region 功能
  151. private int Updata()
  152. {
  153. FuncList.Clear();
  154. SearchBusinessResponse searchBusinessResponse = new SearchBusinessResponse();
  155. searchBusinessResponse.current = PageCurrent;
  156. if (!string.IsNullOrEmpty(SearchName)) searchBusinessResponse.name = SearchName;
  157. searchBusinessResponse.size = PageSize;
  158. if (SearchState != -1) searchBusinessResponse.state = SearchState;
  159. if (!string.IsNullOrEmpty(SearchUrl)) searchBusinessResponse.url = SearchUrl;
  160. var k = ((PageCurrent - 1) * PageSize) + 1;
  161. var a = settingProvider.SearchFuncApi(searchBusinessResponse);
  162. Business currentBus = null;
  163. foreach (var item in a.records)
  164. {
  165. currentBus = BusinessList.FirstOrDefault(x => x.id == item.parentId);
  166. if (currentBus == null) item.ParentName = "/";
  167. else item.ParentName = currentBus.name;
  168. item.num = k++;
  169. FuncList.Add(item);
  170. }
  171. return a.total;
  172. }
  173. public void SetPageCurrent(int newPage)
  174. {
  175. if (up) return;
  176. PageCurrent = newPage;
  177. Updata();
  178. }
  179. public void SetSearchNameAndUrl(string newName, string newUrl)
  180. {
  181. if (SearchName == newName && SearchUrl == newUrl) return;
  182. SearchName = newName;
  183. SearchUrl = newUrl;
  184. up = true;
  185. DataCount = Updata();
  186. up = false;
  187. }
  188. public void SetSearchState(int newState, string newName, string newUrl)
  189. {
  190. if (SearchState == newState && SearchName == newName && SearchUrl == newUrl) return;
  191. SearchState = newState;
  192. SearchName = newName;
  193. SearchUrl = newUrl;
  194. up = true;
  195. DataCount = Updata();
  196. up = false;
  197. }
  198. public void AddFunc()
  199. {
  200. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  201. var addResult = new FuncWindow().ShowDialog();
  202. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  203. if (addResult != true) return;
  204. up = true;
  205. DataCount = -1;
  206. DataCount = Updata();
  207. up = false;
  208. }
  209. public void EdirFunc(Business business)
  210. {
  211. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  212. new FuncWindow(business).ShowDialog();
  213. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  214. }
  215. public void DelFunc(Business business)
  216. {
  217. try
  218. {
  219. //MessageBoxShow("删除", $"确定删除此项名为{business.name}的功能吗?") != true
  220. if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return;
  221. string error = settingProvider.DelFuncAndBusApi(business.id);
  222. if (!string.IsNullOrEmpty(error))
  223. {
  224. //MessageBoxShow("操作失败", error);
  225. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error);
  226. return;
  227. }
  228. ToastShow(true);
  229. up = true;
  230. DataCount = -1;
  231. DataCount = Updata();
  232. up = false;
  233. }
  234. catch (Exception ex)
  235. {
  236. ExLog(ex, "DelFunc");
  237. //MessageBoxShow($"操作异常", ex.Message);
  238. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message);
  239. }
  240. }
  241. public void StateFunc(Business business)
  242. {
  243. try
  244. {
  245. string error = settingProvider.SateFuncApi(business.id, business.state);
  246. if (!string.IsNullOrEmpty(error))
  247. {
  248. //MessageBoxShow("操作失败", error);
  249. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error);
  250. return;
  251. }
  252. }
  253. catch (Exception ex)
  254. {
  255. ExLog(ex, "StateFunc");
  256. //MessageBoxShow($"操作异常", ex.Message);
  257. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message);
  258. }
  259. }
  260. #endregion
  261. #region 角色
  262. private void RoleUpdata()
  263. {
  264. RoleDataCount = -1;
  265. RoleDataCount = RoleList.Count;
  266. }
  267. public void SetRolePageCurrent(int newPage)
  268. {
  269. if (up) return;
  270. RolePageCurrent = newPage;
  271. var a = SearchRoleList.Skip((newPage - 1) * PageSize).Take(PageSize).ToList();
  272. var k = ((RolePageCurrent - 1) * PageSize) + 1;
  273. ShowRoleList.Clear();
  274. foreach (var item in a)
  275. {
  276. item.num = k++;
  277. ShowRoleList.Add(item);
  278. }
  279. }
  280. public void SearchRole(long roleId)
  281. {
  282. if (SearchRoleId == roleId) return;
  283. SearchRoleId = roleId;
  284. SearchRoleList.Clear();
  285. if (SearchRoleId == -1)
  286. {
  287. foreach (var item in RoleList)
  288. {
  289. SearchRoleList.Add(item);
  290. }
  291. }
  292. else
  293. {
  294. var a = RoleList.Where(x => x.id == roleId).ToList();
  295. foreach (var item in a)
  296. {
  297. SearchRoleList.Add(item);
  298. }
  299. }
  300. RoleDataCount = -1;
  301. RoleDataCount = SearchRoleList.Count;
  302. }
  303. public void AddRole()
  304. {
  305. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  306. var addResult = new RoleWindow().ShowDialog();
  307. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  308. if (addResult != true) return;
  309. RoleList.Clear();
  310. SearchRoleList.Clear();
  311. var list = settingProvider.GetAllRoleApi();
  312. int k = 1;
  313. foreach (var item in list)
  314. {
  315. item.num = k++;
  316. if (string.IsNullOrEmpty(item.remark))
  317. {
  318. item.remark = "---";
  319. }
  320. RoleList.Add(item);
  321. SearchRoleList.Add(item);
  322. }
  323. list.Clear();
  324. RoleDataCount = -1;
  325. RoleDataCount = SearchRoleList.Count;
  326. }
  327. public void EditRole(RoleEntity roleEntity)
  328. {
  329. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  330. new RoleWindow(roleEntity).ShowDialog();
  331. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  332. }
  333. public void RoleDel(long id, string name)
  334. {
  335. try
  336. {
  337. //MessageBoxShow("删除", $"确定删除此条名为{name}的角色吗?") != true
  338. if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return;
  339. string error = settingProvider.DeleteRoleApi(id);
  340. if (!string.IsNullOrEmpty(error))
  341. {
  342. //MessageBoxShow("操作失败", error);
  343. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error);
  344. return;
  345. }
  346. ToastShow(true);
  347. RoleList.Clear();
  348. SearchRoleList.Clear();
  349. var list = settingProvider.GetAllRoleApi();
  350. int k = 1;
  351. foreach (var item in list)
  352. {
  353. item.num = k++;
  354. if (string.IsNullOrEmpty(item.remark))
  355. {
  356. item.remark = "---";
  357. }
  358. RoleList.Add(item);
  359. SearchRoleList.Add(item);
  360. }
  361. list.Clear();
  362. RoleDataCount = -1;
  363. RoleDataCount = SearchRoleList.Count;
  364. }
  365. catch (Exception ex)
  366. {
  367. ExLog(ex, "UserDel");
  368. //MessageBoxShow($"操作异常", ex.Message);
  369. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message);
  370. }
  371. }
  372. public void SettingRole(RoleEntity roleEntity)
  373. {
  374. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  375. new RoleSettingWindow(settingProvider, roleEntity.id).ShowDialog();
  376. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  377. }
  378. #endregion
  379. #region 用户
  380. private int UpdataUser()
  381. {
  382. UserList.Clear();
  383. SearchUserResponse searchUserResponse = new SearchUserResponse();
  384. if (!string.IsNullOrEmpty(SearchAccount)) searchUserResponse.account = SearchAccount;
  385. searchUserResponse.current = UserPageCurrent;
  386. if (SearchUserRoleId != -1) searchUserResponse.roleId = SearchUserRoleId;
  387. searchUserResponse.size = PageSize;
  388. if (!string.IsNullOrEmpty(SearchUserName)) searchUserResponse.username = SearchUserName;
  389. var k = ((UserPageCurrent - 1) * PageSize) + 1;
  390. var a = settingProvider.SearchUserApi(searchUserResponse);
  391. foreach (var item in a.records)
  392. {
  393. foreach (var roleItem in item.roles)
  394. {
  395. item.RoleString = $"{item.RoleString}{roleItem.name} ";
  396. }
  397. if (item.permissionDTOS != null)
  398. {
  399. foreach (var busItem in item.permissionDTOS)
  400. {
  401. item.BusString = $"{item.BusString}{busItem.name} ";
  402. }
  403. }
  404. item.num = k++;
  405. UserList.Add(item);
  406. }
  407. return a.total;
  408. }
  409. public void SetUserPageChange(int newPage)
  410. {
  411. if (up) return;
  412. UserPageCurrent = newPage;
  413. UpdataUser();
  414. }
  415. public void SetUserNameAndAccount(string uaername, string account)
  416. {
  417. if (SearchUserName == uaername && SearchAccount == account) return;
  418. SearchUserName = uaername;
  419. SearchAccount = account;
  420. up = true;
  421. UserDataCount = -1;
  422. UserDataCount = UpdataUser();
  423. up = false;
  424. }
  425. public void SetUserNameAndAccount(long newroleId, string uaername, string account)
  426. {
  427. if (SearchUserRoleId == newroleId && SearchUserName == uaername && SearchAccount == account) return;
  428. SearchUserName = uaername;
  429. SearchUserRoleId = newroleId;
  430. SearchAccount = account;
  431. up = true;
  432. UserDataCount = -1;
  433. UserDataCount = UpdataUser();
  434. up = false;
  435. }
  436. public void AddUser()
  437. {
  438. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  439. new UserEntityWindow(RoleList).ShowDialog();
  440. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  441. up = true;
  442. UserDataCount = -1;
  443. UserDataCount = UpdataUser();
  444. up = false;
  445. }
  446. public void EditUser(UserManageEntity userManageEntity)
  447. {
  448. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  449. new UserEntityWindow(userManageEntity, RoleList).ShowDialog();
  450. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  451. }
  452. public void UserBus(UserManageEntity userManageEntity)
  453. {
  454. try
  455. {
  456. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  457. new UserBusWindow(userManageEntity.permissionDTOS).ShowDialog();
  458. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  459. }
  460. catch (Exception)
  461. {
  462. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  463. }
  464. }
  465. public void UserRefPass(long id, string account)
  466. {
  467. try
  468. {
  469. //MessageBoxShow("重置密码", $"确定对{account}的登录密码进行重置吗?") != true
  470. if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey(""), $"确定对{account}的登录密码进行重置吗?") != true) return;
  471. string error = settingProvider.ResetUserPassWordApi(id);
  472. if (!string.IsNullOrEmpty(error))
  473. {
  474. //MessageBoxShow("操作失败", error);
  475. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error);
  476. return;
  477. }
  478. ToastShow(true);
  479. }
  480. catch (Exception ex)
  481. {
  482. ExLog(ex, "UserRefPass");
  483. //MessageBoxShow($"操作异常", ex.Message);
  484. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message);
  485. }
  486. }
  487. public void UserDel(long id, string name)
  488. {
  489. try
  490. {
  491. //MessageBoxShow("删除", $"确定删除登录名为{name}的用户吗?") != true
  492. if (MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537")) != true) return;
  493. string error = settingProvider.DeleteUserApi(id);
  494. if (!string.IsNullOrEmpty(error))
  495. {
  496. //MessageBoxShow("操作失败", error);
  497. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error);
  498. return;
  499. }
  500. ToastShow(true);
  501. up = true;
  502. UserDataCount = -1;
  503. UserDataCount = UpdataUser();
  504. up = false;
  505. }
  506. catch (Exception ex)
  507. {
  508. ExLog(ex, "UserDel");
  509. //MessageBoxShow($"操作异常", ex.Message);
  510. MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message);
  511. }
  512. }
  513. #endregion
  514. }
  515. }