using ComponentFactory.Krypton.Toolkit;
using NXWMS.Client.Code.Extends;
using NXWMS.Client.Model.AppModels.Condition;
using NXWMS.Client.Model.AppModels.Condition.SysSettings;
using NXWMS.Client.Model.AppModels.Result;
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
{
public partial class frmRole : KryptonForm
{
///
/// 界面最后执行操作
///
private EnumOperation _LastOperation;
///
/// 窗体类名
///
private string _CrrentClassName;
///
/// 客户端字段排序列表
///
private List _clientFieldOrderList;
///
/// 菜单层级列表
///
private List _menuLevelList;
///
/// 选择行主键列表
///
private List _CheckRowIdList = new List();
///
/// 当前页面操作的主键
///
private string _PrimaryKey = "ROLE_ID";
public frmRole()
{
InitializeComponent();
_CrrentClassName = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName;
InitData();
InitControl();
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
///
/// 控件初始化
///
private void InitControl()
{
CheckForIllegalCrossThreadCalls = false;
//groupOperation.LostFocus += new EventHandler(groupOperation_LostFocus);
//groupOperation.GotFocus += new EventHandler(groupOperation_GostFocus);
//界面数据初始化
dataGridView.CellClick += new DataGridViewCellEventHandler(dataGridView_CellClick);
dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false);
//菜单列表添加
//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);
//暂时用代码限制长度,不用表配置之类做了..
txtSearchRoleCode.SetControlBase(50);
txtSearchRoleName.SetControlBase(100);
//txtRoleCode.SetControlBase(50);
//txtRoleName.SetControlBase(100);
_pageSize = 20;
_pageIndex = 1;
}
///
/// 选中授权
///
private RolePermissionResult _selectRolePermission;
///
/// 主菜单双击
///
///
///
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;
//}
//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;
//}
}
}
}
///
/// 获取授权菜单列表
///
///
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 InitData()
{
//获取数据源配置
var result = ConfigServices.configService.GetDataViewOrderList(new ClientFieldOrderCondition { SourceCode = $"{_CrrentClassName}" });
if (result.Status == OperateStatus.Success)
{
_clientFieldOrderList = result.Data;
}
//获取菜单层级
var menuResult = SysSettingsServices.menuService.GetLevelList(new MenuLevelCondition { });
if (menuResult.Status == OperateStatus.Success)
{
_menuLevelList = menuResult.Data;
}
_menuCheckList = new List();
}
///
/// ESC撤销此次编辑操作
///
///
///
///
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
int WM_KEYDOWN = 256;
int WM_SYSKEYDOWN = 260;
if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)
{
switch (keyData)
{
case Keys.Escape:
//if (groupOperation.Visible)
//{
// btnExit_Click(null, null);
//}
break;
}
}
return false;
}
private void groupOperation_LostFocus(object sender, EventArgs e)
{
}
private void groupOperation_GostFocus(object sender, EventArgs e)
{
//groupOperation.Values.Heading = _LastOperation.Display();
//groupOperation.Values.Image = Image.FromFile(_LastOperation.ImagePath());
//groupOperation.Text = $"{ _LastOperation.Display()}数据";
//lbStatusMessage.Visible = true;
}
private int _pageSize;
private int _pageIndex;
private int _totalCount;
private void btnSearch_Click(object sender, EventArgs e)
{
_pageIndex = 1;
var loadfrm = new frmLoading();
loadfrm.Show();
var message = loadfrm.EventCalExec(LoadSearch, this.pageTool.PageIndex, this.pageTool.PageSize);
pageTool.DataCount = _totalCount;
if (!string.IsNullOrWhiteSpace(message))
{
KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private string LoadSearch(int pageIndex, int pageSize)
{
var result = SysSettingsServices.roleService.GetList(new RoleSearchCondition
{
RoleCode = txtSearchRoleCode.Text,
RoleName = txtSearchRoleName.Text,
PageIndex = pageIndex,
PageSize = pageSize,
IsUsed = chkSearchUse.Checked,
});
if (result.Status == OperateStatus.Success)
{
_totalCount = result.Data.TotalCount;
_pageIndex = pageIndex;
_pageSize = pageSize;
if (result.Data.RowData.Any())
{
dataGridView.Columns.Clear();
dataGridView.DataSource = result.Data.RowData.ToList();
dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList));
}
else
{
if (dataGridView.DataSource != null)
{
dataGridView.DataSource = new List();
}
dataGridView.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderList), false);
}
return string.Empty;
}
else
{
return result.Message;
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
//if (!groupOperation.Visible)
//{
var frm = new ChildFrm.frmRoleEdit();
frm.LastOperation = EnumOperation.Add;
frm.tableLayoutPanelInput.SetGroupControlsEmpty(dataGridView);
frm.MenuLevelList = this._menuLevelList;
frm.InitControl();
if (frm.ShowDialog() == DialogResult.OK)
{
this.btnSearch_Click(null, null);
}
//richDescibe.Text = "";
//_LastOperation = EnumOperation.Add;
//txtRoleCode.Enabled = true;
//kryptonNavigatorOperation.SelectedPage = kryptonPageInfo;
//groupOperation.Visible = true;
//groupOperation.Focus();
//}
}
private int _selectIndex;
private int _selectRoleId;
private void btnEdit_Click(object sender, EventArgs e)
{
dataGridView_CellDoubleClick(null, null);
}
private void btnRemove_Click(object sender, EventArgs e)
{
if (_CheckRowIdList.Count == 0)
{
return;
}
if (KryptonMessageBox.Show($"确认删除选中数据?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
_LastOperation = EnumOperation.Remove;
var editResult = SysSettingsServices.roleService.Deleted(new RoleCondition
{
OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
RoleIds = string.Join(",", _CheckRowIdList)
});
if (editResult.Status == OperateStatus.Success)
{
KryptonMessageBox.Show($"操作成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
//groupOperation.Visible = false;
btnSearch_Click(null, null);
}
}
}
private void dataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
SelectInit();
if (_selectIndex >= 0)
{
var frm = new ChildFrm.frmRoleEdit();
frm.LastOperation = EnumOperation.Edit;
//txtRoleCode.Enabled = false;
//kryptonNavigatorOperation.SelectedPage = kryptonPageInfo;
frm.tableLayoutPanelInput.SetGroupControls(dataGridView, dataGridView.Rows[_selectIndex]);
//richDescibe.Text = dataGridView.Rows[_selectIndex].Cells["DESCRIBE"].Value == null ? "" :
//dataGridView.Rows[_selectIndex].Cells["DESCRIBE"].Value.ToString();
//groupOperation.Visible = true;
_selectRolePermission = SysSettingsServices.roleService.GetPermissionInfo(new RolePermissionCondition
{
OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId,
RoleId = _selectRoleId,
}).Data;
var menuList = _selectRolePermission;
foreach (var item in menuList.RoleMenuList.Where(m => m.MainMenuId != null))
{
if (frm.treeViewMainMenu.Nodes[item.MainMenuId.Value.ToString()] != null)
{
frm. treeViewMainMenu.Nodes[item.MainMenuId.Value.ToString()].Checked = true;
}
}
if (frm.ShowDialog()==DialogResult.OK)
{
this.btnSearch_Click(null, null);
}
}
}
private void SelectInit()
{
_selectIndex = dataGridView.SelectedRows[0].Index;
if (_selectIndex >= 0)
{
_selectRoleId = Convert.ToInt32(dataGridView.Rows[_selectIndex].Cells[_PrimaryKey].Value);
}
}
//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);
// groupOperation.Visible = false;
// btnSearch_Click(null, null);
// dataGridView.ClearSelection();
// }
// 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);
// groupOperation.Visible = false;
// btnSearch_Click(null, null);
// dataGridView.ClearSelection();
// }
// else
// {
// KryptonMessageBox.Show($"操作失败!\r\n{editResult.Message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
// }
// break;
// }
//}
private void btnExit_Click(object sender, EventArgs e)
{
if (KryptonMessageBox.Show($"确认退出 {_LastOperation.Display()} 数据操作?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
_menuCheckList = new List();
//groupOperation.Visible = false;
}
else
{
//groupOperation.Visible = true;
//groupOperation.Focus();
}
}
private Point mouse_offset;
private void groupOperation_MouseDown(object sender, MouseEventArgs e)
{
mouse_offset = new Point(-e.X, -e.Y);
}
private void groupOperation_MouseMove(object sender, MouseEventArgs e)
{
((Control)sender).Cursor = Cursors.Arrow;
if (e.Button == MouseButtons.Left)
{
Point mousePos = MousePosition;
mousePos.Offset(mouse_offset.X, mouse_offset.Y);
((Control)sender).Location = ((Control)sender).Parent.PointToClient(mousePos);
Application.DoEvents();
}
}
private void btnSearchExport_Click(object sender, EventArgs e)
{
this.dataGridView.DataGridViewExport($"{AppConfig.CurrentMenu.FirstOrDefault()}列表" + DateTime.Now.ToString("yyyyMMddHH"));
}
private int _selectMainMenuIndex;
private int _selectMenuIndex;
private int _selectFunctionIndex;
///
/// 选中的所有菜单
///
private List _menuCheckList;
private void treeViewMainMenu_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
//foreach (TreeNode child in treeViewMenu.Nodes)
//{
// child.Checked = e.Node.Checked;
// if (!_menuCheckList.Where(s => s == int.Parse(child.Name)).Any())
// {
// if (child.Checked)
// {
// _menuCheckList.Add(int.Parse(child.Name));
// }
// }
// else
// {
// if (!child.Checked)
// {
// _menuCheckList.Remove(int.Parse(child.Name));
// }
// }
//}
}
}
private void treeViewMenu_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
//foreach (TreeNode child in treeViewFunction.Nodes)
//{
// child.Checked = e.Node.Checked;
// if (!_menuCheckList.Where(s => s == int.Parse(child.Name)).Any())
// {
// if (child.Checked)
// {
// _menuCheckList.Add(int.Parse(child.Name));
// }
// }
// else
// {
// if (!child.Checked)
// {
// _menuCheckList.Remove(int.Parse(child.Name));
// }
// }
//}
int index = 0;
//foreach (TreeNode child in treeViewMenu.Nodes)
//{
// if (child.Checked)
// {
// index++;
// }
//}
//if (index > 0)
//{
// treeViewMainMenu.Nodes[_selectMainMenuIndex].Checked = true;
//}
//else
//{
// treeViewMainMenu.Nodes[_selectMainMenuIndex].Checked = false;
//}
}
}
private void treeViewFunction_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
_selectFunctionIndex = e.Node.Index;
int index = 0;
//foreach (TreeNode child in treeViewFunction.Nodes)
//{
// if (child.Checked)
// {
// index++;
// }
// if (!_menuCheckList.Where(s => s == int.Parse(child.Name)).Any())
// {
// if (child.Checked)
// {
// _menuCheckList.Add(int.Parse(child.Name));
// }
// }
// else
// {
// if (!child.Checked)
// {
// _menuCheckList.Remove(int.Parse(child.Name));
// }
// }
//}
//if (index > 0)
//{
// treeViewMenu.Nodes[_selectMenuIndex].Checked = true;
//}
//else
//{
// treeViewMenu.Nodes[_selectMenuIndex].Checked = false;
//}
//index = 0;
//foreach (TreeNode child in treeViewMenu.Nodes)
//{
// if (child.Checked)
// {
// index++;
// }
//}
//if (index > 0)
//{
// treeViewMainMenu.Nodes[_selectMainMenuIndex].Checked = true;
//}
//else
//{
// treeViewMainMenu.Nodes[_selectMainMenuIndex].Checked = false;
//}
}
}
private void dataGridView_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
e.Row.HeaderCell.Value = string.Format("{0}", (_pageIndex - 1) * _pageSize + e.Row.Index + 1);
}
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == 0)
{
if (this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null)
{
if (!_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
{
_CheckRowIdList.Add(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
}
this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
}
else if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "1")
{
if (_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
{
_CheckRowIdList.Remove(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
}
this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
}
else
{
if (!_CheckRowIdList.Where(s => s == dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString()).Any())
{
_CheckRowIdList.Add(dataGridView.Rows[e.RowIndex].Cells[_PrimaryKey].Value.ToString());
}
this.dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
}
}
}
private void pageTool_OnPageChange(int PageIndex, int PageSzie)
{
this.btnSearch_Click(null, null);
}
private void btnClear_Click(object sender, EventArgs e)
{
this.txtSearchRoleCode.Text = "";
this.txtSearchRoleName.Text = "";
this.chkSearchUse.Checked = true;
}
}
}