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

1034 lines
44 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Lskj.Util;
using Lskj.Control.Model;
using Lskj.Data;
using Lskj.Business.Impl;
using Lskj.Model;
using DevExpress.XtraTab;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraBars;
using Lskj.Business;
using DevExpress.XtraEditors;
using Lskj.PubAccraditation2;
using System.Text.RegularExpressions;
using Lskj.Core;
using System.Diagnostics;
namespace Lskj.Control
{
public partial class AuditBasePanel : UserControl
{
public AuditBasePanel()
{
InitializeComponent();
}
#region 公用变量
/// <summary>
/// 是否是单据审核
/// </summary>
public bool isBillFlag;
/// <summary>
/// 审批模型
/// </summary>
public AccraditationModel AccditModelObj;
/// <summary>
/// 基础审批用表模型
/// </summary>
public BaseAuditCommonModel BaseAuditModelObj = new BaseAuditCommonModel();
/// <summary>
/// 基础档案审批配置对象
/// </summary>
public BaseAccraditationModel BaseAccraditModelObj ;
/// <summary>
/// 基础档案模型
/// </summary>
public BaseAuditModel ModuleModelObj;
/// <summary>
/// 系统模块配置
/// </summary>
public DynamicBaseAccraditionPopModel SysModel;
/// <summary>
/// 主表控件
/// </summary>
public MyControl ControlObj;
#endregion
#region 私有变量
/// <summary>
/// 推送模块
/// </summary>
private int _beforeId;
/// <summary>
/// 主面板高度记录
/// </summary>
private int _mainPanelHeight;
/// <summary>
/// 初始化完成
/// </summary>
private bool _isInitFinish;
/// <summary>
/// 返退意见
/// </summary>
private string _auditAdvic;
/// <summary>
/// 推送菜单名
/// </summary>
private string _beforeMenuName;
/// <summary>
/// 推送操作人员
/// </summary>
private string _beforeUsers;
/// <summary>
/// 当前窗体控件数据来源(配置的)
/// </summary>
private DataRow _baseRowData;
/// <summary>
/// 当前流转数据
/// </summary>
private DataRow _flowRowData;
/// <summary>
/// 基本数据
/// </summary>
private DataTable _baseTabList;
/// <summary>
/// 操作字段
/// </summary>
private DataTable _dtFileds;
/// <summary>
/// 分组控件字段
/// </summary>
private DataTable _dtAddGroup;
/// <summary>
/// 流转步骤模型
/// </summary>
private FlowTypeStepModel _flowTypeStepModel;
/// <summary>
/// <para>说明:审批表格双击弹出模块审批回调</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
public event EventHandler RefreshTabCallBack;
/// <summary>
/// 单据水印
/// </summary>
private WaterMark _waterMark;
private DataRow mRowItem;
#endregion
#region 初始化分割条位置
/// <summary>
/// <para>说明:初始化分割条位置</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitSpliterPosition()
{
string spliterPosition = IniHelper.Read(string.Format("base_SplitterPositionLeft_{0}", this.SysModel.ModuleCode));
if (!string.IsNullOrEmpty(spliterPosition)) this.splitContainer.SplitterPosition = Convert.ToInt32(spliterPosition);
string splitterLeftPosition = IniHelper.Read(string.Format("base_spliterPositionMain_{0}", this.SysModel.ModuleCode));
if (!string.IsNullOrEmpty(splitterLeftPosition)) this.splitMain.SplitterPosition = Convert.ToInt32(splitterLeftPosition);
}
#endregion
#region 初始化控件
/// <summary>
/// <para>说明:窗体加载时</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-14 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
public void Init(DynamicBaseAccraditionPopModel syModel, BaseAccraditationModel BaseAccraditModelObj)
{
WaitForm.ShowForm();
try
{
//SysModel.Privilege = SysModel.ModuleId > 0 ? BaseImpl.GetUserPurviewsByMenuId(SysModel.ModuleId + "") + "" : BaseImpl.GetUserPurviewsByMenuCode(SysModel.ModuleCode) + "";
//if (!this.SysModel.HasPrivilege())
//{
// MessageUtil.Show(ResourceKeys.UnPurview);
// this.Close();
//}
this.SysModel = syModel;
this.BaseAccraditModelObj = BaseAccraditModelObj;
this._isInitFinish = false;
this.splitMain.Visible = false;
this.InitializeSetting();
this.InitPushOpers();
this.InitializeControl();
this.InitSpliterPosition();
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
LogHelper.Instance.WriteError(ex, ResourceKeys.BaseModuleAudit);
}
finally
{
WaitForm.HideForm();
this._isInitFinish = true;
this.splitMain.Visible = true;
}
}
/// <summary>
/// <para>说明:初始化属性配置</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitializeSetting()
{
this.mRowItem = MainImpl.GetSystemdllTab(this.SysModel.ModuleCode);
this.ModuleModelObj = new BaseAuditModel(this.mRowItem);
if (string.IsNullOrEmpty(this.ModuleModelObj.FormKey))
{
MessageUtil.Show(ResourceKeys.ModuleConfigError);
return;
}
this.ModuleModelObj.PrefixKey = BaseImpl.GetColumnPrefix(this.ModuleModelObj.MenuTable);
this.ModuleModelObj.ParmaryKey = BaseImpl.GetBasePrimaryKey(this.SysModel.ModuleCode);
this.pcGrid.GridView.RowCellClick += new DevExpress.XtraGrid.Views.Grid.RowCellClickEventHandler(OnPcgridRowCellClick);
//this._flowRowData = BaseAuditImpl.GetCurrentFlowRowData(this.ModuleModelObj.MenuTable, this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue);
//string billType = this._flowRowData != null ? _flowRowData[this.ModuleModelObj.BillType] + "" : "";
//if (string.IsNullOrEmpty(billType) || billType == "0")
//{
// MessageUtil.Show(ResourceKeys.NotSetFlowType);
// return;
//}
//this.AccditModelObj = new AccraditationModel(BaseAuditImpl.GetCurrentStepFlow(this.SysModel.ModuleCode, this.SysModel.StepCode));
//this._baseRowData = BaseAuditImpl.GetCurrentControlData(ReplaceHelper.ReplaceWhereCond(ReplaceHelper.ReplaceUserInfo(this.ModuleModelObj.MenuSql)), this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue);
//this.btnFileManger.Text += "(" + AttachImpl.GetFileCount(this.ModuleModelObj.MenuDirId + "", this.SysModel.PrimaryValue) + ")";
//if (this._baseRowData == null) this._baseRowData = this._flowRowData;
}
/// <summary>
/// 设置所有状态
/// </summary>
public void InitialControlstate(){
this._flowRowData = BaseAuditImpl.GetCurrentFlowRowData(this.ModuleModelObj.MenuTable, this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue);
string billType = this._flowRowData != null ? _flowRowData[this.ModuleModelObj.BillType] + "" : "";
if (string.IsNullOrEmpty(billType) || billType == "0")
{
MessageUtil.Show(ResourceKeys.NotSetFlowType);
return;
}
this.AccditModelObj = new AccraditationModel(BaseAuditImpl.GetCurrentStepFlow(this.SysModel.ModuleCode, this.SysModel.StepCode));
this._baseRowData = BaseAuditImpl.GetCurrentControlData(ReplaceHelper.ReplaceWhereCond(ReplaceHelper.ReplaceUserInfo(this.ModuleModelObj.MenuSql)), this.ModuleModelObj.ParmaryKey, this.SysModel.PrimaryValue);
this.btnFileManger.Text += "(" + AttachImpl.GetFileCount(this.ModuleModelObj.MenuDirId + "", this.SysModel.PrimaryValue) + ")";
if (this._baseRowData == null) this._baseRowData = this._flowRowData;
this.btnAudit.Text = this.AccditModelObj.StepApplyText;
this.btnClose.Text = this.AccditModelObj.StepCloseText;
//改变控件状态
foreach (string item in this.AccditModelObj.BillModifyFields.Trim(',').Split(','))
{
this.ControlObj.SetReadOnlyControl(item, false, false);
}
SetButtonStatus();
}
#region 点击加载明细
/// <summary>
/// <para>说明:加载审核数据</para>
/// <para>创建人:王一帆</para>
/// <para>创建日期:2018-09-28 </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="RowCellClickEventArgs"/> instance containing the event data.</param>
protected void OnPcgridRowCellClick(object sender, RowCellClickEventArgs e)
{
try
{
WaitForm.ShowForm();
GridView gc = sender as GridView;
DataRow dr = gc.GetFocusedDataRow();
if (dr == null) return;
AccraditationModel model = gc.Tag as AccraditationModel;
//单据审批弹出模块
string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.SysModel.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.SysModel.Privilege, this.SysModel.ModuleCode).Split('~');
//模块Id/stepcode/点击数据键值/权限
string[] menuArgs = { "", this.SysModel.ModuleCode + "", model.StepCode, dr[this.BaseAccraditModelObj.KeyField] + "", "", "0" };
string[] args = defaultArgs.Concat(menuArgs).ToArray();
this.SysModel = new DynamicBaseAccraditionPopModel(args);
InitialControlstate();
this.ControlObj.SetAllControlValue(this._baseRowData);
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
LogHelper.Instance.WriteError(ex);
}
finally
{
WaitForm.HideForm();
}
}
#endregion
/// <summary>
/// <para>说明:初始化控件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitializeControl()
{
//设置控件文本属性
this.Text = this.SysModel.FormText;
//this.btnAudit.Text = this.AccditModelObj.StepApplyText;
//this.btnClose.Text = this.AccditModelObj.StepCloseText;
//this.labeltxt_managerAudit.EditText = this.SysModel.UserName;
////设置流转记录的列
//this.gridFlowRecord.GridView.RowStyle += new RowStyleEventHandler(gridFlowRecord_RowStyle);
//this.gridFlowRecord.SetReadOnlyColumns(BaseAuditImpl.GetFlowRecordColumn(), GridCustomColumnStruct.AuditPopupAttachGridView + this.ModuleModelObj.FormKey);
//this.gridFlowRecord.gridControl.Paint += new PaintEventHandler(gridFlow_Panint);
//this.gridFlowRecord.SetGridViewDataSource(BaseAuditImpl.GetFlowRecordData(this.BaseAuditModelObj.SystemTabFlowStep, this.SysModel.PrimaryValue));
DataRow dr = BaseAuditImpl.GetCurrentStepFlow(this.SysModel.ModuleCode, this.SysModel.StepCode);
//if (dr != null)
//{
// //初始化流转标题
// this.label_auditPerson.Text = this.labeltxt_managerAudit.LabelText = dr["stepName"] + "";
//}
//this.combox_Suggestion.ValueField = this.combox_Suggestion.TextField = "Mix_apellation";
//this.combox_Suggestion.SetDataSource(BaseImpl.GetDataTableResult(this.AccditModelObj.SuggestionSql));
//this.combox_Suggestion.TextEdit.SelectedIndex = 0;
//单据水印
this._waterMark = new WaterMark(this.ModuleModelObj.PrefixKey, this._baseRowData);
this.SetFormSize();
//this.SetButtonStatus();
this.CreateAccraditationControl();
//this.LoadRemindRecord();
//this.LoadSignRecord();
this.BindTab();
this.InitTabData();
this.InitCommonTools();
}
/// <summary>
/// <para>说明:初始化本次推送人员</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-05-22 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitPushOpers()
{
DataRow rowItem = BaseAuditImpl.GetPushedOpers(this.SysModel.PrimaryValue, this.SysModel.StepCode);
if (rowItem != null)
{
//记录本次操作信息
this._beforeMenuName = rowItem["menuname"] + "";
this._beforeUsers = rowItem["operators"] + "";
this._beforeId = Convert.ToInt32(rowItem["id"]);
}
}
#endregion
#region 加载选项卡数据
/// <summary>
/// <para>说明:加载选项卡数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitTabData()
{
foreach (XtraTabPage tabPage in this.tab_basicInfo.TabControlObj.TabPages)
{
GridDetailModel model = this.tab_basicInfo.GetGridDetailModel(tabPage);
this.tab_basicInfo.SetGridDataSource(tabPage, MainImpl.GetDataTableResult(this.ControlObj.ReplaceControlValue(model.DetailSql)));
}
}
#endregion
#region 初始化常用工具
/// <summary>
/// <para>说明:初始化常用工具</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void InitCommonTools()
{
DataTable tableCommon = BaseModuleImpl.GetBaseGridRightMenus(this.SysModel.ModuleCode, ModuleType.BaseAudit);
foreach (DataRow item in tableCommon.Rows)
{
BarButtonItem itemCommon = new BarButtonItem();
itemCommon.Caption = item["menuname"] + "";
itemCommon.Tag = item;
itemCommon.ItemClick += new ItemClickEventHandler(itemCommon_ItemClick);
p_menu.AddItem(itemCommon);
}
}
/// <summary>
/// <para>说明:验证可操作条件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-03-07 </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>
protected void dpbTools_Click(object sender, EventArgs e)
{
foreach (BarItemLink itemLink in this.p_menu.ItemLinks)
{
DataRow rowItem = itemLink.Item.Tag as DataRow;
if (rowItem != null)
{
string menuCond = rowItem["MenuCond"] + "";
string menuCaption = itemLink.Caption;
if (!string.IsNullOrEmpty(menuCond))
{
try
{
bool result = true;
menuCond = ReplaceHelper.ReplaceParamToValue(menuCond, "{" + this.ModuleModelObj.ParmaryKey + "}");
if (menuCond.StartsWith("@") || menuCond.StartsWith("!"))
{
result = "1".Equals(BaseImpl.GetDefaultValue(menuCond));
}
else
{
menuCond = this.ControlObj.ReplaceControlValue(menuCond);
menuCond = ReplaceHelper.ReplaceParamToValue(menuCond, "0"); // 未替换的参数所有替换为0
result = ReplaceHelper.EvalCond(menuCond);
}
itemLink.Item.Enabled = result;
}
catch (Exception ex)
{
MessageUtil.Show("[" + menuCaption + "] " + ResourceKeys.SetRightMenuCondFault);
LogHelper.Instance.WriteError(ex);
LogUtil.WriteError("验证可操作条件出错!",ex);
}
}
}
}
}
/// <summary>
/// <para>说明:常用工具点击</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21</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="ItemClickEventArgs"/> instance containing the event data.</param>
protected void itemCommon_ItemClick(object sender, ItemClickEventArgs e)
{
DataRow rowItem = e.Item.Tag as DataRow;
CommonMenu menu = new CommonMenu(this.SysModel, this.ControlObj);
menu.Apply(rowItem);
}
#endregion
#region 加载提醒记录
/// <summary>
/// <para>说明:加载提醒记录</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-20</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
//private void LoadRemindRecord()
//{
// //加载提醒
// if (!string.IsNullOrEmpty(this._flowTypeStepModel.RemindSelect))
// {
// this.gridRemind.SetReadOnlyColumns(BaseAuditImpl.GetRemindColumn());
// DataTable dt = BaseAuditImpl.GetRemindinRecord(this.BaseAuditModelObj.FlowStepTable, this.BaseAuditModelObj.ComfrimTable, this.SysModel.PrimaryValue, this.SysModel.ModuleCode);
// if (dt.Rows.Count > 0)
// {
// this.gridRemind.SetGridViewDataSource(dt);
// this.tabpage_remind.Text = this.tabpage_remind.Text + "(" + dt.Rows.Count + ")";
// }
// else
// {
// this.tabMain.TabPages.Remove(this.tabpage_remind);
// }
// }
//}
#endregion
#region 加载会签记录
/// <summary>
/// <para>说明:加载会签记录</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-20</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
//private void LoadSignRecord()
//{
// DataTable dt = BaseAuditImpl.GetSignRecord(this.BaseAuditModelObj.ComfrimTable, this.SysModel.PrimaryValue, this.SysModel.ModuleCode);
// if (dt.Rows.Count > 0)
// {
// this.gridSign.SetReadOnlyColumns(BaseAuditImpl.GetSignRecordCoulumn());
// this.gridSign.SetGridViewDataSource(dt);
// this.tabpage_sign.Text = this.tabpage_sign.Text + "(" + dt.Rows.Count + ")";
// }
// else
// {
// this.tabMain.TabPages.Remove(this.tabpage_sign);
// }
//}
#endregion
#region 绑定选项卡
/// <summary>
/// <para>说明:绑定选项卡</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-20</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void BindTab()
{
this._baseTabList = BaseAuditImpl.GetAttachTabs(this.SysModel.ModuleCode, this.SysModel.StepCode);
this.tab_basicInfo.Model = this.SysModel;
this.tab_basicInfo.InitTabPages(GetTabDetails());
this.tab_basicInfo.OnRightCallback += new EventHandler(tabBasicInfo_OnRightCallback);
//设置高度
SetTabHeight();
}
/// <summary>
/// <para>说明:单据右键菜单执行后刷新数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-01-15 </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>
protected void tabBasicInfo_OnRightCallback(object sender, EventArgs e)
{
GridDetailModel model = this.tab_basicInfo.GetFocusTabPageGridDetailModel();
this.tab_basicInfo.SetGridDataSource(MainImpl.GetDataTableResult(this.ControlObj.ReplaceControlValue(model.DetailSql)));
}
/// <summary>
/// <para>说明:获取选项卡数据</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2018-01-15 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private List<GridDetailModel> GetTabDetails()
{
List<GridDetailModel> details = new List<GridDetailModel>();
DataTable table = BaseAuditImpl.GetAttachTabs(this.SysModel.ModuleCode, this.SysModel.StepCode);
foreach (DataRow item in table.Rows)
{
DataTable dtGridColumns = BaseAuditImpl.GetBottomBasicInformation(item["formKey"] + "");
GridDetailModel gridDeatilModel = new GridDetailModel(item, dtGridColumns, GridCustomColumnStruct.AuditPopupDetailGridView + item["formKey"] + "");
//控制只读
//gridDeatilModel.DetailSql = "1";
details.Add(gridDeatilModel);
}
return details;
}
#endregion
#region 设置控件高度
/// <summary>
/// <para>说明:设置控件容器高度</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-20</para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void SetTabHeight()
{
if (this._baseTabList.Rows.Count > 0)
{
this.Height = this.Height + 200;
this.pl_main.Height = this.pl_main.Height < 350 ? 350 : this.pl_main.Height;
this.Height = this.pl_main.Height + 300;
this.pl_main.Height = this.Height - 340;
}
else
{
this.Height = this.Height - 50;
this.Height = this._mainPanelHeight > 600 ? this._mainPanelHeight : this.Height;
this.splitMain.PanelVisibility = SplitPanelVisibility.Panel1;
}
}
#endregion
#region 设置窗口大小
/// <summary>
/// <para>说明:设置弹出窗体大小</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void SetFormSize()
{
//this.WindowState = FormWindowState.Normal;
DataRow drSize = BaseModuleImpl.GetControlParentSize(this.ModuleModelObj.FormKey);
if (drSize != null)
{
int height = Convert.ToInt32(drSize["height"]);
int width = Convert.ToInt32(drSize["width"]);
this.Height = height + 150;
this.splitContainer.SplitterPosition = height > 0 ? height : 0;
this.Width = (width > 0 ? width : this.Width) + 250;
}
this._mainPanelHeight = this.splitContainer.Panel1.Height;
this.Width = this.Width > Screen.PrimaryScreen.WorkingArea.Width ? Screen.PrimaryScreen.WorkingArea.Width : this.Width;
this.Height = this.Height > Screen.PrimaryScreen.WorkingArea.Height ? Screen.PrimaryScreen.WorkingArea.Height : this.Height;
this.Left = (Screen.PrimaryScreen.WorkingArea.Width - this.Width)/2;
this.Top = (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2;
}
#endregion
#region 设置按钮状态
/// <summary>
/// <para>说明:初始化设置按钮状态</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void SetButtonStatus()
{
//获取当前流转步骤
DataRow currentFlowStep = BaseAuditImpl.GetCurrentFlowStep(this.SysModel.ModuleCode, this._flowRowData[this.ModuleModelObj.BillType] + "", this.SysModel.StepCode);
if (currentFlowStep == null)
{
MessageUtil.Show(ResourceKeys.FlowStepConfigError);
return;
}
this._flowTypeStepModel = new FlowTypeStepModel(currentFlowStep);
string operUser = this._flowTypeStepModel.OperUser;
if (BaseImpl.GetDataRowResult(this.AccditModelObj.FlowOperSql) != null)
{
DataRow flowOper = BaseAuditImpl.GetFlowOperators(this.SysModel.ModuleCode, this.SysModel.PrimaryValue, this.SysModel.StepCode);
operUser = flowOper == null ? operUser : flowOper["operators"] + "";
}
//如果已经终审按钮为窗口默认设置,否则
if (this.SysModel.StepOver != "1")
{
this.btnClose.Visible = this.btnClose.Enabled = this._flowTypeStepModel.StepClosed == 1;
this.btnBack.Enabled = this.btnSave.Enabled = this.btnClose.Enabled = operUser.Contains(this.SysModel.UserName);
if (SysModel.HasReadPrivilege())
{
this.btnSave.Enabled = false;
}
this.btnAudit.Enabled = true;
}
}
#endregion
#region 动态创建控件
/// <summary>
/// <para>说明:动态创建控件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-15 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void CreateAccraditationControl()
{
this._dtFileds = BaseModuleImpl.GetControlLocation(this.ModuleModelObj.FormKey, this.SysModel.ModuleCode);
this._dtAddGroup = BaseModuleImpl.GetAddGroupData(this.ModuleModelObj.FormKey);
this.ControlObj = new MyControl();
this.ControlObj.InitControl(this._dtFileds, pl_main, this._dtAddGroup);
this.ControlObj.SetReadOnlyAllControl(true);
}
#endregion
#region 绘制水印
/// <summary>
/// <para>说明:绘制水印</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void gridFlow_Panint(object sender, PaintEventArgs e)
{
if (this._waterMark != null)
{
System.Windows.Forms.Control control = sender as System.Windows.Forms.Control;
GraphicsText graphicsText = new GraphicsText();
graphicsText.Graphics = e.Graphics;
// 绘制围绕点旋转的文本
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
int x = (control.Width - 90) / 2;
int y = (control.Height - 32) / 2;
// 绘制单据状态文本
if (!string.IsNullOrEmpty(this._waterMark.Text))
{
graphicsText.DrawString(this._waterMark.Text, new Font("宋体", 20, FontStyle.Bold), new SolidBrush(Color.Red), new PointF(x, y), format, -20f);
e.Graphics.TranslateTransform(x, y);
e.Graphics.RotateTransform(-20f);
e.Graphics.DrawRectangle(new Pen(Color.Red, 2f), new Rectangle(-45, -19, 90, 32));
}
}
}
#endregion
#region 附件
/// <summary>
/// <para>说明:附件操作</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void btnAttach_Click(object sender, EventArgs e)
{
try
{
if (string.IsNullOrEmpty(this.SysModel.PrimaryValue))
{
MessageUtil.Show(ResourceKeys.NotFoundMaterielNo);
return;
}
// 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号)
string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs, this.SysModel.FormText, this.SysModel.UserId, this.SysModel.UserName, this.SysModel.Privilege, this.SysModel.ModuleCode).Split('~');
string[] menuArgs = { string.Format(ModuleArgs.PubPhotoViewArgs, this.SysModel.PrimaryValue), "0", this.ModuleModelObj.MenuDirId + "", "" };
string[] args = defaultArgs.Concat(menuArgs).ToArray();
IForm form = FormHelper.LoadDllForm(ResourceDynamic.PhotoView, args);
DialogResult result = form.SubForm.ShowDialog();
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
}
}
#endregion
#region 更改保存
/// <summary>
/// <para>说明:更新保存操作</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </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 btnSave_Click(object sender, EventArgs e)
{
}
#endregion
#region 审核
/// <summary>
/// <para>说明:审核</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </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 btnAudit_Click(object sender, EventArgs e)
{
try {
FrmExamine frmExamine = new FrmExamine();
frmExamine.ExamineOkCallBack += new EventHandler(ExamineOkCallBack);
frmExamine.CheckSuggestion.ValueField = frmExamine.CheckSuggestion.TextField = "Mix_apellation";
frmExamine.CheckSuggestion.SetDataSource(BaseImpl.GetDataTableResult(this.AccditModelObj.SuggestionSql));
frmExamine.CheckSuggestion.TextEdit.SelectedIndex = 0;
frmExamine.ShowDialog();
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
}
}
/// <summary>
/// <para>说明:审核</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </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 ExamineOkCallBack(object sender, EventArgs e)
{
try
{
FrmExamine frmExamine = sender as FrmExamine;
if (this.SysModel.ConfirmId == "1")
{
if (BaseAuditImpl.SetBaseFlowComfirm(this.SysModel.UserId, this.SysModel.ModuleCode, this.SysModel.PrimaryValue, frmExamine.txtRemark.EditText) > 0)
{
MessageUtil.Show(ResourceKeys.ConfirmSuccess);
if (RefreshTabCallBack != null) RefreshTabCallBack(sender, e);
frmExamine.Close();
}
else
{
MessageUtil.Show(ResourceKeys.ConfirmFail);
}
}
else
{
bool isAudit = true;
string confirmOpers = string.Empty, remindOpers = string.Empty;
if (this._flowTypeStepModel.RemindSelect == "1")
{
FrmRemindSelectForm formRemind = new FrmRemindSelectForm();
formRemind.FieldValue = this.SysModel.PrimaryValue;
formRemind.MenuCode = this.SysModel.ModuleCode;
isAudit = formRemind.ShowDialog() == DialogResult.Yes;
confirmOpers = formRemind.ConfirmOpers;
remindOpers = formRemind.RemindOpers;
}
if (isAudit)
{
//确认是否审批
if (MessageUtil.Show(string.Format(ResourceKeys.ConfirmIsAudit), MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (this.ControlObj.VerifyNull())
{
string parmaryValue = this.SysModel.PrimaryValue;
string nextSelectStepCode = string.Empty;
string nextSelectStepOper = string.Empty;
if (this.ControlObj.SaveBaseModuleData(this.SysModel.ModuleCode, this.ModuleModelObj.MenuTable, this.ModuleModelObj.ParmaryKey, ref parmaryValue, false, "", false, this.ModuleModelObj.NewVer))
{
string result = BaseAuditImpl.Audit(out nextSelectStepCode, out nextSelectStepOper, this.SysModel, this.SysModel.StepCode, this.SysModel.PrimaryValue, "", this.BaseAuditModelObj.ProcedureName, "F", this._flowTypeStepModel.RemindSelect, frmExamine.txtRemark.EditText, remindOpers, confirmOpers);
if ("1".Equals(result))
{
MessageUtil.Show(ResourceKeys.AuditSuccess);
//推送消息
PushHelper push = new PushHelper(this.SysModel.PrimaryValue, this.SysModel.StepCode, this.SysModel.ModuleCode, this._beforeUsers, this._beforeMenuName, this._beforeId);
push.Push_Base_Oper_Message();
frmExamine.DialogResult = DialogResult.OK;
if (RefreshTabCallBack != null) RefreshTabCallBack(sender, e);
}
else
{
MessageUtil.Show(ResourceKeys.AuditFail + "\r\n" + result);
}
}
}
}
}
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
}
}
#endregion
#region 返退操作
/// <summary>
/// <para>说明:返退</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-22 </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 btnReturnd_Click(object sender, EventArgs e)
{
try {
int returnd = ExecuteBackSelect(this._baseRowData);
if (returnd == -9) return;
string nextSelectStepCode = string.Empty;
string nextSelectStepOper = string.Empty;
//确认审核不通过并反退该单据?
if (MessageUtil.Show(string.Format(ResourceKeys.ConfimAuditFailAndReturnBill), MessageBoxButtons.YesNo) == DialogResult.Yes)
{
string result = BaseAuditImpl.Audit(out nextSelectStepCode, out nextSelectStepOper, this.SysModel, this.SysModel.StepCode, this.SysModel.PrimaryValue, "", this.BaseAuditModelObj.ProcedureName, "R", "", _auditAdvic, "", "", true, returnd);
if ("1".Equals(result))
{
MessageUtil.Show(ResourceKeys.ForcedSuccess);
//暂未推送消息
PushHelper push = new PushHelper(this.SysModel.PrimaryValue, this.SysModel.StepCode, this.SysModel.ModuleCode, this._beforeUsers, this._beforeMenuName, this._beforeId);
push.Push_Base_Oper_Message();
}
else
{
MessageUtil.Show(ResourceKeys.ForcedFail + "\r\n" + result);
}
}
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
}
}
/// <summary>
/// <para>说明:执行返退选择</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-22 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
/// <param name="row">The row.</param>
/// <returns>System.Int32.</returns>
private int ExecuteBackSelect(DataRow row)
{
if (row == null)
{
MessageUtil.Show(ResourceKeys.NoFindAntiauditBill);
return -9;
}
if (this.ModuleModelObj.BackSelected == "0") return -1;
if (this.SysModel.StepCode == "100") return 0;
FrmBackSelect frmBackSel = new FrmBackSelect();
frmBackSel.Sysmodel = this.SysModel;
frmBackSel.ModuleModelObj = this.ModuleModelObj;
frmBackSel.InitControl(false);
if (frmBackSel.ShowDialog() != DialogResult.OK) return -9;
this._auditAdvic = frmBackSel.ComfirmMsg;
return frmBackSel.SelectStepCode;
}
#endregion
#region 分割条位置改变
/// <summary>
/// <para>说明:分割条位置改变事件</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-12-21 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
private void splitContainer_SplitterPositionChanged(object sender, EventArgs e)
{
if (_isInitFinish)
{
IniHelper.Write(string.Format("base_SplitterPositionLeft_{0}", this.SysModel.ModuleCode), this.splitContainer.SplitterPosition + "");
}
}
private void splitMain_SplitterPositionChanged(object sender, EventArgs e)
{
if (this._isInitFinish)
{
IniHelper.Write(string.Format("base_spliterPositionMain_{0}", this.SysModel.ModuleCode), this.splitMain.SplitterPosition + "");
}
}
#endregion
private void simpleButton1_Click(object sender, EventArgs e)
{
try {
WebBrowserUtil.StartWebBrowser(this.SysModel.ModuleCode, mRowItem["ToolsName"] + "");
}
catch (Exception ex)
{
string Message = ErrorMessage.PromptErrorMessage(ex);
MessageUtil.Show(Message,ex.Message);
}
}
}
}