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