RoleViewModel.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. using Prism.Commands;
  2. using Prism.Mvvm;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Collections.ObjectModel;
  6. using System.ComponentModel;
  7. using System.Linq;
  8. using Venus_Core;
  9. using Venus_Unity;
  10. using RoleDefine = Venus_MainPages.Roles.RoleDefine;
  11. using Menu = Venus_MainPages.Roles.Menu;
  12. using Venus_MainPages.Views;
  13. using Venus_MainPages.Roles;
  14. using System.Windows.Data;
  15. using WPF.Themes.UserControls;
  16. using System.IO;
  17. using MECF.Framework.Common.DataCenter;
  18. namespace Venus_MainPages.ViewModels
  19. {
  20. internal class RoleViewModel : BindableBase
  21. {
  22. #region 私有属性
  23. List<VenusMenu> m_venusMenus = new List<VenusMenu>();
  24. //ObservableCollection<Menu> m_Menus = new ObservableCollection<Menu>();
  25. ICollectionView vm;
  26. ObservableCollection<string> m_Roles = new ObservableCollection<string>();
  27. ObservableCollection<RoleDefine> m_RoleDefines = new ObservableCollection<RoleDefine>();
  28. private bool firstLoad = true;
  29. private RoleView roleView;
  30. private RoleDefine m_CurrentRoleDefine;
  31. #endregion
  32. #region 依赖项属性
  33. public List<VenusMenu> VenusMenus
  34. {
  35. get { return m_venusMenus; }
  36. set
  37. {
  38. SetProperty(ref m_venusMenus, value);
  39. }
  40. }
  41. //public ObservableCollection<Menu> Menus
  42. //{
  43. // get { return m_Menus; }
  44. // set
  45. // {
  46. // SetProperty(ref m_Menus, value);
  47. // }
  48. //}
  49. public ObservableCollection<string> Roles
  50. {
  51. get
  52. {
  53. return m_Roles;
  54. }
  55. set
  56. {
  57. SetProperty(ref m_Roles, value);
  58. }
  59. }
  60. public ObservableCollection<RoleDefine> RoleDefines
  61. {
  62. get { return m_RoleDefines; }
  63. set
  64. {
  65. SetProperty(ref m_RoleDefines, value);
  66. }
  67. }
  68. public RoleDefine CurrentRoleDefine
  69. {
  70. get { return m_CurrentRoleDefine; }
  71. set
  72. {
  73. SetProperty(ref m_CurrentRoleDefine, value);
  74. }
  75. }
  76. #endregion
  77. #region 命令
  78. private DelegateCommand _SaveCommand;
  79. public DelegateCommand SaveCommand =>
  80. _SaveCommand ?? (_SaveCommand = new DelegateCommand(OnSave));
  81. private DelegateCommand<Object> _LoadedCommand;
  82. public DelegateCommand<Object> LoadedCommand =>
  83. _LoadedCommand ?? (_LoadedCommand = new DelegateCommand<Object>(OnLoaded));
  84. #endregion
  85. string uiConfig;
  86. public RoleViewModel()
  87. {
  88. string configPath = "";
  89. uiConfig = "";
  90. object obj = QueryDataClient.Instance.Service.GetData("System.ConfigType");
  91. var configType = (ConfigType)Convert.ToInt32(obj);
  92. if (configType == ConfigType.Other || configType == ConfigType.Kepler2300 || configType == ConfigType.Kepler2200)
  93. {
  94. uiConfig = "_Kepler";
  95. }
  96. else if (configType == ConfigType.VenusSE || configType == ConfigType.VenusDE)
  97. {
  98. uiConfig = "_VenusSE";
  99. }
  100. //else if (configType == ConfigType.Venus)
  101. //{
  102. // uiConfig = "_Venus";
  103. //}
  104. if (File.Exists($"Config/UIMenu{uiConfig}.json"))
  105. {
  106. configPath = $"Config/UIMenu{uiConfig}.json";
  107. }
  108. else if (File.Exists($"Config/Menu{uiConfig}.json"))
  109. {
  110. configPath = $"Config/Menu{uiConfig}.json";
  111. }
  112. else
  113. {
  114. }
  115. RoleDefines = SerializeHelper.Instance.ReadFromJsonFile<ObservableCollection<RoleDefine>>(configPath);
  116. for (int i = 0; i < RoleDefines.Count; i++)
  117. {
  118. Roles.Add(RoleDefines[i].RoleName);
  119. }
  120. //Roles.Add("Manager");
  121. //Roles.Add("Engineer");
  122. //Roles.Add("Technician");
  123. //Roles.Add("Operator");
  124. }
  125. private void OnSave()
  126. {
  127. //for (int i = 0; i < RoleDefines.Count; i++)
  128. //{
  129. // for (int j = 0; j < RoleDefines[i].Menus.Count; j++)
  130. // {
  131. // RoleDefines[i].Menus[j].Permission = MenuPermission.ReadWrite;
  132. // }
  133. //}
  134. SerializeHelper.Instance.WriteToJsonFile<List<RoleDefine>>(RoleDefines.ToList(), $"Config/UIMenu{uiConfig}.json");
  135. }
  136. private void OnLoaded(Object myrecipeView)
  137. {
  138. if (firstLoad == true)
  139. {
  140. roleView = myrecipeView as RoleView;
  141. roleView.roleTreeView.SelectedItemChanged += RoleTreeView_SelectedItemChanged;
  142. }
  143. }
  144. private void RoleTreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
  145. {
  146. int index = Roles.IndexOf(e.NewValue.ToString());
  147. CurrentRoleDefine = RoleDefines[index];
  148. vm = CollectionViewSource.GetDefaultView(CurrentRoleDefine.Menus);
  149. vm.GroupDescriptions.Clear();
  150. vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu"));
  151. }
  152. }
  153. }