/*********************** * 说明:生产过程模版 * 创建人:龚宇超 * 创建日期:2018-02-27 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ***********************/ 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.Model; using Lskj.Control.Model; using Lskj.Control; using Lskj.Data; using Lskj.Util; using Lskj.Business.Impl; using DevExpress.XtraTab; using DevExpress.Utils; using DevExpress.XtraEditors; using DevExpress.XtraPdfViewer; using DevExpress.XtraEditors.Controls; using System.IO; using System.Threading; using Lskj.Business; using System.Runtime.InteropServices; namespace Lskj.Production { /// /// Class FrmMain. /// public partial class FrmMain : BaseForm { #region 公共变量 /// /// 入口模型 /// public DynamicProductionModel SysModel; /// /// pdf模型 /// public GridDetailModel PdfViewObj; /// ///查询条件控件 /// public MyControl SearchObj; /// /// 主控件集 /// public MyControl ControlObj; /// /// 基础模型 /// public ModuleModel MoudleObj; /// /// 表格明细集合 /// public List GridDetailModelObjs; /// /// 是否是第一次加载左侧浏览器 /// public bool InitialLoading = true; #endregion #region 私有变量 /// /// 数据索引 /// private int _dataIndex; /// /// 初始化完成标记 /// private bool _isInitFinish; /// /// 附件部分显隐 /// private bool _isFilePanelVisble; /// /// 附件源sql /// private string _fileSql; /// /// 主键值 /// private string _keyValue; /// /// 主键名 /// private string _primaryKey; /// /// 附件地址 /// private string _filePath; /// /// 选项卡刷新页签 /// private string[] _pageIndex; /// /// 当前数据内容 /// private DataRow _rowItem; /// /// 控件源数据 /// private DataTable _dtFields; /// /// 主表数据 /// private DataTable _dtMainTable; /// /// pdf附件资源 /// private DataTable _dtFiles; /// /// 附件下拉菜单 /// private LabelComboxEdit _fileComboBox; /// /// 查看附件 /// private FrmWebBrowser _moduleWebView; /// /// 选项卡排序Sql /// private Dictionary _dicOrder = new Dictionary(); #endregion public FrmMain() { InitializeComponent(); } #region 窗体加载时 /// /// 说明:窗体加载时 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The instance containing the event data. protected override void OnLoad(EventArgs e) { this.splitContainerMain.Visible = false; WaitForm.ShowForm(); try { SysModel.Privilege = this.SysModel.Privilege.Equals("3") ? "1" : SysModel.ModuleId > 0 ? BaseImpl.GetUserPurviewsByMenuId(SysModel.ModuleId + "") + "" : BaseImpl.GetUserPurviewsByMenuCode(SysModel.ModuleCode) + ""; this._isInitFinish = false; if (!this.SysModel.HasPrivilege()) { MessageUtil.Show(ResourceKeys.UnPurview); this.Close(); } else { this.InitializeSetting(); this.InitializeControl(); this.InitlizeSpiltLocation(); } } catch (Exception ex) { LogHelper.Instance.WriteError(ex, ResourceKeys.BaseModuleAudit); //MessageUtil.Show(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } finally { Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this); this._isInitFinish = true; WaitForm.HideForm(); this.splitContainerMain.Visible = true; } } #endregion #region 初始化属性 /// /// 说明:初始化属性设置 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeSetting() { this._primaryKey = BaseImpl.GetBasePrimaryKey(this.SysModel.ModuleCode); this.MoudleObj = new ModuleModel(MainImpl.GetSystemdllTab(this.SysModel.ModuleCode)); this.MoudleObj.ParmaryKey = BaseImpl.GetBasePrimaryKey(this.SysModel.ModuleCode); this.GridDetailModelObjs = GetDetailGrids(); this.GetDetailOrderCond(); this._dtFields = BaseModuleImpl.GetControlLocation(this.MoudleObj.FormKey, this.SysModel.ModuleCode); if (!string.IsNullOrEmpty(this.SysModel.ParmaryValue)) { this._keyValue = this.SysModel.ParmaryValue; } this.GetCurrentData(); //注册下载成功回调 //AttachHelper.OnDownLoadSuccess += new EventHandler(AttachHelper_OnDownLoadSuccess); } #endregion #region 初始化控件 /// /// 说明:初始化控件 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitializeControl() { this.ControlObj = new MyControl(); this.ControlObj.InitControl(_dtFields, this.pl_Controls); this.InitLeftTopTab(); this.tabLeftBottomDetail.ParentControlEx = this.ControlObj; this.tabRightDetail.Model = this.tabLeftBottomDetail.Model = this.SysModel; this.tabLeftBottomDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid >= 0 && o.Orderid <= 9).ToList()); this.tabRightDetail.ParentControlEx = this.ControlObj; this.tabRightDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid > 9).ToList()); this.SetTabPageStyle(); if (SysModel.HasReadPrivilege()) { btnSubmit.Enabled = false; } //根据这字段对开始提交进行显隐 if (!this.MoudleObj.AddEnable) { btnStart.Visible = btnSubmit.Visible = false; pl_Manager.Width = this.textBox.Width + 10; } this.InitSearchFiled(); this.textBox.Select(); } #endregion #region 获取明细SQL排序条件 /// /// 说明:获取明细SQL排序条件 /// 创建人:龚宇超 /// 创建日期:2018-07-26 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void GetDetailOrderCond() { string orderStr = string.Empty; foreach (GridDetailModel mode in GridDetailModelObjs) { if (mode.Orderid == -100) continue; DataRow dr = ProduceImpl.GetTabPageOrderCond(mode.UnionModule); if (dr != null) orderStr = dr["MobileOrderStr"] + ""; _dicOrder.Add(mode.UnionModule, orderStr); } } #endregion #region 设置选项卡数据源 /// /// 说明:设置选项卡数据源 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void setTabPageGridData(TabControlEx tabDetail, DataRow rowItem) { foreach (XtraTabPage tabPage in tabDetail.TabControlObj.TabPages) { //附件预览跳过 if (tabPage.Text == "附件预览") continue; GridDetailModel model = tabDetail.GetGridDetailModel(tabPage); GridControlEx gridControl = tabPage.Tag as GridControlEx; gridControl.LastSearchSql = this.GetSearchSql(model, rowItem); tabDetail.SetGridDataSource(tabPage, MainImpl.GetDataTableResult(gridControl.LastSearchSql)); } } #endregion #region 获取查询条件 /// /// 说明:获取查询条件 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The model. /// The row item. /// System.String. protected string GetSearchSql(GridDetailModel model, DataRow rowItem) { string fieldName = !string.IsNullOrEmpty(model.UnionParentField) ? model.UnionParentField : this.MoudleObj.ParmaryKey; string sqlValue = model.IsReadOnly ? model.DetailSql : model.SystemModel.MenuSql; string orderCond = _dicOrder.FirstOrDefault(o => o.Key == model.UnionModule).Value; if (ReplaceHelper.IsSelect(sqlValue) && !string.IsNullOrEmpty(model.UnionValue)) { sqlValue = ReplaceHelper.ReplaceWhereCond(sqlValue) + string.Format(" and {0}='{1}'", model.UnionValue, rowItem[fieldName] + ""); } else { sqlValue = ReplaceHelper.ReplaceRowParam(rowItem, sqlValue); } return sqlValue + orderCond; } #endregion #region 设置动态TabPage的样式 /// /// 说明:设置动态的TabPage的样式隐藏页签标题 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SetTabPageStyle() { if (tabLeftTopDetail.TabControlObj.TabPages.Count == 1 && !_isFilePanelVisble) { this.splitContainerLeft.PanelVisibility = SplitPanelVisibility.Panel2; } else { this.splitContainerLeft.PanelVisibility = SplitPanelVisibility.Both; } if (tabLeftBottomDetail.TabControlObj.TabPages.Count == 0) { this.splitContainerLeft.PanelVisibility = SplitPanelVisibility.Panel1; } if (tabRightDetail.TabControlObj.TabPages.Count == 0) { this.splitContainerRight.PanelVisibility = SplitPanelVisibility.Panel1; } tabLeftTopDetail.TabControlObj.ShowTabHeader = tabLeftTopDetail.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabLeftBottomDetail.TabControlObj.ShowTabHeader = tabLeftBottomDetail.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabRightDetail.TabControlObj.ShowTabHeader = tabRightDetail.TabControlObj.TabPages.Count == 1 ? DefaultBoolean.False : DefaultBoolean.Default; tabRightDetail.TabControlObj.HeaderLocation = tabLeftTopDetail.TabControlObj.HeaderLocation = tabLeftBottomDetail.TabControlObj.HeaderLocation = TabHeaderLocation.Bottom; } #endregion #region 初始化左上部分tab控件 /// /// 说明:初始化左上tab控件 /// 创建人:龚宇超 /// 创建日期:2018-02-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitLeftTopTab() { this.tabLeftTopDetail.Model = this.SysModel; this.tabLeftTopDetail.InitTabPages(this.GridDetailModelObjs.Where(o => o.Orderid < 0 && o.Orderid != -100).ToList()); PdfViewObj = this.GridDetailModelObjs.FirstOrDefault(o => o.Orderid == -100); //生成附件预览Tabpage if (PdfViewObj != null) { PdfViewObj.SystemModel = new ModuleModel(MainImpl.GetSystemdllTab(PdfViewObj.UnionModule)); XtraTabPage tabpage = new XtraTabPage(); tabpage.Text = "附件预览"; tabpage.Dock = DockStyle.Fill; //构建左上部分结构 PanelControl panelFileBar = new PanelControl(); this._fileComboBox = new LabelComboxEdit(); this._fileComboBox.LabelText = "工艺文件阅读"; this._fileComboBox.Location = new Point(8, 6); this._fileComboBox.Parent = panelFileBar; this._fileComboBox.Width = 500; this._fileComboBox.TextEdit.SelectedIndexChanged += new EventHandler(fileComboBox_SelectedIndexChanged); DevExpress.XtraEditors.SimpleButton simpleButton = new SimpleButton(); simpleButton.Text = "放 大"; simpleButton.Width = 50; simpleButton.Location = new Point(this._fileComboBox.Width + 8, 6); simpleButton.Parent = panelFileBar; simpleButton.Click += SimpleButton_Click; panelFileBar.Height = 33; panelFileBar.Dock = DockStyle.Top; panelFileBar.SendToBack(); this._fileSql = PdfViewObj.SystemModel.MenuSql; _moduleWebView = new FrmWebBrowser(); _moduleWebView.Dock = DockStyle.Fill; _moduleWebView.Parent = panelFileBar.Parent = tabpage; this.tabLeftTopDetail.TabControlObj.TabPages.Insert(0, tabpage); } } private void SimpleButton_Click(object sender, EventArgs e) { string[] AttachFileAddressS = SystemInfo.Instance.AttachFileAddress.Split('^'); string AttachFileAddress = AttachFileAddressS.Length > 1 ? AttachFileAddressS[1] : SystemInfo.Instance.AttachFileAddress; string url = AttachFileAddress + Uri.EscapeDataString(BaseModuleImpl.GetFileServerPath(this._fileComboBox.TextEdit.Text)); // 固定传入参数(窗口标题、操作员ID、操作员名称、权限、模版编号) string[] defaultArgs = string.Format(ModuleArgs.DefaultArgs,"", ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, "", "").Split('~'); string[] menuArgs = new string[] { "", "", url }; string[] args = defaultArgs.Concat(menuArgs).ToArray(); IForm form = FormHelper.LoadDllForm(ResourceDynamic.PubBrower, args); form.SubForm.WindowState = FormWindowState.Maximized; DialogResult result = form.SubForm.ShowDialog(); } #endregion #region 初始化搜索 /// /// 说明:初始化搜索 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitSearchFiled() { this.SearchObj = new MyControl(this.MoudleObj.MenuSql, null); DataTable queryTable = BaseModuleImpl.GetCustomQueryFields(this.MoudleObj.CondKey); this.SearchObj.ModuleId = SysModel.ModuleId; this.SearchObj.RememberRow = true; if (queryTable != null && queryTable.Rows.Count > 0) { // 加载自定义查询条件 this.pl_top_search.Controls.Clear(); this.SearchObj.OtherParams = SysModel.OtherParams(); this.SearchObj.InitSearchControl(queryTable, this.pl_top_search, null); this.SearchObj.OnSearchBeforeCallBack += new SearchEventHandler(SearchObj_OnSearchBefore); this.SearchObj.OnSearchAfterCallBack += new EventHandler(OnSearchAfter); if (this.SearchObj.ControlModels != null && this.SearchObj.ControlModels.Count > 0) { BaseUserControl mControl = this.SearchObj.FindControl(this.SearchObj.ControlModels[0].FieldName); if (mControl != null) { mControl.EditText = this.SysModel.ParmaryValue; SearchObj_OnSearchBefore(null, null); } foreach (ControlModel item in this.SearchObj.ControlModels) { BaseUserControl uControl = this.SearchObj.FindControl(item.FieldName); if (uControl != null) { //this.SysModel.SearchControlEnable uControl.Enabled = true; } } //this.SysModel.SearchControlEnable this.SearchObj.ButtonObj.Enabled = true; } } else { // 加载固定查询条件 DataTable dtCond = BaseModuleImpl.GetFixedQueryFields(this.SysModel.ModuleCode); this.cbField.DisplayMember = "username1"; this.cbField.ValueMember = "fieldname"; this.cbField.DataSource = dtCond; this.SearchObj.InitDefaultSearchControl(dtCond, this.pl_top_search); } } #endregion #region 获取明细 /// /// 说明:获取报表明细 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private List GetDetailGrids() { List details = new List(); DataTable moduleDetailBottomTable = BaseModuleImpl.GetBaseDetailPages(this.SysModel.ModuleCode); if (moduleDetailBottomTable.Rows.Count == 0) { moduleDetailBottomTable = BaseModuleImpl.GetBaseAddTabDetail(this.SysModel.ModuleCode); } foreach (DataRow item in moduleDetailBottomTable.Rows) { DataTable dtGridColumns = ReportImpl.GetReportDetailColumns(this.SysModel.ModuleCode, item["id"] + ""); details.Add(new GridDetailModel(item, dtGridColumns, GridCustomColumnStruct.BaseDetailGridView)); } return details; } #endregion #region 工单验证 /// /// 说明:按键验证工单卡号 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void CheckCard(int operType) { try { if (!string.IsNullOrEmpty(this._keyValue)) { string msgs = string.Empty, refreshPages = string.Empty; int returnValue = operType == 0 ? ProduceImpl.ScanningCheckCard(this.SysModel.ModuleCode, this.textBox.Text, this._keyValue, this.SysModel.UserId, this.SysModel.UserName, 0, out msgs, out refreshPages) : ProduceImpl.OperationCheckCard(this.SysModel.ModuleCode, this._keyValue, operType, this.SysModel.UserId, this.SysModel.UserName, 0, out msgs, out refreshPages); string[] resultMsgs = msgs.ToLower().Split('&'); if (returnValue != 1) { this.messageInfo.Text = resultMsgs[0]; } else { _pageIndex = refreshPages.Split(','); if (resultMsgs.Length >= 2) { GetMsgParamters(resultMsgs); } else { if (_pageIndex != null) Refresh(_pageIndex); } } } } catch (Exception ex) { LogUtil.WriteError("按键验证工单卡号出错!", ex); MessageUtil.Show("按键验证工单卡号出错!" + ex); } } #endregion #region 初始化附件菜单 /// /// 说明:初始化附件菜单 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitComboxItem(DataRow rowItem) { this._isFilePanelVisble = false; if (this._fileComboBox == null || string.IsNullOrEmpty(_fileSql)) return; this._fileComboBox.TextEdit.Properties.Items.Clear(); string where = PdfViewObj != null ? " AND " + PdfViewObj.UnionValue.Replace("{", "").Replace("}", "") + "='" + rowItem[PdfViewObj.UnionParentField.Replace("{", "").Replace("}", "")] + "'" : ""; string sqlValue = _fileSql + where; DataTable dtPdfResult = BaseImpl.GetDataTableResult(sqlValue); if (dtPdfResult.Rows.Count <= 0) return; DataRow[] dtPdfRows = dtPdfResult.Select("1=1"); if (dtPdfRows.Length == 0) return; //string fileId = dtPdfRows[0]["fileId"] + ""; //string directoryId = dtPdfRows[0]["ParentId"] + ""; this._fileComboBox.ValueMember = "fileId"; this._fileComboBox.ValueField = "fileId"; this._fileComboBox.TextField = "sName"; this._fileComboBox.SetDataSource(dtPdfRows.CopyToDataTable()); this._fileComboBox.TextEdit.SelectedIndex = 0; this._isFilePanelVisble = true; this._filePath = PubUtil.FileDownLoadTempPath + BaseModuleImpl.GetFileServerPath(Convert.ToInt32(dtPdfRows[0]["fileId"])); //if (!File.Exists(this._filePath)) //{ // //打开默认预览 // string serverPath = Path.Combine(SystemInfo.Instance.ServerAttachPath, BaseModuleImpl.GetFileServerPath(Convert.ToInt32(dtPdfRows[0]["fileId"]))); // string tipMsg = string.Empty; // // 调用附件下载(lstest.exe包含了下载权限验证) // //AttachHelper.DownLoadFile(this.Handle, fileId.Trim(','), directoryId + ""); // if (AttachImpl.CheckAttachOperation(2, "", Convert.ToInt32(dtPdfRows[0]["fileId"]), "", 0, out tipMsg) == 1) // { // AttachHelper.DownLoadFile(this.Handle, serverPath); // } //} } #endregion #region 延迟扫码点击功能 /// /// 说明:搜索后延迟点击图片(此功能仅为了解决内置浏览器控件加载自动放大的问题,待进一步优化) /// 创建人:王一帆 /// 创建日期:2021-06-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnSearchAfter(object sender, EventArgs e) { try { if (this._isFilePanelVisble) TimeOut.Enabled = true; if (this.MoudleObj.clearSearch) { foreach (System.Windows.Forms.Control item in this.pl_top_search.Controls) { if (item is BaseUserControl) { (item as BaseUserControl).EditText = ""; } } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } /// /// 说明:搜索后延迟自动点击方法 /// 创建人:王一帆 /// 创建日期:2021-06-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnSimulateClick(object sender, EventArgs e) { try { TimeOut.Enabled = false; int X = Cursor.Position.X;//鼠标当前位置 int Y = Cursor.Position.Y; Point location = tabLeftTopDetail.PointToScreen(new Point(0, 0)); SetCursorPos(location.X + tabLeftTopDetail.Width / 2, location.Y + tabLeftTopDetail.Height / 2); //设置鼠标放的位置 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Point location2 = textBox.PointToScreen(new Point(0, 0)); SetCursorPos(location2.X + textBox.Width / 2, location2.Y + textBox.Height / 2); mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); SetCursorPos(X, Y); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } //绑定事件 导入dll [System.Runtime.InteropServices.DllImport("user32")] private static extern int mouse_event(int mouseevent, int dx, int dy, int cButtons, int dwExtraInfo); private const int MOUSEEVENTF_LEFTDOWN = 0x02; private const int MOUSEEVENTF_LEFTUP = 0x04; [DllImport("User32")] public extern static void SetCursorPos(int x, int y); #endregion #region 卡号输入框清空并且给于焦点 /// /// 说明:清空卡号输入框,并给予焦点 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitCardInputBox() { //this.textBox.Clear(); this.textBox.Focus(); } #endregion #region 加载新数据源 /// /// 说明:加载新的数据(用于上下键翻页刷新和搜索) /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 数据索引 private void LoadNewForm(int Index) { DataRow dataRowItem = _dtMainTable.Rows[Index]; //三部分明细数据源更新 setTabPageGridData(tabLeftTopDetail, dataRowItem); setTabPageGridData(tabLeftBottomDetail, dataRowItem); setTabPageGridData(tabRightDetail, dataRowItem); this.ControlObj.SetAllControlValue(dataRowItem); this._keyValue = dataRowItem[this._primaryKey] + ""; InitCardInputBox(); } #endregion #region 刷新 /// /// 说明:刷新 /// 创建人:龚宇超 /// 创建日期:2018-02-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void Refresh(string[] pageIndexs) { foreach (GridDetailModel gridmodel in GridDetailModelObjs) { if (pageIndexs.Contains(gridmodel.Orderid + "")) { string sqlValue = this.GetSearchSql(gridmodel, _rowItem); if (0 <= gridmodel.Orderid && gridmodel.Orderid <= 9) { this.tabLeftBottomDetail.TabControlObj.SelectedTabPage = this.tabLeftBottomDetail.TabControlObj.TabPages.Where(o => o.Text == gridmodel.DetailName).FirstOrDefault(); if (this.tabLeftBottomDetail.TabControlObj.SelectedTabPage == null) this.tabLeftBottomDetail.TabControlObj.SelectedTabPage = this.tabLeftBottomDetail.TabControlObj.TabPages[0]; this.tabLeftBottomDetail.SetGridDataSource(MainImpl.GetDataTableResult(sqlValue)); } else if (gridmodel.Orderid > 9) { this.tabRightDetail.TabControlObj.SelectedTabPage = this.tabRightDetail.TabControlObj.TabPages.Where(o => o.Text == gridmodel.DetailName).FirstOrDefault(); if (this.tabRightDetail.TabControlObj.SelectedTabPage == null) this.tabRightDetail.TabControlObj.SelectedTabPage = this.tabRightDetail.TabControlObj.TabPages[0]; this.tabRightDetail.SetGridDataSource(MainImpl.GetDataTableResult(sqlValue)); } else if (gridmodel.Orderid != 100) { this.tabLeftTopDetail.TabControlObj.SelectedTabPage = this.tabLeftTopDetail.TabControlObj.TabPages.Where(o => o.Text == gridmodel.DetailName).FirstOrDefault(); if (this.tabLeftTopDetail.TabControlObj.SelectedTabPage == null) this.tabLeftTopDetail.TabControlObj.SelectedTabPage = this.tabLeftTopDetail.TabControlObj.TabPages[0]; this.tabLeftTopDetail.SetGridDataSource(MainImpl.GetDataTableResult(sqlValue)); } } } } #endregion #region 当前模块源数据 /// /// 说明:当前模块源数据 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void GetCurrentData() { string sqlValue = ReplaceHelper.ReplaceWhereCond(this.MoudleObj.MenuSql); _dtMainTable = BaseImpl.GetDataTableResult(sqlValue); if (_dtMainTable != null && _dtMainTable.Rows.Count > 0) { //_dtMainTable.OrderBy(this._primaryKey); if (!string.IsNullOrEmpty(this._keyValue)) { sqlValue = string.Format("{0}='{1}'", this._primaryKey, this._keyValue); DataRow[] dr = _dtMainTable.Select(sqlValue); if ((dr != null) && (dr.Length > 0)) _rowItem = dr[0]; } else _rowItem = _dtMainTable.Rows[0]; this._keyValue = _rowItem[this._primaryKey] + ""; } } #endregion #region 扫码调用dll /// /// 说明:获取验证返回操作参数 /// 创建人:龚宇超 /// 创建日期:2018-03-01 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void GetMsgParamters(string[] msgs) { if (msgs[1].Contains("module=")) { string[] paramters = msgs[1].Split('='); if (paramters.Length != 2) { MessageUtil.Show(ResourceKeys.ProcNameSettingFault); return; } string[] defaultParams = paramters[1].Split('^'); if (defaultParams.Length < 4) { MessageUtil.Show(ResourceKeys.ExcuteMoudleFail); return; } string dllName = defaultParams[1]; string moduleTitle = defaultParams[2]; string saveState = defaultParams[3]; if ("lskj.pubadd3.dll".Equals(dllName) || "lskj.pubadd2.dll".Equals(dllName)) dllName = "Lskj.PubAdd.dll"; List paramList = new List(); for (int i = 4; i < 14; i++) { paramList.Add(defaultParams.Length > i ? defaultParams[i] : ""); } //执行dll string[] str = { this.SysModel.FormText, ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, this.SysModel.Privilege, this.SysModel.ModuleCode, paramList[0], paramList[1], paramList[2], paramList[3], paramList[4], paramList[5], paramList[6], paramList[7], paramList[8], paramList[9], "", "", saveState }; IForm form = FormHelper.LoadDllForm(dllName, str); if (form == null) { MessageUtil.Show(ResourceKeys.DyncmicDllNotFount); return; } if (form.SubForm == null) { MessageUtil.Show(ResourceKeys.DyncmicDllInitFault); return; } form.SubForm.WindowState = FormWindowState.Normal; form.SubForm.StartPosition = FormStartPosition.CenterScreen; form.SubForm.Text = moduleTitle; DialogResult dr = form.SubForm.ShowDialog(); form.SubForm.Dispose(); form.SubForm = null; form = null; GC.Collect(); if (_pageIndex != null) Refresh(_pageIndex); } } #endregion #region 初始化分割条位置 /// /// 说明:初始化分割条位置 /// 创建人:龚宇超 /// 创建日期:2018-03-01/para> /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// protected void InitlizeSpiltLocation() { try { string positionMain = IniHelper.Read(string.Format("base_SplitterPositionMain_{0}", this.SysModel.ModuleCode)); if (!string.IsNullOrEmpty(positionMain)) { this.splitContainerMain.SplitterPosition = Convert.ToInt32(positionMain); } string positionLeft = IniHelper.Read(string.Format("base_SplitterPositionLeft_{0}", this.SysModel.ModuleCode)); if (!string.IsNullOrEmpty(positionLeft)) { this.splitContainerLeft.SplitterPosition = Convert.ToInt32(positionLeft); } string positionRight = IniHelper.Read(string.Format("base_SplitterPositionRight_{0}", this.SysModel.ModuleCode)); if (!string.IsNullOrEmpty(positionRight)) { this.splitContainerRight.SplitterPosition = Convert.ToInt32(positionRight); } } catch (Exception ex) { LogHelper.Instance.WriteError(ex); MessageUtil.Show(ex); } } #endregion #region 文件选取加载 /// /// 说明:文件选择 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// protected void fileComboBox_SelectedIndexChanged(object sender, EventArgs e) { try { //MessageBox.Show(SystemInfo.Instance.AttachOpenType.ToString()); if (SystemInfo.Instance.AttachOpenType == 1) { this._filePath = PubUtil.FileDownLoadTempPath + this._fileComboBox.TextEdit.Text; string serverPath = Path.Combine(SystemInfo.Instance.ServerAttachPath, BaseModuleImpl.GetFileServerPath(this._fileComboBox.TextEdit.Text)); if (!File.Exists(this._filePath)) { AttachHelper.DownLoadFile(this.Handle, serverPath); } else { this._moduleWebView.FrmLoad(serverPath); } } else { string[] AttachFileAddressS = SystemInfo.Instance.AttachFileAddress.Split('^'); string AttachFileAddress = AttachFileAddressS.Length > 1 ? AttachFileAddressS[0] : SystemInfo.Instance.AttachFileAddress; string url = AttachFileAddress + Uri.EscapeDataString(BaseModuleImpl.GetFileServerPath(this._fileComboBox.TextEdit.Text)); //MessageBox.Show(url); if (InitialLoading) { this._moduleWebView.FrmLoad(url); InitialLoading=false; } else { this._moduleWebView.LoadUrl(url); } } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 下载成功 /// /// 说明:下载成功 /// 创建人:龚宇超 /// 创建日期:2018-03-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The source of the event. /// The instance containing the event data. /// protected void AttachHelper_OnDownLoadSuccess(object sender, EventArgs e) { try { if (AttachHelper.IsDefWndProc(this.Handle, (System.Windows.Forms.Message)sender)) { // 加载本地图片 this._moduleWebView.FrmLoad(this._filePath); } } catch (Exception ex) { //string Message = ErrorMessage.PromptErrorMessage(ex); //MessageUtil.Show(Message, ex.Message); } } #endregion #region 记录分割条位置 private void splitContainerRight_SplitterPositionChanged(object sender, EventArgs e) { try { if (this._isInitFinish) IniHelper.Write(string.Format("base_SplitterPositionRight_{0}", this.SysModel.ModuleCode), this.splitContainerRight.SplitterPosition + ""); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } private void splitContainerLeft_SplitterPositionChanged(object sender, EventArgs e) { try { if (this._isInitFinish) IniHelper.Write(string.Format("base_SplitterPositionLeft_{0}", this.SysModel.ModuleCode), this.splitContainerLeft.SplitterPosition + ""); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } private void splitContainerMain_SplitterPositionChanged(object sender, EventArgs e) { try { if (this._isInitFinish) IniHelper.Write(string.Format("base_SplitterPositionMain_{0}", this.SysModel.ModuleCode), this.splitContainerMain.SplitterPosition + ""); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 窗口关闭 /// /// 说明:窗口关闭 /// 创建人:龚宇超 /// 创建日期:2018-03-01 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void FrmMain_FormClosed(object sender, FormClosedEventArgs e) { try { if (this.SysModel != null) { IniHelper.Write(string.Format("base_height_{0}", this.SysModel.ModuleCode), this.Height + ""); IniHelper.Write(string.Format("base_width_{0}", this.SysModel.ModuleCode), this.Width + ""); } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 初始化窗口大小 /// /// 说明:初始化窗口大小 /// 创建人:龚宇超 /// 创建日期:2018-03-05/para> /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void FrmMain_Resize(object sender, EventArgs e) { try { string width = IniHelper.Read(string.Format("base_width_{0}", this.SysModel.ModuleCode)); if (!string.IsNullOrEmpty(width)) { this.Width = Convert.ToInt32(width); } string height = IniHelper.Read(string.Format("base_height_{0}", this.SysModel.ModuleCode)); if (!string.IsNullOrEmpty(height)) { this.Height = Convert.ToInt32(height); } } catch (Exception ex) { //MessageUtil.Show(ex); LogHelper.Instance.WriteError(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 按钮事件 /// /// 说明:开始执行事件 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void btnStart_Click(object sender, EventArgs e) { try { switch (this.btnStart.Text) { case "开始": CheckCard(1); this.btnStart.Text = "暂停"; break; case "暂停": CheckCard(2); this.btnStart.Text = "开始"; break; } } catch (Exception ex) { //MessageUtil.Show(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 键盘事件 /// /// 说明:键盘事件操作 /// 创建人:龚宇超 /// 创建日期:2018-02-28 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void Form_KeyDown(object sender, KeyEventArgs e) { try { switch (e.KeyCode) { case Keys.Enter: if (!string.IsNullOrEmpty(_keyValue)) CheckCard(0); InitCardInputBox(); break; case Keys.Up: if (_dataIndex > 0) { --_dataIndex; LoadNewForm(_dataIndex); this.messageInfo.Text = ""; } else { MessageUtil.Show(ResourceKeys.BeforeNotData); } break; case Keys.Down: if (_dataIndex < _dtMainTable.Rows.Count - 1) { ++_dataIndex; LoadNewForm(_dataIndex); this.messageInfo.Text = ""; } else { MessageUtil.Show(ResourceKeys.AfterNotData); } break; } } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 固定搜索事件 /// /// 说明:固定搜索事件 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void btnSearch_Click(object sender, EventArgs e) { try { string sqlWhere = string.Format("{0} like '%{1}%", this.cbField.SelectedValue, this.txtFixKey.Text); DataRow[] rows = _dtMainTable.Select(sqlWhere); if (rows.Length > 0) LoadNewForm(_dtMainTable.Rows.IndexOf(rows[0])); this.ControlObj.SetAllControlValue(_rowItem); textBox.Focus(); } catch (Exception ex) { //MessageUtil.Show(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 自定义搜索事件 /// /// 说明:初始化自定义搜索 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void SearchObj_OnSearchBefore(object sender, SearchArgs e) { try { this._rowItem = MainImpl.GetDataRowResult(this.SearchObj.SetSearchSqlValue(this.MoudleObj.MenuSql)); if (this._rowItem != null) { this._keyValue = this._rowItem[this._primaryKey] + ""; //三部分明细数据源更新 setTabPageGridData(tabLeftTopDetail, this._rowItem); setTabPageGridData(tabLeftBottomDetail, this._rowItem); setTabPageGridData(tabRightDetail, this._rowItem); this.ControlObj.SetAllControlValue(this._rowItem); //初始化附件菜单 InitComboxItem(this._rowItem); SetTabPageStyle(); this.InitCardInputBox(); } this.textBox.Focus(); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 提交事件 /// /// 说明:按键提交验证 /// 创建人:龚宇超 /// 创建日期:2018-02-27 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void btnSubmit_Click(object sender, EventArgs e) { try { CheckCard(3); //卡号输入框重置 InitCardInputBox(); } catch (Exception ex) { //MessageUtil.Show(ex); string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } #endregion #region 消息处理 /// /// 说明:消息处理 /// 创建人:龚宇超 /// 创建日期:2018-03-22 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// 要处理的 Windows。 protected override void DefWndProc(ref Message m) { base.DefWndProc(ref m); if (this.Handle == m.HWnd) AttachHelper.DefWndProc(m); } #endregion private void simpleButton2_Click(object sender, EventArgs e) { try { WebBrowserUtil.StartWebBrowser(this.SysModel.ModuleCode, this.MoudleObj.MenuText); } catch (Exception ex) { string Message = ErrorMessage.PromptErrorMessage(ex); MessageUtil.Show(Message, ex.Message); } } } }