Files
lserp_cs_6.0/插件库/Lskj.PubUserTomodule/FrmPermissionToCopy.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

454 lines
17 KiB
C#

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;
/// <summary>
/// 选中行的集合
/// </summary>
private List<DataRow> rows = new List<DataRow>();
public List<string> readPurview = new List<string>();
public 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;
private bool Operatorflag = false;
/// <summary>
/// treeList绑定的表
/// </summary>
DataTable dt = new DataTable();
/// <summary>
/// 角色表
/// </summary>
DataTable Roletable = new DataTable();
/// <summary>
/// 员工表
/// </summary>
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 私有方法
/// <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>
/// <para>说明:获取选中行数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2019-09-27 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="node">The node.</param>
/// <returns>DataRow.</returns>
private DataRow GetForcedNodeDataRow(TreeListNode node)
{
DataRowView dataRowView = this.treeList1.GetDataRecordByNode(node) as DataRowView;
return dataRowView != null ? dataRowView.Row : null;
}
/// <summary>
/// 默认绑定列数据
/// </summary>
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("所属部门", "所属部门");
}
/// <summary>
/// <para>说明:默认加载表格数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2019-09-19 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitializeUsers()
{
/// <summary>
/// 人员和角色绑定的表
/// </summary>
Roletable = PowerImpl.GetWorkRole("", "");
employeetable = PowerImpl.GetWorkEmployee();
this.gridControlEx4.GridControl.DataSource = employeetable;
}
/// <summary>
/// 动态创建TreeList的Column,一列为图层名,一列为是否统计列Check控件
/// </summary>
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();
}
/// <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.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<string> idlist = new List<string>();
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;
}
}
/// <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 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);
}
}
/// <summary>
/// <para>说明:初始化部门数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2019-06-24 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
//private void InitializeDeps()
//{
// DataTable table = WorkFlowBillImpl.GetDeps();
// this.department.ValueMember = "departmentid";
// this.department.ValueField = "departmentid";
// this.department.TextField = "departmentname";
// this.department.SetDataSource(table);
//}
/// <summary>
/// 获取所有选中的集合
/// </summary>
/// <param name="parentNode"></param>
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"] + "");
}
}
}
/// <summary>
/// 获取选择状态有权限的节点集合
/// </summary>
/// <param name="parentNode">父级节点</param>
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 点击事件
/// <summary>
/// 单击查询人员表里的数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <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;
}
catch (Exception ex)
{
//MessageUtil.Show("权限表无此人!");
this.gridControlEx4.GridView.SelectRowHandler(0);
Second("1");
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message, ex.Message);
}
}
#endregion
/// <summary>
/// 默认选中第一行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
}
}
}