From 33b5627e2d1092f6931165b7f9f1a16de65d765d Mon Sep 17 00:00:00 2001
From: Shuxia Ning <NingShuxia0927@outlook.com>
Date: 星期二, 17 十二月 2024 09:43:57 +0800
Subject: [PATCH] 曲线底层修改

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/00-core/CreateXhsSchemeDlg.cs |  258 +++++++++++++++++++++++++++++++++++----------------
 1 files changed, 178 insertions(+), 80 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/00-core/CreateXhsSchemeDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/00-core/CreateXhsSchemeDlg.cs
index e201172..0041f94 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/00-core/CreateXhsSchemeDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/00-core/CreateXhsSchemeDlg.cs
@@ -1,5 +1,5 @@
 锘縰sing DevExpress.XtraLayout.Utils;
-using HStation.WinFrmUI.Xhs.Core.Properties;
+using Mapster;
 
 namespace HStation.WinFrmUI
 {
@@ -9,14 +9,14 @@
         {
             InitializeComponent();
             this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
-
         }
 
-
         private readonly CreateXhsSchemeViewModel _vm = new();
-        private CreateXhsSchemeManager _wizard;
-         
+        private CreateXhsSchemeManager _wizard=null; 
 
+        private bool _initial_wizard_manager = false;//杩愯涓嬩竴姝�
+        private List<string> _change_type_list = null;
+ 
         /// <summary>
         ///
         /// </summary>
@@ -24,7 +24,38 @@
         {
             get { return _vm; }
         }
-          
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int SelectedPageIndex
+        {
+            get
+            {
+                return this.navigationFrameMain.SelectedPageIndex;
+            }
+            set
+            {
+                if (value == 0)
+                {
+                    _initial_wizard_manager = false;
+                    InitialButtonStatus(_change_type_list);
+                }
+                else
+                {
+                    _initial_wizard_manager = true;
+                    InitialWizardManager(_change_type_list);
+                }
+                this.navigationFrameMain.SelectedPageIndex = value;
+            }
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public event Action<HStation.Vmo.XhsSchemeVmo> ReloadDataEvent;
 
         /// <summary>
         ///
@@ -36,82 +67,143 @@
                 Yw.Model.HydroModelInfo hydro_info
             )
         {
+            this.itemForNext.Visibility = LayoutVisibility.Never;
+            this.itemForPrev.Visibility = LayoutVisibility.Never;
+            this.itemForComplete.Visibility = LayoutVisibility.Always;
+            this.itemForCancel.Visibility = LayoutVisibility.Always;
             if (project == null)
-            {
                 return;
-            }
             _vm.Project = project;
             _vm.ProjectSite = project_site;
-            _vm.HydroInfo = hydro_info;  
+            _vm.HydroInfo = hydro_info.Adapt<Yw.Model.HydroModelInfo>();
             _vm.ProjectSite ??= await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_vm.Project.ID);
             if (_vm.HydroInfo == null)
             {
                 var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
                     .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _vm.ProjectSite.ID, HStation.Xhs.Purpose.Simulation);
                 _vm.HydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
-            } 
-            _vm.AllSchemeList = await BLLFactory < HStation.BLL.XhsScheme>.Instance.GetBySiteID(_vm.ProjectSite.ID);
+            }
+            _vm.AllSchemeList = await BLLFactory<HStation.BLL.XhsScheme>.Instance.GetBySiteID(_vm.ProjectSite.ID);
+  
+            this.createXhsSchemeInfoPage1.InitialPage(_vm);
+            this.createXhsSchemeInfoPage1.ChangeTypeChangedEvent += (List<string> change_type_list) =>
+            {
+                _initial_wizard_manager = false;
+                _change_type_list = change_type_list;
+                InitialButtonStatus(change_type_list);
+            };
 
-            _wizard = new CreateXhsSchemeManager(_vm);
-            _wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent;
-            _wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent; ;
-            _wizard.InitialManager(new IWizardPage<CreateXhsSchemeViewModel>[] {
-                this.createXhsSchemeInfoPage1,
-                this.createXhsSchemePumpChangePage1,
-            });
-
-            this.createXhsSchemeInfoPage1.ChangeTypeChangedEvent += CreateXhsSchemeInfoPage1_ChangeTypeChangedEvent;
-
+            this.FormClosing += (s, e) =>
+            {
+                if (_wizard != null)
+                {
+                    if (this.DialogResult == DialogResult.OK)
+                    {
+                        if (!_wizard.Complete())
+                        {
+                            e.Cancel = true;
+                        }
+                    }
+                    else if (this.DialogResult == DialogResult.Cancel)
+                    {
+                        //if (!_wizard.Cancel())
+                        //{
+                        //    e.Cancel = true;
+                        //}
+                    }
+                    else
+                    {
+                        e.Cancel = true;
+                    }
+                }
+            };
+             
+        }
+         
+        //娣诲姞姝ラ椤�
+        private void AddStepProgressBarItem(string caption)
+        {
+            this.stepProgressBar1.BeginInit();
+            var item = new StepProgressBarItem();
+            item.ContentBlock2.Caption = caption;
+            item.Options.Indicator.ActiveStateDrawMode = IndicatorDrawMode.Full;
+            item.Options.Indicator.ActiveStateImageOptions.SvgImage = null;
+            item.Options.Indicator.InactiveStateImageOptions.SvgImage = null;
+            item.State = StepProgressBarItemState.Inactive;
+            this.stepProgressBar1.Items.Add(item);
+            this.stepProgressBar1.EndInit(); 
         }
 
-
-        //鍙樻洿绫诲瀷鍙樻崲
-        private void CreateXhsSchemeInfoPage1_ChangeTypeChangedEvent(List<string> change_type_list)
+        //鍒濆鍖栨寜閽姸鎬�
+        private void InitialButtonStatus(List<string> change_type_list)
         {
-            for (int i = this.stepProgressBar1.Items.Count; i > 0; i--)
-            {
-                if (this.stepProgressBar1.Items.Count < 2)
-                    break;
-                this.stepProgressBar1.Items.RemoveAt(1);
-            }
             if (change_type_list == null || !change_type_list.Any())
             {
-
+                this.itemForNext.Visibility = LayoutVisibility.Never;
+                this.itemForComplete.Visibility = LayoutVisibility.Always;
             }
             else
             {
-                foreach (var change_type in change_type_list)
-                {
-                    var name = HydroParterCatalogHelper.GetName(change_type);
-                    Add(name);
-                }
-                Add("鍙樻洿璁板綍");
+                this.itemForPrev.Visibility = LayoutVisibility.Never;
+                this.itemForNext.Visibility = LayoutVisibility.Always;
+                this.itemForComplete.Visibility = LayoutVisibility.Never;
+                this.itemForCancel.Visibility = LayoutVisibility.Always;
             }
-            //
-
         }
 
-        private void Add(string caption)
+        //鍒濆鍖栨楠ょ鐞嗗櫒
+        private void InitialWizardManager(List<string> change_type_list)
         {
-            var step_pb_item = new StepProgressBarItem();
-            step_pb_item.ContentBlock2.Caption = caption;
-            //step_pb_item.Name = "stepPbBasicInfo";
-            step_pb_item.Options.Indicator.ActiveStateDrawMode = IndicatorDrawMode.Full;
-            step_pb_item.Options.Indicator.ActiveStateImageOptions.SvgImage = null;
-            step_pb_item.Options.Indicator.InactiveStateImageOptions.SvgImage = null;
-            step_pb_item.State = StepProgressBarItemState.Inactive;
-            this.stepProgressBar1.Items.Add(step_pb_item);
+            if (change_type_list == null || !change_type_list.Any())
+                return;
+            var overlay = this.ShowOverlay();
+            this.stepProgressBar1.Items.Clear();
+            this.navigationFrameStep.Pages.Clear();
+            var page_list = new List<IWizardPage<CreateXhsSchemeViewModel>>();
+            if (change_type_list.Contains(Yw.Hydro.ParterCatalog.Pipe))
+            {
+                var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe);
+                AddStepProgressBarItem(caption);
+                page_list.Add(new CreateXhsSchemePipeChangePage());
+            }
+            if (change_type_list.Contains(Yw.Hydro.ParterCatalog.Pump))
+            {
+                var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump);
+                AddStepProgressBarItem(caption);
+                page_list.Add(new CreateXhsSchemePumpChangePage());
+            }
+            if (change_type_list.Contains(Yw.Hydro.ParterCatalog.Valve))
+            {
+                var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve);
+                AddStepProgressBarItem(caption);
+                page_list.Add(new CreateXhsSchemeValveChangePage());
+            }
+
+            AddStepProgressBarItem("鍙樻洿璁板綍");
+            page_list.Add(new CreateXhsSchemeChangeRecordPage());
+
+            foreach (var item in page_list)
+            {
+                var ctrl = item as XtraUserControl;
+                ctrl.Dock = DockStyle.Fill;
+                this.navigationFrameStep.AddPage(ctrl);
+            }
+
+            _wizard = new CreateXhsSchemeManager(_vm);
+            _wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent;
+            _wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent;
+            _wizard.InitialManager(page_list.ToArray());
+            overlay.Close();
         }
-
-
+         
         //閫夋嫨椤甸潰鏀瑰彉
         private void _wizard_SelectedPageChangedEvent(IWizardPage<CreateXhsSchemeViewModel> page, int index)
         {
             this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
             this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
             this.itemForCancel.Visibility = page.AllowCancel ? LayoutVisibility.Always : LayoutVisibility.Never;
-            this.itemForComplete.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
-            this.navigationFrame1.SelectedPageIndex = index;
+            this.itemForComplete.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never; 
+            this.navigationFrameStep.SelectedPageIndex = index; 
             this.stepProgressBar1.SelectedItemIndex = index;
         }
 
@@ -129,17 +221,35 @@
         {
             if (_wizard != null)
             {
-                _wizard.Prev();
+                if (_wizard.SelectedIndex == 0)
+                {  
+                    this.SelectedPageIndex = 0;
+                }
+                else
+                {
+                    _wizard.Prev();
+                }
             }
         }
 
         //涓嬩竴姝�
         private void btnNext_Click(object sender, EventArgs e)
         {
-            if (_wizard != null)
+            if (!_initial_wizard_manager)
             {
-                _wizard.Next();
+                if (this.createXhsSchemeInfoPage1.CanNext())
+                {
+                    this.SelectedPageIndex = 1;
+                }   
             }
+            else
+            {
+                if (_wizard != null)
+                {
+                    _wizard.Next();
+                }
+            }
+        
         }
 
         //鍙栨秷
@@ -154,49 +264,37 @@
                     this.Close();
                 }
             }
+
         }
 
         //瀹屾垚
         private void btnComplete_Click(object sender, EventArgs e)
         {
-            if (_wizard != null)
+            if (this.SelectedPageIndex == 0)
             {
-                var bol = _wizard.Complete();
-                if (bol)
+                if (this.createXhsSchemeInfoPage1.CanComplete())
                 {
+                    this.ReloadDataEvent?.Invoke(_vm.Scheme);
                     this.DialogResult = DialogResult.OK;
                     this.Close();
                 }
             }
-        }
-
-        //姝e湪鍏抽棴
-        private void CreateXhsSchemeDlg_FormClosing(object sender, FormClosingEventArgs e)
-        {
-            if (_wizard != null)
+            else
             {
-                if (this.DialogResult == DialogResult.OK)
+                if (_wizard != null)
                 {
-                    /*  if (!_wizard.Complete())
-                      {
-                          e.Cancel = true;
-                      }*/
-                }
-                else if (this.DialogResult == DialogResult.Cancel)
-                {
-                    if (!_wizard.Cancel())
+                    var bol = _wizard.Complete();
+                    if (bol)
                     {
-                        e.Cancel = true;
+                        this.ReloadDataEvent?.Invoke(_vm.Scheme);
+                        this.DialogResult = DialogResult.OK;
+                        this.Close();
                     }
-                }
-                else
-                {
-                    e.Cancel = true;
                 }
             }
         }
+         
 
-
-
+         
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3