using DevExpress.Pdf.Native.BouncyCastle.Asn1.X509; using DevExpress.Utils.DirectXPaint; using DevExpress.XtraBars; using DevExpress.XtraLayout.Customization; using Gs.DevApp.Entity; using Gs.DevApp.ToolBox; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Security.Policy; using System.Threading.Tasks; using System.Windows.Forms; namespace Gs.DevApp.UserControl { public partial class UcToolBarMenu : DevExpress.XtraEditors.XtraUserControl { #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; #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 public UcToolBarMenu() { InitializeComponent(); this.btnAdd.ItemClick += BtnAdd_ItemClick; this.btnDel.ItemClick += BtnDel_ItemClick; this.btnEdit.ItemClick += BtnEdit_ItemClick; this.btnLoad.ItemClick += BtnLoad_ItemClick; this.btnSave.ItemClick += BtnSave_ItemClick; this.btnKG.ItemClick += BtnKG_ItemClick; this.btnEsc.ItemClick += BtnEsc_ItemClick; this.btnRole.ItemClick += BtnRole_ItemClick; this.btnQuery.ItemClick += BtnQuery_ItemClick; this.btnReport.ItemClick += BtnReport_ItemClick; this.btnDesign.ItemClick += BtnDesign_ItemClick; this.btnOut.ItemClick += BtnOut_ItemClick; this.btnIn.ItemClick += BtnIn_ItemClick; this.btnChk.ItemClick += BtnChk_ItemClick; this.btnFchk.ItemClick += BtnFchk_ItemClick; List lst = new List(); foreach (BarItem item in barManager1.Items) { if (item is BarLargeButtonItem largeButtonItem) { if (!string.IsNullOrEmpty(item.Caption)) lst.Add(item.Caption); } } this.actions = lst; } /// /// 初始化按钮状态 /// protected override void OnCreateControl() { base.OnCreateControl(); if (this.Parent != null) { getNamespace(); } } private void BtnFchk_ItemClick(object sender, ItemClickEventArgs e) { if (btnFChkClick != null) { btnFChkClick(this, e); } else return; if (string.IsNullOrEmpty(this.guidKey)) { ToolBox.MsgHelper.Warning("请先选择你要操作的行!"); return; } if (string.IsNullOrEmpty(this.chkParameter)) { ToolBox.MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); return; } if (!MsgHelper.AskQuestion("你选择了1条数据,确定反审核吗?")) return; var _obj = new { guid = this.guidKey, parameter = this.chkParameter }; string strJson = UtilityHelper.HttpPost("", "General/GeneralFCheck", JsonConvert.SerializeObject(_obj)); ReturnModel _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) { ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnData["outMsg"].ToString()); } else { ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg); } } private void BtnChk_ItemClick(object sender, ItemClickEventArgs e) { if (btnChkClick != null) { btnChkClick(this, e); } else return; if (string.IsNullOrEmpty(this.guidKey)) { ToolBox.MsgHelper.Warning("请先选择你要操作的行!"); return; } if (string.IsNullOrEmpty(this.chkParameter)) { ToolBox.MsgHelper.ShowError("没有指定审核参数,请联系开发人员获取支持!"); return; } if (!MsgHelper.AskQuestion("你选择了1条数据,确定审核吗?")) return; var _obj = new { guid = this.guidKey, parameter = this.chkParameter }; string strJson = UtilityHelper.HttpPost("", "General/GeneralCheck", JsonConvert.SerializeObject(_obj)); ReturnModel _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) { ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnData["outMsg"].ToString()); } else { ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg); } } private async void BtnIn_ItemClick(object sender, ItemClickEventArgs e) { if (string.IsNullOrEmpty(this.xlsInService)) { ToolBox.MsgHelper.ShowError("没有指定导入服务,请联系开发人员获取支持!"); return; } OpenFileDialog openFileDialog = new OpenFileDialog(); //openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"; openFileDialog.Title = "选择文件"; DialogResult result = openFileDialog.ShowDialog(); if (result == DialogResult.OK) { string WebApiUrl = ConfigurationManager.AppSettings["WebApiUrl"].ToString() + "Upload/UploadFile"; string strJson = await UtilityHelper.UploadFileAsync(openFileDialog.FileName); ReturnModel _rtn = ToolBox.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 = ToolBox.UtilityHelper.ReturnToDynamic(strJson); ToolBox.MsgHelper.ShowInformation("提示:" + _rtn.rtnMsg); } catch (Exception ex) { ToolBox.MsgHelper.Warning("提示:" + ex.Message); } } } } private void BtnOut_ItemClick(object sender, ItemClickEventArgs e) { //if (string.IsNullOrEmpty(this.xlsOutView)) //{ // 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.xlsOutView); // 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 (string.IsNullOrEmpty(this.rptParameter)) { ToolBox.MsgHelper.ShowError("没有指定报表参数,请联系技术开发人员!"); return; } bool _bl = false; _bl = _ckRptService(); if (_bl) { Gs.DevApp.DevFrm.Rpt.RptPreview frm = new Gs.DevApp.DevFrm.Rpt.RptPreview(this.rptParameter); frm.Show(); return; } ToolBox.MsgHelper.ShowError("没有设计模板,请先设计模板!"); return; } private void BtnDesign_ItemClick(object sender, ItemClickEventArgs e) { if (string.IsNullOrEmpty(this.rptParameter)) { ToolBox.MsgHelper.ShowError("没有指定报表参数,请联系技术开发人员!"); return; } bool _bl = false; _bl = _ckRptService(); //如果已经有模板了,直接打开设置模板 if (_bl) { Gs.DevApp.DevFrm.Sys.EasyRptDesign frm = new Gs.DevApp.DevFrm.Sys.EasyRptDesign(this.rptParameter); frm.Show(); return; } //否则向导设计模板 UserControl.ShowRptWizard rptWizard = new ShowRptWizard(this.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("确定要要取消吗?")) { List 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); _enabledBtn(lst); if (btnEscClick != null) { btnEscClick(this, e); } } } private void BtnKG_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnKGClick != null) { btnKGClick(this, e); } } private void BtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnSaveClick != null) { btnSaveClick(this, e); if (isSetBtn == true) { List lst = new List(); lst.Add(btnAdd.Name); lst.Add(btnEdit.Name); lst.Add(btnEsc.Name); _enabledBtn(lst); } } } private void BtnLoad_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnLoadClick != null) { //List lst = new List(); //lst.Add(btnRole.Name); //setBtn(lst); btnLoadClick(this, e); } } private void BtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { List 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, DevExpress.XtraBars.ItemClickEventArgs e) { if (btnDelClick != null) { btnDelClick(this, e); } } /// /// /// /// /// private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { List 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() { string _formNamespace = ""; System.Windows.Forms.Control parentControl = this; while (parentControl.Parent != null) { if (parentControl.Parent is Form parentForm) { Type formType = parentForm.GetType(); _formNamespace = formType.FullName; break; } parentControl = parentControl.Parent; } var _obj = new { userGuid = LoginInfoModel.CurrentUser.LoginUserGuid, orgGuid = LoginInfoModel.CurrentUser.LoginOrgGuid, formNamespace = _formNamespace, }; string strReturn = ""; try { strReturn = UtilityHelper.HttpPost("", "Role/GetListByUserOrgSpace", JsonConvert.SerializeObject(_obj)); ReturnModel dd = UtilityHelper.ReturnToList(strReturn); DataTable dt = dd.rtnData; List _enabledList = new List(); foreach (BarItem item in barManager1.Items) { ///具有联动关系的按钮(增加), if (item.Caption == "增加") { bool ld1 = dt.AsEnumerable().Any(row => row.Field("name") == "增加" //|| row.Field("name") == "修改" ); if (ld1 == true) { btnEsc.Visibility = btnSave.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnAdd.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(修改), if (item.Caption == "修改") { bool ld1 = dt.AsEnumerable().Any(row => row.Field("name") == "修改" ); if (ld1 == true) { btnEsc.Visibility = btnSave.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnEdit.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(查询), bool ld2 = dt.AsEnumerable().Any(row => row.Field("name") == "查询" ); if (ld2 == true) { if (item.Caption == "刷新") { item.Visibility = BarItemVisibility.Always; //准备启用 _enabledList.Add(item.Name); continue; } } ///具有联动关系的按钮(提交检验), if (item.Caption == "提交检验") { bool ld1 = dt.AsEnumerable().Any(row => row.Field("name") == "提交检验" ); if (ld1 == true) { btnJianYan.Visibility = btnFjianYan.Visibility = btnLoad.Visibility = BarItemVisibility.Always; btnJianYan.Visibility = BarItemVisibility.Always; _enabledList.Add(item.Name); continue; } } //按钮是否在权限表中 bool exists = dt.AsEnumerable().Any(row => row.Field("name") == item.Caption); if (exists == true) { item.Visibility = BarItemVisibility.Always; //准备启用 string _btnName = _FindBarLargeButtonItemByCaption(item.Caption); if (!string.IsNullOrEmpty(_btnName)) _enabledList.Add(_btnName); } } //默认启用的按钮 // _enabledList.Add(btnDesign.Name); _enabledBtn(_enabledList); } catch (Exception ex) { ToolBox.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 { rptParameter = this.rptParameter, }; string strJson = UtilityHelper.HttpPost("", "Report/GetTemplate", JsonConvert.SerializeObject(_obj)); ReturnModel _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) { return true; } return false; } catch (Exception ex) { ToolBox.MsgHelper.Warning("提示:" + ex.Message); return true; } return false; } } }