using ComponentFactory.Krypton.Toolkit; using NXWMS.Client.Model.AppModels.Condition.SysSettings; using NXWMS.Client.Model.AppModels.Result.SysSettings; using NXWMS.Client.Model.CoreModels; using NXWMS.Client.String.Enums; using NXWMS.Commons; using NXWMS.Services; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace NXWMS.Forms.SysSettings.ChildFrm { public partial class frmRoleEdit : KryptonForm { private EnumOperation _LastOperation; private int _selectRoleId; /// /// 菜单层级列表 /// private List _menuLevelList; private RolePermissionResult _selectRolePermission; public List MenuLevelList { get => MenuLevelList1; set => MenuLevelList1 = value; } public EnumOperation LastOperation { get => _LastOperation; set => _LastOperation = value; } public int SelectRoleId { get => _selectRoleId; set => _selectRoleId = value; } public List MenuLevelList1 { get => _menuLevelList; set => _menuLevelList = value; } private int _selectMainMenuIndex; private int _selectMenuIndex; private int _selectFunctionIndex; public void InitControl() { //菜单列表添加 treeViewMainMenu.Scrollable = true; treeViewMainMenu.ShowPlusMinus = true; treeViewMainMenu.ShowRootLines = true; treeViewMainMenu.Nodes.Clear(); var menuList = MenuLevelList.Where((x, i) => MenuLevelList.FindIndex(z => z.MainMenuId == x.MainMenuId) == i).Distinct().ToList(); foreach (var item in (from x in menuList select new { x.MainMenuId, x.MainMenuName, x.MainMenuCode, x.MainMenuOrder, x.MainMenuURL }).Distinct()) { var newTreeNode = new TreeNode { Checked = true, Name = item.MainMenuId.ToString(), Text = item.MainMenuName, }; newTreeNode.Checked = false; var f1 = treeViewMainMenu.Nodes.Add(newTreeNode); } treeViewMainMenu.ExpandAll(); treeViewMainMenu.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(TreeMainMenuNodeDoubleClick); txtRoleCode.SetControlBase(50); txtRoleName.SetControlBase(100); } /// /// 主菜单双击 /// /// /// public void TreeMainMenuNodeDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { var menuView = sender as KryptonTreeView; var selectedNode = menuView.SelectedNode; if (selectedNode == null) { return; } //菜单列表添加 treeViewMenu.Scrollable = true; treeViewMenu.ShowPlusMinus = true; treeViewMenu.ShowRootLines = true; treeViewMenu.Nodes.Clear(); _selectMainMenuIndex = e.Node.Index; foreach (var item in (from x in _menuLevelList.Where(m => m.MainMenuId == int.Parse(selectedNode.Name)) select new { x.MenuCode, x.MenuName, x.MenuId, x.MenuOrder, x.MenuURL }).Distinct()) { var newTreeNode = new TreeNode { Checked = true, Name = item.MenuId.ToString(), Text = item.MenuName, }; newTreeNode.Checked = false; var f1 = treeViewMenu.Nodes.Add(newTreeNode); } treeViewMenu.ExpandAll(); //授权打勾 if (!_menuCheckList.Any()) { _selectRolePermission = SysSettingsServices.roleService.GetPermissionInfo(new RolePermissionCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, RoleId = _selectRoleId, }).Data; foreach (TreeNode item in treeViewMainMenu.Nodes) { item.Checked = false; } foreach (TreeNode item in treeViewMenu.Nodes) { item.Checked = false; } if (_selectRolePermission != null) { foreach (var item in _selectRolePermission.RoleMenuList.Where(m => m.MainMenuId != null).Distinct().ToList()) { if (treeViewMainMenu.Nodes[item.MainMenuId.Value.ToString()] != null) { treeViewMainMenu.Nodes[item.MainMenuId.Value.ToString()].Checked = true; } if (treeViewMenu.Nodes[item.MainMenuId.Value.ToString()] != null) { treeViewMenu.Nodes[item.MainMenuId.Value.ToString()].Checked = true; } } } } else { foreach (TreeNode item in treeViewMenu.Nodes) { item.Checked = false; } foreach (var item in _menuCheckList) { if (treeViewMenu.Nodes[item.ToString()] != null) { treeViewMenu.Nodes[item.ToString()].Checked = true; } } } treeViewMenu.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(TreeMenuNodeDoubleClick); } /// /// 菜单双击 /// /// /// public void TreeMenuNodeDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { var menuView = sender as KryptonTreeView; var selectedNode = menuView.SelectedNode; if (selectedNode == null) { return; } _selectMenuIndex = e.Node.Index; //菜单列表添加 treeViewFunction.Scrollable = true; treeViewFunction.ShowPlusMinus = true; treeViewFunction.ShowRootLines = true; treeViewFunction.Nodes.Clear(); foreach (var item in (from x in _menuLevelList.Where(m => m.MenuId == int.Parse(selectedNode.Name) && m.FunctionCode != null) select new { x.FunctionCode, x.FunctionName, x.FunctionId, x.FunctionOrder, x.FunctionURL }).Distinct()) { var newTreeNode = new TreeNode { Checked = true, Name = item.FunctionId.ToString(), Text = item.FunctionName, }; newTreeNode.Checked = false; var f1 = treeViewFunction.Nodes.Add(newTreeNode); } treeViewFunction.ExpandAll(); foreach (TreeNode item in treeViewFunction.Nodes) { item.Checked = false; } //授权打勾 if (!_menuCheckList.Any()) { var menuList = _selectRolePermission; foreach (var item in menuList.RoleMenuList.Where(m => m.MainMenuId != null)) { if (treeViewFunction.Nodes[item.MainMenuId.Value.ToString()] != null) { treeViewFunction.Nodes[item.MainMenuId.Value.ToString()].Checked = true; } } } else { foreach (var item in _menuCheckList) { if (treeViewFunction.Nodes[item.ToString()] != null) { treeViewFunction.Nodes[item.ToString()].Checked = true; } } } } public frmRoleEdit() { InitializeComponent(); } private List _menuCheckList = new List(); private void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(txtRoleCode.Text)) { KryptonMessageBox.Show($"请输入角色编码。", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (string.IsNullOrWhiteSpace(txtRoleName.Text)) { KryptonMessageBox.Show($"请输入角色名称。", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } _menuCheckList = new List(); switch (LastOperation) { case EnumOperation.Add: var addResult = SysSettingsServices.roleService.Add(new RoleCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, IsUsed = chkUse.Checked, RoleCode = txtRoleCode.Text, RoleName = txtRoleName.Text, Describe = richDescibe.Text, PermissionMenuIdList = GetPermissionMenuIdList(), }); if (addResult.Status == OperateStatus.Success) { KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { KryptonMessageBox.Show($"操作失败!\r\n{addResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } break; case EnumOperation.Edit: var editResult = SysSettingsServices.roleService.Edit(new RoleCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, IsUsed = chkUse.Checked, RoleCode = txtRoleCode.Text, RoleName = txtRoleName.Text, RoleId = SelectRoleId, Describe = richDescibe.Text, PermissionMenuIdList = GetPermissionMenuIdList(), }); if (editResult.Status == OperateStatus.Success) { KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } break; } } private List GetPermissionMenuIdList() { var permissionList = new List(); foreach (TreeNode item in treeViewMainMenu.Nodes) { if (item.Checked) { permissionList.Add(Convert.ToInt32(item.Name)); } } foreach (TreeNode item in treeViewMenu.Nodes) { if (item.Checked) { permissionList.Add(Convert.ToInt32(item.Name)); } } foreach (TreeNode item in treeViewFunction.Nodes) { if (item.Checked) { permissionList.Add(Convert.ToInt32(item.Name)); } } return permissionList; } private void treeViewMainMenu_DoubleClick(object sender, EventArgs e) { } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } } }