RoleViewModel.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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)
  97. {
  98. uiConfig = "_VenusSE";
  99. }
  100. else if (configType == ConfigType.VenusDE)
  101. {
  102. uiConfig = "_VenusDE";
  103. }
  104. //else if (configType == ConfigType.Venus)
  105. //{
  106. // uiConfig = "_Venus";
  107. //}
  108. if (File.Exists($"Config/UIMenu{uiConfig}.json"))
  109. {
  110. configPath = $"Config/UIMenu{uiConfig}.json";
  111. }
  112. else if (File.Exists($"Config/Menu{uiConfig}.json"))
  113. {
  114. configPath = $"Config/Menu{uiConfig}.json";
  115. }
  116. else
  117. {
  118. }
  119. RoleDefines = SerializeHelper.Instance.ReadFromJsonFile<ObservableCollection<RoleDefine>>(configPath);
  120. for (int i = 0; i < RoleDefines.Count; i++)
  121. {
  122. Roles.Add(RoleDefines[i].RoleName);
  123. }
  124. //Roles.Add("Manager");
  125. //Roles.Add("Engineer");
  126. //Roles.Add("Technician");
  127. //Roles.Add("Operator");
  128. }
  129. private void OnSave()
  130. {
  131. //for (int i = 0; i < RoleDefines.Count; i++)
  132. //{
  133. // for (int j = 0; j < RoleDefines[i].Menus.Count; j++)
  134. // {
  135. // RoleDefines[i].Menus[j].Permission = MenuPermission.ReadWrite;
  136. // }
  137. //}
  138. SerializeHelper.Instance.WriteToJsonFile<List<RoleDefine>>(RoleDefines.ToList(), $"Config/UIMenu{uiConfig}.json");
  139. }
  140. private void OnLoaded(Object myrecipeView)
  141. {
  142. if (firstLoad == true)
  143. {
  144. roleView = myrecipeView as RoleView;
  145. roleView.roleTreeView.SelectedItemChanged += RoleTreeView_SelectedItemChanged;
  146. }
  147. }
  148. private void RoleTreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
  149. {
  150. int index = Roles.IndexOf(e.NewValue.ToString());
  151. CurrentRoleDefine = RoleDefines[index];
  152. vm = CollectionViewSource.GetDefaultView(CurrentRoleDefine.Menus);
  153. vm.GroupDescriptions.Clear();
  154. vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu"));
  155. }
  156. }
  157. }