lg
2024-09-22 c115ac388af5a6928716f0146a75a2a42fb27d8e
DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs
@@ -1,12 +1,19 @@
using DevExpress.XtraEditors;
using DevExpress.XtraBars;
using Gs.DevApp.Entity;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
namespace Gs.DevApp.UserControl
{
    public partial class ToolBarMenu : DevExpress.XtraEditors.XtraUserControl
    {
        public bool isSetBtn { get; set; }
        public List<string> actions { get; }
        /// <summary>
        /// 新增
        /// </summary>
@@ -33,9 +40,29 @@
        public event EventHandler btnSaveClick;
        /// <summary>
        /// 取消
        /// </summary>
        public event EventHandler btnEscClick;
        /// <summary>
        /// 开工
        /// </summary>
        public event EventHandler btnKGClick;
        /// <summary>
        /// 权限
        /// </summary>
        public event EventHandler btnRoleClick;
        /// <summary>
        /// 权限
        /// </summary>
        public event EventHandler btnReportClick;
        /// <summary>
        /// 权限
        /// </summary>
        public event EventHandler btnQueryClick;
        public ToolBarMenu()
@@ -47,6 +74,67 @@
            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.btnReport.ItemClick += BtnReport_ItemClick;
            this.btnQuery.ItemClick += BtnQuery_ItemClick;
            List<string> lst = new List<string>();
            foreach (BarItem item in barManager1.Items)
            {
                if (item is BarLargeButtonItem largeButtonItem)
                {
                    if (!string.IsNullOrEmpty(item.Caption))
                        lst.Add(item.Caption);
                }
            }
            this.actions = lst;
            //初始化按钮状态
            // initialization();
        }
        private void BtnQuery_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (btnQueryClick != null)
            {
                btnQueryClick(this, e);
            }
        }
        private void BtnReport_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (btnReportClick != null)
            {
                btnReportClick(this, e);
            }
        }
        /// <summary>
        /// 初始化按钮状态
        /// </summary>
        protected override void OnCreateControl()
        {
            base.OnCreateControl();
            if (this.Parent != null)
            {
                getNamespace();
            }
        }
        private void BtnEsc_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (MsgHelper.AskQuestion("确定要要取消吗?"))
            {
                List<string> lst = new List<string>();
                lst.Add(btnAdd.Name);
                lst.Add(btnEdit.Name);
                lst.Add(btnLoad.Name);
                lst.Add(btnDel.Name);
                lst.Add(btnRole.Name);
                _enabledBtn(lst);
                if (btnEscClick != null)
                {
                    btnEscClick(this, e);
                }
            }
        }
        private void BtnKG_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
@@ -62,19 +150,37 @@
            if (btnSaveClick != null)
            {
                btnSaveClick(this, e);
                if (isSetBtn == true)
                {
                    List<string> lst = new List<string>();
                    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<string> lst = new List<string>();
                //lst.Add(btnRole.Name);
                //setBtn(lst);
                btnLoadClick(this, e);
            }
        }
        private void BtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            List<string> lst = new List<string>();
            lst.Add(btnSave.Name);
            lst.Add(btnEsc.Name);
            _enabledBtn(lst);
            if (btnEdtClick != null)
            {
                btnEdtClick(this, e);
@@ -83,17 +189,157 @@
        private void BtnDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (btnDelClick != null) {
            if (btnDelClick != null)
            {
                btnDelClick(this, e);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            List<string> lst = new List<string>();
            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<string> lst = new List<string>();
            //lst.Add(btnSave.Name);
            //lst.Add(btnEsc.Name);
            //setBtn(lst);
            if (btnRoleClick != null)
            {
                btnRoleClick(this, e);
            }
        }
        private void _enabledBtn(List<string> lstBtn)
        {
            foreach (BarItem item in barManager1.Items)
            {
                if (item is BarLargeButtonItem largeButtonItem)
                {
                    if (lstBtn.Contains(item.Name))
                        largeButtonItem.Enabled = true;
                    else
                        largeButtonItem.Enabled = false;
                }
            }
        }
        /// <summary>
        /// 根据命名空间和权限,读取该窗体下面的按钮集合
        /// </summary>
        private void getNamespace()
        {
            string _formNamespace = "";
            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<DataTable> dd = UtilityHelper.ReturnToList(strReturn);
                DataTable dt = dd.rtnData;
                List<string> _enabledList = new List<string>();
                foreach (BarItem item in barManager1.Items)
                {
                    ///具有联动关系的按钮(增加),
                    if (item.Caption == "增加")
                    {
                        bool ld1 = dt.AsEnumerable().Any(row => row.Field<string>("name") == "增加"
                      //|| row.Field<string>("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<string>("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<string>("name") == "查询"
                    );
                    if (ld2 == true)
                    {
                        if (item.Caption == "刷新")
                        {
                            item.Visibility = BarItemVisibility.Always;
                            //准备启用
                            _enabledList.Add(item.Name);
                            continue;
                        }
                    }
                    //按钮是否在权限表中
                    bool exists = dt.AsEnumerable().Any(row => row.Field<string>("name") == item.Caption);
                    if (exists == true)
                    {
                        item.Visibility = BarItemVisibility.Always;
                        //准备启用
                        string _btnName = _FindBarLargeButtonItemByCaption(item.Caption);
                        if (!string.IsNullOrEmpty(_btnName))
                            _enabledList.Add(_btnName);
                    }
                }
                _enabledBtn(_enabledList);
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
            }
        }
        private string _FindBarLargeButtonItemByCaption(string caption)
        {
            foreach (BarItem item in barManager1.Items)
            {
                if (item is BarLargeButtonItem largeButtonItem && largeButtonItem.Caption == caption)
                {
                    return largeButtonItem.Name;
                }
            }
            return null;
        }
    }
}