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();
}
}
}