lu
2025-04-05 d70880a3d9ae6c9f99ec380ccd16f5524bb622e6
DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -4,6 +4,7 @@
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Cache;
using System.Net.Http;
@@ -17,6 +18,7 @@
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Menu;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraTab;
using DevExpress.XtraTreeList;
@@ -24,7 +26,9 @@
using Gs.DevApp.UserControl;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using UserControls.Data;
using static System.Windows.Forms.Control;
namespace Gs.DevApp.ToolBox
{
@@ -57,70 +61,38 @@
                }
            }
        }
        /// <summary>
        ///     httpPost访问服务
        /// </summary>
        /// <param name="url">服务地址</param>
        /// <param name="meth">方法名称</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public static async Task<string> HttpPostAsync(string url, string meth, string param)
        public static (Size, string, Color, Padding) getLoading()
        {
            if (string.IsNullOrEmpty(url))
                url = WebApiUrl;
            url += meth;
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("token", GetBasicAuthTicket());
            request.Accept = "*/*";
            request.Timeout = 15000;
            request.AllowAutoRedirect = false;
            request.ServicePoint.Expect100Continue = false;
            HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
            request.CachePolicy = noCachePolicy;
            using (Stream requestStream = await request.GetRequestStreamAsync())
            {
                byte[] dataBytes = Encoding.UTF8.GetBytes(param);
                await requestStream.WriteAsync(dataBytes, 0, dataBytes.Length);
            }
            using (WebResponse response = await request.GetResponseAsync())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    return await reader.ReadToEndAsync();
                }
            }
            Size _size = new Size(360, 90);
            return (_size, "拼命加载中,请稍后...", System.Drawing.Color.LightSkyBlue, new Padding(15));
        }
        /// <summary>
        ///     httpPost访问服务
        /// </summary>
        /// <param name="url">服务地址</param>
        /// <param name="meth">方法名称</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public static string HttpPost(string url, string meth, string param)
        {
            if (string.IsNullOrEmpty(url))
                url = WebApiUrl;
            url += meth;
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("token", GetBasicAuthTicket());
            request.Accept = "*/*";
            request.Timeout = 15000;
            request.AllowAutoRedirect = false;
            request.ServicePoint.Expect100Continue = false;
            HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
            request.CachePolicy = noCachePolicy;
            Size _size; string _caption; Color _color; Padding _pad;
            (_size, _caption, _color, _pad) = getLoading();
            DevExpress.Utils.WaitDialogForm wdf = new DevExpress.Utils.WaitDialogForm("加载进度:"+meth, _caption, _size);
            wdf.BackColor = _color;
            wdf.Padding = _pad;
            HttpWebRequest request = null;
            StreamWriter requestStream = null;
            WebResponse response = null;
            string responseStr = null;
            try
            {
                if (string.IsNullOrEmpty(url))
                    url = WebApiUrl;
                url += meth;
                request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json";
                request.Headers.Add("token", GetBasicAuthTicket());
                request.Accept = "*/*";
                request.Timeout = 150000;
                request.AllowAutoRedirect = false;
                request.ServicePoint.Expect100Continue = false;
                HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
                request.CachePolicy = noCachePolicy;
                requestStream = new StreamWriter(request.GetRequestStream());
                requestStream.Write(param);
                requestStream.Close();
@@ -136,6 +108,7 @@
            }
            catch (Exception ex)
            {
                wdf.Close();
                LogHelper.Debug(url, param + ":" + ex.Message);
                throw ex;
            }
@@ -145,7 +118,7 @@
                requestStream = null;
                response = null;
            }
            wdf.Close();
            return responseStr;
        }
@@ -194,7 +167,7 @@
            var dt = new DataTable();
            foreach (GridColumn col in gv.Columns)
            {
                if (col.UnboundDataType == typeof(bool))
                if (col.UnboundDataType == typeof(System.Boolean))
                    dt.Columns.Add(col.FieldName, typeof(System.Boolean));
                else
                {
@@ -216,11 +189,7 @@
                string.IsNullOrEmpty(LoginInfoModel.CurrentUser.LoginUserGuid)
                    ? Guid.NewGuid().ToString()
                    : LoginInfoModel.CurrentUser.LoginUserGuid;
            var orgGuid =
                string.IsNullOrEmpty(LoginInfoModel.CurrentUser.LoginOrgGuid)
                    ? Guid.NewGuid().ToString()
                    : LoginInfoModel.CurrentUser.LoginOrgGuid;
            var token = userGuid + "~" + orgGuid;
            var token = userGuid;
            return token;
        }
@@ -296,21 +265,39 @@
        {
            isEdt = !isEdt;
            if (gridViews != null)
            {
                foreach (var gv in gridViews)
                {
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        colmn.OptionsColumn.AllowEdit = true;
                        if (colmn.Name.ToString().Contains("gvBtnAlawys"))
                        {
                            colmn.Visible = true;
                            colmn.OptionsColumn.ReadOnly = false;
                        };
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            //  colmn.Visible = !isEdt;
                            //  break;
                            colmn.OptionsColumn.AllowEdit =true;
                            colmn.Visible = !isEdt;
                            if (colmn.Visible == true)
                                colmn.VisibleIndex = 99999;
                        }
                        else
                        colmn.OptionsColumn.AllowEdit = !isEdt;
                        {
                            if (isEdt == false)
                            {
                                if (colmn.Tag != null && colmn.Tag.ToString().EndsWith("edit"))
                                    colmn.OptionsColumn.ReadOnly = isEdt;
                                else
                                    colmn.OptionsColumn.ReadOnly = !isEdt;
                            }
                            else
                                colmn.OptionsColumn.ReadOnly = isEdt;
                        }
                    }
                    //gv.OptionsBehavior.Editable = !isEdt;
                }
            }
            var _btnAry = controls.Find("btnSelect", false);
            if (_btnAry.Length > 0)
            {
@@ -341,7 +328,6 @@
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        if (colType is ImageComboBoxEdit)
                        {
                            var txt = colType as ImageComboBoxEdit;
@@ -356,32 +342,25 @@
                            }
                            continue;
                        }
                        if (colType is ComboBoxEdit)
                        {
                            var txt = colType as ComboBoxEdit;
                            if (txt.Properties.TextEditStyle ==
                                TextEditStyles.DisableTextEditor)
                                txt.SelectedIndex = int.Parse(strVal);
                                try
                                {
                                    txt.SelectedIndex = int.Parse(strVal);
                                }
                                catch (Exception)
                                {
                                    txt.Text = strVal;
                                }
                            else
                                txt.Text = strVal;
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        //下拉
                        if (colType is ComboBoxEdit)
                        {
                            var txt = colType as ComboBoxEdit;
                            if (txt.Properties.TextEditStyle ==
                                TextEditStyles.DisableTextEditor)
                                txt.SelectedIndex = int.Parse(strVal);
                            else
                                txt.Text = strVal;
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        //自定义下拉
                        if (colType is UcComBox)
                        {
@@ -390,14 +369,18 @@
                            txt.Enabled = !isEdt;
                            continue;
                        }
                        //文本
                        if (colType is TextEdit)
                        {
                            var txt = colType as TextEdit;
                            if (txt != null)
                                txt.Text = strVal;
                            txt.ReadOnly = isEdt;
                            if (_isRead(txt.Tag))
                            {
                                txt.ReadOnly = true;
                            }
                            else
                                txt.ReadOnly = isEdt;
                            continue;
                        }
                        if (colType is MemoEdit)
@@ -405,10 +388,14 @@
                            var txt = colType as MemoEdit;
                            if (txt != null)
                                txt.Text = strVal;
                            txt.ReadOnly = isEdt;
                            if (_isRead(txt.Tag))
                            {
                                txt.ReadOnly = true;
                            }
                            else
                                txt.ReadOnly = isEdt;
                            continue;
                        }
                        //数字卡
                        if (colType is NumericUpDown)
                        {
@@ -418,11 +405,41 @@
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        //单选
                        if (colType is CheckEdit)
                        {
                            var txt = colType as CheckEdit;
                            if (_isRead(txt.Tag))
                            {
                                txt.ReadOnly = true;
                            }
                            else
                                txt.ReadOnly = isEdt;
                            if (txt != null)
                            {
                                switch (strVal)
                                {
                                    case "True":
                                        txt.Checked = true;
                                        break;
                                    case "1":
                                        txt.Checked = true;
                                        break;
                                    case "False":
                                        txt.Checked = false;
                                        break;
                                    default:
                                        txt.Checked = false;
                                        break;
                                }
                            }
                            continue;
                        }
                        //单选
                        if (colType is CheckBox)
                        {
                            var txt = colType as CheckBox;
                            if (txt != null)
                                switch (strVal)
                                {
@@ -439,28 +456,10 @@
                                        txt.Checked = false;
                                        break;
                                }
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        //单选
                        if (colType is CheckBox)
                        {
                            var txt = colType as CheckBox;
                            if (txt != null)
                                txt.Checked = bool.Parse(strVal);
                            txt.Enabled = !isEdt;
                            continue;
                        }
                        if (colType is CheckEdit)
                        {
                            var txt = colType as CheckEdit;
                            if (txt != null)
                                txt.Checked = bool.Parse(strVal);
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        //时间
                        if (colType is DateTimePicker)
                        {
@@ -469,7 +468,6 @@
                            txt.Enabled = !isEdt;
                            continue;
                        }
                        //Label
                        if (colType is Label)
                        {
@@ -552,7 +550,6 @@
                                txt.Enabled = false;
                            continue;
                        }
                        //自定客户
                        if (colType is UcLookCustomer)
                        {
@@ -586,11 +583,99 @@
                                txt.Enabled = false;
                            continue;
                        }
                        //自定用户
                        if (colType is UcLookUser)
                        {
                            var txt = colType as UcLookUser;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定打印机
                        if (colType is UcLookPrint)
                        {
                            var txt = colType as UcLookPrint;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定缺陷类别
                        if (colType is UcLookDefectType)
                        {
                            var txt = colType as UcLookDefectType;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定部门
                        if (colType is UcLookDepartment)
                        {
                            var txt = colType as UcLookDepartment;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定daa
                        if (colType is UcLookDaa)
                        {
                            var txt = colType as UcLookDaa;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定委外
                        if (colType is UcLookWwgd)
                        {
                            var txt = colType as UcLookWwgd;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定销售
                        if (colType is UcLookSales)
                        {
                            var txt = colType as UcLookSales;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        if (colType is SimpleButton)
                        {
                            var txt = colType as SimpleButton;
                            txt.Enabled = !isEdt;
                            continue;
                        }
                        //自定不良
                        if (colType is UcDictionary)
                        {
                            var txt = colType as UcDictionary;
                            txt.TextTxt = (strVal);
                            //if (txt.IsReadly == false)
                            //    txt.Enabled = !isEdt;
                            //else
                            //    txt.Enabled = false;
                            continue;
                        }
                    }
@@ -598,6 +683,18 @@
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            foreach (Control ctrl in controls)
            {
                if (ctrl is TextEdit)
                {
                    var txt = ctrl as TextEdit;
                    bool _bl = _isRead(txt.Tag, isEdt);
                    txt.ReadOnly = _bl;
                    // txt.ReadOnly = isEdt;
                    continue;
                }
            }
        }
@@ -613,32 +710,51 @@
        {
            isEdt = !isEdt;
            if (gridViews != null)
            {
                foreach (var gv in gridViews)
                {
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        colmn.OptionsColumn.AllowEdit = true;
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            //  colmn.Visible = !isEdt;
                            //  break;
                            colmn.OptionsColumn.AllowEdit = true;
                            colmn.Visible = !isEdt;
                        }
                        else
                            colmn.OptionsColumn.AllowEdit = !isEdt;
                        {
                            if (isEdt == false)
                            {
                                if (colmn.Tag != null && colmn.Tag.ToString().EndsWith("edit"))
                                    colmn.OptionsColumn.ReadOnly = isEdt;
                                else
                                    colmn.OptionsColumn.ReadOnly = !isEdt;
                            }
                            else
                                colmn.OptionsColumn.ReadOnly = isEdt;
                        }
                    }
                    //gv.OptionsBehavior.Editable = !isEdt;
                }
            }
            foreach (Control ctrl in controls)
            {
                //多行文本
                if (ctrl is MemoEdit)
                {
                    var txt = ctrl as MemoEdit;
                    txt.Text = "";
                    txt.ReadOnly = isEdt;
                    if (txt.Tag != null && txt.Tag.ToString().Length > 0 && txt.Tag.ToString().StartsWith("moren"))
                    {
                        txt.Text = txt.Tag.ToString().Replace("moren.", "");
                    }
                    else
                        txt.Text = "";
                    if (_isRead(txt.Tag))
                    {
                        txt.ReadOnly = true;
                    }
                    else
                        txt.ReadOnly = isEdt;
                    continue;
                }
                //下拉
                if (ctrl is ComboBoxEdit)
                {
@@ -651,7 +767,6 @@
                    txt.ReadOnly = isEdt;
                    continue;
                }
                //自定义的下拉
                if (ctrl is UcComBox)
                {
@@ -660,21 +775,22 @@
                    txt.Enabled = !isEdt;
                    continue;
                }
                //文本
                if (ctrl is TextEdit)
                {
                    var txt = ctrl as TextEdit;
                    txt.Text = "";
                    txt.ReadOnly = isEdt;
                    continue;
                }
                if (ctrl is MemoEdit)
                {
                    var txt = ctrl as MemoEdit;
                    if (txt != null)
                    if (txt.Tag != null && txt.Tag.ToString().Length > 0 && txt.Tag.ToString().StartsWith("moren"))
                    {
                        txt.Text = txt.Tag.ToString().Replace("moren.", "");
                    }
                    else
                        txt.Text = "";
                    txt.ReadOnly = isEdt;
                    if (_isRead(txt.Tag))
                    {
                        txt.ReadOnly = true;
                    }
                    else
                        txt.ReadOnly = isEdt;
                    continue;
                }
                //时间
@@ -688,16 +804,20 @@
                if (ctrl is CheckBox)
                {
                    var txt = ctrl as CheckBox;
                    txt.Checked = false;
                    txt.Enabled = !isEdt;
                    txt.Checked = false;
                }
                if (ctrl is CheckEdit)
                {
                    var txt = ctrl as CheckEdit;
                    txt.ReadOnly = isEdt;
                    if (_isRead(txt.Tag))
                    {
                        txt.ReadOnly = true;
                    }
                    else
                        txt.ReadOnly = isEdt;
                    continue;
                }
                //自定义仓库
                if (ctrl is UcLookCk)
                {
@@ -770,13 +890,68 @@
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定用户
                if (ctrl is UcLookUser)
                {
                    var txt = ctrl as UcLookUser;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定打印机
                if (ctrl is UcLookPrint)
                {
                    var txt = ctrl as UcLookPrint;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定缺陷类别
                if (ctrl is UcLookDefectType)
                {
                    var txt = ctrl as UcLookDefectType;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定部门
                if (ctrl is UcLookDepartment)
                {
                    var txt = ctrl as UcLookDepartment;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定daa
                if (ctrl is UcLookDaa)
                {
                    var txt = ctrl as UcLookDaa;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定委外
                if (ctrl is UcLookWwgd)
                {
                    var txt = ctrl as UcLookWwgd;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定销售
                if (ctrl is UcLookSales)
                {
                    var txt = ctrl as UcLookSales;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                if (ctrl is SimpleButton)
                {
                    var txt = ctrl as SimpleButton;
                    txt.Enabled = !isEdt;
                    continue;
                }
            }
        }
@@ -791,34 +966,49 @@
        {
            isEdt = !isEdt;
            if (gridViews != null)
            {
                foreach (var gv in gridViews)
                {
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        colmn.OptionsColumn.AllowEdit = true;
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            //  colmn.Visible = !isEdt;
                            //  break;
                            colmn.OptionsColumn.AllowEdit = true;
                            colmn.Visible = !isEdt;
                        }
                        else
                            colmn.OptionsColumn.AllowEdit = !isEdt;
                        {
                            if (colmn.Tag != null && colmn.Tag.ToString().EndsWith("edit"))
                                colmn.OptionsColumn.ReadOnly = isEdt;
                            else
                                colmn.OptionsColumn.ReadOnly = isEdt;
                        }
                    }
                    //gv.OptionsBehavior.Editable = !isEdt;
                }
            }
            foreach (Control ctrl in controls)
            {
                //文本
                if (ctrl is TextEdit)
                {
                    var txt = ctrl as TextEdit;
                    txt.ReadOnly = isEdt;
                    if (_isRead(txt.Tag))
                    {
                        txt.ReadOnly = true;
                    }
                    else
                        txt.ReadOnly = isEdt;
                    continue;
                }
                if (ctrl is MemoEdit)
                {
                    var txt = ctrl as MemoEdit;
                    txt.ReadOnly = isEdt;
                    if (_isRead(txt.Tag))
                    {
                        txt.ReadOnly = true;
                    }
                    else
                        txt.ReadOnly = isEdt;
                    continue;
                }
                //数字卡
@@ -947,28 +1137,159 @@
                        txt.Enabled = false;
                    continue;
                }
                //自定用户
                if (ctrl is UcLookUser)
                {
                    var txt = ctrl as UcLookUser;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定打印
                if (ctrl is UcLookPrint)
                {
                    var txt = ctrl as UcLookPrint;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定缺陷类别
                if (ctrl is UcLookDefectType)
                {
                    var txt = ctrl as UcLookDefectType;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定部门
                if (ctrl is UcLookDepartment)
                {
                    var txt = ctrl as UcLookDepartment;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定daa
                if (ctrl is UcLookDaa)
                {
                    var txt = ctrl as UcLookDaa;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定委外
                if (ctrl is UcLookWwgd)
                {
                    var txt = ctrl as UcLookWwgd;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定销售
                if (ctrl is UcLookSales)
                {
                    var txt = ctrl as UcLookSales;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                if (ctrl is SimpleButton)
                {
                    var txt = ctrl as SimpleButton;
                    txt.Enabled = !isEdt;
                    continue;
                }
            }
        }
        /// <summary>
        ///     切换选项卡
        /// </summary>
        /// <param name="tabControl">选项卡容器</param>
        /// <param name="idx">从0开始,如果是999,则全部可用</param>
        public static void JumpToTab(XtraTabControl tabControl, int idx)
        private static bool _isRead(object obj, bool isEdt = false)
        {
            if (idx == 999)
            ///永远是只读的
            if (obj != null && obj.ToString().ToUpper() == ("readOnly".ToUpper()))
            {
                for (var i = 0; i < tabControl.TabPages.Count; i++)
                    tabControl.TabPages[i].PageEnabled = true;
                tabControl.SelectedTabPageIndex = tabControl.TabPages.Count - 1;
                return true;
            }
            ///永远是可写的
            if (obj != null && obj.ToString().ToUpper() == ("readOnly-1".ToUpper()))
            {
                return false;
            }
            return isEdt;
        }
        /// <summary>
        /// tab跳转:0查看,1退出,2删除,3修改,4新增加,6保存后
        /// </summary>
        /// <param name="tabControl"></param>
        /// <param name="idx">0查看,1退出,2删除,3修改,4新增加,6保存后</param>
        public static void JumpTab(XtraTabControl tabControl, int action)
        {
            if (action == 0)
            {
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 1;
                return;
            }
            if (action == 1)
            {
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 0;
                return;
            }
            if (action == 2)
            {
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 0;
                return;
            }
            if (action == 3)
            {
                tabControl.TabPages[0].PageEnabled = false;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 1;
                return;
            }
            if (action == 4)
            {
                tabControl.TabPages[0].PageEnabled = false;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 1;
                return;
            }
            if (action == 5)
            {
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 1;
                return;
            }
            for (var i = 0; i < tabControl.TabPages.Count; i++)
                tabControl.TabPages[i].PageEnabled = false;
            tabControl.TabPages[idx].PageEnabled = true;
            tabControl.SelectedTabPageIndex = idx;
            if (action == 6)
            {
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                return;
            }
        }
        /// <summary>
@@ -1048,7 +1369,23 @@
            if (string.IsNullOrEmpty(str)) return Guid.Empty;
            return Guid.Parse(str);
        }
        public static decimal ToDecimal(string str)
        {
            try
            {
                return decimal.Parse(str);
            }
            catch (Exception)
            {
                return 0;
            }
        }
        public static decimal? GetDecimal(string s)
        {
            if (string.IsNullOrEmpty(s)) return null;
            return decimal.Parse(s);
        }
        public static int ToInt(string str)
        {
            try
@@ -1073,6 +1410,21 @@
                return 0;
            }
        }
        public static int ToBit(string str)
        {
            if (str.ToUpper() == "true".ToUpper())
                return 1;
            return 0;
        }
        public static bool ToBoole(string str)
        {
            if (str.ToUpper() == "true".ToUpper())
                return true;
            return false;
        }
        /// <summary>
        /// 读取grid的当前行
        /// </summary>
@@ -1212,7 +1564,6 @@
                    }
                }
            }
            return "";
        }
@@ -1238,7 +1589,6 @@
                    return rowGuid;
                }
            }
            return "";
        }
@@ -1256,7 +1606,7 @@
            GridView dgv = s as GridView;
            if (dgv != null)
            {
                if (dgv.GetSelectedRows() != null)
                if (dgv.GetSelectedRows() != null && dgv.GetSelectedRows().Count() > 0)
                {
                    var selectedRow = dgv.GetSelectedRows()[0]; // 获取第一个选中行的索引
                    if (selectedRow >= 0)
@@ -1264,30 +1614,93 @@
                        var checkStatus = dgv.GetRowCellValue(selectedRow, fileName).ToString(); // 获取指定列的值
                        btnChkIco.Text = checkStatus;
                        btnChkIco.Visible = true;
                        if (checkStatus == "1" || checkStatus.ToUpper() == true.ToString().ToUpper())
                        if (checkStatus == "1" || checkStatus.ToUpper() == true.ToString().ToUpper() || checkStatus == "已审核")
                        {
                            btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_check;
                            btnChkIco.Tag = "已审核";
                        }
                        else
                        {
                            btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_noCheck;
                            btnChkIco.Tag = "未审核";
                        }
                        btnChkIco.Anchor = AnchorStyles.Top | AnchorStyles.Right; // 靠右
                        btnChkIco.Location = new Point(fm.ClientSize.Width - btnChkIco.Width - 20, 80); // 距离顶部10像素
                        btnChkIco.Location = new Point(fm.ClientSize.Width - btnChkIco.Width - 20, 25); // 距离顶部10像素
                    }
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="gridView1"></param>
        /// <param name="zdChk">chk字段</param>
        /// <param name="zdChkUser">chk user</param>
        /// <param name="zdCkDate">chk date</param>
        /// <param name="btnChkIco"></param>
        /// <param name="fm">当前窗体</param>
        /// <param name="fileName">1为审核,0为反审核</param>
        /// <param name="icoName"></param>
        public static void SetCheckIco(GridView gridView1, string zdChk, string zdChkUser, string zdCkDate, PictureBox btnChkIco, Form fm, string fileName, string icoName = "")
        {
            btnChkIco.Anchor = AnchorStyles.Top | AnchorStyles.Right; // 靠右
            btnChkIco.Location = new Point(fm.ClientSize.Width - btnChkIco.Width - 20, 80); // 距离顶部10像素
            if (gridView1 == null)
            {
                btnChkIco.Visible = true;
                if (fileName == "1")
                {
                    btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_check;
                    btnChkIco.Tag = "已审核";
                }
                else
                {
                    btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_noCheck;
                    btnChkIco.Tag = "未审核";
                }
                return;
            }
            if (fileName == "1" || fileName.ToUpper() == true.ToString().ToUpper())
            {
                btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_check;
                btnChkIco.Tag = "已审核";
                if (!string.IsNullOrEmpty(zdChkUser))
                    gridView1.SetFocusedRowCellValue(zdChkUser, "已审核");
                if (!string.IsNullOrEmpty(zdCkDate))
                    gridView1.SetFocusedRowCellValue(zdCkDate, DateTime.Now.ToString());
                if (!string.IsNullOrEmpty(zdChk))
                    gridView1.SetFocusedRowCellValue(zdChk, true);
            }
            else
            {
                btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_noCheck;
                btnChkIco.Tag = "未审核";
                if (!string.IsNullOrEmpty(zdChkUser))
                    gridView1.SetFocusedRowCellValue(zdChkUser, "");
                if (!string.IsNullOrEmpty(zdCkDate))
                    gridView1.SetFocusedRowCellValue(zdCkDate, "");
                if (!string.IsNullOrEmpty(zdChk))
                    gridView1.SetFocusedRowCellValue(zdChk, false);
            }
        }
        #region 设置搜索
        public static string getQueryWord(string str)
        public static FilterEntity getFilterEntityWord(string id, string idDec, string val, string type)
        {
            return str.ToUpper().Replace("query_".ToUpper(), "");
            return new FilterEntity(id, idDec + ")", " like ", "包含)", "%" + val + "%", type);
        }
        public static FilterEntity getFilterEntityWord(string id, string idDec, string val)
        {
            return new FilterEntity(getQueryWord(id), idDec + ")", " like ", "包含)", "%" + val + "%");
        }
        public static List<FilterEntity> GetDilter(GridColumnCollection Columns)
        public static List<FilterEntity> GetDilter(GridColumnCollection Columns, GridView gridView1 = null)
        {
            List<FilterEntity> fiList = new List<FilterEntity>();
            if (gridView1 != null)
            {
                bool b = gridView1.ActiveFilterEnabled;
                if (b == false)
                    return fiList;
            }
            foreach (DevExpress.XtraGrid.Columns.GridColumn col in Columns)
            {
                ColumnFilterInfo filter = col.FilterInfo;
@@ -1296,7 +1709,7 @@
                //  fiList.Add(new FilterEntity("b.FNumber", "使用组织", " like ", "包含", "%" + filter.Value + "%"));
                string[] ddd = filter.FilterString.Replace("Contains", "").Replace("(", "").Replace(")", "").Replace("'", "").Replace("'", "").Split(',');
                //Contains([fSubsidiary], '005')
                fiList.Add(getFilterEntityWord(col.Tag.ToString(), col.Caption.Trim(), ddd[1].Trim()));
                fiList.Add(getFilterEntityWord(col.Tag.ToString(), col.Caption.Trim(), ddd[1].Trim(), col.UnboundExpression));
            }
            return fiList;
        }
@@ -1321,32 +1734,86 @@
                    }
                }
                else
                    _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" +
                                      itm.fileValue + "'");
                {
                    switch (itm.fileType)
                    {
                        case "时间类型":
                            _sbSqlWhere.Append(" and CONVERT(nvarchar(30)," + itm.fileId + ",23)" + itm.fileOper + "'" + itm.fileValue + "'");
                            break;
                        //case "数值类型":
                        //    _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'");
                        //    break;
                        default:
                            _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'");
                            break;
                    }
                }
            }
            return _sbSqlWhere.ToString();
        }
        public delegate void DelegateGetModel(string guid);
        public delegate void DelegateGetList(int currentPage);
        /// <summary>
        /// 初始化gridview
        /// 设置主表的样式
        /// </summary>
        /// <param name="gridView1"></param>
        public static void SetGridSear(GridView gridView1)
        /// <param name="gridView1">gridview</param>
        /// <param name="picCheckBox">图标按钮</param>
        /// <param name="fm"></param>
        /// <param name="fileName">字段</param>
        /// <param name="icoName">图标路径</param>
        /// <param name="action"></param>
        public static void SetGridViewParameter(GridView gridView1, PictureBox picCheckBox = null, Form fm = null, string fileName = "checkStatus", string icoName = "", DelegateGetModel action = null)
        {
            gridView1.PopupMenuShowing += (s, e) =>
            {
                if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
                {
                    GridViewColumnMenu menu = e.Menu as GridViewColumnMenu;
                    if (menu != null)
                    {
                        string[] ary = { "Column Chooser", "Hide This Column", "Clear All Sorting", "Clear Sorting", "Sort Descending", "Sort Ascending", "Best Fit (all columns)" };
                        for (int i = menu.Items.Count - 1; i >= 0; i--)
                        {
                            string _caption = menu.Items[i].Caption;
                            if (!ary.Contains(_caption))
                            {
                                menu.Items.Remove(menu.Items[i]);
                            }
                        }
                    }
                }
            };
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.OptionsCustomization.AllowGroup = false;
            // gridView1.Appearance.HeaderPanel.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.ControlText;
            gridView1.OptionsView.ColumnAutoWidth = false;//自动调整列宽
            foreach (GridColumn column in gridView1.Columns)
            {
                column.OptionsFilter.AutoFilterCondition = AutoFilterCondition.Contains;
                column.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
                column.OptionsColumn.AllowEdit = true;
                // column.OptionsFilter.AutoFilterCondition = AutoFilterCondition.Contains;
                column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains;
                column.OptionsFilter.ImmediateUpdateAutoFilter = false;
                column.OptionsColumn.AllowEdit = false;
                if (column.Tag == null || column.Tag.ToString().EndsWith("edit"))
                    column.OptionsColumn.ReadOnly = false;
                else
                    column.OptionsColumn.ReadOnly = true;
                if (column.Tag == null || column.Tag.ToString().Length <= 0)
                    column.OptionsFilter.AllowAutoFilter = false;
            }
            gridView1.OptionsFilter.AllowAutoFilterConditionChange = DevExpress.Utils.DefaultBoolean.False;
            gridView1.OptionsView.ShowAutoFilterRow = true;
            gridView1.OptionsFilter.AllowFilterEditor = false;
            gridView1.OptionsFilter.ShowCustomFunctions = DevExpress.Utils.DefaultBoolean.False;
            gridView1.OptionsFilter.AllowColumnMRUFilterList = false;
            gridView1.OptionsFilter.AllowMRUFilterList = false;
            gridView1.OptionsCustomization.AllowFilter = false;
            gridView1.OptionsFind.ShowSearchNavButtons = false;
            gridView1.OptionsView.ShowAutoFilterRow = true;
            gridView1.OptionsView.ShowGroupPanel = false;
            //是否显示底部的过滤条
            // gridView1.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;
            gridView1.IndicatorWidth = 50;
            gridView1.CustomDrawRowIndicator += (s, e) =>
            {
@@ -1361,41 +1828,224 @@
                    e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5);
                e.Graphics.DrawString(str, f, Brushes.Gray, r);
            };
            if (picCheckBox != null)
            {
                gridView1.FocusedRowChanged += (s, e) =>
                {
                    UtilityHelper.SetCheckIco(s, picCheckBox, fm, fileName, icoName);
                };
            }
            if (action != null)
            {
                gridView1.ShownEditor += (sender, e) =>
                {
                    DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
                    view.ActiveEditor.DoubleClick += (ssssss, eeeeeee) =>
                    {
                        int _handle = gridView1.FocusedRowHandle;
                        if (_handle == -1)
                            return;
                        DataRow row = gridView1.GetDataRow(_handle);
                        if (row == null)
                            return;
                        string _guid = row["guid"].ToString();
                        if (string.IsNullOrEmpty(_guid))
                            return;
                        action(_guid);
                    };
                    if (view.ActiveEditor is TextEdit)
                        view.ActiveEditor.MouseUp += ActiveEditor_MouseUp;
                };
            }
            gridView1.RowStyle += (s, e) =>
            {
                //默认选中行不变色
                gridView1.OptionsSelection.EnableAppearanceFocusedRow = false;
                //默认选中单元格不变色
                gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
                if (e.RowHandle >= 0)
                {
                    DataRow row = gridView1.GetDataRow(e.RowHandle);
                    if (row == null)
                        return;
                    bool columnExists = row.Table.Columns.Contains("isRed");
                    if (columnExists == true)
                    {
                        string _isRed = row["isRed"].ToString();
                        if (_isRed == "1")
                        {
                            e.Appearance.ForeColor = Color.Tomato;
                        }
                    }
                    // 设置焦点行的背景色
                    if (gridView1.GetRow(e.RowHandle) == gridView1.GetFocusedRow())
                    {
                        e.Appearance.BackColor = Color.Azure;
                        e.Appearance.BackColor2 = Color.LightSkyBlue;
                    }
                    //else if (gridView1.IsRowHotTracked(e.RowHandle))
                    //{
                    //    // 设置鼠标悬停行的背景色
                    //    e.Appearance.BackColor = Color.LightBlue;
                    //    e.Appearance.BackColor2 = Color.LightBlue;
                    //}
                }
            };
        }
        #endregion
        private static void ActiveEditor_MouseUp(object sender, MouseEventArgs e)
        {
            BaseEdit edit = sender as BaseEdit;
            edit.MouseUp -= ActiveEditor_MouseUp;
            edit.SelectAll();
        }
        public static void SetGridLayout(GridView gridView1)
        {
            foreach (GridColumn column in gridView1.Columns)
            {
                if (column.Width > 500)
                    column.Width = 500;
            }
        }
        /// <summary>
        /// 设置选项卡
        /// </summary>
        /// <param name="gridView1"></param>
        /// <param name="xtraTabControl1"></param>
        /// <param name="pageBar1"></param>
        /// <param name="action"></param>
        /// <param name="page"></param>
        public static void SetTabParameter(GridView gridView1, DevExpress.XtraTab.XtraTabControl xtraTabControl1, UcPageBar pageBar1, DelegateGetModel action = null, DelegateGetList page = null,Label lbGuid=null)
        {
            xtraTabControl1.SelectedPageChanged += (s, e) =>
            {
                if (xtraTabControl1.SelectedTabPageIndex == 1)
                {
                    int _handle = gridView1.FocusedRowHandle;
                    bool _bl = xtraTabControl1.TabPages[0].PageEnabled;
                    if (_bl == false) { return; };
                    if (_handle < 0)
                    {
                        xtraTabControl1.SelectedTabPageIndex = -1;
                        Gs.DevApp.ToolBox.MsgHelper.ShowInformation("请选择你要显示的行!" + _handle.ToString() + "tag" + xtraTabControl1.SelectedTabPageIndex.ToString());
                        return;
                    }
                    DataRow row = gridView1.GetDataRow(_handle);
                    if (row == null)
                    {
                        xtraTabControl1.SelectedTabPageIndex = -1;
                        Gs.DevApp.ToolBox.MsgHelper.ShowInformation("请选择你要显示的行!" + _handle.ToString());
                        return;
                    }
                    string _guid = row["guid"].ToString();
                    if (string.IsNullOrEmpty(_guid))
                    {
                        xtraTabControl1.SelectedTabPageIndex = -1;
                        Gs.DevApp.ToolBox.MsgHelper.ShowInformation("请选择你要显示的行!" + _handle.ToString());
                        return;
                    }
                    action(_guid);
                }
                if (xtraTabControl1.SelectedTabPageIndex == 0)
                {
                    page(pageBar1.CurrentPage);
                    int rowHandle = 0;
                    rowHandle = gridView1.LocateByValue(1, gridView1.Columns["guid"], lbGuid.Text);
                    if (rowHandle < 0)
                        rowHandle = 0;
                    gridView1.FocusedRowHandle = rowHandle ;
                }
            };
        }
        /// <summary>
        /// 设置明细grid样式
        /// </summary>
        /// <param name="gridView1"></param>
        /// <param name="btnChkIco"></param>
        /// <param name="fm"></param>
        /// <param name="fileName"></param>
        /// <param name="icoName"></param>
        public static void SetGridViewParameterMx(GridView gridView1)
        {
            gridView1.PopupMenuShowing += (s, e) =>
            {
                if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
                {
                    GridViewColumnMenu menu = e.Menu as GridViewColumnMenu;
                    if (menu != null)
                    {
                        string[] ary = { "Column Chooser", "Hide This Column", "Clear All Sorting", "Clear Sorting", "Sort Descending", "Sort Ascending", "Best Fit (all columns)" };
                        for (int i = menu.Items.Count - 1; i >= 0; i--)
                        {
                            string _caption = menu.Items[i].Caption;
                            if (!ary.Contains(_caption))
                            {
                                menu.Items.Remove(menu.Items[i]);
                            }
                        }
                    }
                }
            };
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.OptionsCustomization.AllowGroup = false;
            // gridView1.OptionsView.Alignment = DataGridViewContentAlignment.MiddleLeft;
            foreach (GridColumn column in gridView1.Columns)
            {
                // column.DefaultCellStyle.Alignment = true;
                column.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
            }
            gridView1.OptionsView.ColumnAutoWidth = false;//自动调整列宽
            gridView1.OptionsFilter.AllowFilterEditor = false;
            gridView1.OptionsFilter.ShowCustomFunctions = DevExpress.Utils.DefaultBoolean.False;
            gridView1.OptionsCustomization.AllowFilter = false;
            gridView1.OptionsFind.ShowSearchNavButtons = false;
            gridView1.OptionsView.ShowAutoFilterRow = false;
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.IndicatorWidth = 40;
            gridView1.CustomDrawRowIndicator += (s, e) =>
            {
                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
            };
            gridView1.CustomDrawEmptyForeground += (s, e) =>
            {
                var str = "暂无明细数据!";
                var f = new Font("微软雅黑", 16);
                var r = new Rectangle(gridView1.GridControl.Width / 2 - 100,
                    e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5);
                e.Graphics.DrawString(str, f, Brushes.Gray, r);
            };
            gridView1.ValidatingEditor += (sender, e) =>
            {
                //yz_quantity_0
                GridView view = sender as GridView;
                if (view.FocusedColumn.Tag != null && view.FocusedColumn.Tag.ToString().StartsWith("yz_"))
                {
                    string[] _ary = view.FocusedColumn.Tag.ToString().Split('_');
                    if (_ary.Length > 2)
                    {
                        if (_ary[2] == "0")
                        {
                            double price = 0; if (!Double.TryParse(e.Value as String, out price))
                            { e.Valid = false; e.ErrorText = "请输入正确的数字."; }
                            return;
                        }
                    }
                }
            };
        }
        #endregion
        public static bool IsNumeric(string str)
        {
            Regex regex = new Regex("^[0-9]+$");
            return regex.IsMatch(str);
        }
        /// <summary>
        /// yz_quantity_0,yz_字段_类型
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void SetValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e)
        {
            //yz_quantity_0
            GridView view = sender as GridView;
            if (view.FocusedColumn.Tag != null && view.FocusedColumn.Tag.ToString().StartsWith("yz_"))
            {
                string[] _ary = view.FocusedColumn.Tag.ToString().Split('_');
                if (_ary.Length > 2)
                {
                    if (_ary[2] == "0")
                    {
                        double price = 0; if (!Double.TryParse(e.Value as String, out price))
                        { e.Valid = false; e.ErrorText = "请输入正确的数字."; }
                        return;
                    }
                }
            }
        }
    }
    /// <summary>
@@ -1407,10 +2057,11 @@
        {
        }
        public CboItemEntity(string val, string text)
        public CboItemEntity(string val, string text, string fType = "")
        {
            Text = text;
            Value = val;
            FType = fType;
        }
        /// <summary>
@@ -1422,6 +2073,8 @@
        ///     对象值
        /// </summary>
        public object Value { get; set; } = "";
        public object FType { get; set; } = "";
        public override string ToString()
        {
@@ -1443,13 +2096,14 @@
        /// <param name="operDec">操作符备注</param>
        /// <param name="val"></param>
        public FilterEntity(string id, string idDec, string oper,
            string operDec, string val)
            string operDec, string val, string type)
        {
            fileId = id;
            fileIdDec = idDec;
            fileOper = oper;
            fileOperDec = operDec;
            fileValue = val;
            fileType = type;
        }
        public string fileId { get; set; }
@@ -1461,5 +2115,7 @@
        public string fileOperDec { get; set; }
        public string fileValue { get; set; }
        public string fileType { get; set; }
    }
}