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 DevExpress.XtraBars; using Lskj.Control; using Lskj.Control.Model; using DevExpress.XtraTreeList.Columns; using DevExpress.XtraGrid.Views.Grid; namespace Lskj.PubUserTomodule { public partial class FrmMain : BaseForm { public DynamicPowerModel PubPowerModel; /// /// 选中行的集合 /// private List rows = new List(); private List readPurview = new List(); private List editPurview = new List(); private List idlist = new List(); /// /// 记录选中角色选中行的行号之后 /// private string rolePositionAfter = string.Empty; /// /// 记录选中人员选中行的行号之后 /// private string operPositionAfter = string.Empty; /// /// 记录选中角色选中行的行号之前 /// private string rolePositionBefore = string.Empty; /// /// 记录选中人员选中行的行号之前 /// private string operPositionBefore = string.Empty; /// /// 获取左侧选中的名称 /// private string id = string.Empty; /// /// 获取临时选中的名称 /// private string empid = string.Empty; private bool Operatorflag = false; /// /// treeList绑定的表 /// DataTable dt = new DataTable(); /// /// 角色表 /// DataTable Roletable = new DataTable(); /// /// 员工表 /// DataTable employeetable = new DataTable(); //修改前模块列的属性 public DataTable BasicFormDt = new DataTable(); public DataTable BillAboveDt = new DataTable(); public DataTable BillDetailDt = new DataTable(); public FrmMain() { InitializeComponent(); //InitializeDeps(); InitializeColumns(); InitializeUsers(); creatTreeListControl(); creatDetailControl(); BindGridTreeView(); GridDragGrid dragGrid = new GridDragGrid(this.gridControlEx1.GridView, this.gridControlEx3.GridView); dragGrid.OnDragComplete += new GridFragGridCompleteEventHandler(OnDragGridCompleted); //GridDragGrid.GridAddCheckBox(this.gridControlEx1.GridView); this.gridControlEx2.GridView.Click += new EventHandler(OnGridViewClick);//角色表点击 this.gridControlEx2.GridView.DoubleClick += new EventHandler(DoubleGridViewClick); this.gridControlEx4.GridView.Click += new EventHandler(OnGridView2Click);//人员表点击 //this.gridControlEx3.GridView.Click += new EventHandler(OnGridView3Click);//临时表人员表点击 this.gridControlEx5.GridView.Click += new EventHandler(OnBasicFormGridViewClick);//权限模块点击 this.gridControlEx2.GridView.SelectRowHandler(0);//设置默认选中行 this.gridControlEx2.GridView.BestFitColumns();//设置根据内容填充列宽 this.gridControlEx3.GridView.BestFitColumns();//设置根据内容填充列宽 this.gridControlEx4.GridView.BestFitColumns();//设置根据内容填充列宽 this.gridControlEx5.GridView.BestFitColumns();//设置根据内容填充列宽 this.BasicForm.GridView.BestFitColumns();//设置根据内容填充列宽 if (Roletable.Rows.Count > 0) { First(Roletable.Rows[0]["id"] + ""); } this.employeeName.TextEdit.EditValueChanged += new EventHandler(OnUserEditValueChanged); this.employeeId.TextEdit.EditValueChanged += new EventHandler(OnUserEditValueChanged); this.employeeName.Visible = false; this.employeeId.Visible = false; //this.department.TextEdit.EditValueChanged += new EventHandler(OnDepEditValueChanged); // this.BasicForm.GridView.c Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this); } #region 私有方法 /// /// 说明:表格拖拽完成 /// 创建人:龚宇超 /// 创建日期:2017-11-14 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The e. protected void OnDragGridCompleted(object sender, GridDragGridArgs e) { string sql = string.Empty; try { if (MessageUtil.Show(ResourceKeys.DragSelectRow, MessageBoxButtons.YesNo) == DialogResult.Yes) { GridColumnCollection gridColumns = this.gridControlEx3.GridView.Columns; DataTable table = this.gridControlEx3.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.gridControlEx3.GridControl.DataSource as DataTable); this.gridControlEx1.GridControl.DataSource = NEWTABLE; this.gridControlEx3.GridView.ClearSelection(); this.gridControlEx3.GridView.SelectRowHandler(table.Rows.Count - 1); this.gridControlEx3.GridView.UpdateCurrentRow(); this.gridControlEx3.GridView.ShowEditor(); } } catch (Exception ex) { LogUtil.WriteError("表格拖拽错误", ex); LogHelper.Instance.WriteError(ex); //MessageUtil.Show(ResourceKeys.OperFault); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 筛选赋权限表 /// /// /// 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; } /// /// 默认绑定列数据 /// private void InitializeColumns() { this.gridControlEx2.GridView.Columns.AddVisible("roleName", "角色"); this.gridControlEx4.GridView.Columns.AddVisible("员工ID", "员工ID"); this.gridControlEx4.GridView.Columns.AddVisible("员工工号", "员工工号"); this.gridControlEx4.GridView.Columns.AddVisible("员工姓名", "员工姓名"); this.gridControlEx4.GridView.Columns.AddVisible("所属部门", "所属部门"); } /// /// 说明:默认加载表格数据 /// 创建人:王一帆 /// 创建日期:2019-09-19 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeUsers() { /// /// 人员和角色绑定的表 /// Roletable = PowerImpl.GetWorkRole("", ""); employeetable = PowerImpl.GetWorkEmployee(); this.gridControlEx1.GridControl.DataSource = employeetable; this.gridControlEx2.GridControl.DataSource = Roletable; this.gridControlEx4.GridControl.DataSource = employeetable; this.gridControlEx1.GridView.OptionsBehavior.Editable = this.gridControlEx2.GridView.OptionsBehavior.Editable = this.gridControlEx3.GridView.OptionsBehavior.Editable = this.gridControlEx4.GridView.OptionsBehavior.Editable = false; } private void creatDetailControl() { //基础表单 GridColumn idColumn = new GridColumn(); idColumn.Caption = "ID"; idColumn.FieldName = "id"; idColumn.Visible = true; idColumn.VisibleIndex = 0; GridColumn orderidColumn = new GridColumn(); orderidColumn.Caption = "显示顺序"; orderidColumn.FieldName = "orderid"; orderidColumn.Visible = true; orderidColumn.VisibleIndex = 1; GridColumn sysnameColumn = new GridColumn(); sysnameColumn.Caption = "系统名称"; sysnameColumn.FieldName = "sysnameColumn"; sysnameColumn.Visible = true; sysnameColumn.VisibleIndex = 2; GridColumn username1Column = new GridColumn(); username1Column.Caption = "用户名称"; username1Column.FieldName = "username1"; username1Column.Visible = true; username1Column.VisibleIndex = 3; GridColumn widthColumn = new GridColumn(); widthColumn.Caption = "显示宽度"; widthColumn.FieldName = "width"; widthColumn.Visible = true; widthColumn.VisibleIndex = 4; GridColumn tagidColumn = new GridColumn(); tagidColumn.Caption = "是否必输"; tagidColumn.FieldName = "tagid"; tagidColumn.Visible = true; tagidColumn.VisibleIndex = 5; GridColumn DataFormatColumn = new GridColumn(); DataFormatColumn.Caption = "显示格式"; DataFormatColumn.FieldName = "DataFormat"; DataFormatColumn.Visible = true; DataFormatColumn.VisibleIndex = 6; RepositoryItemCheckEdit checkEdit = new RepositoryItemCheckEdit(); checkEdit.ValueChecked = "1"; checkEdit.ValueUnchecked = "0"; checkEdit.ValueGrayed = 3; GridColumn privilegeViewColumn = new GridColumn(); privilegeViewColumn.Caption = "单独浏览权限"; privilegeViewColumn.FieldName = "View"; privilegeViewColumn.Visible = true; privilegeViewColumn.VisibleIndex = 8; privilegeViewColumn.ColumnEdit = checkEdit; GridColumn privilegeOperColumn = new GridColumn(); privilegeOperColumn.Caption = "单独操作权限"; privilegeOperColumn.FieldName = "Oper"; privilegeOperColumn.Visible = true; privilegeOperColumn.VisibleIndex = 7; privilegeOperColumn.ColumnEdit = checkEdit; this.BasicForm.GridView.Columns.AddRange(new GridColumn[] { idColumn, orderidColumn, sysnameColumn, username1Column, widthColumn, tagidColumn, DataFormatColumn, privilegeViewColumn, privilegeOperColumn }); //单据抬头 GridColumn billidColumn = new GridColumn(); billidColumn.Caption = "ID"; billidColumn.FieldName = "id"; billidColumn.Visible = true; billidColumn.VisibleIndex = 0; GridColumn fieldNameColumn = new GridColumn(); fieldNameColumn.Caption = "字段名称"; fieldNameColumn.FieldName = "fieldName"; fieldNameColumn.Visible = true; fieldNameColumn.VisibleIndex = 1; //GridColumn billorderidColumn = new GridColumn(); //billorderidColumn.Caption = "显示顺序"; //billorderidColumn.FieldName = "orderid"; //billorderidColumn.Visible = true; //billorderidColumn.VisibleIndex = 1; GridColumn sysNameColumn = new GridColumn(); sysNameColumn.Caption = "系统名称"; sysNameColumn.FieldName = "sysName"; sysNameColumn.Visible = true; sysNameColumn.VisibleIndex = 2; GridColumn userNameColumn = new GridColumn(); userNameColumn.Caption = "用户名称"; userNameColumn.FieldName = "userName"; userNameColumn.Visible = true; userNameColumn.VisibleIndex = 3; GridColumn BillAboveprivilegeViewColumn = new GridColumn(); BillAboveprivilegeViewColumn.Caption = "单独浏览权限"; BillAboveprivilegeViewColumn.FieldName = "View"; BillAboveprivilegeViewColumn.Visible = true; BillAboveprivilegeViewColumn.VisibleIndex = 8; BillAboveprivilegeViewColumn.ColumnEdit = checkEdit; GridColumn BillDetailprivilegeOperColumn = new GridColumn(); BillDetailprivilegeOperColumn.Caption = "单独操作权限"; BillDetailprivilegeOperColumn.FieldName = "Oper"; BillDetailprivilegeOperColumn.Visible = true; BillDetailprivilegeOperColumn.VisibleIndex = 7; BillDetailprivilegeOperColumn.ColumnEdit = checkEdit; //privilegeOperColumn.VisibleIndex = 3; //privilegeViewColumn.VisibleIndex = 4; this.BillAbove.GridView.Columns.AddRange(new GridColumn[] { billidColumn, fieldNameColumn, sysNameColumn, userNameColumn, BillAboveprivilegeViewColumn, BillDetailprivilegeOperColumn }); //widthColumn.VisibleIndex = 4; //GridColumn isVisibleColumn = new GridColumn(); //isVisibleColumn.Caption = "是否禁用"; //isVisibleColumn.FieldName = "isVisible"; //isVisibleColumn.Visible = true; //isVisibleColumn.VisibleIndex = 5; //GridColumn nullableColumn = new GridColumn(); //nullableColumn.Caption = "是否必输"; //nullableColumn.FieldName = "nullable"; //nullableColumn.Visible = true; //nullableColumn.VisibleIndex = 4; //单据 this.BillDetail.GridView.Columns.AddRange(new GridColumn[] { billidColumn, fieldNameColumn, sysNameColumn, userNameColumn, BillAboveprivilegeViewColumn, BillDetailprivilegeOperColumn }); } /// /// 动态创建gridControlEx5的Column,一列为图层名,一列为是否统计列Check控件 /// private void creatTreeListControl() { GridColumn treeListColumnName = new GridColumn(); treeListColumnName.Caption = "系统名称"; treeListColumnName.FieldName = "MenuCaption"; treeListColumnName.MinWidth = 38; treeListColumnName.Visible = true; treeListColumnName.VisibleIndex = 0; treeListColumnName.Width = 400; GridColumn treeListColumnMenuId = new GridColumn(); treeListColumnMenuId.Caption = "菜单id"; treeListColumnMenuId.FieldName = "MenuId"; treeListColumnMenuId.Visible = true; treeListColumnMenuId.VisibleIndex = 1; GridColumn treeListColumnReadflag = new GridColumn(); RepositoryItemCheckEdit checkEdit = new RepositoryItemCheckEdit(); checkEdit.ValueChecked = "1"; checkEdit.ValueUnchecked = "0"; checkEdit.ValueGrayed = 3; treeListColumnReadflag.ColumnEdit = checkEdit; treeListColumnReadflag.Caption = "只读权限"; treeListColumnReadflag.FieldName = "Readflag"; treeListColumnReadflag.Name = "treeListColumnReadflagValue"; treeListColumnReadflag.Visible = true; treeListColumnReadflag.VisibleIndex = 3; GridColumn treeListColumnEditflag = new GridColumn(); treeListColumnEditflag.ColumnEdit = checkEdit; treeListColumnEditflag.Caption = "操作权限"; treeListColumnEditflag.FieldName = "Editflag"; treeListColumnEditflag.Name = "treeListColumnEditflagValue"; treeListColumnEditflag.Visible = true; treeListColumnEditflag.VisibleIndex = 2; this.gridControlEx5.GridView.Columns.AddRange(new GridColumn[] { treeListColumnName, treeListColumnMenuId, treeListColumnReadflag, treeListColumnEditflag }); //this.treeList1.Nodes.Clear(); //this.treeList1.Refresh(); } /// /// 说明:模块权限表机构 /// 创建人:王一帆 /// 创建日期:2017-09-04 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The tree table. public void BindGridTreeView() { DataTable treeTable = PowerImpl.GetAllModulesData(); dt = treeTable; //dt.Columns.Add("ID"); //dt.Columns.Add("PARENTID"); ////(节点编码的名称) //dt.Columns.Add("Caption"); //dt.Columns.Add("MenuId"); //dt.Columns.Add("Readflag", typeof(int)); //dt.Columns.Add("Editflag", typeof(int)); //if (treeTable != null && treeTable.Rows.Count > 0) //{} } /// /// 执行保存角色权限时候的存储过程 /// /// /// /// /// 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()); } /// /// 执行保存时候的存储过程 /// /// /// /// /// 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()); } /// /// 说明:部门下拉框值改变后 /// 创建人:王一帆 /// 创建日期:2019-06-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. void OnDepEditValueChanged(object sender, EventArgs e) { //string depid = this.department.EditValue; //string mf = this.employeeName.EditText; //DataTable table = WorkFlowBillImpl.GetWorkFlowUsers(depid, mf); //this.gridControlEx4.gridControl.DataSource = table; } /// /// 说明:用户值改变后 /// 创建人:王一帆 /// 创建日期:2019-06-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. void OnUserEditValueChanged(object sender, EventArgs e) { try { string mc = this.employeeName.EditText; string dc = this.employeeId.EditText; DataTable table = PowerImpl.GetWorkFlowUsers(mc, dc); this.gridControlEx4.gridControl.DataSource = table; } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:初始化部门数据 /// 创建人:王一帆 /// 创建日期:2019-06-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// //private void InitializeDeps() //{ // DataTable table = WorkFlowBillImpl.GetDeps(); // this.department.ValueMember = "departmentid"; // this.department.ValueField = "departmentid"; // this.department.TextField = "departmentname"; // this.department.SetDataSource(table); //} /// /// 获取所有选中的集合 /// /// private void GetListKeyID() { editPurview.Clear(); readPurview.Clear(); DataTable masterdt = gridControlEx5.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"] + ""); } } } /// /// 获取选择状态有权限的节点集合 /// /// 父级节点 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.gridControlEx5.gridControl.DataSource = rows.CopyToDataTable(); this.gridControlEx5.GridView.SelectRowHandler(0); OnBasicFormGridViewClick(null, null); } else { this.gridControlEx5.gridControl.DataSource = dt.Clone(); this.BasicForm.gridControl.DataSource = BasicFormDt = null; this.BillAbove.gridControl.DataSource = BillAboveDt = null; this.BillDetail.gridControl.DataSource = BillDetailDt = null; } //this.treeList1.CollapseAll(); } #endregion #region 点击事件 /// /// 说明:设置权限 /// 创建人:王一帆 /// 创建日期:2022-06-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. 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); } } /// /// 模块权限设置框点击确定时,返回更新后的权限。 /// /// /// private void UpdatePermissionModule(List EditPurview, List ReadPurview) { GetNodeCheckedID(ReadPurview.ToArray(), EditPurview.ToArray()); } /// /// 双击角色表里的数据 /// /// /// void DoubleGridViewClick(object sender, EventArgs e) { try { // 新增角色 FrmAddRole frmAddRole = new FrmAddRole(); 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 = PowerImpl.GetWorkRole("", ""); this.gridControlEx2.GridControl.DataSource = Roletable; this.gridControlEx2.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); } } /// /// 单击查询角色表里的数据 /// /// /// private void OnGridViewClick(object sender, EventArgs e) { try { DataRow mSelectRow = this.gridControlEx2.GridView.GetFocusedDataRow(); rolePositionAfter = this.gridControlEx2.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); } } /// /// 点击角色权限信息的方法 /// /// private void First(string Firstid) { id = Firstid; DataRow DR = PowerImpl.GetRoleRow(id); 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.gridControlEx3.GridControl.DataSource = Roledetailed; DataTable NEWTABLE = GetNewDt(Roledetailed); this.gridControlEx1.GridControl.DataSource = NEWTABLE; Operatorflag = false; //this.treeList1.CollapseAll(); } /// /// 单击查询人员表里的数据 /// /// /// private void OnGridView2Click(object sender, EventArgs e) { try { DataRow mSelectRow = this.gridControlEx4.GridView.GetFocusedDataRow(); operPositionAfter = this.gridControlEx4.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); } } /// /// 点击人员详细信息的方法 /// /// 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; } catch (Exception ex) { //MessageUtil.Show("权限表无此人!"); this.gridControlEx4.GridView.SelectRowHandler(0); Second("1"); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 点击模块,加载模块详细信息 /// /// private void OnBasicFormGridViewClick(object sender, EventArgs e) { DataRow mSelectRow = this.gridControlEx5.GridView.GetFocusedDataRow(); if (mSelectRow != null) { String dllcode = mSelectRow["PurviewId"] + ""; //基础模块 this.BasicForm.gridControl.DataSource = ReplaceDetailDataSource(PowerImpl.GetBasisData(dllcode)); BasicFormDt = (this.BasicForm.gridControl.DataSource as DataTable).Copy(); //单据抬头 this.BillAbove.gridControl.DataSource = ReplaceDetailDataSource(PowerImpl.GetBillAboveData(dllcode)); BillAboveDt = (this.BillAbove.gridControl.DataSource as DataTable).Copy(); //单据明细 this.BillDetail.gridControl.DataSource = ReplaceDetailDataSource(PowerImpl.GetBillDetailData(dllcode)); BillDetailDt = (this.BillDetail.gridControl.DataSource as DataTable).Copy(); } } public DataTable ReplaceDetailDataSource(DataTable dt) { DataTable newdt = dt.Clone(); int index = this.xtraTabControl1.SelectedTabPageIndex;//0为角色,1为人员 if (index == 0) { //角色对应的全部人员 DataTable Roledetailed = PowerImpl.GetWorkUsers(id); foreach (DataRow dr in dt.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]["Oper"] = Oper; newdt.Rows[newdt.Rows.Count - 1]["View"] = View; } } else { // BasicDt //获得当前选中员工名字 string name = (employeetable.Select("员工ID='" + id + "'"))[0]["员工姓名"] + ""; foreach (DataRow dr in dt.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]["Oper"] = privilegeOper; newdt.Rows[newdt.Rows.Count - 1]["View"] = privilegeView; } } return newdt; } #endregion /// /// 点击保存权限 /// /// /// private void btn_save_Click(object sender, EventArgs e) { try { 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); if (PowerImpl.SaveRoleOperDate(id, DR["员工姓名"] + "", DR["所属部门"] + "", readdate, Editdate)) { 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) { MessageUtil.Show("同步人员权限成功!"); } else { MessageUtil.Show("同步人员权限失败!"); return; } } } //保存选中模块的列信息 List names = new List(); if (Operatorflag) { //人员 string name = (employeetable.Select("员工ID='" + id + "'"))[0]["员工姓名"] + ""; names.Add(name); } else { //角色 DataTable Roledetailed = PowerImpl.GetWorkUsers(id); foreach (DataRow personnelDr in Roledetailed.Rows) { string personnelName = personnelDr["员工姓名"] + ""; names.Add(personnelName); } } } catch (Exception ex) { } finally { WaitForm.HideForm(); } } /// /// 保存选中模块列的权限 /// public void saveModuleColumn(List names) { string sqlValue = string.Empty; DataRow mSelectRow = this.gridControlEx5.GridView.GetFocusedDataRow(); //获得当前模块编号 String dllcode = mSelectRow["PurviewId"] + ""; //基础模块 DataTable newBasicForm = this.BasicForm.gridControl.DataSource as DataTable; if (newBasicForm.Rows.Count > 0) { DataTable savedDt = PowerImpl.GetBasisData(dllcode); for (int i = 0; i < newBasicForm.Rows.Count; i++) { if (!(newBasicForm.Rows[i]["Editflag"] + "").Equals((BasicFormDt.Rows[i]["Editflag"] + "")) && (newBasicForm.Rows[i]["id"] + "").Equals((BasicFormDt.Rows[i]["id"] + ""))) { string rowEdit = newBasicForm.Rows[i]["Editflag"] + "";//当前是否选中 string rowId = newBasicForm.Rows[i]["id"] + "";//主键 List editValue = ((savedDt.Select("id='" + rowId + "'"))[0]["Editflag"]+"").Split(',').ToList();//数据库中的值 if (rowEdit == "0") { foreach (string name in names) { if (editValue.Contains(name)) editValue.Remove(name); } } else { foreach (string name in names) { if (!editValue.Contains(name)) editValue.Add(name); } } // string sql = string.Format("update p_systemwordbooktab set privilegeOper='{0}' where id='{1}'",); } } } } ///// ///// 说明:分割条移动保存位置 ///// 创建人:龚宇超 ///// 创建日期:2018-03-06 ///// 修改人: ///// 修改日期: ///// 修改备注: ///// 版本:1.0 ///// ///// The source of the event. ///// The instance containing the event data. //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 + ""); // } //} /// /// 切换人员表默认选中第一行 /// /// /// 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.gridControlEx4.GridView.SelectRowHandler(int.Parse(operPositionAfter));//设置默认选中行 Second(operPositionBefore); this.employeeName.Visible = true; this.employeeId.Visible = true; } if (xtraTabControl1.SelectedTabPage == xtraTabPage1)//进行tabpage位置判断 { rolePositionAfter = string.IsNullOrWhiteSpace(rolePositionAfter) ? "0" : rolePositionAfter; rolePositionBefore = string.IsNullOrWhiteSpace(rolePositionBefore) ? Roletable.Rows[0]["id"] + "" : rolePositionBefore; if (Roletable.Rows.Count > 0) { First(rolePositionBefore); } this.gridControlEx2.GridView.SelectRowHandler(int.Parse(rolePositionAfter));//设置默认选中行 this.employeeName.Visible = false; this.employeeId.Visible = false; } //DataTable dt = this.gridControlEx5.gridControl.DataSource as DataTable; //if (dt.Rows.Count > 0) //{ // this.gridControlEx4.GridView.SelectRowHandler(2); //} //else { // this.BasicForm.gridControl.DataSource = null; // this.BillAbove.gridControl.DataSource = null; // this.BillDetail.gridControl.DataSource = null; //} } /// /// 删除人员权限 /// /// /// private void btn_delete_Click(object sender, EventArgs e) { DataTable Roledetailed = PowerImpl.GetWorkUsers(id); //int[] Roledrows = this.gridControlEx3.GridView.GetSelectedRows(); DataRow[] Roledrows = this.gridControlEx3.GetViewFocusedDataRows(); foreach (DataRow Roledrow in Roledrows) { PowerImpl.deletRoleDate(Roledrow["员工ID"] + "", id); savedata(int.Parse(Roledrow["员工ID"] + "")); } DataTable newRoledetailed = PowerImpl.GetWorkUsers(id); this.gridControlEx3.GridControl.DataSource = newRoledetailed; DataTable NEWTABLE = GetNewDt(newRoledetailed); this.gridControlEx1.GridControl.DataSource = NEWTABLE; } /// /// 说明:添加模块 /// 创建人:龚宇超 /// 创建日期:2019-06-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The sender. /// The instance containing the event data. void btn_Add_Click(object sender, EventArgs e) { try { // 新增角色 FrmAddRole frmAddRole = new FrmAddRole(); 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.intnewOper(RoleName)) { Roletable = PowerImpl.GetWorkRole("", ""); this.gridControlEx2.GridControl.DataSource = Roletable; this.gridControlEx2.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); } } /// /// 删除角色权限 /// /// /// private void btn_deleteRole_Click(object sender, EventArgs e) { try { //int[] Roledrows = this.gridControlEx2.GridView.GetSelectedRows(); DataRow[] Roledrows = this.gridControlEx2.GetViewFocusedDataRows(); if (Roledrows.Length < 1) return; DialogResult result = MessageUtil.Show(string.Format(ResourceKeys.DeleteRows, Roledrows.Length), MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { foreach (DataRow RoleRow in Roledrows) { //PowerImpl.deletRoleoperDate(Roletable.Rows[num]["id"] + ""); PowerImpl.deletRoleoperDate(RoleRow["id"] + ""); saveRoledata(int.Parse(id)); } Roletable = PowerImpl.GetWorkRole("", ""); this.gridControlEx2.GridControl.DataSource = Roletable; this.gridControlEx2.GridView.SelectRowHandler(0);//设置默认选中行 if (Roletable.Rows.Count > 0) { First(Roletable.Rows[0]["id"] + ""); } } } catch (Exception ex) { LogUtil.WriteError("删除角色权限出错!", ex); //MessageUtil.Show("删除角色权限出错!" + ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// 设置父节点的状态 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); } } //复制 private void btn_copy_Click(object sender, EventArgs e) { try { //FrmPermissionToCopy frmPermissionToCopy = new FrmPermissionToCopy(); //if (frmPermissionToCopy.ShowDialog() == DialogResult.OK) //{ // List copyReadPurview = frmPermissionToCopy.readPurview; // List 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); } } } }