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; using Lskj.Control; using Lskj.Control.Model; using Lskj.Util; using Lskj.Data; using Lskj.Business.Impl; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid.Views.Base; using Lskj.Business; using System.Text.RegularExpressions; using Lskj.Core; using System.Diagnostics; namespace Lskj.BaseAccraditation { public partial class FrmLookupData : BaseForm { #region 公有变量 /// /// 审批模块编号 /// public string ModuleCode; /// /// 审批模块单据类型 /// public string BillType; /// /// 审批模块步骤 /// public string StepCode; /// /// 审批模块对应编码 /// public string nextSelectStepCode; /// /// 审批模块对应人员 /// public string nextSelectStepOper; #endregion #region 私有变量 /// /// The _id /// private string _id = "_id"; /// /// 是否全部加载 /// private bool isLoadBothStepCode; /// /// 审批模块对应编码 /// private bool isLoadBothStepOper; /// /// 审批模块对应编码 /// private bool isMultiAudit; /// /// 复选框字段名称 /// private string _checkFieldName = "_check"; /// /// 操作人员数组 /// private string[] StepOper; /// /// 左侧步骤表 /// private DataTable NextStepTab; #endregion public FrmLookupData() { InitializeComponent(); } /// /// 说明:窗体加载时 /// 创建人:龚宇超 /// 创建日期:2017-12-14 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The instance containing the event data. protected override void OnLoad(EventArgs e) { WaitForm.ShowForm(); try { this.InitLoadStat(); this.InitNextStep(); this.InitNextStat(); this.gcMain.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(OnGridViewRowCellClick); this.gcMain.RowCellClick += new RowCellClickEventHandler(OnGridViewRowCellClick); this.gcDeatil.RowCellClick += new RowCellClickEventHandler(OnGridDetailRowCellClick); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); LogHelper.Instance.WriteError(ex, ResourceKeys.BaseModuleAudit); } finally { WaitForm.HideForm(); } } /// /// 全选步骤所有数据方法 /// /// /// public void StepSelectAll(){ try { DataTable DataSource = this.gcMain.GetGridViewFilteredAndSortedDataToDataTable(); foreach (DataRow item in DataSource.Rows) { DataRow rowItem = this.NextStepTab.Select("1=1").FirstOrDefault(x => (item[_id] + "").Equals(x[_id] + "")); rowItem[_checkFieldName] = 1; rowItem.AcceptChanges(); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 全选人员所有数据 /// /// /// public void OperSelectAll() { try { DataTable DataSource = this.gcDeatil.GetGridViewFilteredAndSortedDataToDataTable(); foreach (DataRow item in DataSource.Rows) { if ("False".Equals(item[_checkFieldName] + "")) { item[_checkFieldName] = 1; } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 取消步骤所有数据方法 /// /// /// public void StepCancelAll() { try { if (!isLoadBothStepCode) return; DataTable dt = this.NextStepTab.Clone(); foreach (DataRow item in this.NextStepTab.Rows) { if ("True".Equals(item[_checkFieldName] + "")) { item[_checkFieldName] = 0; } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 取消人员所有数据 /// /// /// public void OperCancelAll() { try { DataTable DataSource = this.gcDeatil.GetGridViewFilteredAndSortedDataToDataTable(); foreach (DataRow item in DataSource.Rows) { if ("False".Equals(item[_checkFieldName] + "")) { item[_checkFieldName] = 1; } } } catch (Exception ex) { LogUtil.WriteError("取消人员所有数据出错!", ex); MessageUtil.Show("取消人员所有数据出错!" + ex); } } /// /// 全选所有数据 /// /// /// private void btn_selectAll_Click(object sender, EventArgs e) { StepSelectAll(); } /// /// 取消全选 /// /// /// private void btn_StepcancelAll_Click(object sender, EventArgs e) { try { StepCancelAll(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 人员全选所有数据 /// /// /// private void btn_OperselectAll_Click(object sender, EventArgs e) { try { OperSelectAll(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 人员取消全选 /// /// /// private void btn_OpercancelAll_Click(object sender, EventArgs e) { try { OperCancelAll(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 说明:设置状态 /// 创建人:王一帆 /// 创建日期:2020-11-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. private void InitNextStat() { if (!isLoadBothStepCode) { StepSelectAll(); } } /// /// 说明:选中行 /// 创建人:王一帆 /// 创建日期:2020-11-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. private void OnGridViewRowCellClick(object sender, FocusedRowChangedEventArgs e) { try { this.RefreshRightGrid(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 说明:选中行 /// 创建人:王一帆 /// 创建日期:2020-11-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. private void OnGridViewRowCellClick(object sender, RowCellClickEventArgs e) { try { DataRow rowItem = this.gcMain.GetFocusedDataRow(); if (rowItem != null && e.Column.FieldName == _checkFieldName) { rowItem[_checkFieldName] = "True".Equals(rowItem[_checkFieldName] + "") && isLoadBothStepCode ? 0 : 1; rowItem.AcceptChanges(); } this.RefreshRightGrid(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 说明:选中行 /// 创建人:王一帆 /// 创建日期:2020-11-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. private void OnGridDetailRowCellClick(object sender, RowCellClickEventArgs e) { try { if (!isLoadBothStepOper) return; if (!isMultiAudit) { OperCancelAll(); } DataRow rowItem = this.gcMain.GetFocusedDataRow(); DataRow rowDetail = this.gcDeatil.GetFocusedDataRow(); if (rowItem != null && rowDetail != null && e.Column.FieldName == _checkFieldName) { rowDetail[_checkFieldName] = "True".Equals(rowDetail[_checkFieldName] + "") ? 0 : 1; rowItem["stepOper"] = string.Empty; rowItem.AcceptChanges(); rowDetail.AcceptChanges(); DataRow[] rowItems = this.gridControl2.DataSourceTable().Select(_checkFieldName + "=True"); foreach (DataRow item in rowItems) { rowItem["stepOper"] += item["stepOper"] + ","; rowItem.AcceptChanges(); } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } /// /// 说明:选中行 /// 创建人:王一帆 /// 创建日期:2020-11-13 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. private void RefreshRightGrid() { int num = this.gcMain.FocusedRowHandle; string[] stepOpers = StepOper[num].Split(','); DataTable operTable = new DataTable(); operTable.Columns.Add("stepOper"); for (int i = 0; i < operTable.Columns.Count; i++) { operTable.Rows[i]["stepOper"] = stepOpers[i] + ""; } operTable.AcceptChanges(); this.gcDeatil.GridControl.DataSource = operTable; } /// /// 说明:设置新版审批的基础配置 /// 创建人:王一帆 /// 创建日期:2017-12-14 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The instance containing the event data. public void InitLoadStat() { DataRow NextStepFlag = BaseAuditImpl.SetUpNextStep(ModuleCode, BillType, StepCode); if (NextStepFlag != null) { isLoadBothStepCode = "1".Equals(NextStepFlag["nextStepSelect"] + ""); isLoadBothStepOper = "1".Equals(NextStepFlag["nextOperSelect"] + ""); isMultiAudit = "1".Equals(NextStepFlag["multiAudit"] + ""); } else { MessageUtil.Show("配置新版审批失败!" + "\r\n"); } } /// /// 说明:设置新版审批的数据 /// 创建人:王一帆 /// 创建日期:2017-12-14 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The instance containing the event data. public void InitNextStep() { this.gcMain.Columns.Clear(); NextStepTab = BaseAuditImpl.GetUpNextStepGrid(ModuleCode, nextSelectStepCode); string[] StepOper = nextSelectStepOper.Split('~'); if (NextStepTab != null) { if (!NextStepTab.Columns.Contains(_checkFieldName)) { NextStepTab.Columns.Add(_checkFieldName, typeof(bool)); NextStepTab.Columns.Add(_id, typeof(int)); for (int i = 0; i < NextStepTab.Rows.Count; i++) { NextStepTab.Rows[i][_checkFieldName] = 0; NextStepTab.Rows[i][_id] = i; } } GridColumn checkColumn = new GridColumn(); checkColumn.Name = checkColumn.FieldName = this._checkFieldName; checkColumn.Caption = "选"; checkColumn.Width = 30; checkColumn.Visible = true; checkColumn.OptionsColumn.AllowEdit = false; GridColumn valueColumn = new GridColumn(); valueColumn.FieldName = valueColumn.Name = "stepname"; valueColumn.Caption = "步骤名称"; valueColumn.Width = 200; valueColumn.Visible = true; valueColumn.OptionsColumn.AllowEdit = false; GridColumn textColumn = new GridColumn(); textColumn.FieldName = textColumn.Name = "stepOper"; textColumn.Caption = "协助人员列表"; textColumn.Width = 350; textColumn.Visible = true; textColumn.OptionsColumn.AllowEdit = false; this.gcMain.Columns.AddRange(new GridColumn[] { checkColumn, valueColumn, textColumn }); this.gcDeatil.Columns.AddRange(new GridColumn[] { checkColumn, textColumn }); this.gridControl1.DataSource = NextStepTab; //this.gcDetail.SelectAll(); //this.gcDetail.DeleteSelectedRows(); } } /// /// 确认审批人 /// /// /// private void btnOk_Click(object sender, EventArgs e) { try { nextSelectStepCode = string.Empty; nextSelectStepOper = string.Empty; DataRow[] rowItems = this.NextStepTab.Select(_checkFieldName + "=True"); foreach (DataRow item in rowItems) { nextSelectStepCode += item["stepname"] + ";"; nextSelectStepOper += item["stepOper"] + ";"; } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message,ex.Message); } } } }