using DevExpress.XtraEditors.Repository; using DevExpress.XtraTreeList.Columns; using DevExpress.XtraTreeList.Nodes; using Lskj.Business.Impl; using Lskj.Control; using Lskj.Control.Model; using Lskj.Core; using Lskj.Model; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lskj.PubUserTomodule { public partial class FrmPermissionToCopy : BaseForm { public DynamicPowerModel PubPowerModel; /// /// 选中行的集合 /// private List rows = new List(); public List readPurview = new List(); public 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 FrmPermissionToCopy() { if (DBConfig.Instance.CreateConnection()) { InitializeComponent(); //InitializeDeps(); InitializeColumns(); InitializeUsers(); creatTreeListControl(); BindGridTreeView(); this.gridControlEx4.GridView.Click += new EventHandler(OnGridView2Click);//人员表点击 this.gridControlEx4.GridView.BestFitColumns();//设置根据内容填充列宽 xtraTabControl1_SelectedPageChanged(); this.employeeName.TextEdit.EditValueChanged += new EventHandler(OnUserEditValueChanged); this.employeeId.TextEdit.EditValueChanged += new EventHandler(OnUserEditValueChanged); //this.department.TextEdit.EditValueChanged += new EventHandler(OnDepEditValueChanged); Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this); } } #region 私有方法 /// /// 筛选赋权限表 /// /// /// 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; } /// /// 说明:获取选中行数据 /// 创建人:王一帆 /// 创建日期:2019-09-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The node. /// DataRow. private DataRow GetForcedNodeDataRow(TreeListNode node) { DataRowView dataRowView = this.treeList1.GetDataRecordByNode(node) as DataRowView; return dataRowView != null ? dataRowView.Row : null; } /// /// 默认绑定列数据 /// private void InitializeColumns() { 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.gridControlEx4.GridControl.DataSource = employeetable; } /// /// 动态创建TreeList的Column,一列为图层名,一列为是否统计列Check控件 /// private void creatTreeListControl() { TreeListColumn treeListColumnName = new TreeListColumn(); treeListColumnName.Caption = "系统名称"; treeListColumnName.FieldName = "Caption"; treeListColumnName.MinWidth = 38; treeListColumnName.Visible = true; treeListColumnName.VisibleIndex = 0; treeListColumnName.Width = 400; TreeListColumn treeListColumnMenuId = new TreeListColumn(); treeListColumnMenuId.Caption = "菜单id"; treeListColumnMenuId.FieldName = "MenuId"; treeListColumnMenuId.Visible = true; treeListColumnMenuId.VisibleIndex = 1; TreeListColumn treeListColumnReadflag = new TreeListColumn(); 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 = 2; TreeListColumn treeListColumnEditflag = new TreeListColumn(); treeListColumnEditflag.ColumnEdit = checkEdit; treeListColumnEditflag.Caption = "操作权限"; treeListColumnEditflag.FieldName = "Editflag"; treeListColumnEditflag.Name = "treeListColumnEditflagValue"; treeListColumnEditflag.Visible = true; treeListColumnEditflag.VisibleIndex = 3; this.treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { 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.GetMenuTreeViewData(); //节点前显示复选框 //this.treeList1.OptionsView.ShowCheckBoxes = true; // this.treeList1.OptionsBehavior.Editable = false; 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) { List idlist = new List(); this.Tag = treeTable.Rows[0]; DataColumnCollection dcc = treeTable.Columns; for (int i = 0; i < treeTable.Rows.Count; i++) { DataRow dr = treeTable.Rows[i]; DataRow dr1 = dt.NewRow(); string tnKey = dr["id"] + ""; string tnStr = dr["MenuCaption"] + ""; string pKey = dr["parentId"] + ""; string MenuId = dr["MenuId"] + ""; if (idlist.Contains(tnKey)) { tnKey += "re" + i; } dr1["ID"] = tnKey; dr1["PARENTID"] = pKey; dr1["Caption"] = tnStr; dr1["MenuId"] = MenuId; dr1["Readflag"] = 0; dr1["editflag"] = 0; dt.Rows.Add(dr1); idlist.Add(tnKey); } this.treeList1.DataSource = dt; this.treeList1.KeyFieldName = "ID"; this.treeList1.ParentFieldName = "PARENTID"; //this.treeList1.Columns[0].Caption = "系统名称"; //this.treeList1.Columns[0].Width = 500; this.treeList1.Columns[0].OptionsColumn.AllowEdit = false; this.treeList1.Columns[1].Visible = false; } } /// /// 说明:用户值改变后 /// 创建人:王一帆 /// 创建日期: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 = (DataTable)treeList1.DataSource; 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 (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); } this.treeList1.DataSource = rows.CopyToDataTable(); this.treeList1.CollapseAll(); } #endregion #region 点击事件 /// /// 单击查询人员表里的数据 /// /// /// 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); } } #endregion /// /// 默认选中第一行 /// /// /// private void xtraTabControl1_SelectedPageChanged() { operPositionAfter = string.IsNullOrWhiteSpace(operPositionAfter) ? "0" : operPositionAfter; operPositionBefore = string.IsNullOrWhiteSpace(operPositionBefore) ? employeetable.Rows[0]["员工ID"] + "" : operPositionBefore; this.gridControlEx4.GridView.SelectRowHandler(int.Parse(operPositionAfter));//设置默认选中行 Second(operPositionBefore); } private void btn_determine_Click(object sender, EventArgs e) { GetListKeyID(); this.DialogResult = System.Windows.Forms.DialogResult.OK; } } }