Files
lserp_cs_6.0/插件库/Lskj.PubUserTomodule/FrmMain.cs
T
cyf 8c10749260 SVN r1241
SVN-Revision: r1241
2026-06-26 09:38:23 +00:00

2470 lines
104 KiB
C#

using DevExpress.XtraTreeList;
using DevExpress.XtraTreeList.Nodes;
using Lskj.Business;
using Lskj.Business.Impl;
using Lskj.Core;
using Lskj.Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraTreeList.Data;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraEditors.Repository;
using System.Data.SqlClient;
using Lskj.Data;
using Lskj.Util;
using Lskj.Control;
using Lskj.Control.Model;
using DevExpress.XtraTreeList.Columns;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
namespace Lskj.PubUserTomodule
{
public partial class FrmMain : BaseForm
{
public DynamicPowerModel PubPowerModel;
/// <summary>
/// 选中行的集合
/// </summary>
private List<DataRow> rows = new List<DataRow>();
private List<string> readPurview = new List<string>();
private List<string> editPurview = new List<string>();
private List<string> idlist = new List<string>();
/// <summary>
/// 记录选中角色选中行的行号之后
/// </summary>
private string rolePositionAfter = string.Empty;
/// <summary>
/// 记录选中人员选中行的行号之后
/// </summary>
private string operPositionAfter = string.Empty;
/// <summary>
/// 记录选中角色选中行的行号之前
/// </summary>
private string rolePositionBefore = string.Empty;
/// <summary>
/// 记录选中人员选中行的行号之前
/// </summary>
private string operPositionBefore = string.Empty;
/// <summary>
/// 获取左侧选中的名称
/// </summary>
private string id = string.Empty;
/// <summary>
/// 获取临时选中的名称
/// </summary>
private string empid = string.Empty;
/// <summary>
/// 当前是人员还是角色(true是人员)
/// </summary>
private bool Operatorflag = false;
/// <summary>
/// treeList绑定的表
/// </summary>
DataTable dt = new DataTable();
/// <summary>
/// 角色表
/// </summary>
DataTable Roletable = new DataTable();
/// <summary>
/// 员工表
/// </summary>
DataTable employeetable = new DataTable();
////修改前模块列的属性
//public DataTable BasicFormDt = new DataTable();//基础模块
//public DataTable BillAboveDt = new DataTable();//单据主表
//public DataTable BillDetailDt = new DataTable();//单据明细
/// <summary>
/// 系统模块实体对象
/// </summary>
/// <value>The system model.</value>
public ModuleModel SysModel;
public FrmMain()
{
InitializeComponent();
InitSpliterPosition();
//InitializeDeps();
InitializeColumns();
InitializeUsers();
creatTreeListControl();
BindGridTreeView();
operationLogColumns();
FastPassageInitialize();
#region 步骤panel位置更改
this.searchModuleLab.TextEdit.Properties.AutoHeight = false;
this.searchModuleLab.TextEdit.Properties.BorderStyle = BorderStyles.NoBorder;
PanelControl panelControl = new PanelControl();
panelControl = this.frmWork1.panelControl1;
panelControl.Parent = this.panelControl12;
panelControl.Dock = DockStyle.Fill;
#endregion
this.moduleControl.GridView.BestFitColumns();
this.searchModuleLab.TextEdit.EditValueChanged += new EventHandler(OnSearchMoudleEditValueChanged);//模糊查询
GridDragGrid dragGrid = new GridDragGrid(this.gridControlEx1.GridView, this.RoleOwnerControl.GridView);
dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted);
//GridDragGrid.GridAddCheckBox(this.gridControlEx1.GridView);
this.RoleControlEx.GridView.Click += new EventHandler(OnGridViewClick);//角色表点击
this.RoleControlEx.GridView.DoubleClick += new EventHandler(DoubleGridViewClick);
this.PeopleControlEx.GridView.Click += new EventHandler(OnGridView2Click);//人员表点击
this.splitContainerControl1.SplitterPositionChanged += new EventHandler(OnSplitContainerControl1_SplitterPositionChanged);
this.splitMain_LowerRight.SplitterPositionChanged += SplitMain_LowerRight_SplitterPositionChanged;
this.RoleControlEx.GridView.SelectRowHandler(0);//设置默认选中行
this.RoleControlEx.GridView.BestFitColumns();//设置根据内容填充列宽
this.RoleOwnerControl.GridView.BestFitColumns();//设置根据内容填充列宽
this.PeopleControlEx.GridView.BestFitColumns();//设置根据内容填充列宽
//this.ModulePermissionsControl.GridView.BestFitColumns();//设置根据内容填充列宽
this.QuickOperationControlEx.GridView.BestFitColumns();//设置根据内容填充列宽
this.QuickReportFormControlEx.GridView.BestFitColumns();//设置根据内容填充列宽
this.AllQuickControlEx.GridView.BestFitColumns();//设置根据内容填充列宽
if (Roletable.Rows.Count > 0)
{
First(Roletable.Rows[0]["id"] + "");
}
this.ModulePermissionsControl.GridView.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown;
this.AllQuickControlEx.GridView.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown;
this.QuickOperationControlEx.GridView.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown;
this.QuickReportFormControlEx.GridView.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown;
Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this);
xtraTabControl2.SelectedTabPage = xtraTabPage3;
this.PrimaryDirectory.SelectedIndex = 0;
this.btn_deleteRole.Click += new EventHandler(btn_deleteRole_Click);
this.btn_Add.Click += new EventHandler(btn_Add_Click);
this.btn_copyRole.Click += new EventHandler(OnBtn_copyRole_Click);
this.btn_unfold.Click += new EventHandler(OnBtn_unfoldClick);
this.btn_save.Click += new EventHandler(btn_save_Click);
this.btn_export.Click += new EventHandler(btn_export_Click);
this.btn_query.Click += new EventHandler(btn_query_Click);
this.btn_CopyPermissions.Click += new EventHandler(btn_CopyPermissions_Click);//角色权限复制
//xtraTabControl1_SelectedPageChanged
this.xtraTabControl1.SelectedPageChanged += new DevExpress.XtraTab.TabPageChangedEventHandler(xtraTabControl1_SelectedPageChanged);
this.xtraTabControl2.SelectedPageChanged += new DevExpress.XtraTab.TabPageChangedEventHandler(xtraTabControl2_SelectedPageChanged);
generateModuleColumns();//审核权限界面
this.moduleAssociationRole.onClickDeleteButton += ModuleAssociationRole_onClickDeleteButton;//菜单功能明细模块操作后刷新主页面
//判断如果没有查询数据的存储过程就隐藏 人员权限信息 页签
int num = int.Parse(SqlHelper.ExecuteScalar("SELECT COUNT(*) FROM sys.procedures WHERE name = 'p_SystemSetUserPurview_print'") + "");
if (num == 0)
{
xtraTabPage12.PageVisible = false;
}
else
{
personnelInformation.InitializeSplitterPosition();
this.personnelInformation.onClickDeleteButton += ModuleAssociationRole_onClickDeleteButton;//菜单功能明细模块操作后刷新主页面
//左侧角色推拽到页签角色表
GridDragGrid dragGrid2 = new GridDragGrid(this.RoleControlEx.GridView, this.personnelInformation.roleControlEx.GridView);
dragGrid2.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragRole);
}
this.scc_container.PanelVisibility = SplitPanelVisibility.Panel1;
this.RoleOwnerControl.GridControl.ContextMenuStrip = this.MenuStrip;
Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this);
}
#region 私有方法
/// <summary>
/// <para>说明:表格拖拽完成</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-11-14 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The e.</param>
protected void OnDragGridCompleted(object sender, GridDragGridArgs e)
{
string sql = string.Empty;
try
{
if (MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
GridColumnCollection gridColumns = this.RoleOwnerControl.GridView.Columns;
DataTable table = this.RoleOwnerControl.gridControl.DataSource as DataTable;
foreach (DataRow rowItem in e.GridViewSelectRows)
{
DataRow newRow = table.NewRow();
foreach (GridColumn col in gridColumns)
{
if ("id".Equals(col.FieldName)) continue;
if (rowItem.Table.Columns.Contains(col.FieldName))
{
// 列中是否包含对应字段,包含则使用值
newRow[col.FieldName] = rowItem[col.FieldName];
}
}
PowerImpl.DropDate(int.Parse(newRow["员工ID"] + ""), newRow["员工工号"] + "", newRow["员工姓名"] + "", newRow["所属部门"] + "", id);
table.Rows.Add(newRow);
}
DataTable NEWTABLE = GetNewDt(this.RoleOwnerControl.GridControl.DataSource as DataTable);
this.gridControlEx1.GridControl.DataSource = NEWTABLE;
this.RoleOwnerControl.GridView.ClearSelection();
this.RoleOwnerControl.GridView.SelectRowHandler(table.Rows.Count - 1);
this.RoleOwnerControl.GridView.UpdateCurrentRow();
this.RoleOwnerControl.GridView.ShowEditor();
PowerImpl.RefreshElementPermissions(id);
}
}
catch (Exception ex)
{
LogUtil.WriteError("表格拖拽错误", ex);
LogHelper.Instance.WriteError(ex);
//MessageUtil.Show(ResourceKeys.OperFault);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 筛选赋权限表
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private DataTable GetNewDt(DataTable newdt)
{
idlist.Clear();
string sqlwhere = string.Empty;
foreach (DataRow item in newdt.Rows)
{
idlist.Add(item["员工ID"] + " and ");
}
foreach (string id in idlist)
{
sqlwhere = sqlwhere + string.Format("员工ID !={0}", id);
}
sqlwhere = !string.IsNullOrEmpty(sqlwhere) ? sqlwhere.Trim().Substring(0, sqlwhere.Length - 4) : "1=1";
newdt = SqlHelper.ExecuteDataTable("select * from P_employeeBaseView where " + sqlwhere);
return newdt;
}
/// <summary>
/// 默认绑定列数据
/// </summary>
private void InitializeColumns()
{
this.PeopleControlEx.GridView.Columns.AddVisible("员工ID", "员工ID");
this.PeopleControlEx.GridView.Columns.AddVisible("员工工号", "员工工号");
this.PeopleControlEx.GridView.Columns.AddVisible("员工姓名", "员工姓名");
this.PeopleControlEx.GridView.Columns.AddVisible("所属部门", "所属部门");
//查询是否有指定模块,有就把角色表加载为purview001模块
DataRow dataRow = MainImpl.GetSystemdllTab("purview001");//获取单个模块信息
if (dataRow != null)
{
this.SysModel = new ModuleModel(dataRow);// 系统模块实体对象
DataTable RoleControlExColumns = BaseModuleImpl.GetBaseGridColumns("purview001");
this.RoleControlEx.SetReadOnlyColumns(RoleControlExColumns);
}
else
{
this.RoleControlEx.GridView.Columns.AddVisible("roleName", "角色");
}
}
/// <summary>
/// <para>说明:默认加载表格数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2019-09-19 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitializeUsers()
{
// 人员和角色绑定的表
Roletable = this.SysModel == null ? PowerImpl.GetWorkRole("", "") : SqlHelper.ExecuteDataTable(ReplaceHelper.ReplaceUserInfo(this.SysModel.MenuSql));
employeetable = PowerImpl.GetWorkEmployee();
this.gridControlEx1.GridControl.DataSource = employeetable;
this.RoleControlEx.GridControl.DataSource = Roletable;
this.PeopleControlEx.GridControl.DataSource = employeetable;
this.gridControlEx1.GridView.OptionsBehavior.Editable = this.RoleControlEx.GridView.OptionsBehavior.Editable = this.RoleOwnerControl.GridView.OptionsBehavior.Editable = this.PeopleControlEx.GridView.OptionsBehavior.Editable = false;
}
/// <summary>
/// 动态创建gridControlEx5的Column,一列为图层名,一列为是否统计列Check控件
/// </summary>
private void creatTreeListControl()
{
GridColumn treeListColumnFirst = new GridColumn();
treeListColumnFirst.Caption = "一级目录";
treeListColumnFirst.FieldName = "FirstDirectory";
treeListColumnFirst.MinWidth = 38;
treeListColumnFirst.Visible = true;
treeListColumnFirst.VisibleIndex = 0;
treeListColumnFirst.Width = 100;
treeListColumnFirst.OptionsColumn.AllowEdit = false;
GridColumn treeListColumnDirectory = new GridColumn();
treeListColumnDirectory.Caption = "二级目录";
treeListColumnDirectory.FieldName = "SecondaryDirectory";
treeListColumnDirectory.MinWidth = 38;
treeListColumnDirectory.Visible = true;
treeListColumnDirectory.VisibleIndex =1;
treeListColumnDirectory.Width = 150;
treeListColumnDirectory.OptionsColumn.AllowEdit = false;
GridColumn treeListColumnName = new GridColumn();
treeListColumnName.Caption = "系统名称";
treeListColumnName.FieldName = "MenuCaption";
treeListColumnName.MinWidth = 38;
treeListColumnName.Visible = true;
treeListColumnName.VisibleIndex = 2;
treeListColumnName.Width = 400;
treeListColumnName.OptionsColumn.AllowEdit = false;
GridColumn treeListColumnMenuId = new GridColumn();
treeListColumnMenuId.Caption = "菜单id";
treeListColumnMenuId.FieldName = "MenuId";
treeListColumnMenuId.Visible = true;
treeListColumnMenuId.VisibleIndex = 3;
treeListColumnMenuId.OptionsColumn.AllowEdit = false;
GridColumn treeListColumnReadflag = new GridColumn();
RepositoryItemCheckEdit checkEdit = new RepositoryItemCheckEdit();
checkEdit.ValueChecked = "1";
checkEdit.ValueUnchecked = "0";
checkEdit.ValueGrayed = 3;
checkEdit.CheckedChanged += CheckEdit_CheckedChanged;
treeListColumnReadflag.ColumnEdit = checkEdit;
treeListColumnReadflag.Caption = "只读权限";
treeListColumnReadflag.FieldName = "Readflag";
treeListColumnReadflag.Name = "treeListColumnReadflagValue";
treeListColumnReadflag.Visible = true;
treeListColumnReadflag.VisibleIndex = 5;
GridColumn treeListColumnEditflag = new GridColumn();
treeListColumnEditflag.ColumnEdit = checkEdit;
treeListColumnEditflag.Caption = "操作权限";
treeListColumnEditflag.FieldName = "Editflag";
treeListColumnEditflag.Name = "treeListColumnEditflagValue";
treeListColumnEditflag.Visible = true;
treeListColumnEditflag.VisibleIndex = 4;
this.ModulePermissionsControl.GridView.Columns.AddRange(new GridColumn[] {
treeListColumnFirst,
treeListColumnDirectory,
treeListColumnName,
treeListColumnMenuId,
treeListColumnReadflag,
treeListColumnEditflag
});
//this.treeList1.Nodes.Clear();
//this.treeList1.Refresh();
}
private void CheckEdit_CheckedChanged(object sender, EventArgs e)
{
DataRow mSelectRow = this.ModulePermissionsControl.GridView.GetFocusedDataRow();
if (mSelectRow["Readflag"] + "" == "1") mSelectRow["Readflag"] = "0";
if (mSelectRow["Editflag"] + "" == "1") mSelectRow["Editflag"] = "0";
ModulePermissionsControl.gridControl.RefreshDataSource();
}
/// <summary>
/// <para>说明:模块权限表机构</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2017-09-04 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="treeTable">The tree table.</param>
public void BindGridTreeView()
{
DataTable treeTable = PowerImpl.GetAllModulesData();
dt = treeTable;
}
/// <summary>
/// 执行保存角色权限时候的存储过程
/// </summary>
/// <param name="modid"></param>
/// <param name="tagid"></param>
/// <param name="mid"></param>
/// <returns></returns>
public int saveRoledata(int roleid)
{
SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
pMsg.Direction = ParameterDirection.Output;
SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;
SqlParameter[] param =
{
new SqlParameter("@roleid ",SqlDbType.VarChar,20),
pMsg,
returnValue
};
param[0].Value = roleid;
BaseImpl.ExecProcedure("p_SystemSetRoleUserPurview", param);
return Convert.ToInt32(returnValue.Value.ToString());
}
/// <summary>
/// 执行保存时候的存储过程
/// </summary>
/// <param name="modid"></param>
/// <param name="tagid"></param>
/// <param name="mid"></param>
/// <returns></returns>
public int savedata(int operatorid)
{
SqlParameter pMsg = new SqlParameter("@msg", SqlDbType.VarChar, 2000);
pMsg.Direction = ParameterDirection.Output;
SqlParameter returnValue = new SqlParameter("@return", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;
SqlParameter[] param =
{
new SqlParameter("@operatorid",SqlDbType.VarChar,20),
pMsg,
returnValue
};
param[0].Value = operatorid;
BaseImpl.ExecProcedure("[p_SystemSetUserPurview]", param);
return Convert.ToInt32(returnValue.Value.ToString());
}
/// <summary>
/// 获取所有选中的集合
/// </summary>
/// <param name="parentNode"></param>
private void GetListKeyID()
{
editPurview.Clear();
readPurview.Clear();
DataTable masterdt = ModulePermissionsControl.gridControl.DataSource as DataTable;
for (int i = 0; i < masterdt.Rows.Count; i++)
{
if (masterdt.Rows[i]["ID"].ToString().Length > 4 && masterdt.Rows[i]["Editflag"] + "" == "1")
{
editPurview.Add(masterdt.Rows[i]["MenuId"] + "");
}
else
if (masterdt.Rows[i]["ID"].ToString().Length > 4 && masterdt.Rows[i]["Readflag"] + "" == "1")
{
readPurview.Add(masterdt.Rows[i]["MenuId"] + "");
}
}
}
/// <summary>
/// 获取选择状态有权限的节点集合
/// </summary>
/// <param name="parentNode">父级节点</param>
private void GetNodeCheckedID(string[] ReadPurview, string[] EditPurview)
{
rows.Clear();
foreach (DataRow item in dt.Rows)
{
if (EditPurview.Contains(item["MenuId"] + "") || ReadPurview.Contains(item["MenuId"] + ""))
{
if (ReadPurview.Contains(item["MenuId"] + ""))
{
item["Readflag"] = "1";
}
if (EditPurview.Contains(item["MenuId"] + ""))
{
item["editflag"] = "1";
}
if (!EditPurview.Contains(item["MenuId"] + ""))
{
item["editflag"] = "0";
}
if (!ReadPurview.Contains(item["MenuId"] + ""))
{
item["Readflag"] = "0";
}
rows.Add(item);
}
}
if (rows.Count > 0)
{
this.ModulePermissionsControl.gridControl.DataSource = rows.CopyToDataTable();
this.ModulePermissionsControl.GridView.SelectRowHandler(0);
}
else
{
this.ModulePermissionsControl.gridControl.DataSource = dt.Clone();
}
//this.treeList1.CollapseAll();
}
#endregion
#region 点击事件
/// <summary>
/// <para>说明:设置权限</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2022-06-07 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
private void OnBtn_unfoldClick(object sender, EventArgs e)
{
try
{
int index = this.xtraTabControl1.SelectedTabPageIndex;//0为角色,1为人员
string ReadPurview = string.Empty;
string EditPurview = string.Empty;
if (index == 0)
{
DataRow DR = PowerImpl.GetRoleRow(id);
ReadPurview = DR["ReadPurview"].ToString();
EditPurview = DR["EditPurview"].ToString();
}
else
{
string tipMsg = string.Empty;
DataSet ds = BaseImpl.getAuthorityByEmpid(1, id, "", "", out tipMsg);
EditPurview = ds.Tables.Count > 0 ? ds.Tables[0].Rows[0]["pid"] + "" : string.Empty;
DataSet ds2 = BaseImpl.getAuthorityByEmpid(2, id, "", "", out tipMsg);
ReadPurview = ds2.Tables.Count > 0 ? ds2.Tables[0].Rows[0]["pid"] + "" : string.Empty;
}
FrmPermissionSetting form = new FrmPermissionSetting(EditPurview, ReadPurview);
form.onClickTheOKButton += new FrmPermissionSetting.ClickTheOKButton(UpdatePermissionModule);
DialogResult result = form.ShowDialog();
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 模块权限设置框点击确定时,返回更新后的权限。
/// </summary>
/// <param name="EditPurview"></param>
/// <param name="ReadPurview"></param>
private void UpdatePermissionModule(List<string> EditPurview, List<string> ReadPurview)
{
GetNodeCheckedID(ReadPurview.ToArray(), EditPurview.ToArray());
btn_save_Click(null, null);
}
/// <summary>
/// 双击角色表里的数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void DoubleGridViewClick(object sender, EventArgs e)
{
try
{
FrmAddRole frmAddRole = new FrmAddRole();
frmAddRole.Text = "修改角色名称";
frmAddRole.LabelObj.Text = "请输入修改角色名称:";
if (frmAddRole.ShowDialog() == DialogResult.OK)
{
string RoleName = frmAddRole.RoleName;
rolePositionAfter = string.IsNullOrWhiteSpace(rolePositionAfter) ? "0" : rolePositionAfter;
rolePositionBefore = string.IsNullOrWhiteSpace(rolePositionBefore) ? "1" : rolePositionBefore;
if (PowerImpl.UpdOper(RoleName, id))
{
Roletable = this.SysModel == null ? PowerImpl.GetWorkRole("", "") : SqlHelper.ExecuteDataTable(ReplaceHelper.ReplaceUserInfo(this.SysModel.MenuSql));
this.RoleControlEx.GridControl.DataSource = Roletable;
this.RoleControlEx.GridView.SelectRowHandler(int.Parse(rolePositionAfter));//设置默认选中行
if (Roletable.Rows.Count > 0)
{
First(rolePositionBefore);
}
}
}
}
catch (Exception ex)
{
//MessageUtil.Show(ex.Message);
LogUtil.WriteError("角色修改模块", ex);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 单击查询角色表里的数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnGridViewClick(object sender, EventArgs e)
{
try
{
DataRow mSelectRow = this.RoleControlEx.GridView.GetFocusedDataRow();
rolePositionAfter = this.RoleControlEx.GridView.FocusedRowHandle.ToString();
if (mSelectRow != null)
{
id = mSelectRow["id"] + "";
rolePositionBefore = id;
First(id);
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
#region 初始化分割条位置
/// <summary>
/// <para>说明:初始化分割条位置</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitSpliterPosition()
{
string spliterPosition = IniHelper.Read(string.Format("Step_spliterPositionMain_{0}", "PubUserTomodule"));
if (!string.IsNullOrEmpty(spliterPosition)) this.splitContainerControl1.SplitterPosition = Convert.ToInt32(spliterPosition);
string spliterPosition2 = IniHelper.Read(string.Format("Step_spliterPositionMain_{0}", "splitMain_LowerRight"));
if (!string.IsNullOrEmpty(spliterPosition2)) this.splitMain_LowerRight.SplitterPosition = Convert.ToInt32(spliterPosition2);
}
#endregion
/// <summary>
/// 点击角色权限信息的方法
/// </summary>
/// <param name="id"></param>
private void First(string Firstid)
{
id = Firstid;
Operatorflag = false;
if (xtraTabControl2.SelectedTabPage == xtraTabPage9)//进行tabpage位置判断
{
GetExistingSettings(id);
}
if (xtraTabControl2.SelectedTabPage == xtraTabPage8)//进行tabpage位置判断
{
SettingOperationLogs(null, null);
}
DataRow DR = PowerImpl.GetRoleRow(id);
if (DR == null) return;
string[] ReadPurview = DR["ReadPurview"].ToString().Trim().TrimEnd(',').Split(',');
string[] EditPurview = DR["EditPurview"].ToString().Trim().TrimEnd(',').Split(',');
GetNodeCheckedID(ReadPurview, EditPurview);
DataTable Roledetailed = PowerImpl.GetWorkUsers(DR["id"] + "");
this.RoleOwnerControl.GridControl.DataSource = Roledetailed;
DataTable NEWTABLE = GetNewDt(Roledetailed);
this.gridControlEx1.GridControl.DataSource = NEWTABLE;
//this.treeList1.CollapseAll();
}
/// <summary>
/// 单击查询人员表里的数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnGridView2Click(object sender, EventArgs e)
{
try
{
DataRow mSelectRow = this.PeopleControlEx.GridView.GetFocusedDataRow();
operPositionAfter = this.PeopleControlEx.GridView.FocusedRowHandle.ToString();
if (mSelectRow != null)
{
id = mSelectRow["员工ID"] + "";
operPositionBefore = id;
Second(id);
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 点击人员详细信息的方法
/// </summary>
/// <param name="id"></param>
private void Second(string Secondid)
{
id = Secondid;
// 验证删除存储过程
string tipMsg = string.Empty;
try
{
DataSet ds = BaseImpl.getAuthorityByEmpid(1, id, "", "", out tipMsg);
string editPurview = ds.Tables.Count > 0 ? ds.Tables[0].Rows[0]["pid"] + "" : string.Empty;
string[] EditPurview = editPurview.Trim().TrimEnd(',').Split(',');
DataSet ds2 = BaseImpl.getAuthorityByEmpid(2, id, "", "", out tipMsg);
string readPurview = ds2.Tables.Count > 0 ? ds2.Tables[0].Rows[0]["pid"] + "" : string.Empty;
string[] ReadPurview = readPurview.Trim().TrimEnd(',').Split(',');
GetNodeCheckedID(ReadPurview, EditPurview);
Operatorflag = true;
if (xtraTabControl2.SelectedTabPage == xtraTabPage9)//进行tabpage位置判断
{
GetExistingSettings(id);
}
if (xtraTabControl2.SelectedTabPage == xtraTabPage8)//进行tabpage位置判断
{
SettingOperationLogs(null, null);
}
}
catch (Exception ex)
{
//MessageUtil.Show("权限表无此人!");
this.PeopleControlEx.GridView.SelectRowHandler(0);
Second("1");
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 根据模块列的权限内容,判断是否打勾
/// </summary>
/// <param name="dataTable"></param>
/// <returns></returns>
public DataTable ReplaceDetailDataSource(DataTable dataTable)
{
DataTable newdt = dataTable.Clone();
int index = this.xtraTabControl1.SelectedTabPageIndex;//0为角色,1为人员
if (index == 0)
{
//角色对应的全部人员
DataTable Roledetailed = PowerImpl.GetWorkUsers(id);
foreach (DataRow dr in dataTable.Rows)
{
string privilegeOper = dr["privilegeOper"] + "";
string privilegeView = dr["privilegeView"] + "";
newdt.Rows.Add(dr.ItemArray);
string Oper = "1";
string View = "1";
foreach (DataRow personnelDr in Roledetailed.Rows)
{
string personnelName = personnelDr["员工姓名"] + "";
if (Oper == "1") Oper = privilegeOper.Split(',').Contains(personnelName) ? "1" : "0";//主要有一个人对不上,后面就不会在接着判断;
if (View == "1") View = privilegeView.Split(',').Contains(personnelName) ? "1" : "0";
if (Oper == "0" && View == "0") break;
}
newdt.Rows[newdt.Rows.Count - 1]["OperValue"] = Oper;
newdt.Rows[newdt.Rows.Count - 1]["ViewValue"] = View;
}
}
else
{
// BasicDt
//获得当前选中员工名字
string name = (employeetable.Select("员工ID='" + id + "'"))[0]["员工姓名"] + "";
foreach (DataRow dr in dataTable.Rows)
{
string privilegeOper = dr["privilegeOper"] + "";
privilegeOper = privilegeOper.Split(',').Contains(name) ? "1" : "0";
string privilegeView = dr["privilegeView"] + "";
privilegeView = privilegeView.Split(',').Contains(name) ? "1" : "0";
newdt.Rows.Add(dr.ItemArray);
newdt.Rows[newdt.Rows.Count - 1]["OperValue"] = privilegeOper;
newdt.Rows[newdt.Rows.Count - 1]["ViewValue"] = privilegeView;
}
}
return newdt;
}
#endregion
/// <summary>
/// 点击保存权限
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_save_Click(object sender, EventArgs e)
{
try
{
if (string.IsNullOrWhiteSpace(id))
{
MessageUtil.Show("请选中左侧人员或角色");
return;
}
WaitForm.ShowForm("权限保存中,请稍后...");
//保存人员和角色的权限信息
string readdate = string.Empty;
string Editdate = string.Empty;
GetListKeyID();
foreach (string item in readPurview)
{
readdate = readdate + item + ",";
}
foreach (string item in editPurview)
{
Editdate = Editdate + item + ",";
}
if (Operatorflag)
{
//人员 保存时会把当前人员对应的角色权限去掉
DataRow DR = PowerImpl.GeRoleOperRow(id);
DataTable dataTable = SqlHelper.ExecuteDataTable(string.Format(" select * from p_systemRoleOperSetTab where operatorid = '{0}'", id));
string roleRead = string.Empty;
string roleEdit = string.Empty;
foreach (DataRow item in dataTable.Rows)
{
if (!string.IsNullOrWhiteSpace(item["roleId"] + "") && !"0".Equals(item["roleId"] + ""))
{
string sql = string.Format(" select * from p_systemRoleSetTab where id='{0}'", item["roleId"]);
DataTable roleTable = SqlHelper.ExecuteDataTable(sql);
if (roleTable != null && roleTable.Rows.Count > 0)
{
roleRead += string.Format("{0},", roleTable.Rows[0]["ReadPurview"] + "");
roleEdit += string.Format("{0},", roleTable.Rows[0]["EditPurview"] + "");
}
}
}
string nreaddate = string.Empty;
string neditdate = string.Empty;
string[] roleReadArray = roleRead.Split(',');
string[] roleEditArray = roleEdit.Split(',');
foreach (string readdateStr in readdate.Split(','))
{
if (!string.IsNullOrWhiteSpace(readdateStr) && !roleReadArray.Contains(readdateStr))
{
nreaddate += string.Format("{0},", readdateStr);
}
}
foreach (string EditdateStr in Editdate.Split(','))
{
if (!string.IsNullOrWhiteSpace(EditdateStr) && !roleEditArray.Contains(EditdateStr))
{
neditdate += string.Format("{0},", EditdateStr);
}
}
//去除角色权限后在保存
if (PowerImpl.SaveRoleOperDate(id, DR["员工姓名"] + "", DR.Table.Columns.Contains("所属部门") ? DR["所属部门"] + "" : "", nreaddate, neditdate))
{
int rValue = savedata(int.Parse(id));
if (rValue == 1)
{
MessageUtil.Show("同步人员权限成功!");
}
else
{
MessageUtil.Show("同步人员权限失败!");
return;
}
}
}
else
{
//角色
if (PowerImpl.SaveRoleDate(id, readdate, Editdate))
{
int rValue = saveRoledata(int.Parse(id));
if (rValue == 0)
{
//在拥有权限的模块中生成权限分类 Editdate readdate
DataRow mSelectRow = this.RoleControlEx.GridView.GetFocusedDataRow();
string leftRoleName = mSelectRow["roleName"] + "";
PowerImpl.SetRolePermissionclassification(id, leftRoleName, ModulePermissionsControl.gridControl.DataSource as DataTable);
MessageUtil.Show("同步人员权限成功!");
}
else
{
MessageUtil.Show("同步人员权限失败!");
return;
}
}
}
}
catch (Exception ex)
{
}
finally
{
WaitForm.HideForm();
}
}
///// <summary>
///// <para>说明:分割条移动保存位置</para>
///// <para>创建人:龚宇超</para>
///// <para>创建日期:2018-03-06 </para>
///// <para>修改人:</para>
///// <para>修改日期:</para>
///// <para>修改备注:</para>
///// <para>版本:1.0</para>
///// </summary>
///// <param name="sender">The source of the event.</param>
///// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
//private void OnTopSplitterMoved(object sender, EventArgs e)
//{
// if (this._isInitFinish)
// {
// IniHelper.Write(string.Format("bill_width_{0}", this.SysModel.ModuleCode), this.ssc_main_top.SplitterPosition + "");
// }
//}
/// <summary>
/// 切换人员表默认选中第一行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void xtraTabControl1_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
{
if (xtraTabControl1.SelectedTabPage == xtraTabPage2)//进行tabpage位置判断
{
operPositionAfter = string.IsNullOrWhiteSpace(operPositionAfter) ? "0" : operPositionAfter;
operPositionBefore = string.IsNullOrWhiteSpace(operPositionBefore) ? employeetable.Rows[0]["员工ID"] + "" : operPositionBefore;
this.PeopleControlEx.GridView.SelectRowHandler(int.Parse(operPositionAfter));//设置默认选中行
Second(operPositionBefore);
}
if (xtraTabControl1.SelectedTabPage == xtraTabPage1)//进行tabpage位置判断
{
rolePositionAfter = string.IsNullOrWhiteSpace(rolePositionAfter) ? "0" : rolePositionAfter;
if (Roletable.Rows.Count > 0)
{
rolePositionBefore = string.IsNullOrWhiteSpace(rolePositionBefore) ? Roletable.Rows[0]["id"] + "" : rolePositionBefore;
First(rolePositionBefore);
}
else {
rolePositionBefore = "";
First("");
}
this.RoleControlEx.GridView.SelectRowHandler(int.Parse(rolePositionAfter));//设置默认选中行
}
}
/// <summary>
/// 删除人员权限
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_delete_Click(object sender, EventArgs e)
{
DataTable Roledetailed = PowerImpl.GetWorkUsers(id);
//int[] Roledrows = this.gridControlEx3.GridView.GetSelectedRows();
DataRow[] Roledrows = this.RoleOwnerControl.GetViewFocusedDataRows();
foreach (DataRow Roledrow in Roledrows)
{
PowerImpl.deletRoleDate(Roledrow["员工ID"] + "", id);
savedata(int.Parse(Roledrow["员工ID"] + ""));
}
DataTable newRoledetailed = PowerImpl.GetWorkUsers(id);
this.RoleOwnerControl.GridControl.DataSource = newRoledetailed;
DataTable NEWTABLE = GetNewDt(newRoledetailed);
this.gridControlEx1.GridControl.DataSource = NEWTABLE;
PowerImpl.RefreshElementPermissions(id);
}
/// <summary>
/// <para>说明:新增角色</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2019-06-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
void btn_Add_Click(object sender, EventArgs e)
{
try
{
if (this.SysModel != null && !string.IsNullOrWhiteSpace(this.SysModel.MenuAddName))
{
this.AddPanelViewRecord();
return;
}
// 新增角色
FrmAddRole frmAddRole = new FrmAddRole();
frmAddRole.Text = "新增角色";
frmAddRole.LabelObj.Text = "请输入角色名称:";
if (frmAddRole.ShowDialog() == DialogResult.OK)
{
string RoleName = frmAddRole.RoleName;
DataRow mSelectRow = this.RoleControlEx.GridView.GetFocusedDataRow();
rolePositionAfter = string.IsNullOrWhiteSpace(rolePositionAfter) ? "0" : rolePositionAfter;
// rolePositionBefore = string.IsNullOrWhiteSpace(rolePositionBefore) ? "1" : rolePositionBefore;
rolePositionBefore = string.IsNullOrWhiteSpace(rolePositionBefore) ? mSelectRow == null || string.IsNullOrWhiteSpace(mSelectRow["id"] + "") ? "1" : mSelectRow["id"] + "" : rolePositionBefore;
if (PowerImpl.intnewOper(RoleName))
{
Roletable = this.SysModel == null ? PowerImpl.GetWorkRole("", "") : SqlHelper.ExecuteDataTable(ReplaceHelper.ReplaceUserInfo(this.SysModel.MenuSql));
this.RoleControlEx.GridControl.DataSource = Roletable;
this.RoleControlEx.GridView.SelectRowHandler(int.Parse(rolePositionAfter));//设置默认选中行
if (Roletable.Rows.Count > 0)
{
First(rolePositionBefore);
}
}
}
}
catch (Exception ex)
{
//MessageUtil.Show(ex.Message);
LogUtil.WriteError("角色添加模块", ex);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// <para>说明:弹出添加数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-01-31 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void AddPanelViewRecord()
{
string mLeftFieldId = string.Empty;
string mLeftFieldName = string.Empty;
string mLeftTreeData = string.Empty;
string mLeftGridData = string.Empty;
try
{
if (this.SysModel.MenuAddName.Equals("Lskj.PubAdd4.dll", StringComparison.OrdinalIgnoreCase))
{
string url = string.Format("pages/app/app.html?username={0}&password={1}&xtype={2}&dllcoid=", ERPInfo.Instance.UserName, ERPInfo.Instance.Password, this.SysModel.BsAdddllname);
// 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号)
string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", "purview001").Split('~');
string[] menuArgs = new string[] { "", "", url };
string[] args = defaultArgs.Concat(menuArgs).ToArray();
IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubBrower, args);
form.SubForm.WindowState = FormWindowState.Maximized;
DialogResult result = form.SubForm.ShowDialog();
}
else
{
// 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号)
string unionKey = string.Empty, unionValue = string.Empty;
string maintabFocusedRowJson = "";
string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, "", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "1", "purview001").Split('~');
string[] menuArgs = { string.Format(ModuleArgs.PubAddArgs, ""), "0", "", mLeftFieldId, mLeftFieldName, "", "1", "", "", mLeftGridData == null ? mLeftTreeData : mLeftGridData, unionKey, unionValue };
string[] maintabFocusedRowArg = { maintabFocusedRowJson };
string[] args = defaultArgs.Concat(menuArgs).ToArray();
args = args.Concat(maintabFocusedRowArg).ToArray();
IForm form = FormHelper.LoadDllForm((this.SysModel.MenuAddName).ToLower().StartsWith("lskj.pubadd") ? ResourceDynamic.PubAdd : this.SysModel.MenuAddName, args);
//form.SubForm.Show();
DialogResult result = form.SubForm.ShowDialog();
if (result == DialogResult.OK)
{
Roletable = this.SysModel == null ? PowerImpl.GetWorkRole("", "") : SqlHelper.ExecuteDataTable(ReplaceHelper.ReplaceUserInfo(this.SysModel.MenuSql));
this.RoleControlEx.GridControl.DataSource = Roletable;
}
form.SubForm.Dispose();
form = null;
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 删除角色权限
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_deleteRole_Click(object sender, EventArgs e)
{
try
{
//int[] Roledrows = this.gridControlEx2.GridView.GetSelectedRows();
DataRow[] Roledrows = this.RoleControlEx.GetViewFocusedDataRows();
int index = Roledrows.Length > 0 ? this.RoleControlEx.GridView.GetRowHandle(Roledrows[0].Table.Rows.IndexOf(Roledrows[0])) : 0;
if (Roledrows.Length < 1)
return;
DialogResult result = MessageUtil.Show(string.Format(ResourceKeys.DeleteRows, Roledrows.Length), MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
DialogResult resultNew = MessageUtil.Show("是否删除当前选中角色下的所有人员角色权限?", MessageBoxButtons.YesNo);
if (resultNew == DialogResult.Yes)
{
StringBuilder msgString = new StringBuilder();
foreach (DataRow RoleRow in Roledrows)
{
DataTable Roledetailed = PowerImpl.GetWorkUsers(RoleRow["id"] + "");
if (Roledetailed.Rows.Count > 0 && SystemInfo.Instance.HiddenUrl)
{
msgString.Append(string.Format("{0},", RoleRow["roleName"] + ""));
continue;
}
//PowerImpl.deletRoleoperDate(Roletable.Rows[num]["id"] + "");
PowerImpl.deletRoleoperDate(RoleRow["id"] + "");
PowerImpl.deletPermissionClassification(RoleRow["id"] + "");
saveRoledata(int.Parse(id));
}
if (!string.IsNullOrEmpty(msgString.ToString()))
{
MessageUtil.Show(string.Format("角色{0}下方有人员,不允许删除!", msgString.ToString().TrimEnd(',')));
}
Roletable = this.SysModel == null ? PowerImpl.GetWorkRole("", "") : SqlHelper.ExecuteDataTable(ReplaceHelper.ReplaceUserInfo(this.SysModel.MenuSql));
this.RoleControlEx.GridControl.DataSource = Roletable;
if (Roletable.Rows.Count > 0)
{
if (Roletable.Rows.Count > index)
{
this.RoleControlEx.GridView.SelectRowHandler(index);//设置默认选中行
First(Roletable.Rows[index]["id"] + "");
}
else
{
this.RoleControlEx.GridView.SelectRowHandler(Roletable.Rows.Count - 1);//设置默认选中行
First(Roletable.Rows[Roletable.Rows.Count - 1]["id"] + "");
}
}
}
}
}
catch (Exception ex)
{
LogUtil.WriteError("删除角色权限出错!", ex);
//MessageUtil.Show("删除角色权限出错!" + ex);
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 复制角色和权限到新建角色中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnBtn_copyRole_Click(object sender, EventArgs e)
{
try
{
DataRow focuedRow = this.RoleControlEx.GridView.GetFocusedDataRow();
string id = focuedRow["id"] + "";
string selectSqlStr = string.Format("select * from p_systemRoleSetTab where id= '{0}'", id);
DataRow copyRow = BaseImpl.GetDataRowResult(selectSqlStr);
if (copyRow == null)
{
MessageUtil.Show("请选择一行数据!");
}
else
{
FrmAddRole frmAddRole = new FrmAddRole();
frmAddRole.Text = "复制角色";
frmAddRole.LabelObj.Text = "请输入复制角色名称:";
if (frmAddRole.ShowDialog() == DialogResult.OK)
{
string RoleName = frmAddRole.RoleName;
//复制角色
string insertSql = "insert into p_systemRoleSetTab ({0}) values ({1})";
string copyKeys = string.Empty;
string copyValues = string.Empty;
foreach (DataColumn col in copyRow.Table.Columns)
{
if (col.ColumnName.Equals("id"))
continue;
copyKeys += string.Format("{0},", col.ColumnName);
if (col.ColumnName.Equals("roleName"))
copyValues += string.Format("'{0}',", RoleName);
else
copyValues += string.Format("'{0}',", (copyRow[col] + "").Replace("'", "''"));
}
insertSql = string.Format(insertSql, copyKeys.TrimEnd(','), copyValues.TrimEnd(','));
SqlHelper.ExecuteNonQuery(insertSql);
string newRoleId = SqlHelper.ExecuteScalar(string.Format("select ident_current('{0}')", "p_systemRoleSetTab")) + "";
//复制人员
DataTable copyRoleOwnerTable = SqlHelper.ExecuteDataTable(string.Format(@"select * from p_systemRoleOperSetTab ro right join p_employeetab emp on ro.roleOperatorId=emp.employeeid where ISNULL(emp.sign, 0) = 0 and roleId='{0}'", id));//查询复制角色人员表
string roleColumnsNameSql = string.Format("select column_name from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = '{0}'", "p_systemRoleOperSetTab");
DataTable roleColumnsTab = SqlHelper.ExecuteDataTable(roleColumnsNameSql);
foreach (DataRow copyRoleRow in copyRoleOwnerTable.Rows)
{
insertSql = "insert into p_systemRoleOperSetTab ({0}) values ({1})";
copyKeys = string.Empty;
copyValues = string.Empty;
foreach (DataRow roleColNameRow in roleColumnsTab.Rows)
{
string colName = roleColNameRow["column_name"] + "";
if (colName.Equals("id"))
continue;
copyKeys += string.Format("{0},", colName);
if (colName.Equals("roleId"))
copyValues += string.Format("'{0}',", newRoleId);
else
copyValues += string.Format("'{0}',", (copyRoleRow[colName] + "").Replace("'", "''"));
}
insertSql = string.Format(insertSql, copyKeys.TrimEnd(','), copyValues.TrimEnd(','));
SqlHelper.ExecuteNonQuery(insertSql);
}
//刷新角色数据
Roletable = this.SysModel == null ? PowerImpl.GetWorkRole("", "") : SqlHelper.ExecuteDataTable(ReplaceHelper.ReplaceUserInfo(this.SysModel.MenuSql));
this.RoleControlEx.GridControl.DataSource = Roletable;
this.RoleControlEx.GridView.SelectRowHandler(Roletable.Rows.Count - 1);
}
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
//角色权限复制
private void btn_CopyPermissions_Click(object sender, EventArgs e)
{
DataRow focuedRow = this.RoleControlEx.GridView.GetFocusedDataRow();
string id = focuedRow["id"] + "";
string selectSqlStr = string.Format("select * from p_systemRoleSetTab where id= '{0}'", id);
DataRow copyRow = BaseImpl.GetDataRowResult(selectSqlStr);
if (copyRow == null)
{
MessageUtil.Show("请选择一行数据!");
}
else
{
FrmCopyPermission frmCopyPermission = new FrmCopyPermission(id);
frmCopyPermission.ShowDialog();
}
}
/// 设置父节点的状态
private void SetCheckedParentNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, Object check, Object obj)
{
if (node.ParentNode != null)
{
bool b = false;
int state;
for (int i = 0; i < node.ParentNode.Nodes.Count; i++)
{
state = (int)(node.ParentNode.Nodes[i].GetValue(obj));
if ((int)check != state)
{
b = !b;
break;
}
}
node.ParentNode.SetValue(obj, b ? CheckState.Indeterminate : check);
SetCheckedParentNodes(node.ParentNode, check, obj);
}
}
/// <summary>
/// 复制权限
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_copy_Click(object sender, EventArgs e)
{
try
{
FrmPermissionToCopy frmPermissionToCopy = new FrmPermissionToCopy();
if (frmPermissionToCopy.ShowDialog() == DialogResult.OK)
{
List<string> copyReadPurview = frmPermissionToCopy.readPurview;
List<string> copyEditPurview = frmPermissionToCopy.editPurview;
GetListKeyID();
//并集
string[] readPurviewUnion = readPurview.Union(copyReadPurview).ToList().ToArray();
string[] editPurviewUnion = editPurview.Union(copyEditPurview).ToList().ToArray();
GetNodeCheckedID(readPurviewUnion, editPurviewUnion);
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
//清空
private void btn_empty_Click(object sender, EventArgs e)
{
try
{
string[] Read = { };
string[] Edit = { };
GetNodeCheckedID(Read, Edit);
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
/// <summary>
/// 添加操作日志表默认列
/// </summary>
public void operationLogColumns()
{
GridColumn coidColumn = new GridColumn();
coidColumn.Caption = "模块编号";
coidColumn.FieldName = "coid";
coidColumn.Visible = true;
coidColumn.VisibleIndex = 0;
coidColumn.OptionsColumn.AllowEdit = false;
GridColumn typeColumn = new GridColumn();
typeColumn.Caption = "操作类型";
typeColumn.FieldName = "type";
typeColumn.Visible = true;
typeColumn.VisibleIndex = 1;
typeColumn.OptionsColumn.AllowEdit = false;
GridColumn contentColumn = new GridColumn();
contentColumn.Caption = "内容";
contentColumn.FieldName = "content";
contentColumn.Visible = true;
contentColumn.VisibleIndex = 2;
contentColumn.OptionsColumn.AllowEdit = false;
GridColumn objectColumn = new GridColumn();
objectColumn.Caption = "具体内容";
objectColumn.FieldName = "object";
objectColumn.Visible = true;
objectColumn.VisibleIndex = 3;
objectColumn.OptionsColumn.AllowEdit = false;
GridColumn stdtColumn = new GridColumn();
stdtColumn.Caption = "时间";
stdtColumn.FieldName = "stdt";
stdtColumn.Visible = true;
stdtColumn.VisibleIndex = 4;
stdtColumn.OptionsColumn.AllowEdit = false;
stdtColumn.Width = 150;
RepositoryItemDateEdit dateEdit = new RepositoryItemDateEdit();
dateEdit.DisplayFormat.FormatString = dateEdit.EditFormat.FormatString = dateEdit.Mask.EditMask = "yyyy-MM-dd HH:mm:ss";
dateEdit.DisplayFormat.FormatType = dateEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom;
dateEdit.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.True;
dateEdit.Properties.VistaEditTime = DevExpress.Utils.DefaultBoolean.True;
stdtColumn.ColumnEdit = dateEdit;
GridColumn operatorColumn = new GridColumn();
operatorColumn.Caption = "操作人员";
operatorColumn.FieldName = "operator";
operatorColumn.Visible = true;
operatorColumn.VisibleIndex = 5;
operatorColumn.OptionsColumn.AllowEdit = false;
GridColumn wsColumn = new GridColumn();
wsColumn.Caption = "操作电脑名";
wsColumn.FieldName = "ws";
wsColumn.Visible = true;
wsColumn.VisibleIndex = 6;
wsColumn.OptionsColumn.AllowEdit = false;
wsColumn.Width = 120;
this.LogControl.GridView.Columns.AddRange(new GridColumn[] {
coidColumn,
typeColumn,
contentColumn,
objectColumn,
stdtColumn,
operatorColumn,
wsColumn
});
//设置·搜索框中的时间
this.start_lde.DateFormat("yyyy-MM-dd");
this.end_lde.DateFormat("yyyy-MM-dd");
DateTime currentTime = DateTime.Now;
string startTime = currentTime.AddDays(1 - currentTime.Day).ToString("yyyy-MM-dd");//当月第一天
string endTime = currentTime.AddDays(1 - currentTime.Day).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");//当月最后一天
this.start_lde.EditText = startTime;
this.end_lde.EditText = endTime;
// start_lde.TextEdit.TextChanged += new EventHandler(SettingOperationLogs);
// end_lde.TextEdit.TextChanged += new EventHandler(SettingOperationLogs);
}
/// <summary>
/// 获得操作信息
/// </summary>
public void SettingOperationLogs(object sender, EventArgs e)
{
List<string> names = new List<string>();
string startTime = this.start_lde.EditText;
string endTime = this.end_lde.EditText;
if (Operatorflag)
{
//人员
string name = (employeetable.Select("员工ID='" + id + "'"))[0]["员工姓名"] + "";
names.Add(name);
}
else
{
//角色
DataTable Roledetailed = this.RoleOwnerControl.GridControl.DataSource as DataTable;
if (Roledetailed != null)
{
foreach (DataRow personnelDr in Roledetailed.Rows)
{
string personnelName = personnelDr["员工姓名"] + "";
names.Add(personnelName);
}
}
}
if (names.Count > 0)
{
string conditions = string.Empty;
if (names.Count > 1)
{
string fullName = string.Empty;
for (int i = 0; i <= names.Count - 1; i++)
{
fullName = fullName + "'" + names[i] + "',";
}
conditions = string.Format("where operator in ({0}) ", fullName.Trim(','));
}
else
{
conditions = string.Format("where operator='{0}'", names[0]);
}
if (!string.IsNullOrWhiteSpace(startTime)) conditions = conditions + string.Format(" and stdt >= '{0}' ", startTime);
if (!string.IsNullOrWhiteSpace(endTime))
{
conditions = conditions + string.Format("and '{0}' >= stdt ", endTime + " 23:59:59");
}
DataTable dataTable = SqlHelper.ExecuteDataTable(string.Format("select coid,systemtmp,[type],content,[object],stdt,operator,ws from p_logTab {0}", conditions));
this.LogControl.gridControl.DataSource = dataTable;
}
else
{
this.LogControl.gridControl.DataSource = null;
}
}
//员工日志点击查询
private void btn_query_Click(object sender, EventArgs e)
{
string startTime = this.start_lde.EditText;
string endTime = this.end_lde.EditText;
string enterName = this.name_lde.EditText;
string sql = string.Empty;
string conditions = string.Empty;
if (!string.IsNullOrWhiteSpace(startTime)) conditions = string.Format(" and stdt >= '{0}' ", startTime);
if (!string.IsNullOrWhiteSpace(endTime))
{
conditions = conditions + string.Format("and '{0}' >= stdt ", endTime + " 23:59:59");
}
if (string.IsNullOrWhiteSpace(enterName))
{
sql = string.Format("select coid,systemtmp,[type],content,[object],stdt,operator,ws from p_logTab where 1=1 {0} ", conditions);
}
else
{
sql = string.Format("select coid,systemtmp,[type],content,[object],stdt,operator,ws from p_logTab where operator like '%{1}%' {0}", conditions, enterName);
}
DataTable dataTable = SqlHelper.ExecuteDataTable(sql);
this.LogControl.gridControl.DataSource = dataTable;
}
/// <summary>
/// 点击导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_export_Click(object sender, EventArgs e)
{
this.LogControl.GridControl.ToExcel("操作日志");
}
/// <summary>
/// <para>说明:用户值改变后</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2019-06-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
private void OnSearchMoudleEditValueChanged(object sender, EventArgs e)
{
string searchStr = this.searchModuleLab.EditText;
if (!string.IsNullOrEmpty(searchStr))
{
this.moduleControl.GridView.ActiveFilter.Add(null, new DevExpress.XtraGrid.Columns.ColumnFilterInfo(string.Format("MenuCaption like '%{0}%' or PurviewId like '%{0}%'", searchStr)));
}
else
{
this.moduleControl.GridView.ActiveFilter.Clear();
}
}
/// <summary>
/// 初始化审核权限
/// </summary>
private void generateModuleColumns()
{
try
{
this.moduleControl.GridView.Columns.AddVisible("MenuCaption", "模块名");
this.Directory.SelectedValueChanged += new EventHandler(DirectoryValueChanged);
this.Directory.SelectedIndex = 0;
this.moduleControl.GridView.Click += new EventHandler(OnModuleGridViewClick);
int height = this.frmWork1.choosePanel.Height;
this.panelControl12.Height = height;
}
catch (Exception ex)
{
}
}
/// <summary>
/// 改变一级目录,加载对应的二级目录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DirectoryValueChanged(object sender, EventArgs e)
{
try
{
string text = (this.Directory.EditValue + "").Split('.')[0];
string where = "";
if (!string.IsNullOrWhiteSpace(text)) where = string.Format("and SubSysId={0}", text);
string sql = @"select PurviewId,MenuCaption,DllFileName ,SubSysId
from
(
SELECT
a.MenuId,a.SubSysId, a.MenuStruct,'01'+case when a.SubSysId>9 then cast(a.SubSysId as varchar(10)) else '0'+cast(a.SubSysId as varchar(10)) end+a.MenuStruct as speciesno,
a.MenuCaption,a.MouseOutImg
,case when a.DllFileName in ('Lskj.PubAccraditation.dll','Lskj.PubAccraditation2.dll') then 'Lskj.PubBill.dll' when a.DllFileName='Lskj.BaseAccraditation.dll' then 'Lskj.PubModule.dll' else '' end as DllFileName
,a.UrlParams,a.PurviewId,a.ParentMenuId,a.PurviewId as DllCode
FROM P_FormMenuConfigTab a with(nolock)
join P_FormMenuConfigTab aa with(nolock) on a.SubSysId=aa.SubSysId and LEFT(a.MenuStruct,2)=aa.MenuStruct
where 1=1 and len(a.MenuStruct)=4 and a.useFlag=1 and aa.useFlag=1
and a.dllfilename in ( 'Lskj.PubAccraditation.dll','Lskj.PubAccraditation2.dll','Lskj.BaseAccraditation.dll')
) a where 1=1 ";
sql = sql + where;
DataTable dataTable = SqlHelper.ExecuteDataTable(sql);
this.moduleControl.gridControl.DataSource = dataTable;
this.moduleControl.GridView.BestFitColumns();//设置根据内容填充列宽
if (dataTable.Rows.Count > 0)
{
OnModuleGridViewClick(null, null);
}
}
catch (Exception ex)
{
}
}
/// <summary>
/// 选中模块后加载对应的审核信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnModuleGridViewClick(object sender, EventArgs e)
{
DataRow mSelectRow = this.moduleControl.GridView.GetFocusedDataRow();
if (mSelectRow != null)
{
string PurviewId = mSelectRow["PurviewId"] + "";
string DllFileName = mSelectRow["DllFileName"] + "";
bool Basis = !DllFileName.Equals("Lskj.PubBill.dll", StringComparison.CurrentCultureIgnoreCase);
this.frmWork1.InitializeControl(PurviewId, Basis);
}
}
#region 快捷通道设置
#region 私有字段
/// <summary>
/// 复选框字段名称
/// </summary>
private string _checkFieldName = "_check";
/// <summary>
/// The _id
/// </summary>
private string _id = "_id";
#endregion
#region 公有字段
/// <summary>
/// 分割条位置
/// </summary>
public int PositionSplitter;
/// <summary>
/// 分割条位置
/// </summary>
public int WindowHeight;
/// <summary>
/// 选中人员id
/// </summary>
public string employeeId;
/// <summary>
/// 全部的快捷设置
/// </summary>
public DataTable AllShortcutSettings;
/// <summary>
/// 人员id或者角色id
/// </summary>
public string EmployeeID;
#endregion
/// <summary>
/// 初始化快捷通道设置
/// </summary>
public void FastPassageInitialize()
{
this.AllQuickControlEx.GridView.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDown;
GridDragGrid dragGrid = new GridDragGrid(this.AllQuickControlEx.GridView, this.QuickOperationControlEx.GridView);
GridDragGrid backdragGrid = new GridDragGrid(this.QuickOperationControlEx.GridView, this.AllQuickControlEx.GridView);
GridDragGrid dragGridNew = new GridDragGrid(this.AllQuickControlEx.GridView, this.QuickReportFormControlEx.GridView);
GridDragGrid backdragGridNew = new GridDragGrid(this.QuickReportFormControlEx.GridView, this.AllQuickControlEx.GridView);
//加载复选框
GridDragGrid.GridAddCheckBox(this.AllQuickControlEx.GridView);
GridDragGrid.GridAddCheckBox(this.QuickOperationControlEx.GridView);
GridDragGrid.GridAddCheckBox(this.QuickReportFormControlEx.GridView);
this.QuickOperationControlEx.GridView.OptionsSelection.EnableAppearanceFocusedCell = false;
this.QuickReportFormControlEx.GridView.OptionsSelection.EnableAppearanceFocusedCell = false;
//this.Resize += new System.EventHandler(maximization);
this.splitMain_Right.SplitterMoved += new EventHandler(PositionChange);
InitControls();
}
#region 方法
#region 获取选择人员已有的快捷通道设置
public void GetExistingSettings(string UserId)
{
if (this.groupBox1.Width != this.groupBox2.Width)
{
this.groupBox1.Width = this.groupBox2.Width = (this.groupBox1.Width + this.groupBox2.Width) / 2;
}
if (Operatorflag)
{
AllShortcutSettings = MainImpl.newGetGallerysByUserId(UserId);
}
else
{
AllShortcutSettings = MainImpl.GetGallerysByRoleId(UserId);
}
DataRow[] OperatingDr = AllShortcutSettings.Select("grouptagid=1");
DataRow[] ReportDr = AllShortcutSettings.Select("grouptagid=2");
DataTable OperatingDt = AllShortcutSettings.Clone();
DataTable ReportDt = AllShortcutSettings.Clone();
if (OperatingDr != null && OperatingDr.Length > 0)
{
foreach (DataRow row in OperatingDr)
{
OperatingDt.ImportRow(row);
}
}
if (ReportDr != null && ReportDr.Length > 0)
{
foreach (DataRow row in ReportDr)
{
ReportDt.ImportRow(row);
}
}
this.QuickOperationControlEx.gridControl.DataSource = OperatingDt;
this.QuickReportFormControlEx.gridControl.DataSource = ReportDt;
OnGridLeftGridViewClick(null, null);
}
#endregion
#region 上方数据勾选,下方增加
public void AccessPermissions(DataRow rowItem, string grouptagid)
{
DataRow dr = AllShortcutSettings.NewRow();
dr["LMenuid"] = rowItem["LMenuid"] + "";
dr["PurviewId"] = rowItem["PurviewId"] + "";
dr["ObjDll"] = rowItem["DllFilename"] + "";
dr["DllShowCaption"] = rowItem["DllShowCaption"] + "";
dr["Lsubsysid"] = (this.PrimaryDirectory.EditValue + "").Split('.')[0];
dr["GroupTagid"] = grouptagid;
dr["EmployeeID"] = id;
dr["LinkModeTag"] = "1";
dr["orderid"] = "0";
//数据源如果原本不存在选中行,则增加
if ((AllShortcutSettings.Rows.Cast<DataRow>().Where(x => x["LMenuid"] + "" == dr["LMenuid"] + "" && x["PurviewId"] + "" == dr["PurviewId"] + "")).Count() == 0)
{
this.AllShortcutSettings.Rows.Add(dr);
if (grouptagid.Equals("1"))
{
DataTable QoDt = this.QuickOperationControlEx.gridControl.DataSource as DataTable;
QoDt.Rows.Add(dr.ItemArray);
}
else
{
DataTable QrDt = this.QuickReportFormControlEx.gridControl.DataSource as DataTable;
QrDt.Rows.Add(dr.ItemArray);
}
}
}
#endregion
#region 下方数据删除,上方取消勾选
public void RemovePermissions(DataRow rowItem)
{
string menuid = rowItem["LMenuid"] + "";
DataRow[] dr = AllShortcutSettings.Select(string.Format("LMenuid='{0}' and EmployeeID='{1}'", menuid, id));
if (dr.Length == 1)
{
AllShortcutSettings.Rows.Remove(dr[0]);
}
}
#endregion
#region 设置分割条位置
/// <summary>
/// <para>说明:设置分割条位置</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-07-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
protected void InitlizeSpiltLocation()
{
try
{
}
catch (Exception ex)
{
LogHelper.Instance.WriteError(ex);
MessageUtil.Show(ex);
}
}
#endregion
#region 获取选中行数据
/// <summary>
/// <para>说明:获取选中行数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-07-20 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <returns>DataRow[].</returns>
public DataRow[] GetViewFocusedDataRows(GridView gridView)
{
int[] rows = gridView.GetSelectedRows();
DataRow[] dataRows = new DataRow[rows.Length];
for (int i = 0; i < rows.Length; i++)
{
dataRows[i] = gridView.GetDataRow(rows[i]);
}
return dataRows;
}
#endregion
#region 刷新左侧树数据
/// <summary>
/// 点击二级目录,加载具体模块
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnGridLeftGridViewClick(object sender, EventArgs e)
{
DataRow mSelectRow = this.gridLeft.GridView.GetFocusedDataRow();
if (mSelectRow != null)
{
string sql = string.Format("select MenuId as LMenuid,MenuCaption as DllShowCaption,PurviewId,subsysid,Menustruct,DllFilename from P_FormMenuConfigTab where subsysid='{0}' and left(menustruct,2)='{1}' and menustruct!='{1}' and useFlag='1' and len(menustruct)=4 ", mSelectRow["subsysid"] + "", mSelectRow["menustruct"] + "");
DataTable Alldt = SqlHelper.ExecuteDataTable(sql);
string menuid = string.Empty;
string purviewId = string.Empty;
//DataTable HasBeenSetDt = Alldt.Clone();//已设置快捷通道的模块
List<string> primaryKeys = new List<string>();
//DataTable IsNotSetDt = Alldt.Clone();//为设置快捷通道的模块
for (int i = 0; i < Alldt.Rows.Count; i++)
{
menuid = Alldt.Rows[i]["LMenuid"] + "";
purviewId = Alldt.Rows[i]["purviewId"] + "";
if (string.IsNullOrWhiteSpace(menuid)) continue;
//判断已有的快捷通道设置中是否有当前模块id
if (AllShortcutSettings!=null&&(AllShortcutSettings.Rows.Cast<DataRow>().Where(x => x["LMenuid"] + "" == menuid && x["PurviewId"] + "" == purviewId)).Count() > 0)
{
//HasBeenSetDt.Rows.Add(Alldt.Rows[i].ItemArray);
primaryKeys.Add(Alldt.Rows[i]["LMenuid"] + "");
}
else
{
//IsNotSetDt.Rows.Add(Alldt.Rows[i].ItemArray);
}
}
//this.AllQuickControlEx.gridControl.DataSource = IsNotSetDt;
this.AllQuickControlEx.gridControl.DataSource = Alldt;
for (int i = 0; i < Alldt.Rows.Count; i++)
{
if (primaryKeys.Contains(Alldt.Rows[i]["LMenuid"] + "")) this.AllQuickControlEx.GridView.SelectRow(i);
}
}
}
#endregion
#region 创建界面
/// <summary>
/// <para>说明:创建界面</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2021-07-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="menuCode">The menu code.</param>
public void InitControls()
{
try
{
string sql = @" Create Table P_RoleShortcut -- 角色快捷通道表
(
Id int identity(1,1) primary key, -- 分类ID,主键,自动增长
EmployeeID int not null, -- 角色编号
GroupTagid int not null, -- 1为操作 2为报表
ItemTagid int not null, --
ObjDll varchar(50) not null, --dll名
DllShowCaption varchar(50) not null, --模块名字
LinkModeTag int not null, --cs端为1 手机段为2
LMenuid int not null, --Menuid
Lsubsysid int not null, --1级目录id
orderid int, --cs段默认0
UrlParams varchar(50), --默认空
)";
SqlHelper.ExecuteNonQuery(sql);
}
catch { }
PositionSplitter = this.splitMain_Right.SplitterPosition;
WindowHeight = this.Height;
this.gridLeft.Visible = true;
this.InitlizeSpiltLocation();//设置分割条位置
GridColumn treeListColumnName = new GridColumn();
treeListColumnName.Caption = "菜单名称";
treeListColumnName.FieldName = "DllShowCaption";
treeListColumnName.MinWidth = 38;
treeListColumnName.Visible = true;
treeListColumnName.VisibleIndex = 0;
treeListColumnName.Width = 300;
GridColumn treeListColumnMenuId = new GridColumn();
treeListColumnMenuId.Caption = "菜单id";
treeListColumnMenuId.FieldName = "LMenuid";
treeListColumnMenuId.Visible = true;
treeListColumnMenuId.VisibleIndex = 1;
GridColumn treeListColumnModuleId = new GridColumn();
treeListColumnModuleId.Caption = "模块编号";
treeListColumnModuleId.FieldName = "PurviewId";
treeListColumnModuleId.Visible = true;
treeListColumnModuleId.VisibleIndex = 2;
this.AllQuickControlEx.GridView.Columns.AddRange(new GridColumn[] {
treeListColumnName,
treeListColumnMenuId,
treeListColumnModuleId
});
this.QuickOperationControlEx.GridView.Columns.AddVisible("DllShowCaption", "菜单名称");
this.QuickOperationControlEx.GridView.Columns.AddVisible("LMenuid", "菜单id");
this.QuickOperationControlEx.GridView.Columns.AddVisible("PurviewId", "模块编号");
this.QuickOperationControlEx.GridView.Columns["DllShowCaption"].Width = 200;
this.QuickReportFormControlEx.GridView.Columns.AddVisible("DllShowCaption", "菜单名称");
this.QuickReportFormControlEx.GridView.Columns.AddVisible("LMenuid", "菜单id");
this.QuickReportFormControlEx.GridView.Columns.AddVisible("PurviewId", "模块编号");
this.QuickReportFormControlEx.GridView.Columns["DllShowCaption"].Width = 200;
this.SettingOperation.Click += new EventHandler(OnSettingOperationRightsClick);
this.SettingReport.Click += new EventHandler(OnSettingReportClick);
this.SetRemovePermissions.Click += new EventHandler(OnRemovePermissionsClick);
this.SetRemovePermissions.Click += new EventHandler(OnRemovePermissionsClick2);
this.btnOk.Click += new EventHandler(OnbtnOkClick);
SetLevelOneDirectory();
SetLevelTweDirectory();
this.PrimaryDirectory.SelectedValueChanged += new EventHandler(PrimaryDirectoryValueChanged);
this.gridLeft.GridView.Click += new EventHandler(OnGridLeftGridViewClick);
}
/// <summary>
/// 改变一级目录,加载对应的二级目录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PrimaryDirectoryValueChanged(object sender, EventArgs e)
{
string text = (this.PrimaryDirectory.EditValue + "").Split('.')[0];
DataTable dt = SqlHelper.ExecuteDataTable(string.Format("select * from P_FormMenuConfigTab where len(menustruct)=2 and useFlag=1 and subsysid='{0}' order by menustruct", text));
if (dt.Rows.Count > 0)
{
this.gridLeft.gridControl.DataSource = dt;
this.gridLeft.GridView.SelectRowHandler(0);
OnGridLeftGridViewClick(null, null);
}
else
{
this.gridLeft.gridControl.DataSource = null;
this.AllQuickControlEx.gridControl.DataSource = null;
this.QuickOperationControlEx.gridControl.DataSource = null;
this.QuickReportFormControlEx.gridControl.DataSource = null;
}
}
/// <summary>
/// 设置一级目录,创建二级目录的表格列
/// </summary>
protected void SetLevelOneDirectory()
{
//获取一级目录
DataTable treeTable = SqlHelper.ExecuteDataTable("select subsysid,subsysname from P_SubSystemTab where useed=1");
string text = string.Empty;
foreach (DataRow dr in treeTable.Rows)
{
text = string.Empty;
text = dr["subsysid"] + "." + dr["subsysname"];
PrimaryDirectory.Properties.Items.Add(text);
Directory.Properties.Items.Add(text);
moduleAssociationRole.comboBox.Properties.Items.Add(text);
permissionSettings1.comboBox.Properties.Items.Add(text);
}
}
/// <summary>
/// 设置二级目录表格
/// </summary>
protected void SetLevelTweDirectory()
{
//二级目录列
GridColumn MenuIdColumn = new GridColumn();
MenuIdColumn.Caption = "编号";
MenuIdColumn.FieldName = "MenuId";
MenuIdColumn.VisibleIndex = 1;
GridColumn MenuStructColumn = new GridColumn();
MenuStructColumn.Caption = "菜单号";
MenuStructColumn.FieldName = "MenuStruct";
MenuStructColumn.VisibleIndex = 2;
GridColumn MenuCaptionColumn = new GridColumn();
MenuCaptionColumn.Caption = "菜单名称";
MenuCaptionColumn.FieldName = "MenuCaption";
MenuCaptionColumn.VisibleIndex = 3;
this.gridLeft.GridView.Columns.AddRange(new GridColumn[] {
//subsysidColumn,
MenuIdColumn,
MenuStructColumn,
MenuCaptionColumn
});
}
#endregion
#endregion
#region 事件
#region 设置按钮点击事件
//设置操作快捷通道按钮点击事件
private void OnSettingOperationRightsClick(object sender, EventArgs e)
{
int[] rowNumbers = this.AllQuickControlEx.GridView.GetSelectedRows();
List<DataRow> addRows = new List<DataRow>();
foreach (int rowIndex in rowNumbers)
{
DataRow rowItem = this.AllQuickControlEx.GridView.GetDataRow(rowIndex);
addRows.Add(rowItem);
}
foreach (DataRow dr in addRows)
{
AccessPermissions(dr, "1");
}
}
// 设置报表快捷通道按钮点击事件
private void OnSettingReportClick(object sender, EventArgs e)
{
int[] rowNumbers = this.AllQuickControlEx.GridView.GetSelectedRows();
List<DataRow> addRows = new List<DataRow>();
foreach (int rowIndex in rowNumbers)
{
DataRow rowItem = this.AllQuickControlEx.GridView.GetDataRow(rowIndex);
addRows.Add(rowItem);
}
foreach (DataRow dr in addRows)
{
AccessPermissions(dr, "2");
}
}
//删除权限 QuickOperationControlEx表
private void OnRemovePermissionsClick(object sender, EventArgs e)
{
int[] rowNumbers = this.QuickOperationControlEx.GridView.GetSelectedRows();
if (rowNumbers.Length == 0) return;
List<DataRow> deleteRows = new List<DataRow>();
List<string> primaryKeys = new List<string>();
foreach (int rowIndex in rowNumbers)
{
DataRow rowItem = this.QuickOperationControlEx.GridView.GetDataRow(rowIndex);
deleteRows.Add(rowItem);
primaryKeys.Add(rowItem["LMenuid"] + "");
}
DataTable gcDetailDt = this.QuickOperationControlEx.gridControl.DataSource as DataTable;
foreach (DataRow dr in deleteRows)
{
RemovePermissions(dr);
gcDetailDt.Rows.Remove(dr);
}
DataTable gcMainDt = this.AllQuickControlEx.gridControl.DataSource as DataTable;
for (int i = 0; i < gcMainDt.Rows.Count; i++)
{
if (primaryKeys.Contains(gcMainDt.Rows[i]["LMenuid"] + "")) this.AllQuickControlEx.GridView.UnselectRow(i);
}
}
//QuickReportFormControlEx表
private void OnRemovePermissionsClick2(object sender, EventArgs e)
{
int[] rowNumbers = this.QuickReportFormControlEx.GridView.GetSelectedRows();
if (rowNumbers.Length == 0) return;
List<DataRow> deleteRows = new List<DataRow>();
List<string> primaryKeys = new List<string>();
foreach (int rowIndex in rowNumbers)
{
DataRow rowItem = this.QuickReportFormControlEx.GridView.GetDataRow(rowIndex);
deleteRows.Add(rowItem);
primaryKeys.Add(rowItem["LMenuid"] + "");
}
DataTable gcDetailDt = this.QuickReportFormControlEx.gridControl.DataSource as DataTable;
foreach (DataRow dr in deleteRows)
{
RemovePermissions(dr);
gcDetailDt.Rows.Remove(dr);
}
DataTable gcMainDt = this.AllQuickControlEx.gridControl.DataSource as DataTable;
for (int i = 0; i < gcMainDt.Rows.Count; i++)
{
if (primaryKeys.Contains(gcMainDt.Rows[i]["LMenuid"] + "")) this.AllQuickControlEx.GridView.UnselectRow(i);
}
}
//点击确定按钮
private void OnbtnOkClick(object sender, EventArgs e)
{
try
{
if (string.IsNullOrWhiteSpace(id))
{
MessageUtil.Show("请选中左侧人员或角色");
return;
}
WaitForm.ShowForm(ResourceKeys.DataSaving);
string TableName = string.Empty;
DataTable oldRole = null;//一开始的角色表
if (Operatorflag)
{
TableName = "P_MessageToolLinkDllTab";
}
else
{
TableName = "P_RoleShortcut";
oldRole = MainImpl.GetGallerysByRoleId(id);
}
string deleteSql = string.Format("delete {0} where EmployeeID='{1}'", TableName, id);
SqlHelper.ExecuteNonQuery(deleteSql);
string sql = string.Empty;
foreach (DataRow dr in AllShortcutSettings.Rows)
{
sql = string.Format(@"insert into {10}(EmployeeID,GroupTagid,ItemTagid,ObjDll,DllShowCaption,LinkModeTag,LMenuid,Lsubsysid,orderid,UrlParams)
values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')",
dr["EmployeeID"], dr["GroupTagid"], dr["ItemTagid"], dr["ObjDll"], dr["DllShowCaption"], dr["LinkModeTag"],
dr["LMenuid"], dr["Lsubsysid"], dr["orderid"], dr["UrlParams"], TableName);
SqlHelper.ExecuteNonQuery(sql);
}
//把角色的快捷信息保存到对应的人员中
if (!Operatorflag)
{
//获得角色表对应的全部人员
DataTable Roledetailed = PowerImpl.GetWorkUsers(id);
foreach (DataRow RoledetailedDr in Roledetailed.Rows)
{
//当前角色中对应人员的全部菜单
DataTable EmployeesQuicklyDt = MainImpl.newGetGallerysByUserId(RoledetailedDr["员工ID"] + "");
//删除对应人员的全部菜单
deleteSql = string.Format("delete P_MessageToolLinkDllTab where EmployeeID='{0}'", RoledetailedDr["员工ID"]);
SqlHelper.ExecuteNonQuery(deleteSql);
//把角色权限赋给人员
foreach (DataRow dr in AllShortcutSettings.Rows)
{
sql = string.Format(@"insert into P_MessageToolLinkDllTab(EmployeeID,GroupTagid,ItemTagid,ObjDll,DllShowCaption,LinkModeTag,LMenuid,Lsubsysid,orderid,UrlParams)
values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')",
RoledetailedDr["员工ID"], dr["GroupTagid"], dr["ItemTagid"], dr["ObjDll"], dr["DllShowCaption"], dr["LinkModeTag"],
dr["LMenuid"], dr["Lsubsysid"], dr["orderid"], dr["UrlParams"]);
SqlHelper.ExecuteNonQuery(sql);
}
//把人员本身设置的菜单重新赋给人员
foreach (DataRow dr in EmployeesQuicklyDt.Rows)
{
//判断是否存在员工独立的快捷设置 AllShortcutSettings改为oldRole,避免把角色表删除的模块重新赋给人员
if ((oldRole.Rows.Cast<DataRow>().Where(x => x["LMenuid"] + "" == dr["LMenuid"] + "" && x["PurviewId"] + "" == dr["PurviewId"] + "")).Count() == 0)
{
sql = string.Format(@"insert into P_MessageToolLinkDllTab(EmployeeID,GroupTagid,ItemTagid,ObjDll,DllShowCaption,LinkModeTag,LMenuid,Lsubsysid,orderid,UrlParams)
values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}')",
RoledetailedDr["员工ID"], dr["GroupTagid"], dr["ItemTagid"], dr["ObjDll"], dr["DllShowCaption"], dr["LinkModeTag"],
dr["LMenuid"], dr["Lsubsysid"], dr["orderid"], dr["UrlParams"]);
SqlHelper.ExecuteNonQuery(sql);
}
}
}
}
MessageUtil.Show("保存成功");
}
catch (Exception ex)
{
MessageUtil.Show("保存失败");
}
finally
{
WaitForm.HideForm();
}
}
#endregion
#region 分割条位置改变
/// <summary>
/// <para>说明:分割条位置包含时记录位置</para>
/// <para>创建人:曹屹峰</para>
/// <para>创建日期:2021-08-25 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void PositionChange(object sender, EventArgs e)
{
PositionSplitter = this.splitMain_Right.SplitterPosition;
}
#endregion
#region 窗口大小改变
/// <summary>
/// <para>说明:窗口大小改变时改变分割条位置</para>
/// <para>创建人:曹屹峰</para>
/// <para>创建日期:2021-08-25 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void maximization(object sender, EventArgs e)
{
double a = (double)PositionSplitter / (double)WindowHeight;
if (a > 0)
{
this.splitMain_Right.SplitterPosition = Convert.ToInt32(Math.Round((double)this.Height * a));
WindowHeight = this.Height;
}
}
#endregion
#region 已有权限改变
/// <summary>
/// <para>说明:已有权限框内容改变事件</para>
/// <para>创建人:曹屹峰</para>
/// <para>创建日期:2022-06-15 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
//private void gridControlChange(object sender, RowCellClickEventArgs e)
//{
// if (this.gcDetail.RowCount == 0) return;
// //DataRow rowItem = this.gcDetail.GetFocusedDataRow();
//}
#endregion
#region 取消
/// <summary>
/// <para>说明:取消</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-03-20 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}
#endregion
#endregion
#endregion
private void xtraTabControl2_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
{
if (xtraTabControl2.SelectedTabPage == xtraTabPage9)//进行tabpage位置判断
{
GetExistingSettings(id);
}
if (xtraTabControl2.SelectedTabPage == xtraTabPage8)//进行tabpage位置判断
{
SettingOperationLogs(null, null);
}
if (xtraTabControl2.SelectedTabPage == xtraTabPage11)//进行tabpage位置判断
{
moduleAssociationRole.GridView_RowClick(null, null);
}
if (xtraTabControl2.SelectedTabPage == xtraTabPage12)//进行tabpage位置判断
{
personnelInformation.GridView_FocusedRowObjectChanged(null, null);
}
}
/// <summary>
/// 滑动位置改变
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnSplitContainerControl1_SplitterPositionChanged(object sender, EventArgs e)
{
IniHelper.Write(string.Format("Step_spliterPositionMain_{0}", "PubUserTomodule"), this.splitContainerControl1.SplitterPosition + "");
}
private void SplitMain_LowerRight_SplitterPositionChanged(object sender, EventArgs e)
{
IniHelper.Write(string.Format("Step_spliterPositionMain_{0}", "splitMain_LowerRight"), this.splitMain_LowerRight.SplitterPosition + "");
}
/// <summary>
/// 菜单功能明细界面删除角色后刷新当前主页选中的人员或角色
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ModuleAssociationRole_onClickDeleteButton(object sender, EventArgs e)
{
xtraTabControl1_SelectedPageChanged(null, null);
}
/// <summary>
/// 左侧角色推拽到人员权限页签中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void OnDragRole(object sender, GridDragGridArgs e)
{
string sql = string.Empty;
try
{
if (MessageUtil.Show(ResourceKeys.DragSelectR