using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Net; using System.Windows.Forms; using DevExpress.XtraBars; using DevExpress.XtraEditors; using Gs.DevApp.DevFrm.Rpt; using Gs.DevApp.DevFrm.Sys; using Gs.DevApp.Entity; using Gs.DevApp.ToolBox; using Newtonsoft.Json; namespace Gs.DevApp.UserControl { public partial class UcToolBarMenu : XtraUserControl { public UcToolBarMenu() { InitializeComponent(); btnAdd.ItemClick += BtnAdd_ItemClick; btnDel.ItemClick += BtnDel_ItemClick; btnEdit.ItemClick += BtnEdit_ItemClick; btnLoad.ItemClick += BtnLoad_ItemClick; btnSave.ItemClick += BtnSave_ItemClick; btnKG.ItemClick += BtnKG_ItemClick; btnEsc.ItemClick += BtnEsc_ItemClick; btnRole.ItemClick += BtnRole_ItemClick; btnQuery.ItemClick += BtnQuery_ItemClick; btnReport.ItemClick += BtnReport_ItemClick; btnDesign.ItemClick += BtnDesign_ItemClick; btnOut.ItemClick += BtnOut_ItemClick; btnIn.ItemClick += BtnIn_ItemClick; btnChk.ItemClick += BtnChk_ItemClick; btnFchk.ItemClick += BtnFchk_ItemClick; btnJianYan.ItemClick += BtnJianYan_ItemClick; btnFjianYan.ItemClick += BtnFjianYan_ItemClick; btnPiZhun.ItemClick += BtnPiZhun_ItemClick; btnLog.ItemClick += BtnLog_ItemClick; btnZhiLiangChk.ItemClick += BtnZhiLiangChk_ItemClick; btnZhiLiangFchk.ItemClick += BtnZhiLiangFchk_ItemClick; btnCaiGouChk.ItemClick += BtnCaiGouChk_ItemClick; btnCaiGouFchk.ItemClick += BtnCaiGouFchk_ItemClick; btnBoHui.ItemClick += BtnBoHui_ItemClick; var lst = new List(); foreach (BarItem item in barManager1.Items) if (item is BarLargeButtonItem largeButtonItem) if (!string.IsNullOrEmpty(item.Caption) && item.Caption != "保存" && item.Caption != "刷新") lst.Add(item.Caption); actions = lst; } /// /// 初始化按钮状态 /// protected override void OnCreateControl() { base.OnCreateControl(); if (Parent != null) getNamespace(); } private void BtnBoHui_ItemClick(object sender, ItemClickEventArgs e) { if (btnBoHuiClick != null) btnBoHuiClick(this, e); //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定驳回参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定驳回重检吗?")) // return; //_ckService("5"); } private void BtnCaiGouFchk_ItemClick(object sender, ItemClickEventArgs e) { if (btnCaiGouFchkClick != null) btnCaiGouFchkClick(this, e); //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定采购反审核吗?")) // return; //_ckService("-2"); } private void BtnCaiGouChk_ItemClick(object sender, ItemClickEventArgs e) { if (btnCaiGouChkClick != null) btnCaiGouChkClick(this, e); //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定采购审核吗?")) // return; //_ckService("2"); } private void BtnZhiLiangFchk_ItemClick(object sender, ItemClickEventArgs e) { if (btnZhiLiangFchkClick != null) btnZhiLiangFchkClick(this, e); //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定质量反审核吗?")) // return; //_ckService("-3"); } private void BtnZhiLiangChk_ItemClick(object sender, ItemClickEventArgs e) { if (btnZhiLiangChkClick != null) btnZhiLiangChkClick(this, e); //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定质量审核吗?")) // return; //_ckService("3"); } private void BtnFchk_ItemClick(object sender, ItemClickEventArgs e) { if (btnFChkClick != null) btnFChkClick(this, e); else return; if (string.IsNullOrEmpty(guidKey)) { MsgHelper.Warning("请先选择你要操作的行!"); return; } if (string.IsNullOrEmpty(chkParameter)) { MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); return; } if (!MsgHelper.AskQuestion("你选择了1条数据,确定反审核吗?")) return; _ckService(0.ToString()); } private void BtnChk_ItemClick(object sender, ItemClickEventArgs e) { if (btnChkClick != null) btnChkClick(this, e); else return; if (string.IsNullOrEmpty(guidKey)) { MsgHelper.Warning("请先选择你要操作的行!"); return; } if (string.IsNullOrEmpty(chkParameter)) { MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); return; } if (!MsgHelper.AskQuestion("你选择了1条数据,确定审核吗?")) return; _ckService(1.ToString()); } private void BtnLog_ItemClick(object sender, ItemClickEventArgs e) { if (btnLogClick != null) btnLogClick(this, e); else return; if (string.IsNullOrEmpty(guidKey)) { MsgHelper.Warning("请先选择你要操作的行!"); return; } UserControl.ShowLogcs frm = new ShowLogcs(); frm.ShowDialog(); } private void BtnPiZhun_ItemClick(object sender, ItemClickEventArgs e) { if (btnPiZhunClick != null) btnPiZhunClick(this, e); } private void BtnFjianYan_ItemClick(object sender, ItemClickEventArgs e) { if (btnFjianYanClick != null) btnFjianYanClick(this, e); else return; //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定检验参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定撤回检验吗?")) // return; //_ckService(0.ToString()); } private void BtnJianYan_ItemClick(object sender, ItemClickEventArgs e) { if (btnJianYanClick != null) btnJianYanClick(this, e); else return; //if (string.IsNullOrEmpty(guidKey)) //{ // MsgHelper.Warning("请先选择你要操作的行!"); // return; //} //if (string.IsNullOrEmpty(chkParameter)) //{ // MsgHelper.ShowError("没有指定检验参数,请联系开发人员获取支持!"); // return; //} //if (!MsgHelper.AskQuestion("你选择了1条数据,确定提交检验吗?")) // return; //var _obj = new //{ // guid = guidKey, // parameter = chkParameter //}; //_ckService(1.ToString()); } private async void BtnIn_ItemClick(object sender, ItemClickEventArgs e) { if (string.IsNullOrEmpty(xlsInService)) { MsgHelper.ShowError("没有指定导入服务,请联系开发人员获取支持!"); return; } var openFileDialog = new OpenFileDialog(); //openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"; openFileDialog.Title = "选择文件"; var result = openFileDialog.ShowDialog(); if (result == DialogResult.OK) { var WebApiUrl = ConfigurationManager.AppSettings["WebApiUrl"] + "Upload/UploadFile"; var strJson = await UtilityHelper.UploadFileAsync(openFileDialog .FileName); var _rtn = UtilityHelper.ReturnToDynamic(strJson); string filePath = _rtn.rtnData["filePath"].ToString(); if (_rtn.rtnCode > 0) { var _obj = filePath; try { strJson = UtilityHelper.HttpPost("", "XlsInOut/" + xlsInService, JsonConvert.SerializeObject(_obj)); _rtn = UtilityHelper.ReturnToDynamic(strJson); MsgHelper.ShowInformation("提示:" + _rtn.rtnMsg); } catch (Exception ex) { MsgHelper.Warning("提示:" + ex.Message); } } } } private void BtnOut_ItemClick(object sender, ItemClickEventArgs e) { if (string.IsNullOrEmpty(this.xlsOutParameter)) { ToolBox.MsgHelper.ShowError("没有指定导出存储过程,请联系开发人员获取支持!"); return; } using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog()) { folderBrowserDialog.Description = "选择导出文件的保存路径"; DialogResult dialogResult = folderBrowserDialog.ShowDialog(); if (dialogResult == DialogResult.OK) { string _folder = folderBrowserDialog.SelectedPath; var _obj = new Gs.DevApp.Entity.XlsOutModel(this.xlsOutParameter); try { string strJson = UtilityHelper.HttpPost("", "XlsInOut/XlsOutView", JsonConvert.SerializeObject(_obj)); ReturnModel _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) { string _file = _rtn.rtnData.fileUrl.ToString(); string _folderName = _folder + "\\" + _file.Replace("down/", ""); string _url = ConfigurationManager.AppSettings["WebApiUrl"].ToString() + _file; using (WebClient client = new WebClient()) { client.DownloadFile(_url, _folderName); } ToolBox.MsgHelper.ShowInformation("导出成功!"); } else { ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg); } } catch (Exception ex) { ToolBox.MsgHelper.Warning("提示:" + ex.Message); } } } } private void BtnReport_ItemClick(object sender, ItemClickEventArgs e) { if (btnReportClick != null) btnReportClick(this, e); else return; if (rptParameter == "return false") return; if (string.IsNullOrEmpty(rptParameter)) { MsgHelper.ShowError("没有指定报表参数,请联系技术开发人员!"); return; } var _bl = false; _bl = _ckRptService(); if (_bl) { var frm = new RptPreview(guidKey, rptParameter); frm.ShowDialog(); return; } MsgHelper.ShowError("没有设计模板,请先设计模板!"); } private void BtnDesign_ItemClick(object sender, ItemClickEventArgs e) { if (btnDesignClick != null) btnDesignClick(this, e); else return; if (string.IsNullOrEmpty(rptParameter)) { MsgHelper.ShowError("没有指定报表参数,请联系技术开发人员!"); return; } var _bl = false; _bl = _ckRptService(); //如果已经有模板了,直接打开设置模板 if (_bl) { var frm = new EasyRptDesign(guidKey, rptParameter); frm.ShowDialog(); return; } //否则向导设计模板 var rptWizard = new ShowRptWizard(guidKey, rptParameter); rptWizard.ShowDialog(); } private void BtnQuery_ItemClick(object sender, ItemClickEventArgs e) { if (btnQueryClick != null) btnQueryClick(this, e); } private void BtnEsc_ItemClick(object sender, ItemClickEventArgs e) { if (MsgHelper.AskQuestion("确定要要取消吗?")) { var lst = new List(); lst.Add(btnAdd.Name); lst.Add(btnEdit.Name); lst.Add(btnLoad.Name); lst.Add(btnDel.Name); lst.Add(btnRole.Name); lst.Add(btnQuery.Name); lst.Add(btnReport.Name); lst.Add(btnDesign.Name); lst.Add(btnChk.Name); lst.Add(btnFchk.Name); lst.Add(btnJianYan.Name); lst.Add(btnFjianYan.Name); lst.Add(btnOut.Name); lst.Add(btnIn.Name); lst.Add(btnLog.Name); lst.Add(btnPiZhun.Name); _enabledBtn(lst); if (btnEscClick != null) btnEscClick(this, e); } } private void BtnKG_ItemClick(object sender, ItemClickEventArgs e) { if (btnKGClick != null) btnKGClick(this, e); } private void BtnSave_ItemClick(object sender, ItemClickEventArgs e) { if (btnSaveClick != null) { btnSaveClick(this, e); if (isSetBtn) { var lst = new List(); lst.Add(btnAdd.Name); lst.Add(btnEdit.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); } } } private void BtnLoad_ItemClick(object sender, ItemClickEventArgs e) { if (btnLoadClick != null) //List lst = new List(); //lst.Add(btnRole.Name); //setBtn(lst); btnLoadClick(this, e); } private void BtnEdit_ItemClick(object sender, ItemClickEventArgs e) { var lst = new List(); lst.Add(btnSave.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); if (btnEdtClick != null) btnEdtClick(this, e); } private void BtnDel_ItemClick(object sender, ItemClickEventArgs e) { if (btnDelClick != null) btnDelClick(this, e); } /// /// /// /// private void BtnAdd_ItemClick(object sender, ItemClickEventArgs e) { var lst = new List(); lst.Add(btnSave.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); if (btnAddClick != null) btnAddClick(this, e); } private void BtnRole_ItemClick(object sender, ItemClickEventArgs e) { //List lst = new List(); //lst.Add(btnSave.Name); //lst.Add(btnEsc.Name); //setBtn(lst); if (btnRoleClick != null) btnRoleClick(this, e); } private void _enabledBtn(List lstBtn) { foreach (BarItem item in barManager1.Items) if (item is BarLargeButtonItem largeButtonItem) { if (lstBtn.Contains(item.Name)) largeButtonItem.Enabled = true; else largeButtonItem.Enabled = false; } } /// /// 根据命名空间和权限,读取该窗体下面的按钮集合 /// private void getNamespace() { var _formNamespace = ""; Control parentControl = this; while (parentControl.Parent != null) { if (parentControl.Parent is Form parentForm) { var formType = parentForm.GetType(); _formNamespace = formType.FullName; break; } parentControl = parentControl.Parent; } var _obj = new { userGuid = LoginInfoModel.CurrentUser.LoginUserGuid, orgGuid = LoginInfoModel.CurrentUser.LoginOrgGuid, formNamespace = _formNamespace }; var strReturn = ""; try { strReturn = UtilityHelper.HttpPost("", "Role/GetListByUserOrgSpace", JsonConvert.SerializeObject(_obj)); var dd = UtilityHelper.ReturnToList(strReturn); var dt = dd.rtnData; var _enabledList = new List(); foreach (BarItem item in barManager1.Items) { ///具有联动关系的按钮(增加), if (item.Caption == "增加") { var ld1 = dt.AsEnumerable().Any( row => row.Field("name") == "增加" //|| row.Field("name") == "修改" ); if (ld1) { btnEsc.Visibility = btnSave.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnAdd.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(修改), if (item.Caption == "修改") { var ld1 = dt.AsEnumerable().Any( row => row.Field("name") == "修改" ); if (ld1) { btnEsc.Visibility = btnSave.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnEdit.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(查询), var ld2 = dt.AsEnumerable().Any( row => row.Field("name") == "查询" ); if (ld2) if (item.Caption == "刷新") { item.Visibility = BarItemVisibility.Always; //准备启用 _enabledList.Add(item.Name); continue; } ///具有联动关系的按钮(提交检验), //if (item.Caption == "提交检验") //{ // var ld1 = dt.AsEnumerable().Any( // row => row.Field("name") == "提交检验" // ); // if (ld1) // { // btnJianYan.Visibility = btnFjianYan.Visibility = // btnLoad.Visibility = BarItemVisibility.Always; // btnJianYan.Visibility = BarItemVisibility.Always; // _enabledList.Add(item.Name); // continue; // } //} //按钮是否在权限表中 var exists = dt.AsEnumerable().Any(row => row.Field("name") == item.Caption); if (exists) { item.Visibility = BarItemVisibility.Always; //准备启用 var _btnName = _FindBarLargeButtonItemByCaption(item.Caption); if (!string.IsNullOrEmpty(_btnName)) _enabledList.Add(_btnName); } } //默认启用的按钮 _enabledList.Add(btnLoad.Name); _enabledBtn(_enabledList); } catch (Exception ex) { MsgHelper.Warning("提示:" + ex.Message); } } /// /// 根据文字,查找按钮name /// /// /// private string _FindBarLargeButtonItemByCaption(string caption) { foreach (BarItem item in barManager1.Items) if (item is BarLargeButtonItem largeButtonItem && largeButtonItem.Caption == caption) return largeButtonItem.Name; return null; } private bool _ckRptService() { try { var _obj = new { guid = guidKey, rptParameter, isDesign = 1 }; var strJson = UtilityHelper.HttpPost("", "Report/GetRptData", JsonConvert.SerializeObject(_obj)); var _rtn = UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) return true; return false; } catch (Exception ex) { MsgHelper.Warning("提示:" + ex.Message); return true; } return false; } private void _ckService(string _ckValue) { var _obj = new { guid = guidKey, parameter = chkParameter, ckValue = _ckValue }; var strJson = UtilityHelper.HttpPost("", "General/GeneralCheck", JsonConvert.SerializeObject(_obj)); var _rtn = UtilityHelper.ReturnToDynamic(strJson); MsgHelper.Warning("提示:" + _rtn.rtnData["outMsg"].ToString()); if (_rtn.rtnCode > 0) { } } #region 公共事件 /// /// 新增 /// public event EventHandler btnAddClick; /// /// 删除 /// public event EventHandler btnDelClick; /// /// 修改 /// public event EventHandler btnEdtClick; /// /// 刷新 /// public event EventHandler btnLoadClick; /// /// 保存 /// public event EventHandler btnSaveClick; /// /// 取消 /// public event EventHandler btnEscClick; /// /// 开工 /// public event EventHandler btnKGClick; /// /// 权限 /// public event EventHandler btnRoleClick; /// /// 查询 /// public event EventHandler btnQueryClick; /// /// 审核 /// public event EventHandler btnChkClick; /// /// 反审核 /// public event EventHandler btnFChkClick; /// /// 检验 /// public event EventHandler btnJianYanClick; /// /// 反检验 /// public event EventHandler btnFjianYanClick; /// /// 批准 /// public event EventHandler btnPiZhunClick; /// /// 日志 /// public event EventHandler btnLogClick; /// /// 采购审核 /// public event EventHandler btnCaiGouChkClick; /// /// 采购反审核 /// public event EventHandler btnCaiGouFchkClick; /// /// 质量审核 /// public event EventHandler btnZhiLiangChkClick; /// /// 质量反审核 /// public event EventHandler btnZhiLiangFchkClick; /// /// 驳回 /// public event EventHandler btnBoHuiClick; /// /// 打印 /// public event EventHandler btnPrintClick; /// /// 设置报表 /// public event EventHandler btnDesignClick; /// /// 报表 /// public event EventHandler btnReportClick; #endregion #region 公共属性 public bool isSetBtn { get; set; } /// /// 关键字,一般是主键 /// public string guidKey { get; set; } /// /// 按钮名称集合 /// public List actions { get; } /// /// 报表,在数据库中要唯一,如:存储过程名{入参1名|入参值,入参2名|入参值} /// public string rptParameter { get; set; } /// /// 导出,视图名,如:存储过程名{入参1名|入参值,入参2名|入参值} /// public string xlsOutParameter { get; set; } /// /// 导入 /// public string xlsInService { get; set; } /// /// 审核参数,表名,字段名,如:MES_HOLIDAY(表名),check_date(时间),check_status(状态),check_by(审核人),存储过程名 /// public string chkParameter { get; set; } #endregion } }