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

1321 lines
52 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 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;
/// <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;
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();
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 私有方法
/// <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.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);
}
}
/// <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.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("所属部门", "所属部门");
}
/// <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.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
});
}
/// <summary>
/// 动态创建gridControlEx5的Column,一列为图层名,一列为是否统计列Check控件
/// </summary>
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();
}
/// <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;
//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)
//{}
}
/// <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>
/// <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 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;
}
/// <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 = 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"] + "");
}
}
}
/// <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.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 点击事件
/// <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());
}
/// <summary>
/// 双击角色表里的数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 单击查询角色表里的数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);
}
}
/// <summary>
/// 点击角色权限信息的方法
/// </summary>
/// <param name="id"></param>
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();
}
/// <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);
}
}
/// <summary>
/// 点击模块,加载模块详细信息
/// </summary>
/// <param name="id"></param>
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
/// <summary>
/// 点击保存权限
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<string> names = new List<string>();
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();
}
}
/// <summary>
/// 保存选中模块列的权限
/// </summary>
public void saveModuleColumn(List<string> 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<string> 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}'",);
}
}
}
}
///// <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.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;
//}
}
/// <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.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;
}
/// <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
{
// 新增角色
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);
}
}
/// <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.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<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);
}
}
}
}