From 00ab1b5282ada6ffdc78b3dd46f0ce08726a51e6 Mon Sep 17 00:00:00 2001
From: qin <a@163.com>
Date: 星期四, 20 三月 2025 13:47:24 +0800
Subject: [PATCH] 优化IBox界面

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs |  162 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 103 insertions(+), 59 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
index 9214e30..cea843b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
@@ -1,11 +1,9 @@
-锘縰sing DevExpress.Utils.MVVM;
-using DevExpress.XtraBars;
+锘縰sing DevExpress.XtraBars;
 using DevExpress.XtraEditors;
 using DevExpress.XtraEditors.Controls;
 using DevExpress.XtraEditors.Repository;
 using DevExpress.XtraLayout.Utils;
 using DevExpress.XtraVerticalGrid.Events;
-using Yw.Model;
 
 namespace Yw.WinFrmUI
 {
@@ -43,10 +41,8 @@
         /// 鍒嗙骇灞炴�у�兼敼鍙樹簨浠�
         /// </summary>
         public event Action<HydroVisualViewModel> GradingPropertyValueChangedEvent;
-        /// <summary>
-        /// 姘存祦鍔ㄧ敾灞炴�у�兼敼鍙樹簨浠�
-        /// </summary>
-        public event Action<HydroVisualViewModel> FlowEffectPropertyValueChangedEvent;
+
+
         /// <summary>
         /// 寮鸿皟杩炴帴鑺傜偣浜嬩欢
         /// 绗竴涓弬鏁颁负鏈韩Code
@@ -58,6 +54,21 @@
         /// </summary>
         public event Action<HydroVisualViewModel> HydroViewEvent;
 
+        private HydroChangeHelper _changeHelper = null;//鏀瑰彉杈呭姪绫�
+        private HydroPropStatusHelper _propStatusHelper = null;//灞炴�х姸鎬佽緟鍔╃被
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public void InitialData
+            (
+                HydroChangeHelper changeHelper,
+                HydroPropStatusHelper propStatusHelper
+            )
+        {
+            _changeHelper = changeHelper;
+            _propStatusHelper = propStatusHelper;
+        }
 
         /// <summary>
         /// 鍏佽淇敼
@@ -191,10 +202,10 @@
             var vm = GetPropertyViewModel(e.Row);
             if (vm != null)
             {
-                var propStatus = vm.GetPropStatus(realFieldName);
-                if (propStatus != null)
+                var propStatusInfo = _propStatusHelper?.GetPropStatusInfo(vm.Code, realFieldName);
+                if (propStatusInfo != null)
                 {
-                    e.Appearance.ForeColor = HydroPropStatusHelper.GetColor(propStatus.PropStatus);
+                    e.Appearance.ForeColor = HydroPropStatusColorHelper.GetColor(propStatusInfo.PropStatus);
                 }
             }
         }
@@ -214,6 +225,15 @@
             if (fullTypeName == typeof(DateTime).FullName)
             {
                 e.CellText = ((DateTime)e.Properties.Value).ToString("yyyy-MM-dd HH:mm:ss");
+            }
+            else if (fullTypeName == typeof(string[]).FullName)
+            {
+                var stringValue = (string[])e.Properties.Value;
+                e.CellText = stringValue?.Length.ToString();
+            }
+            else if (fullTypeName == typeof(DictionaryPropertyAdapter).FullName)
+            {
+                e.CellText = string.Empty;
             }
             else
             {
@@ -409,6 +429,7 @@
                 {
                     var buttonEdit = new RepositoryItemButtonEdit();
                     buttonEdit.TextEditStyle = TextEditStyles.DisableTextEditor;
+
                     buttonEdit.ButtonClick += async delegate
                     {
                         var vm = GetPropertyViewModel(e.Row);
@@ -429,6 +450,37 @@
                     e.RepositoryItem = buttonEdit;
                 }
             }
+
+            #endregion
+
+            #region 鍙傛暟
+
+            if (descriptor != null)
+            {
+                var parasProAttri = (HydroParasProAttribute)descriptor.Attributes[typeof(HydroParasProAttribute)];
+                if (parasProAttri != null)
+                {
+                    var buttonEdit = new RepositoryItemButtonEdit();
+                    buttonEdit.TextEditStyle = TextEditStyles.HideTextEditor;
+                    buttonEdit.ButtonClick += delegate
+                    {
+                        var vm = GetPropertyViewModel(e.Row);
+                        var dlg = new SetParasDlg();
+                        dlg.SetBindingData(vm.Vmo.Paras);
+                        dlg.ReloadDataEvent += (paras) =>
+                        {
+                            vm.Vmo.Paras = paras;
+                            vm.Paras = new DictionaryPropertyAdapter(paras);
+                            this.propertyGridControl1.UpdateRows();
+                            this.propertyGridControl1.RefreshEditor();
+                            this.PropertyValueChangedEvent?.Invoke(vm);
+                        };
+                        dlg.ShowDialog();
+                    };
+                    e.RepositoryItem = buttonEdit;
+                }
+            }
+
 
             #endregion
 
@@ -460,10 +512,6 @@
 
             if (vm is HydroValveViewModel valve)
             {
-                if (fieldName == nameof(HydroValveViewModel.ValveSetting))
-                {
-                    e.Row.Visible = false;
-                }
                 switch (valve.Vmo.ValveType)
                 {
                     case Yw.Hydro.ValveType.PSV:
@@ -476,11 +524,7 @@
                             {
                                 e.Row.Visible = false;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
-                            {
-                                e.Row.Visible = false;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
                                 e.Row.Visible = false;
                             }
@@ -496,11 +540,7 @@
                             {
                                 e.Row.Visible = false;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
-                            {
-                                e.Row.Visible = false;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
                                 e.Row.Visible = false;
                             }
@@ -516,11 +556,7 @@
                             {
                                 e.Row.Visible = false;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
-                            {
-                                e.Row.Visible = false;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
                                 e.Row.Visible = false;
                             }
@@ -536,11 +572,7 @@
                             {
                                 e.Row.Visible = true;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
-                            {
-                                e.Row.Visible = false;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
                                 e.Row.Visible = false;
                             }
@@ -556,11 +588,7 @@
                             {
                                 e.Row.Visible = false;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
-                            {
-                                e.Row.Visible = true;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
                                 e.Row.Visible = false;
                             }
@@ -576,13 +604,9 @@
                             {
                                 e.Row.Visible = false;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
                                 e.Row.Visible = false;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
-                            {
-                                e.Row.Visible = true;
                             }
                         }
                         break;
@@ -596,13 +620,9 @@
                             {
                                 e.Row.Visible = false;
                             }
-                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
+                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                             {
-                                e.Row.Visible = false;
-                            }
-                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
-                            {
-                                e.Row.Visible = false;
+                                e.Row.Visible = true;
                             }
                         }
                         break;
@@ -631,9 +651,18 @@
             }
             vm.UpdateVmoProperty();
             this.PropertyValueChangedEvent?.Invoke(vm);
+
+            var realFieldName = fieldName;
             var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
             if (descriptor != null)
             {
+                //鐪熷疄灞炴�у悕绉�
+                var realPropAttri = (HydroRealProAttribute)descriptor.Attributes[typeof(HydroRealProAttribute)];
+                if (realPropAttri != null)
+                {
+                    realFieldName = realPropAttri.RealPropName;
+                }
+
                 var hydroMarkPropAttri = descriptor.Attributes[typeof(HydroMarkProAttribute)];
                 if (hydroMarkPropAttri != null)
                 {
@@ -646,13 +675,10 @@
                     this.GradingPropertyValueChangedEvent?.Invoke(vm);
                 }
 
-                var hydroFlowDirectionPropAttri = descriptor.Attributes[typeof(HydroFlowDirectionProAttribute)];
-                if (hydroFlowDirectionPropAttri != null)
-                {
-                    this.FlowEffectPropertyValueChangedEvent?.Invoke(vm);
-                }
                 this.propertyGridControl1.UpdateRows();
             }
+            _changeHelper?.Append(vm.Vmo, eChangeType.Update);
+            _propStatusHelper?.UpdatePropStatus(vm.Code, realFieldName, Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃灞炴�ф帶浠朵慨鏀�");
         }
 
         //Db鍖归厤
@@ -682,6 +708,9 @@
                 link.EndCode = tempCode;
                 link.UpdateVmoProperty();
 
+                _propStatusHelper?.UpdatePropStatus(link.Code, nameof(link.Vmo.StartCode), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}璋冩暣涓婁笅娓�");
+                _propStatusHelper?.UpdatePropStatus(link.Code, nameof(link.Vmo.EndCode), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}璋冩暣涓婁笅娓�");
+
                 var translation = this.SelectedObject as HydroTranslationViewModel;
                 if (translation != null)
                 {
@@ -689,6 +718,8 @@
                     translation.StartDiameter = translation.EndDiameter;
                     translation.EndDiameter = tempDiameter;
                     translation.UpdateVmoProperty();
+                    _propStatusHelper?.UpdatePropStatus(translation.Code, nameof(translation.Vmo.StartDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}璋冩暣涓婁笅娓�");
+                    _propStatusHelper?.UpdatePropStatus(translation.Code, nameof(translation.Vmo.EndDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}璋冩暣涓婁笅娓�");
                 }
 
                 var pump = this.SelectedObject as HydroPumpViewModel;
@@ -698,7 +729,11 @@
                     pump.InletDiameter = pump.OutletDiameter;
                     pump.OutletDiameter = tempDiameter;
                     pump.UpdateVmoProperty();
+                    _propStatusHelper?.UpdatePropStatus(pump.Code, nameof(pump.Vmo.InletDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}璋冩暣涓婁笅娓�");
+                    _propStatusHelper?.UpdatePropStatus(pump.Code, nameof(pump.Vmo.OutletDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}璋冩暣涓婁笅娓�");
                 }
+
+                _changeHelper?.Append(link.Vmo, eChangeType.Update);
 
                 this.propertyGridControl1.UpdateRows();
             }
@@ -755,7 +790,7 @@
 
             string caption = string.Empty;
             string descrition = string.Empty;
-
+            string realFieldName = fieldName;
 
 
             //灞炴�ф弿杩板櫒
@@ -775,10 +810,17 @@
                 {
                     descrition = descritionAttri.Description;
                 }
+
+                //鐪熷疄灞炴�у悕绉�
+                var realPropAttri = (HydroRealProAttribute)descriptor.Attributes[typeof(HydroRealProAttribute)];
+                if (realPropAttri != null)
+                {
+                    realFieldName = realPropAttri.RealPropName;
+                }
             }
 
-            var propStatus = vm.GetPropStatus(fieldName);
-            this.hydroVisualPropertyDescriptionCtrl1.SetBindingData(caption, descrition, propStatus);
+            var propStatusInfo = _propStatusHelper?.GetPropStatusInfo(vm.Code, realFieldName);
+            this.hydroVisualPropertyDescriptionCtrl1.SetBindingData(caption, descrition, propStatusInfo);
 
         }
 
@@ -820,12 +862,14 @@
             var dlg = new HydroCurveEditDlg();
             dlg.ReloadDataEvent += (rhs) =>
             {
-
+                _changeHelper?.Append(rhs, eChangeType.Update);
             };
             dlg.SetBindingData(curve);
             dlg.ShowDialog();
         }
 
 
+
+
     }
 }

--
Gitblit v1.9.3