frmRoleEdit.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. using ComponentFactory.Krypton.Toolkit;
  2. using NXWMS.Client.Model.AppModels.Condition.SysSettings;
  3. using NXWMS.Client.Model.AppModels.Result.SysSettings;
  4. using NXWMS.Client.Model.CoreModels;
  5. using NXWMS.Client.String.Enums;
  6. using NXWMS.Commons;
  7. using NXWMS.Services;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.ComponentModel;
  11. using System.Data;
  12. using System.Drawing;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Windows.Forms;
  16. namespace NXWMS.Forms.SysSettings.ChildFrm
  17. {
  18. public partial class frmRoleEdit : KryptonForm
  19. {
  20. private EnumOperation _LastOperation;
  21. private int _selectRoleId;
  22. /// <summary>
  23. /// 菜单层级列表
  24. /// </summary>
  25. private List<MenuLevelResult> _menuLevelList;
  26. private RolePermissionResult _selectRolePermission;
  27. public List<MenuLevelResult> MenuLevelList { get => MenuLevelList1; set => MenuLevelList1 = value; }
  28. public EnumOperation LastOperation { get => _LastOperation; set => _LastOperation = value; }
  29. public int SelectRoleId { get => _selectRoleId; set => _selectRoleId = value; }
  30. public List<MenuLevelResult> MenuLevelList1 { get => _menuLevelList; set => _menuLevelList = value; }
  31. private int _selectMainMenuIndex;
  32. private int _selectMenuIndex;
  33. private int _selectFunctionIndex;
  34. public void InitControl()
  35. {
  36. //菜单列表添加
  37. treeViewMainMenu.Scrollable = true;
  38. treeViewMainMenu.ShowPlusMinus = true;
  39. treeViewMainMenu.ShowRootLines = true;
  40. treeViewMainMenu.Nodes.Clear();
  41. var menuList = MenuLevelList.Where((x, i) => MenuLevelList.FindIndex(z => z.MainMenuId == x.MainMenuId) == i).Distinct().ToList();
  42. foreach (var item in (from x in menuList
  43. select new
  44. { x.MainMenuId, x.MainMenuName, x.MainMenuCode, x.MainMenuOrder, x.MainMenuURL }).Distinct())
  45. {
  46. var newTreeNode = new TreeNode
  47. {
  48. Checked = true,
  49. Name = item.MainMenuId.ToString(),
  50. Text = item.MainMenuName,
  51. };
  52. newTreeNode.Checked = false;
  53. var f1 = treeViewMainMenu.Nodes.Add(newTreeNode);
  54. }
  55. treeViewMainMenu.ExpandAll();
  56. treeViewMainMenu.NodeMouseDoubleClick += new
  57. TreeNodeMouseClickEventHandler(TreeMainMenuNodeDoubleClick);
  58. txtRoleCode.SetControlBase(50);
  59. txtRoleName.SetControlBase(100);
  60. }
  61. /// <summary>
  62. /// 主菜单双击
  63. /// </summary>
  64. /// <param name="sender"></param>
  65. /// <param name="e"></param>
  66. public void TreeMainMenuNodeDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  67. {
  68. var menuView = sender as KryptonTreeView;
  69. var selectedNode = menuView.SelectedNode;
  70. if (selectedNode == null)
  71. {
  72. return;
  73. }
  74. //菜单列表添加
  75. treeViewMenu.Scrollable = true;
  76. treeViewMenu.ShowPlusMinus = true;
  77. treeViewMenu.ShowRootLines = true;
  78. treeViewMenu.Nodes.Clear();
  79. _selectMainMenuIndex = e.Node.Index;
  80. foreach (var item in (from x in _menuLevelList.Where(m => m.MainMenuId == int.Parse(selectedNode.Name))
  81. select new
  82. { x.MenuCode, x.MenuName, x.MenuId, x.MenuOrder, x.MenuURL }).Distinct())
  83. {
  84. var newTreeNode = new TreeNode
  85. {
  86. Checked = true,
  87. Name = item.MenuId.ToString(),
  88. Text = item.MenuName,
  89. };
  90. newTreeNode.Checked = false;
  91. var f1 = treeViewMenu.Nodes.Add(newTreeNode);
  92. }
  93. treeViewMenu.ExpandAll();
  94. //授权打勾
  95. if (!_menuCheckList.Any())
  96. {
  97. _selectRolePermission = SysSettingsServices.roleService.GetPermissionInfo(new RolePermissionCondition
  98. {
  99. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  100. RoleId = _selectRoleId,
  101. }).Data;
  102. foreach (TreeNode item in treeViewMainMenu.Nodes)
  103. {
  104. item.Checked = false;
  105. }
  106. foreach (TreeNode item in treeViewMenu.Nodes)
  107. {
  108. item.Checked = false;
  109. }
  110. if (_selectRolePermission != null)
  111. {
  112. foreach (var item in _selectRolePermission.RoleMenuList.Where(m => m.MainMenuId != null).Distinct().ToList())
  113. {
  114. if (treeViewMainMenu.Nodes[item.MainMenuId.Value.ToString()] != null)
  115. {
  116. treeViewMainMenu.Nodes[item.MainMenuId.Value.ToString()].Checked = true;
  117. }
  118. if (treeViewMenu.Nodes[item.MainMenuId.Value.ToString()] != null)
  119. {
  120. treeViewMenu.Nodes[item.MainMenuId.Value.ToString()].Checked = true;
  121. }
  122. }
  123. }
  124. }
  125. else
  126. {
  127. foreach (TreeNode item in treeViewMenu.Nodes)
  128. {
  129. item.Checked = false;
  130. }
  131. foreach (var item in _menuCheckList)
  132. {
  133. if (treeViewMenu.Nodes[item.ToString()] != null)
  134. {
  135. treeViewMenu.Nodes[item.ToString()].Checked = true;
  136. }
  137. }
  138. }
  139. treeViewMenu.NodeMouseDoubleClick += new
  140. TreeNodeMouseClickEventHandler(TreeMenuNodeDoubleClick);
  141. }
  142. /// <summary>
  143. /// 菜单双击
  144. /// </summary>
  145. /// <param name="sender"></param>
  146. /// <param name="e"></param>
  147. public void TreeMenuNodeDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  148. {
  149. var menuView = sender as KryptonTreeView;
  150. var selectedNode = menuView.SelectedNode;
  151. if (selectedNode == null)
  152. {
  153. return;
  154. }
  155. _selectMenuIndex = e.Node.Index;
  156. //菜单列表添加
  157. treeViewFunction.Scrollable = true;
  158. treeViewFunction.ShowPlusMinus = true;
  159. treeViewFunction.ShowRootLines = true;
  160. treeViewFunction.Nodes.Clear();
  161. foreach (var item in (from x in _menuLevelList.Where(m => m.MenuId == int.Parse(selectedNode.Name) && m.FunctionCode != null)
  162. select new
  163. { x.FunctionCode, x.FunctionName, x.FunctionId, x.FunctionOrder, x.FunctionURL }).Distinct())
  164. {
  165. var newTreeNode = new TreeNode
  166. {
  167. Checked = true,
  168. Name = item.FunctionId.ToString(),
  169. Text = item.FunctionName,
  170. };
  171. newTreeNode.Checked = false;
  172. var f1 = treeViewFunction.Nodes.Add(newTreeNode);
  173. }
  174. treeViewFunction.ExpandAll();
  175. foreach (TreeNode item in treeViewFunction.Nodes)
  176. {
  177. item.Checked = false;
  178. }
  179. //授权打勾
  180. if (!_menuCheckList.Any())
  181. {
  182. var menuList = _selectRolePermission;
  183. foreach (var item in menuList.RoleMenuList.Where(m => m.MainMenuId != null))
  184. {
  185. if (treeViewFunction.Nodes[item.MainMenuId.Value.ToString()] != null)
  186. {
  187. treeViewFunction.Nodes[item.MainMenuId.Value.ToString()].Checked = true;
  188. }
  189. }
  190. }
  191. else
  192. {
  193. foreach (var item in _menuCheckList)
  194. {
  195. if (treeViewFunction.Nodes[item.ToString()] != null)
  196. {
  197. treeViewFunction.Nodes[item.ToString()].Checked = true;
  198. }
  199. }
  200. }
  201. }
  202. public frmRoleEdit()
  203. {
  204. InitializeComponent();
  205. }
  206. private List<int> _menuCheckList = new List<int>();
  207. private void btnSave_Click(object sender, EventArgs e)
  208. {
  209. if (string.IsNullOrWhiteSpace(txtRoleCode.Text))
  210. {
  211. KryptonMessageBox.Show($"请输入角色编码。", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  212. return;
  213. }
  214. if (string.IsNullOrWhiteSpace(txtRoleName.Text))
  215. {
  216. KryptonMessageBox.Show($"请输入角色名称。", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  217. return;
  218. }
  219. _menuCheckList = new List<int>();
  220. switch (LastOperation)
  221. {
  222. case EnumOperation.Add:
  223. var addResult = SysSettingsServices.roleService.Add(new RoleCondition
  224. {
  225. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  226. IsUsed = chkUse.Checked,
  227. RoleCode = txtRoleCode.Text,
  228. RoleName = txtRoleName.Text,
  229. Describe = richDescibe.Text,
  230. PermissionMenuIdList = GetPermissionMenuIdList(),
  231. });
  232. if (addResult.Status == OperateStatus.Success)
  233. {
  234. KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  235. }
  236. else
  237. {
  238. KryptonMessageBox.Show($"操作失败!\r\n{addResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  239. }
  240. break;
  241. case EnumOperation.Edit:
  242. var editResult = SysSettingsServices.roleService.Edit(new RoleCondition
  243. {
  244. OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
  245. IsUsed = chkUse.Checked,
  246. RoleCode = txtRoleCode.Text,
  247. RoleName = txtRoleName.Text,
  248. RoleId = SelectRoleId,
  249. Describe = richDescibe.Text,
  250. PermissionMenuIdList = GetPermissionMenuIdList(),
  251. });
  252. if (editResult.Status == OperateStatus.Success)
  253. {
  254. KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  255. }
  256. else
  257. {
  258. KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  259. }
  260. break;
  261. }
  262. }
  263. private List<int> GetPermissionMenuIdList()
  264. {
  265. var permissionList = new List<int>();
  266. foreach (TreeNode item in treeViewMainMenu.Nodes)
  267. {
  268. if (item.Checked)
  269. {
  270. permissionList.Add(Convert.ToInt32(item.Name));
  271. }
  272. }
  273. foreach (TreeNode item in treeViewMenu.Nodes)
  274. {
  275. if (item.Checked)
  276. {
  277. permissionList.Add(Convert.ToInt32(item.Name));
  278. }
  279. }
  280. foreach (TreeNode item in treeViewFunction.Nodes)
  281. {
  282. if (item.Checked)
  283. {
  284. permissionList.Add(Convert.ToInt32(item.Name));
  285. }
  286. }
  287. return permissionList;
  288. }
  289. private void treeViewMainMenu_DoubleClick(object sender, EventArgs e)
  290. {
  291. }
  292. private void btnExit_Click(object sender, EventArgs e)
  293. {
  294. this.Close();
  295. }
  296. }
  297. }