From 046e8574ce28d1b8858f8d3619df5a28a2f51e38 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期三, 18 十二月 2024 13:59:40 +0800
Subject: [PATCH] 首页整改

---
 BLL/HStation.BLL.Assets.Core/01-interface/01-IPump/IPumpMain.cs                                                      |    5 
 Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs                                                |    9 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.cs                                      |   96 ++++
 BLL/HStation.BLL.Xhs.Core/04-bll/01-project/XhsProject.cs                                                            |    9 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.Designer.cs                             |  233 ++++++++++
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/exchanger.svg                                                       |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx                                                        |    6 
 Service/HStation.Service.Assets.Core/05-service/11-Exchanger/02-ExchangerMain/ExchangerMain.cs                       |    9 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/coupling.svg                                                        |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/elbow.svg                                                           |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user                                           |    3 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/flowmeter.svg                                                       |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/blunthead.svg                                                       |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/threelink.svg                                                       |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.Designer.cs                                   |  193 --------
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs                                                |    8 
 Service/HStation.Service.Assets.Core/05-service/03-Valve/02-ValveMain/ValveMain.cs                                   |    9 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleViewModel.cs                                 |   38 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/project.svg                                                            |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/emitter.svg                                                         |    2 
 Service/HStation.Service.Assets.Core/00-core/DataType.cs                                                             |   37 +
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/resistance.svg                                                      |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pump.svg                                                            |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/compressor.svg                                                      |    2 
 BLL/HStation.BLL.Assets.Core/04-bll/01-Pump/03-PumpMain/AssetsPumpMain.cs                                            |    9 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/valve.svg                                                           |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/translation.svg                                                     |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/meter.svg                                                           |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/nozzle.svg                                                          |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/DataSources/HStation.WinFrmUI.XhsProjectHomeTitleViewModel.datasource |   10 
 BLL/HStation.BLL.Xhs.Core/01-interface/01-project/IXhsProject.cs                                                     |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/tank.svg                                                            |    2 
 BLL/HStation.BLL.Assets.Core/01-interface/11-IExchanger/IExchangerMain.cs                                            |    5 
 BLL/HStation.BLL.Assets.Core/02-httpclient/22-cooling/02-main/AssetsCoolingSeries.cs                                 |    8 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pipe.svg                                                            |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/home.svg                                                               |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/fourlink.svg                                                        |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/instrument.svg                                                      |    2 
 BLL/HStation.BLL.Xhs.Core/03-localclient/01-project/XhsProject.cs                                                    |   11 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs                                                 |   20 
 Service/HStation.Service.Assets.Core/05-service/21-cooling/02-main/AssetsCoolingMain.cs                              |    9 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsFunctionHelper.cs                                                     |   24 +
 Service/HStation.Service.Assets.Core/05-service/01-Pump/03-PumpMain/PumpMain.cs                                      |    9 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj                                                |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/hydrant.svg                                                         |    2 
 BLL/HStation.BLL.Assets.Core/04-bll/11-Exchanger/01-AssetsExchangerMain/AssetsExchangerMain.cs                       |    9 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/cooling.svg                                                         |    2 
 Application/HStation.Application.Assets.Core/22-cooling/02-main/AssetsCoolingMain_Controller.cs                      |   10 
 BLL/HStation.BLL.Assets.Core/03-localclient/01-Pump/PumpMain.cs                                                      |   12 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs                                            |  194 +++-----
 Application/HStation.Application.Xhs.Core/01-project/XhsProject_Controller.cs                                        |   10 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.resx                                    |  123 +++++
 BLL/HStation.BLL.Assets.Core/03-localclient/11-Exchanger/AssetsExchangerMain.cs                                      |   12 
 BLL/HStation.BLL.Assets.Core/03-localclient/22-cooling/02-main/AssetsCoolingMain.cs                                  |   11 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pressmeter.svg                                                      |    2 
 BLL/HStation.BLL.Assets.Core/03-localclient/03-Valve/AssetsValveMain.cs                                              |   12 
 BLL/HStation.BLL.Assets.Core/04-bll/02-Valve/02-ValveMain/AssetsValveMain.cs                                         |    9 
 BLL/HStation.BLL.Xhs.Core/02-httpclient/01-project/XhsProject.cs                                                     |    7 
 BLL/HStation.BLL.Assets.Core/04-bll/22-cooling/02-main/AssetsCoolingMain.cs                                          |    9 
 BLL/HStation.BLL.Assets.Core/01-interface/22-cooling/02-main/IAssetsCoolingMain.cs                                   |    5 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsMainSvgImageHelper.cs                                                 |   51 ++
 BLL/HStation.BLL.Assets.Core/01-interface/03-IValveManage/IAssetsValveMain.cs                                        |    5 
 62 files changed, 961 insertions(+), 328 deletions(-)

diff --git a/Application/HStation.Application.Assets.Core/22-cooling/02-main/AssetsCoolingMain_Controller.cs b/Application/HStation.Application.Assets.Core/22-cooling/02-main/AssetsCoolingMain_Controller.cs
index 0185bb4..4db5ace 100644
--- a/Application/HStation.Application.Assets.Core/22-cooling/02-main/AssetsCoolingMain_Controller.cs
+++ b/Application/HStation.Application.Assets.Core/22-cooling/02-main/AssetsCoolingMain_Controller.cs
@@ -59,6 +59,16 @@
             return vmList;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        [Route("GetCount@V1.0")]
+        [HttpGet]
+        public int GetCount()
+        {
+            return _service.GetCount();
+        }
+
         #endregion
 
         #region Insert
diff --git a/Application/HStation.Application.Xhs.Core/01-project/XhsProject_Controller.cs b/Application/HStation.Application.Xhs.Core/01-project/XhsProject_Controller.cs
index 28c9d56..4837beb 100644
--- a/Application/HStation.Application.Xhs.Core/01-project/XhsProject_Controller.cs
+++ b/Application/HStation.Application.Xhs.Core/01-project/XhsProject_Controller.cs
@@ -47,6 +47,16 @@
             return vmList;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        [Route("GetCount@V1.0")]
+        [HttpGet]
+        public int GetCount()
+        {
+            return _service.GetCount();
+        }
+
         #endregion 
 
         #region Insert
diff --git a/BLL/HStation.BLL.Assets.Core/01-interface/01-IPump/IPumpMain.cs b/BLL/HStation.BLL.Assets.Core/01-interface/01-IPump/IPumpMain.cs
index e42dc39..c6071a8 100644
--- a/BLL/HStation.BLL.Assets.Core/01-interface/01-IPump/IPumpMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/01-interface/01-IPump/IPumpMain.cs
@@ -7,6 +7,11 @@
     /// </summary>
     public interface IAssetsPumpMain : IBaseCAL<AddAssetsPumpMainInput, UpdateAssetsPumpMainInput, AssetsPumpMainDto>, IUpdateParas, IUpdateFlags, IUpdateTagName, IUpdateSorter
     {
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<int> GetCount();
+
         Task<List<AssetsPumpMainDto>> GetByPumpSeriesID(long ID);
 
         Task<long> InsertEx(AddAssetsPumpMainInput input, AddAssetsPumpGroupAndMainMapInput map);
diff --git a/BLL/HStation.BLL.Assets.Core/01-interface/03-IValveManage/IAssetsValveMain.cs b/BLL/HStation.BLL.Assets.Core/01-interface/03-IValveManage/IAssetsValveMain.cs
index 76ff003..5dade02 100644
--- a/BLL/HStation.BLL.Assets.Core/01-interface/03-IValveManage/IAssetsValveMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/01-interface/03-IValveManage/IAssetsValveMain.cs
@@ -8,6 +8,11 @@
     public interface IAssetsValveMain : IBaseCAL<AddAssetsValveMainInput, UpdateAssetsValveMainInput, AssetsValveMainDto>, IUpdateSorter
     {
         /// <summary>
+        /// 
+        /// </summary>
+        Task<int> GetCount();
+
+        /// <summary>
         /// 閫氳繃 绯诲垪ID 鑾峰彇
         /// </summary>
         public Task<List<AssetsValveMainDto>> GetBySeriesID(long ID);
diff --git a/BLL/HStation.BLL.Assets.Core/01-interface/11-IExchanger/IExchangerMain.cs b/BLL/HStation.BLL.Assets.Core/01-interface/11-IExchanger/IExchangerMain.cs
index 2e09d49..5034398 100644
--- a/BLL/HStation.BLL.Assets.Core/01-interface/11-IExchanger/IExchangerMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/01-interface/11-IExchanger/IExchangerMain.cs
@@ -8,6 +8,11 @@
     public interface IAssetsExchangerMain : IBaseCAL<AddAssetsExchangerMainInput, UpdateAssetsExchangerMainInput, AssetsExchangerMainDto>
     {
         /// <summary>
+        /// 
+        /// </summary>
+        Task<int> GetCount();
+
+        /// <summary>
         /// 閫氳繃 绯诲垪ID 鑾峰彇
         /// </summary>
         public Task<List<AssetsExchangerMainDto>> GetBySeriesID(long ID);
diff --git a/BLL/HStation.BLL.Assets.Core/01-interface/22-cooling/02-main/IAssetsCoolingMain.cs b/BLL/HStation.BLL.Assets.Core/01-interface/22-cooling/02-main/IAssetsCoolingMain.cs
index 13ac2e9..1124d36 100644
--- a/BLL/HStation.BLL.Assets.Core/01-interface/22-cooling/02-main/IAssetsCoolingMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/01-interface/22-cooling/02-main/IAssetsCoolingMain.cs
@@ -9,6 +9,11 @@
         /// <summary>
         /// 
         /// </summary>
+        Task<int> GetCount();
+
+        /// <summary>
+        /// 
+        /// </summary>
         Task<List<AssetsCoolingMainDto>> GetBySeriesID(long SeriesID);
 
         /// <summary>
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs
index 41b3c36..d5acdea 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs
@@ -12,6 +12,14 @@
             get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/AssetsPumpMain"; }
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await GetUrl("GetCount@V1.0").Get<int>();
+        }
+
         public async Task<bool> DeleteMapByMainID(long ID)
         {
             var paras = new List<(string Name, object Value)>()
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/22-cooling/02-main/AssetsCoolingSeries.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/22-cooling/02-main/AssetsCoolingSeries.cs
index 45fa797..85543a8 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/22-cooling/02-main/AssetsCoolingSeries.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/22-cooling/02-main/AssetsCoolingSeries.cs
@@ -15,6 +15,14 @@
         /// <summary>
         /// 
         /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await GetUrl("GetCount@V1.0").Get<int>();
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
         public async Task<List<AssetsCoolingMainDto>> GetBySeriesID(long SeriesID)
         {
             var paras = new List<(string Name, object Value)>()
diff --git a/BLL/HStation.BLL.Assets.Core/03-localclient/01-Pump/PumpMain.cs b/BLL/HStation.BLL.Assets.Core/03-localclient/01-Pump/PumpMain.cs
index 1c42e63..8a06d58 100644
--- a/BLL/HStation.BLL.Assets.Core/03-localclient/01-Pump/PumpMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/03-localclient/01-Pump/PumpMain.cs
@@ -49,6 +49,18 @@
             });
         }
 
+
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return _service.GetCount();
+            });
+        }
+
         /// <summary>
         /// 閫氳繃 绯诲垪ID 鑾峰彇
         /// </summary>
diff --git a/BLL/HStation.BLL.Assets.Core/03-localclient/03-Valve/AssetsValveMain.cs b/BLL/HStation.BLL.Assets.Core/03-localclient/03-Valve/AssetsValveMain.cs
index 9e4d470..6ee9a07 100644
--- a/BLL/HStation.BLL.Assets.Core/03-localclient/03-Valve/AssetsValveMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/03-localclient/03-Valve/AssetsValveMain.cs
@@ -63,6 +63,18 @@
             });
         }
 
+
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return _service.GetCount();
+            });
+        }
+
         #endregion Query
 
         #region Insert
diff --git a/BLL/HStation.BLL.Assets.Core/03-localclient/11-Exchanger/AssetsExchangerMain.cs b/BLL/HStation.BLL.Assets.Core/03-localclient/11-Exchanger/AssetsExchangerMain.cs
index e53365f..6cad5d8 100644
--- a/BLL/HStation.BLL.Assets.Core/03-localclient/11-Exchanger/AssetsExchangerMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/03-localclient/11-Exchanger/AssetsExchangerMain.cs
@@ -63,6 +63,18 @@
             });
         }
 
+
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return _service.GetCount();
+            });
+        }
+
         #endregion Query
 
         #region Insert
diff --git a/BLL/HStation.BLL.Assets.Core/03-localclient/22-cooling/02-main/AssetsCoolingMain.cs b/BLL/HStation.BLL.Assets.Core/03-localclient/22-cooling/02-main/AssetsCoolingMain.cs
index 5805c73..dc43324 100644
--- a/BLL/HStation.BLL.Assets.Core/03-localclient/22-cooling/02-main/AssetsCoolingMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/03-localclient/22-cooling/02-main/AssetsCoolingMain.cs
@@ -48,6 +48,17 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return _service.GetCount();
+            });
+        }
+
+        /// <summary>
         /// 閫氳繃 SeriesID 鑾峰彇
         /// </summary>
         public async Task<List<AssetsCoolingMainDto>> GetBySeriesID(long SeriesID)
diff --git a/BLL/HStation.BLL.Assets.Core/04-bll/01-Pump/03-PumpMain/AssetsPumpMain.cs b/BLL/HStation.BLL.Assets.Core/04-bll/01-Pump/03-PumpMain/AssetsPumpMain.cs
index 57d3d36..3ef589f 100644
--- a/BLL/HStation.BLL.Assets.Core/04-bll/01-Pump/03-PumpMain/AssetsPumpMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/04-bll/01-Pump/03-PumpMain/AssetsPumpMain.cs
@@ -70,6 +70,15 @@
             return vmoList;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public virtual async Task<int> GetCount()
+        {
+            var count = await _cal.GetCount();
+            return count;
+        }
+
         #endregion Query
 
         #region Insert
diff --git a/BLL/HStation.BLL.Assets.Core/04-bll/02-Valve/02-ValveMain/AssetsValveMain.cs b/BLL/HStation.BLL.Assets.Core/04-bll/02-Valve/02-ValveMain/AssetsValveMain.cs
index 04cd357..0692496 100644
--- a/BLL/HStation.BLL.Assets.Core/04-bll/02-Valve/02-ValveMain/AssetsValveMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/04-bll/02-Valve/02-ValveMain/AssetsValveMain.cs
@@ -54,6 +54,15 @@
             return dtoList;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public virtual async Task<int> GetCount()
+        {
+            var count = await _cal.GetCount();
+            return count;
+        }
+
         #endregion Query
 
         #region Insert
diff --git a/BLL/HStation.BLL.Assets.Core/04-bll/11-Exchanger/01-AssetsExchangerMain/AssetsExchangerMain.cs b/BLL/HStation.BLL.Assets.Core/04-bll/11-Exchanger/01-AssetsExchangerMain/AssetsExchangerMain.cs
index 5c93210..6222ac1 100644
--- a/BLL/HStation.BLL.Assets.Core/04-bll/11-Exchanger/01-AssetsExchangerMain/AssetsExchangerMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/04-bll/11-Exchanger/01-AssetsExchangerMain/AssetsExchangerMain.cs
@@ -51,6 +51,15 @@
             return dtoList;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public virtual async Task<int> GetCount()
+        {
+            var count = await _cal.GetCount();
+            return count;
+        }
+
         #endregion Query
 
         #region Insert
diff --git a/BLL/HStation.BLL.Assets.Core/04-bll/22-cooling/02-main/AssetsCoolingMain.cs b/BLL/HStation.BLL.Assets.Core/04-bll/22-cooling/02-main/AssetsCoolingMain.cs
index fa00800..c46334e 100644
--- a/BLL/HStation.BLL.Assets.Core/04-bll/22-cooling/02-main/AssetsCoolingMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/04-bll/22-cooling/02-main/AssetsCoolingMain.cs
@@ -46,6 +46,15 @@
             return Dto2Vmos(dtoList);
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public virtual async Task<int> GetCount()
+        {
+            var count = await _cal.GetCount();
+            return count;
+        }
+
 
         #endregion
 
diff --git a/BLL/HStation.BLL.Xhs.Core/01-interface/01-project/IXhsProject.cs b/BLL/HStation.BLL.Xhs.Core/01-interface/01-project/IXhsProject.cs
index 4fe8c44..7b4f112 100644
--- a/BLL/HStation.BLL.Xhs.Core/01-interface/01-project/IXhsProject.cs
+++ b/BLL/HStation.BLL.Xhs.Core/01-interface/01-project/IXhsProject.cs
@@ -7,6 +7,10 @@
     /// </summary>
     public interface IXhsProject : IBaseCAL<AddXhsProjectInput, UpdateXhsProjectInput, XhsProjectDto>, IUpdateSorter, IUpdateParas, IUpdateFlags, IUpdateTagName
     {
+        /// <summary>
+        /// 
+        /// </summary>
+        Task<int> GetCount();
 
         /// <summary>
         /// 
diff --git a/BLL/HStation.BLL.Xhs.Core/02-httpclient/01-project/XhsProject.cs b/BLL/HStation.BLL.Xhs.Core/02-httpclient/01-project/XhsProject.cs
index bfe13da..ddf4d40 100644
--- a/BLL/HStation.BLL.Xhs.Core/02-httpclient/01-project/XhsProject.cs
+++ b/BLL/HStation.BLL.Xhs.Core/02-httpclient/01-project/XhsProject.cs
@@ -12,6 +12,13 @@
             get { return $"{HStation.BLL.Xhs.ConfigHelper.HttpUrl}/Xhs/Project"; }
         }
 
+        /// <summary>
+        /// 
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await GetUrl("GetCount@V1.0").Get<int>();
+        }
 
         /// <summary>
         /// 
diff --git a/BLL/HStation.BLL.Xhs.Core/03-localclient/01-project/XhsProject.cs b/BLL/HStation.BLL.Xhs.Core/03-localclient/01-project/XhsProject.cs
index 4418d91..2c27730 100644
--- a/BLL/HStation.BLL.Xhs.Core/03-localclient/01-project/XhsProject.cs
+++ b/BLL/HStation.BLL.Xhs.Core/03-localclient/01-project/XhsProject.cs
@@ -48,6 +48,17 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public async Task<int> GetCount()
+        {
+            return await Task.Factory.StartNew(() =>
+            {
+                return _service.GetCount();
+            });
+        }
+
+        /// <summary>
         /// 閫氳繃 ID 鑾峰彇瀛愮骇鍙婅嚜韬�
         /// </summary>
         public async Task<List<XhsProjectDto>> GetChildAndSelfByID(long ID)
diff --git a/BLL/HStation.BLL.Xhs.Core/04-bll/01-project/XhsProject.cs b/BLL/HStation.BLL.Xhs.Core/04-bll/01-project/XhsProject.cs
index 72d1b46..0062155 100644
--- a/BLL/HStation.BLL.Xhs.Core/04-bll/01-project/XhsProject.cs
+++ b/BLL/HStation.BLL.Xhs.Core/04-bll/01-project/XhsProject.cs
@@ -38,6 +38,15 @@
             return Dto2Vmos(dtoList);
         }
 
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public virtual async Task<int> GetCount()
+        {
+            var count = await _cal.GetCount();
+            return count;
+        }
+
         #endregion Query
 
         #region Insert
diff --git a/Service/HStation.Service.Assets.Core/00-core/DataType.cs b/Service/HStation.Service.Assets.Core/00-core/DataType.cs
index 5badbc9..dbd29cb 100644
--- a/Service/HStation.Service.Assets.Core/00-core/DataType.cs
+++ b/Service/HStation.Service.Assets.Core/00-core/DataType.cs
@@ -5,6 +5,34 @@
     /// </summary>
     public class DataType
     {
+
+        #region 姘存车
+
+        /// <summary>
+        /// 姘存车鍨嬪彿
+        /// </summary>
+        public const string PumpMain = "assets-pump-main";
+
+        #endregion
+
+        #region 闃�闂�
+
+        /// <summary>
+        /// 闃�闂ㄥ瀷鍙�
+        /// </summary>
+        public const string ValveMain = "assets-valve-main";
+
+        #endregion
+
+        #region 鎹㈢儹鍣�
+
+        /// <summary>
+        /// 鎹㈢儹鍣ㄥ瀷鍙�
+        /// </summary>
+        public const string ExchangerMain = "assets-exchanger-main";
+
+        #endregion
+
         #region 鍐峰嵈濉�
 
         /// <summary>
@@ -21,15 +49,6 @@
         /// 鍐峰嵈濉旂郴鏁�
         /// </summary>
         public const string CoolingFactor = "assets-cooling-factor";
-
-        #endregion
-
-        #region 娉�
-
-        /// <summary>
-        /// 娉靛瀷鍙�
-        /// </summary>
-        public const string PumpMain = "assets-pump-main"; 
 
         #endregion
 
diff --git a/Service/HStation.Service.Assets.Core/05-service/01-Pump/03-PumpMain/PumpMain.cs b/Service/HStation.Service.Assets.Core/05-service/01-Pump/03-PumpMain/PumpMain.cs
index 2cb3c8e..9c494a8 100644
--- a/Service/HStation.Service.Assets.Core/05-service/01-Pump/03-PumpMain/PumpMain.cs
+++ b/Service/HStation.Service.Assets.Core/05-service/01-Pump/03-PumpMain/PumpMain.cs
@@ -119,6 +119,15 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public int GetCount()
+        {
+            var all = GetAll();
+            return all.Count;
+        }
+
+        /// <summary>
         /// 閫氳繃 ID 鑾峰彇鎵�鏈変骇鍝�
         /// </summary>
         public List<Model.AssetsPumpPartMain> GetPartByID(long ID)
diff --git a/Service/HStation.Service.Assets.Core/05-service/03-Valve/02-ValveMain/ValveMain.cs b/Service/HStation.Service.Assets.Core/05-service/03-Valve/02-ValveMain/ValveMain.cs
index a1b5e9c..cad6f50 100644
--- a/Service/HStation.Service.Assets.Core/05-service/03-Valve/02-ValveMain/ValveMain.cs
+++ b/Service/HStation.Service.Assets.Core/05-service/03-Valve/02-ValveMain/ValveMain.cs
@@ -114,6 +114,15 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public int GetCount()
+        {
+            var all = GetAll();
+            return all.Count;
+        }
+
+        /// <summary>
         /// 閫氳繃 绯诲垪ID 鑾峰彇
         /// </summary>
         public List<Model.AssetsValveMain> GetBySeriesID(long id)
diff --git a/Service/HStation.Service.Assets.Core/05-service/11-Exchanger/02-ExchangerMain/ExchangerMain.cs b/Service/HStation.Service.Assets.Core/05-service/11-Exchanger/02-ExchangerMain/ExchangerMain.cs
index ac8456f..6ee3bca 100644
--- a/Service/HStation.Service.Assets.Core/05-service/11-Exchanger/02-ExchangerMain/ExchangerMain.cs
+++ b/Service/HStation.Service.Assets.Core/05-service/11-Exchanger/02-ExchangerMain/ExchangerMain.cs
@@ -114,6 +114,15 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public int GetCount()
+        {
+            var all = GetAll();
+            return all.Count;
+        }
+
+        /// <summary>
         /// 閫氳繃 绯诲垪ID 鑾峰彇
         /// </summary>
         public List<Model.AssetsExchangerMain> GetBySeriesID(long id)
diff --git a/Service/HStation.Service.Assets.Core/05-service/21-cooling/02-main/AssetsCoolingMain.cs b/Service/HStation.Service.Assets.Core/05-service/21-cooling/02-main/AssetsCoolingMain.cs
index 29c06dd..644f3ca 100644
--- a/Service/HStation.Service.Assets.Core/05-service/21-cooling/02-main/AssetsCoolingMain.cs
+++ b/Service/HStation.Service.Assets.Core/05-service/21-cooling/02-main/AssetsCoolingMain.cs
@@ -114,6 +114,15 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public int GetCount()
+        {
+            var all = GetAll();
+            return all.Count;
+        }
+
+        /// <summary>
         /// 閫氳繃 SeriesID 鑾峰彇
         /// </summary>
         public List<Model.AssetsCoolingMain> GetBySeriesID(long SeriesID)
diff --git a/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs b/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs
index 8286e9c..50d5371 100644
--- a/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs
+++ b/Service/HStation.Service.Xhs.Core/05-service/01-project/XhsProject.cs
@@ -114,6 +114,15 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        public int GetCount()
+        {
+            var all = GetAll();
+            return all.Count;
+        }
+
+        /// <summary>
         /// 閫氳繃 ID 鑾峰彇瀛愮骇鍙婅嚜韬�
         /// </summary>
         public List<Model.XhsProject> GetChildAndSelfByID(long ID)
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/blunthead.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/blunthead.svg
index b250658..4bbc667 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/blunthead.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/blunthead.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421033329" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15213" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M576 448H0v128h576v256h128V192H576v256z m256-128v384h128V320h-128z" fill="#0c7008" p-id="15214"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498732307" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="54283" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M576 448H0v128h576v256h128V192H576v256z m256-128v384h128V320h-128z" fill="#007ACC" p-id="54284"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/compressor.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/compressor.svg
index 1961ee4..9b6deba 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/compressor.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/compressor.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421439072" class="icon" viewBox="0 0 1126 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="38702" width="35.1875" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M161.792 836.5568c36.3008 8.3456 103.8848 11.1104 202.752 8.2432l-34.56 108.032A102.4 102.4 0 0 1 232.448 1024H204.8a74.9568 74.9568 0 0 1-71.4752-97.5872l28.5184-89.856z m735.4368-148.1216a166.4 166.4 0 1 1 0 332.8 166.4 166.4 0 0 1 0-332.8z m0 102.4a64 64 0 1 0 0 128 64 64 0 0 0 0-128zM860.3648 29.6448a60.416 60.416 0 1 1 0 120.832h-196.7104a51.2 51.2 0 0 1-50.8416-45.2096l-0.3584-5.9904H508.1088a25.6 25.6 0 0 0-25.6 25.2928L479.744 358.4h416.256a230.4 230.4 0 0 1 156.672 399.36 179.2 179.2 0 0 0-334.0288 61.44H230.4a230.4 230.4 0 1 1 0-460.8h178.3808V80.8448a51.2 51.2 0 0 1 51.2-51.2h400.384z m112.384 150.4256a102.4 102.4 0 0 1 102.4 102.4l0.0512 102.4a254.8736 254.8736 0 0 0-153.6512-51.2h-307.2v-51.2a102.4 102.4 0 0 1 102.4-102.4h256z" p-id="38703" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498990209" class="icon" viewBox="0 0 1126 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="61392" width="35.1875" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M161.792 836.5568c36.3008 8.3456 103.8848 11.1104 202.752 8.2432l-34.56 108.032A102.4 102.4 0 0 1 232.448 1024H204.8a74.9568 74.9568 0 0 1-71.4752-97.5872l28.5184-89.856z m735.4368-148.1216a166.4 166.4 0 1 1 0 332.8 166.4 166.4 0 0 1 0-332.8z m0 102.4a64 64 0 1 0 0 128 64 64 0 0 0 0-128zM860.3648 29.6448a60.416 60.416 0 1 1 0 120.832h-196.7104a51.2 51.2 0 0 1-50.8416-45.2096l-0.3584-5.9904H508.1088a25.6 25.6 0 0 0-25.6 25.2928L479.744 358.4h416.256a230.4 230.4 0 0 1 156.672 399.36 179.2 179.2 0 0 0-334.0288 61.44H230.4a230.4 230.4 0 1 1 0-460.8h178.3808V80.8448a51.2 51.2 0 0 1 51.2-51.2h400.384z m112.384 150.4256a102.4 102.4 0 0 1 102.4 102.4l0.0512 102.4a254.8736 254.8736 0 0 0-153.6512-51.2h-307.2v-51.2a102.4 102.4 0 0 1 102.4-102.4h256z" p-id="61393" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/cooling.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/cooling.svg
index 5991b3e..795db57 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/cooling.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/cooling.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421190676" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26751" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M864 917.333333H853.333333v-189.866666c0-14.933333-4.266667-32-12.8-44.8L746.666667 533.333333H277.333333l-93.866666 149.333334c-8.533333 14.933333-12.8 29.866667-12.8 44.8V917.333333h-10.666667c-17.066667 0-32 14.933333-32 32S142.933333 981.333333 160 981.333333h704c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z m-170.666667-64h-362.666666c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32h362.666666c17.066667 0 32 14.933333 32 32s-14.933333 32-32 32zM277.333333 469.333333h469.333334V234.666667H277.333333v234.666666z m320-138.666666c0-17.066667 14.933333-32 32-32s32 14.933333 32 32v42.666666c0 17.066667-14.933333 32-32 32s-32-14.933333-32-32v-42.666666z m-128 0c0-17.066667 14.933333-32 32-32s32 14.933333 32 32v42.666666c0 17.066667-14.933333 32-32 32s-32-14.933333-32-32v-42.666666zM704 170.666667h85.333333V149.333333c0-23.466667-19.2-42.666667-42.666666-42.666666h-42.666667V42.666667H320v64h-42.666667c-23.466667 0-42.666667 19.2-42.666666 42.666666v21.333334h469.333333z" p-id="26752" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734497054084" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="37572" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M864 917.333333H853.333333v-189.866666c0-14.933333-4.266667-32-12.8-44.8L746.666667 533.333333H277.333333l-93.866666 149.333334c-8.533333 14.933333-12.8 29.866667-12.8 44.8V917.333333h-10.666667c-17.066667 0-32 14.933333-32 32S142.933333 981.333333 160 981.333333h704c17.066667 0 32-14.933333 32-32s-14.933333-32-32-32z m-170.666667-64h-362.666666c-17.066667 0-32-14.933333-32-32s14.933333-32 32-32h362.666666c17.066667 0 32 14.933333 32 32s-14.933333 32-32 32zM277.333333 469.333333h469.333334V234.666667H277.333333v234.666666z m320-138.666666c0-17.066667 14.933333-32 32-32s32 14.933333 32 32v42.666666c0 17.066667-14.933333 32-32 32s-32-14.933333-32-32v-42.666666z m-128 0c0-17.066667 14.933333-32 32-32s32 14.933333 32 32v42.666666c0 17.066667-14.933333 32-32 32s-32-14.933333-32-32v-42.666666zM704 170.666667h85.333333V149.333333c0-23.466667-19.2-42.666667-42.666666-42.666666h-42.666667V42.666667H320v64h-42.666667c-23.466667 0-42.666667 19.2-42.666666 42.666666v21.333334h469.333333z" fill="#007ACC" p-id="37573"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/coupling.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/coupling.svg
index 97b47d3..b101953 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/coupling.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/coupling.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421596238" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="49845" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M935.754805 89.966493a47.62257 47.62257 0 0 0-3.672102-4.590127A252.170113 252.170113 0 0 0 753.698885 8.893371c-66.384715 1.147532-131.794027 24.72931-180.621505 72.35188l-175.055976 175.572365A248.096375 248.096375 0 0 0 325.956407 437.209615a258.538914 258.538914 0 0 0 76.540371 179.875609c1.204908 1.204908 2.52457 2.295064 3.901608 3.270466a68.163389 68.163389 0 0 0 94.72875-4.475374 68.278142 68.278142 0 0 0-2.409817-95.991035 123.187539 123.187539 0 0 1-36.548887-85.720625 112.22861 112.22861 0 0 1 32.30302-81.302628l174.654339-175.342859c22.72113-21.745728 52.384827-34.425954 83.884575-32.589903a116.93349 116.93349 0 0 1 82.851796 36.835771c22.950636 22.72113 35.917745 53.130722 36.548887 85.778002a110.908948 110.908948 0 0 1-31.384994 80.212472L728.625315 456.717656a67.704376 67.704376 0 0 0-20.885079 47.852076c-0.401636 18.245756 6.368801 35.516109 19.049028 48.655348a68.278142 68.278142 0 0 0 96.507425 1.836051l113.376141-109.417157a248.899647 248.899647 0 0 0 72.064997-180.334622c-1.147532-67.933882-28.401412-131.73665-72.983022-175.342859z" fill="#0c7008" p-id="49846"></path><path d="M520.864683 400.259091a68.565025 68.565025 0 0 0-1.893427 97.023814c22.950636 22.778506 35.975122 53.245475 36.606264 85.720625a111.88435 111.88435 0 0 1-32.30302 81.302628l-174.424833 175.055976a121.179358 121.179358 0 0 1-170.752732-171.728134l113.605648-119.974449a68.335519 68.335519 0 0 0-2.52457-96.450048 67.589623 67.589623 0 0 0-48.770101-18.647392c-18.188379 0.459013-35.114473 8.032723-47.737323 21.229339l-112.458116 118.769541c-96.679554 100.638539-94.269737 261.924133 5.106516 359.292206a260.661848 260.661848 0 0 0 183.605088 76.827253h1.204908a244.998039 244.998039 0 0 0 174.31008-72.294503l175.342859-175.629741a249.18653 249.18653 0 0 0 72.122374-180.334623 259.227433 259.227433 0 0 0-77.22889-180.449375 68.507648 68.507648 0 0 0-93.810725 0.286883z" fill="#0c7008" p-id="49847"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499099766" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="67780" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M839.34049993 185.98916181a36.78730174 36.78730174 0 0 0-2.83661139-3.54576385A194.79540971 194.79540971 0 0 0 698.70663534 123.3621049c-51.28061213 0.88644115-101.80774867 19.10280333-139.52581316 55.89010505l-135.22657448 135.62547269A191.64854408 191.64854408 0 0 0 368.28575293 454.22620787a199.71515688 199.71515688 0 0 0 59.12561465 138.94962626c0.93076275 0.93076275 1.95017024 1.77288231 3.01389931 2.52635713a52.65459547 52.65459547 0 0 0 73.17570449-3.45711989 52.74323942 52.74323942 0 0 0-1.86152628-74.15078959 95.15944156 95.15944156 0 0 1-28.2331452-66.21714235 86.69392976 86.69392976 0 0 1 24.95331402-62.80434482l134.91631945-135.44818476c17.55153207-16.79805725 40.4660319-26.59323 64.79883742-25.17492431a90.32833758 90.32833758 0 0 1 64.00104023 28.45475627c17.72882 17.55153207 27.74560304 41.04221803 28.23314522 66.2614647a85.67452229 85.67452229 0 0 1-24.2441608 61.96222527L679.33789935 469.29570518a52.30001885 52.30001885 0 0 0-16.13322638 36.96458966c-0.31025425 14.09441219 4.91974717 27.43534879 14.71492069 37.58509815a52.74323942 52.74323942 0 0 0 74.54968858 1.4183057l87.58037014-84.52214926a192.26905257 192.26905257 0 0 0 55.66849477-139.30420285c-0.88644115-52.47730676-21.93941471-101.7634263-56.37764722-135.44818477z" p-id="67781" fill="#007ACC"></path><path d="M518.8477566 425.68280765a52.96484972 52.96484972 0 0 0-1.46262728 74.94858678c17.72882 17.59585367 27.78992541 41.13086199 28.27746757 66.21714235a86.42799711 86.42799711 0 0 1-24.95331401 62.80434482l-134.73903155 135.22657448a93.60816953 93.60816953 0 0 1-131.90242092-132.65589575l87.75765885-92.67740602a52.78756178 52.78756178 0 0 0-1.95017023-74.5053662 52.21137488 52.21137488 0 0 0-37.67374211-14.40466645c-14.05008982 0.35457662-27.12509454 6.20508731-36.87594568 16.39915904l-86.8712177 91.74664327c-74.68265412 77.74087581-72.82112786 202.33015798 3.94466206 277.54467665a201.35507286 201.35507286 0 0 0 141.83055999 59.34722416h0.93076274a189.25515326 189.25515326 0 0 0 134.65038758-55.84578269l135.44818477-135.66979427a192.49066286 192.49066286 0 0 0 55.71281714-139.30420365 200.24702142 200.24702142 0 0 0-59.65747919-139.39284681 52.92052734 52.92052734 0 0 0-72.46655203 0.22161029z" p-id="67782" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/elbow.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/elbow.svg
index 6a23ec6..a34e5ba 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/elbow.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/elbow.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421064387" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17060" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M256 213.333333v-21.333333H170.666667V512h85.333333v-14.208h113.792A142.208 142.208 0 0 1 512 640v170.666667h-21.333333v85.333333H810.666667v-85.333333h-14.208v-170.666667c0-235.648-191.061333-426.666667-426.666667-426.666667H256z" p-id="17061" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498823309" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="56614" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M256 213.333333v-21.333333H170.666667V512h85.333333v-14.208h113.792A142.208 142.208 0 0 1 512 640v170.666667h-21.333333v85.333333H810.666667v-85.333333h-14.208v-170.666667c0-235.648-191.061333-426.666667-426.666667-426.666667H256z" p-id="56615" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/emitter.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/emitter.svg
index a80b3b3..8802e70 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/emitter.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/emitter.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421682374" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="55032" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M754.630909 233.529548L654.222104 326.827248v518.257346c0 63.999947-104.10658 89.599925-104.10658 89.599925H284.444634V967.111159H238.080228v56.888841H22.755963V270.22285a96.711031 96.711031 0 0 1 52.622179-74.524382A122.595453 122.595453 0 0 1 142.22253 176.92515h406.186329l31.004418 16.497764h135.110999zM959.715182 17.920838h-139.093217L788.764214 0.000853H369.777896a122.879898 122.879898 0 0 0-67.982165 20.195539 104.675468 104.675468 0 0 0-54.897732 81.066599v32.995528a166.399861 166.399861 0 0 1 16.782208 0H583.111052l31.004418 16.497764h135.110999l73.102161 74.808827-121.457676 134.54211s3.697775 445.439629 3.697774 509.439575a59.733284 59.733284 0 0 1-4.551107 22.471093l90.453258-1.422221s107.235466-28.444421 107.235466-97.279919V162.70294l103.537692-101.262138z" fill="#0c7008" p-id="55033"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499174998" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="71458" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M754.630909 233.529548L654.222104 326.827248v518.257346c0 63.999947-104.10658 89.599925-104.10658 89.599925H284.444634V967.111159H238.080228v56.888841H22.755963V270.22285a96.711031 96.711031 0 0 1 52.622179-74.524382A122.595453 122.595453 0 0 1 142.22253 176.92515h406.186329l31.004418 16.497764h135.110999zM959.715182 17.920838h-139.093217L788.764214 0.000853H369.777896a122.879898 122.879898 0 0 0-67.982165 20.195539 104.675468 104.675468 0 0 0-54.897732 81.066599v32.995528a166.399861 166.399861 0 0 1 16.782208 0H583.111052l31.004418 16.497764h135.110999l73.102161 74.808827-121.457676 134.54211s3.697775 445.439629 3.697774 509.439575a59.733284 59.733284 0 0 1-4.551107 22.471093l90.453258-1.422221s107.235466-28.444421 107.235466-97.279919V162.70294l103.537692-101.262138z" fill="#007ACC" p-id="71459"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/exchanger.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/exchanger.svg
index a4a1cc1..4afcb56 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/exchanger.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/exchanger.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421420614" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="37413" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M292 228.6c11.2 0 20 7.2 20 16s-9.2 16-20 16H112.8c-11.2 0-20-7.2-20-16s9.2-16 20-16z" fill="#0c7008" p-id="37414"></path><path d="M292 228.6c11.2 0 20 7.2 20 16s-9.2 16-20 16H112.8c-11.2 0-20-7.2-20-16s9.2-16 20-16z" fill="#0c7008" p-id="37415"></path><path d="M127.64 260.76h19.2v106.4h-19.2z" fill="#0c7008" p-id="37416"></path><path d="M264.96 260.48h19.2v106.4h-19.2z" fill="#0c7008" p-id="37417"></path><path d="M146.8 260.72h58.8v106.4H146.8z" fill="#0c7008" p-id="37418"></path><path d="M205.76 260.48h58.8v106.4h-58.8zM162.08 671h3.6v106.4h-3.6z" fill="#0c7008" p-id="37419"></path><path d="M188.08 671h3.6v106.4h-3.6z" fill="#0c7008" p-id="37420"></path><path d="M165.92 670.84h11.2v106.4h-11.2z" fill="#0c7008" p-id="37421"></path><path d="M177.08 670.76h11.2v106.4h-11.2zM126.96 793h106.4v2.4h-106.4z" fill="#0c7008" p-id="37422"></path><path d="M126.96 775.44h106.4v2.4h-106.4z" fill="#0c7008" p-id="37423"></path><path d="M126.96 785.24h106.4v7.6h-106.4z" fill="#0c7008" p-id="37424"></path><path d="M126.96 777.56h106.4v7.6h-106.4zM797.64 670.96h3.6v106.4h-3.6z" fill="#0c7008" p-id="37425"></path><path d="M823.64 670.92h3.6v106.4h-3.6z" fill="#0c7008" p-id="37426"></path><path d="M801.44 670.76h11.2v106.4h-11.2z" fill="#0c7008" p-id="37427"></path><path d="M812.6 671.12h11.2v106.4h-11.2zM762.44 793h106.4v2.4h-106.4z" fill="#0c7008" p-id="37428"></path><path d="M762.44 775.44h106.4v2.4h-106.4z" fill="#0c7008" p-id="37429"></path><path d="M762.44 785.24h106.4v7.6h-106.4z" fill="#0c7008" p-id="37430"></path><path d="M762.44 777.56h106.4v7.6h-106.4zM39.36 367.12h956.8v37.6H39.36z" fill="#0c7008" p-id="37431"></path><path d="M39.36 633.32h956.8v37.6H39.36z" fill="#0c7008" p-id="37432"></path><path d="M39.36 404.68h956.8v114.4H39.36z" fill="#0c7008" p-id="37433"></path><path d="M39.36 518.96h956.8v114.4H39.36z" fill="#0c7008" p-id="37434"></path><path d="M12 358.2c0-11.2 7.2-20 16-20s16 9.2 16 20v312.8c0 11.2-7.2 20-16 20s-16-9.2-16-20z" fill="#0c7008" p-id="37435"></path><path d="M12 358.2c0-11.2 7.2-20 16-20s16 9.2 16 20v312.8c0 11.2-7.2 20-16 20s-16-9.2-16-20z" fill="#0c7008" p-id="37436"></path><path d="M1012 358.2c0-11.2-7.2-20-16-20s-16 9.2-16 20v312.8c0 11.2 7.2 20 16 20s16-9.2 16-20z" fill="#0c7008" p-id="37437"></path><path d="M1012 358.2c0-11.2-7.2-20-16-20s-16 9.2-16 20v312.8c0 11.2 7.2 20 16 20s16-9.2 16-20z" fill="#0c7008" p-id="37438"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499209922" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="72906" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M292 228.6c11.2 0 20 7.2 20 16s-9.2 16-20 16H112.8c-11.2 0-20-7.2-20-16s9.2-16 20-16z" fill="#007ACC" p-id="72907"></path><path d="M292 228.6c11.2 0 20 7.2 20 16s-9.2 16-20 16H112.8c-11.2 0-20-7.2-20-16s9.2-16 20-16z" fill="#007ACC" p-id="72908"></path><path d="M127.64 260.76h19.2v106.4h-19.2z" fill="#007ACC" p-id="72909"></path><path d="M264.96 260.48h19.2v106.4h-19.2z" fill="#007ACC" p-id="72910"></path><path d="M146.8 260.72h58.8v106.4H146.8z" fill="#007ACC" p-id="72911"></path><path d="M205.76 260.48h58.8v106.4h-58.8zM162.08 671h3.6v106.4h-3.6z" fill="#007ACC" p-id="72912"></path><path d="M188.08 671h3.6v106.4h-3.6z" fill="#007ACC" p-id="72913"></path><path d="M165.92 670.84h11.2v106.4h-11.2z" fill="#007ACC" p-id="72914"></path><path d="M177.08 670.76h11.2v106.4h-11.2zM126.96 793h106.4v2.4h-106.4z" fill="#007ACC" p-id="72915"></path><path d="M126.96 775.44h106.4v2.4h-106.4z" fill="#007ACC" p-id="72916"></path><path d="M126.96 785.24h106.4v7.6h-106.4z" fill="#007ACC" p-id="72917"></path><path d="M126.96 777.56h106.4v7.6h-106.4zM797.64 670.96h3.6v106.4h-3.6z" fill="#007ACC" p-id="72918"></path><path d="M823.64 670.92h3.6v106.4h-3.6z" fill="#007ACC" p-id="72919"></path><path d="M801.44 670.76h11.2v106.4h-11.2z" fill="#007ACC" p-id="72920"></path><path d="M812.6 671.12h11.2v106.4h-11.2zM762.44 793h106.4v2.4h-106.4z" fill="#007ACC" p-id="72921"></path><path d="M762.44 775.44h106.4v2.4h-106.4z" fill="#007ACC" p-id="72922"></path><path d="M762.44 785.24h106.4v7.6h-106.4z" fill="#007ACC" p-id="72923"></path><path d="M762.44 777.56h106.4v7.6h-106.4zM39.36 367.12h956.8v37.6H39.36z" fill="#007ACC" p-id="72924"></path><path d="M39.36 633.32h956.8v37.6H39.36z" fill="#007ACC" p-id="72925"></path><path d="M39.36 404.68h956.8v114.4H39.36z" fill="#007ACC" p-id="72926"></path><path d="M39.36 518.96h956.8v114.4H39.36z" fill="#007ACC" p-id="72927"></path><path d="M12 358.2c0-11.2 7.2-20 16-20s16 9.2 16 20v312.8c0 11.2-7.2 20-16 20s-16-9.2-16-20z" fill="#007ACC" p-id="72928"></path><path d="M12 358.2c0-11.2 7.2-20 16-20s16 9.2 16 20v312.8c0 11.2-7.2 20-16 20s-16-9.2-16-20z" fill="#007ACC" p-id="72929"></path><path d="M1012 358.2c0-11.2-7.2-20-16-20s-16 9.2-16 20v312.8c0 11.2 7.2 20 16 20s16-9.2 16-20z" fill="#007ACC" p-id="72930"></path><path d="M1012 358.2c0-11.2-7.2-20-16-20s-16 9.2-16 20v312.8c0 11.2 7.2 20 16 20s16-9.2 16-20z" fill="#007ACC" p-id="72931"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/flowmeter.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/flowmeter.svg
index 23202c4..2682564 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/flowmeter.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/flowmeter.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421281062" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31459" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M498.76 480.2L700.9 334.45a25 25 0 0 0-29.25-40.56L525.24 399.46l-40.7-126.15-161.72 120.11a25 25 0 0 0 29.81 40.14L458.37 355z" fill="#0c7008" p-id="31460"></path><path d="M921.78 661h-72v-31a14 14 0 0 0-14-14h-52a14 14 0 0 0-14 14v31h-26a14 14 0 0 0-14 14v68H615v-81c116.64-42.16 200-153.85 200-285 0-167.34-135.66-303-303-303S209 209.66 209 377c0 131.18 83.36 242.87 200 285v81H294.22v-71a14 14 0 0 0-14-14h-26v-31a14 14 0 0 0-14-14h-52a14 14 0 0 0-14 14v31h-72a14 14 0 0 0-14 14v216a14 14 0 0 0 14 14h72v31a14 14 0 0 0 14 14h52a14 14 0 0 0 14-14v-31h26a14 14 0 0 0 14-14v-65H409v65a14 14 0 0 0 14 14h178a14 14 0 0 0 14-14v-65h114.78v68a14 14 0 0 0 14 14h26v31a14 14 0 0 0 14 14h52a14 14 0 0 0 14-14v-31h72a14 14 0 0 0 14-14V675a14 14 0 0 0-14-14zM278.86 475.46a254 254 0 1 1 54.24 80.44 251.33 251.33 0 0 1-54.24-80.44z" fill="#0c7008" p-id="31461"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499285959" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="76118" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M498.76 480.2L700.9 334.45a25 25 0 0 0-29.25-40.56L525.24 399.46l-40.7-126.15-161.72 120.11a25 25 0 0 0 29.81 40.14L458.37 355z" fill="#007ACC" p-id="76119"></path><path d="M921.78 661h-72v-31a14 14 0 0 0-14-14h-52a14 14 0 0 0-14 14v31h-26a14 14 0 0 0-14 14v68H615v-81c116.64-42.16 200-153.85 200-285 0-167.34-135.66-303-303-303S209 209.66 209 377c0 131.18 83.36 242.87 200 285v81H294.22v-71a14 14 0 0 0-14-14h-26v-31a14 14 0 0 0-14-14h-52a14 14 0 0 0-14 14v31h-72a14 14 0 0 0-14 14v216a14 14 0 0 0 14 14h72v31a14 14 0 0 0 14 14h52a14 14 0 0 0 14-14v-31h26a14 14 0 0 0 14-14v-65H409v65a14 14 0 0 0 14 14h178a14 14 0 0 0 14-14v-65h114.78v68a14 14 0 0 0 14 14h26v31a14 14 0 0 0 14 14h52a14 14 0 0 0 14-14v-31h72a14 14 0 0 0 14-14V675a14 14 0 0 0-14-14zM278.86 475.46a254 254 0 1 1 54.24 80.44 251.33 251.33 0 0 1-54.24-80.44z" fill="#007ACC" p-id="76120"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/fourlink.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/fourlink.svg
index 9112f0e..a02567e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/fourlink.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/fourlink.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421114687" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21021" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M956.597468 338.308861H672.729114V93.326582H338.308861v244.982279h-270.906329v334.420253H338.308861v257.944304h334.420253V672.729114h283.868354z" fill="#0c7008" p-id="21022"></path><path d="M381.083544 505.518987h-313.681012v167.210127H338.308861v257.944304h42.774683V672.729114zM381.083544 381.083544V93.326582H338.308861v244.982279h-270.906329v42.774683H338.308861zM505.518987 505.518987v425.154431h167.210127V672.729114h283.868354V505.518987H672.729114zM672.729114 338.308861V93.326582H505.518987v287.756962h451.078481v-42.774683z" fill="#0c7008" p-id="21023"></path><path d="M67.402532 629.95443H337.012658v42.774684h-269.610126zM672.729114 629.95443h-42.774684v300.718988h42.774684V672.729114h283.868354v-42.774684zM629.95443 93.326582h42.774684V337.012658h-42.774684z" fill="#0c7008" p-id="21024"></path><path d="M703.837975 908.637975H307.2c-28.516456 0-51.848101 23.331646-51.848101 51.848101s23.331646 51.848101 51.848101 51.848101h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848101 0-29.812658-23.331646-51.848101-51.848101-51.848101z" fill="#0c7008" p-id="21025"></path><path d="M307.2 1011.037975h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848102H255.351899c0 28.516456 23.331646 51.848101 51.848101 51.848102z" fill="#0c7008" p-id="21026"></path><path d="M703.837975 0H307.2c-28.516456 0-51.848101 23.331646-51.848101 51.848101s23.331646 51.848101 51.848101 51.848102h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848102s-23.331646-51.848101-51.848101-51.848101z" fill="#0c7008" p-id="21027"></path><path d="M307.2 102.4h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848101H255.351899c0 29.812658 23.331646 51.848101 51.848101 51.848101z" fill="#0c7008" p-id="21028"></path><path d="M0 307.2v396.637975c0 28.516456 23.331646 51.848101 51.848101 51.848101s51.848101-23.331646 51.848102-51.848101V307.2c0-28.516456-23.331646-51.848101-51.848102-51.848101s-51.848101 23.331646-51.848101 51.848101z" fill="#0c7008" p-id="21029"></path><path d="M908.637975 307.2v396.637975c0 28.516456 23.331646 51.848101 51.848101 51.848101s51.848101-23.331646 51.848101-51.848101V307.2c0-28.516456-23.331646-51.848101-51.848101-51.848101-29.812658 0-51.848101 23.331646-51.848101 51.848101z" fill="#0c7008" p-id="21030"></path><path d="M1011.037975 703.837975V307.2c0-28.516456-23.331646-51.848101-51.848102-51.848101v500.334177c28.516456 0 51.848101-23.331646 51.848102-51.848101z" fill="#0c7008" p-id="21031"></path><path d="M102.4 703.837975V307.2c0-28.516456-23.331646-51.848101-51.848101-51.848101v500.334177c29.812658 0 51.848101-23.331646 51.848101-51.848101z" fill="#0c7008" p-id="21032"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498943394" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="60165" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M956.597468 338.308861H672.729114V93.326582H338.308861v244.982279h-270.906329v334.420253H338.308861v257.944304h334.420253V672.729114h283.868354z" fill="#007ACC" p-id="60166"></path><path d="M381.083544 505.518987h-313.681012v167.210127H338.308861v257.944304h42.774683V672.729114zM381.083544 381.083544V93.326582H338.308861v244.982279h-270.906329v42.774683H338.308861zM505.518987 505.518987v425.154431h167.210127V672.729114h283.868354V505.518987H672.729114zM672.729114 338.308861V93.326582H505.518987v287.756962h451.078481v-42.774683z" fill="#007ACC" p-id="60167"></path><path d="M67.402532 629.95443H337.012658v42.774684h-269.610126zM672.729114 629.95443h-42.774684v300.718988h42.774684V672.729114h283.868354v-42.774684zM629.95443 93.326582h42.774684V337.012658h-42.774684z" fill="#007ACC" p-id="60168"></path><path d="M703.837975 908.637975H307.2c-28.516456 0-51.848101 23.331646-51.848101 51.848101s23.331646 51.848101 51.848101 51.848101h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848101 0-29.812658-23.331646-51.848101-51.848101-51.848101z" fill="#007ACC" p-id="60169"></path><path d="M307.2 1011.037975h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848102H255.351899c0 28.516456 23.331646 51.848101 51.848101 51.848102z" fill="#007ACC" p-id="60170"></path><path d="M703.837975 0H307.2c-28.516456 0-51.848101 23.331646-51.848101 51.848101s23.331646 51.848101 51.848101 51.848102h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848102s-23.331646-51.848101-51.848101-51.848101z" fill="#007ACC" p-id="60171"></path><path d="M307.2 102.4h396.637975c28.516456 0 51.848101-23.331646 51.848101-51.848101H255.351899c0 29.812658 23.331646 51.848101 51.848101 51.848101z" fill="#007ACC" p-id="60172"></path><path d="M0 307.2v396.637975c0 28.516456 23.331646 51.848101 51.848101 51.848101s51.848101-23.331646 51.848102-51.848101V307.2c0-28.516456-23.331646-51.848101-51.848102-51.848101s-51.848101 23.331646-51.848101 51.848101z" fill="#007ACC" p-id="60173"></path><path d="M908.637975 307.2v396.637975c0 28.516456 23.331646 51.848101 51.848101 51.848101s51.848101-23.331646 51.848101-51.848101V307.2c0-28.516456-23.331646-51.848101-51.848101-51.848101-29.812658 0-51.848101 23.331646-51.848101 51.848101z" fill="#007ACC" p-id="60174"></path><path d="M1011.037975 703.837975V307.2c0-28.516456-23.331646-51.848101-51.848102-51.848101v500.334177c28.516456 0 51.848101-23.331646 51.848102-51.848101z" fill="#007ACC" p-id="60175"></path><path d="M102.4 703.837975V307.2c0-28.516456-23.331646-51.848101-51.848101-51.848101v500.334177c29.812658 0 51.848101-23.331646 51.848101-51.848101z" fill="#007ACC" p-id="60176"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/hydrant.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/hydrant.svg
index 29b3307..b9378aa 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/hydrant.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/hydrant.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421172663" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25578" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M 503.6 418.9 c 19.7 0 35.7 -16 35.7 -35.7 c 0 -19.7 -16 -35.7 -35.7 -35.7 c -19.7 0 -35.7 16 -35.7 35.7 c 0 19.7 16 35.7 35.7 35.7 Z M 391 242.8 h 231.7 c 6.6 -0.5 6.6 -6.1 6.6 -15.4 c 0 -51.5 -31.5 -96.3 -77.7 -114.5 c 0.1 -1 0.1 -2 0.1 -3 c 0 -24.1 -19.5 -43.7 -43.4 -43.7 h -0.8 c -0.3 0 -0.6 0.1 -0.8 0.1 c -23.2 0.9 -41.8 20.2 -41.8 43.8 v 1.8 c -47.5 17.5 -81.1 63.7 -81.1 115.9 c 0.1 8.7 0.1 15 7.2 15 Z M 717.8 463.2 c 42 0 76.2 -33.9 76.2 -75.6 c 0 -41.7 -34.3 -75.6 -76.5 -75.6 c -5.2 0 -12.4 0 -12.4 7.3 v 136.6 c 0 7.3 7 7.3 12.7 7.3 Z M 303 463.2 c 5.7 0 7.4 -4.4 7.6 -6.7 c 0.1 -1.1 -0.2 -2.8 -1.2 -4.3 V 320.9 c 0.3 -1 0.3 -2.1 0.1 -3.2 c -0.3 -1.3 -1.7 -5.7 -7.8 -5.7 c -40.9 0 -71.8 32.5 -71.8 75.6 c 0.1 42.4 32.2 75.6 73.1 75.6 Z" fill="#0c7008" p-id="25579"></path><path d="M 752.6 875.1 H 633.5 V 465.2 h 11 v 18 c 0 3.9 3.2 7.1 7.1 7.1 h 25.1 c 3.9 0 7.1 -3.2 7.1 -7.1 V 295.1 c 0 -3.9 -3.2 -7.1 -7.1 -7.1 h -25.1 c -3.9 0 -7.1 3.2 -7.1 7.1 v 18 h -11 V 270 c 0 -3.9 -3.2 -7.1 -7.1 -7.1 H 388.1 c -3.9 0 -7.1 3.2 -7.1 7.1 v 43.1 h -10.9 v -18 c 0 -3.9 -3.2 -7.1 -7.1 -7.1 h -25 c -3.9 0 -7.1 3.2 -7.1 7.1 v 188.1 c 0 3.9 3.2 7.1 7.1 7.1 h 25 c 3.9 0 7.1 -3.2 7.1 -7.1 v -18 H 381 V 875 h -92.8 c -22.9 0 -41.4 18.5 -41.4 41.4 s 18.5 41.4 41.4 41.4 h 464.4 c 22.9 0 41.4 -18.5 41.4 -41.4 s -18.5 -41.3 -41.4 -41.3 Z m -249 -553 c 33.7 0 61.1 27.4 61.1 61.1 s -27.4 61.1 -61.1 61.1 s -61.1 -27.4 -61.1 -61.1 s 27.4 -61.1 61.1 -61.1 Z" fill="#0c7008" p-id="25580"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499330019" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="77277" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M 503.6 418.9 c 19.7 0 35.7 -16 35.7 -35.7 c 0 -19.7 -16 -35.7 -35.7 -35.7 c -19.7 0 -35.7 16 -35.7 35.7 c 0 19.7 16 35.7 35.7 35.7 Z M 391 242.8 h 231.7 c 6.6 -0.5 6.6 -6.1 6.6 -15.4 c 0 -51.5 -31.5 -96.3 -77.7 -114.5 c 0.1 -1 0.1 -2 0.1 -3 c 0 -24.1 -19.5 -43.7 -43.4 -43.7 h -0.8 c -0.3 0 -0.6 0.1 -0.8 0.1 c -23.2 0.9 -41.8 20.2 -41.8 43.8 v 1.8 c -47.5 17.5 -81.1 63.7 -81.1 115.9 c 0.1 8.7 0.1 15 7.2 15 Z M 717.8 463.2 c 42 0 76.2 -33.9 76.2 -75.6 c 0 -41.7 -34.3 -75.6 -76.5 -75.6 c -5.2 0 -12.4 0 -12.4 7.3 v 136.6 c 0 7.3 7 7.3 12.7 7.3 Z M 303 463.2 c 5.7 0 7.4 -4.4 7.6 -6.7 c 0.1 -1.1 -0.2 -2.8 -1.2 -4.3 V 320.9 c 0.3 -1 0.3 -2.1 0.1 -3.2 c -0.3 -1.3 -1.7 -5.7 -7.8 -5.7 c -40.9 0 -71.8 32.5 -71.8 75.6 c 0.1 42.4 32.2 75.6 73.1 75.6 Z" fill="#007ACC" p-id="77278"></path><path d="M 752.6 875.1 H 633.5 V 465.2 h 11 v 18 c 0 3.9 3.2 7.1 7.1 7.1 h 25.1 c 3.9 0 7.1 -3.2 7.1 -7.1 V 295.1 c 0 -3.9 -3.2 -7.1 -7.1 -7.1 h -25.1 c -3.9 0 -7.1 3.2 -7.1 7.1 v 18 h -11 V 270 c 0 -3.9 -3.2 -7.1 -7.1 -7.1 H 388.1 c -3.9 0 -7.1 3.2 -7.1 7.1 v 43.1 h -10.9 v -18 c 0 -3.9 -3.2 -7.1 -7.1 -7.1 h -25 c -3.9 0 -7.1 3.2 -7.1 7.1 v 188.1 c 0 3.9 3.2 7.1 7.1 7.1 h 25 c 3.9 0 7.1 -3.2 7.1 -7.1 v -18 H 381 V 875 h -92.8 c -22.9 0 -41.4 18.5 -41.4 41.4 s 18.5 41.4 41.4 41.4 h 464.4 c 22.9 0 41.4 -18.5 41.4 -41.4 s -18.5 -41.3 -41.4 -41.3 Z m -249 -553 c 33.7 0 61.1 27.4 61.1 61.1 s -27.4 61.1 -61.1 61.1 s -61.1 -27.4 -61.1 -61.1 s 27.4 -61.1 61.1 -61.1 Z" fill="#007ACC" p-id="77279"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/instrument.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/instrument.svg
index 3022288..5c2f535 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/instrument.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/instrument.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734422347055" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="56301" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M331.072 692.928a256 256 0 1 1 361.856 0l120.768 120.768a426.666667 426.666667 0 1 0-603.392 0z" fill="#0c7008" p-id="56302"></path><path d="M512 938.666667a425.194667 425.194667 0 0 0 134.848-22.101334L512 512l-134.848 404.565333A425.194667 425.194667 0 0 0 512 938.666667z" fill="#0c7008" opacity=".2" p-id="56303"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499368248" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="78535" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M331.072 692.928a256 256 0 1 1 361.856 0l120.768 120.768a426.666667 426.666667 0 1 0-603.392 0z" fill="#007ACC" p-id="78536"></path><path d="M512 938.666667a425.194667 425.194667 0 0 0 134.848-22.101334L512 512l-134.848 404.565333A425.194667 425.194667 0 0 0 512 938.666667z" fill="#007ACC" opacity=".2" p-id="78537"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/meter.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/meter.svg
index d788490..8ccbc81 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/meter.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/meter.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421216512" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="28081" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M510.414861 41.213622c-208.354939 0-377.263158 169.284425-377.263158 378.104339C133.151703 628.146328 510.414861 1001.80805 510.414861 1001.80805S887.678019 628.146328 887.678019 419.317961c0-208.819913-168.908219-378.104338-377.263158-378.104339z m0 621.374613C375.593478 662.588235 266.303406 553.298163 266.303406 418.47678s109.290072-244.111455 244.111455-244.111455S754.526316 283.655397 754.526316 418.47678s-109.290072 244.111455-244.111455 244.111455z" fill="#0c7008" p-id="28082"></path><path d="M427.023851 409.735265l-11.911793-19.355608 32.759546-16.379773 4.467979 17.871918 17.871918-5.955897-4.46798-14.891855 34.991422-5.955897v16.379773l17.127959 1.487917 2.975835-19.359835 34.25169 5.955897-5.955897 14.891856 16.379773 7.448041 5.955897-16.379773 32.759546 13.399711-11.172062 20.847752 14.147897 5.955897s26.309086-40.697924 26.803649-41.691278c-131.782142-85.868054-247.184512 0-247.184512 0L412.136223 418.666997l14.887628-8.931732z m84.883154 126.570205c27.488429-3.41122 33.211839-23.045812 34.260145-35.735381 0.211352-7.448041-3.157598-23.265618-19.372516-31.271629 1.492144 0.494563-8.931732-61.051112-8.931732-61.051112h-15.635814s-8.931732 60.556549-8.192 61.051112c-21.097148 6.953478-19.359835 31.267401-19.359835 31.267402s-2.481271 31.271628 37.231752 35.739608z m-0.765094-52.089792a15.614679 15.614679 0 1 1 0.004227 31.233585 15.614679 15.614679 0 0 1-0.004227-31.233585z m28.388789-15.81335c11.615901 10.27593 14.30007 24.351967 14.088718 31.719695-1.293474 15.496322-8.323038 39.463628-42.092846 43.631488-48.775794-5.457106-45.728099-43.635715-45.728099-43.635715s-1.394923-19.490873 11.861069-31.402667l-114.662638 0.583331s22.585065 99.271992 139.230184 111.682576c137.488644-10.91844 154.117812-113.170493 154.117812-113.170493l-116.8142 0.591785zM510.414861 225.089783c-108.554568 0-196.557276 88.002708-196.557276 196.557276s88.002708 196.557276 196.557276 196.557275c108.558795 0 196.557276-88.002708 196.557275-196.557275s-87.998481-196.557276-196.557275-196.557276z m0.72705 384.161684c-104.014729 0-188.331459-84.316731-188.331459-188.331459 0-104.014729 84.316731-188.335686 188.331459-188.335686s188.331459 84.316731 188.331459 188.335686c0.004227 104.014729-84.316731 188.331459-188.331459 188.331459z" fill="#0c7008" p-id="28083"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499430227" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="81534" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 0C299.946667 0 128 172.928 128 386.261333 128 599.594667 512 981.333333 512 981.333333s384-381.738667 384-595.072S724.053333 0 512 0z m0 634.794667c-137.216 0-248.490667-111.658667-248.490667-249.386667 0-137.728 111.274667-249.386667 248.490667-249.386667 137.216 0 248.490667 111.658667 248.490667 249.386667 0 137.728-111.274667 249.386667-248.490667 249.386667z" fill="#007ACC" p-id="81535"></path><path d="M421.504 371.072l-12.928-20.992 35.541333-17.792 4.864 19.413333 19.370667-6.485333-4.821333-16.170667 37.973333-6.442666v17.749333l18.56 1.621333 3.242667-20.992 37.162666 6.442667-6.442666 16.213333 17.792 8.064 6.442666-17.792 35.541334 14.506667-12.117334 22.656 15.36 6.485333s28.586667-44.202667 29.098667-45.226666c-143.018667-93.226667-268.288 0-268.288 0L405.333333 380.714667l16.170667-9.685334z m92.117333 137.386667c29.866667-3.712 36.053333-25.045333 37.162667-38.826667a37.546667 37.546667 0 0 0-20.992-33.92c1.621333 0.554667-9.728-66.261333-9.728-66.261333h-16.938667s-9.685333 65.706667-8.917333 66.261333c-22.869333 7.552-20.992 33.962667-20.992 33.962667s-2.688 33.92 40.405333 38.784z m-0.853333-56.533334a16.938667 16.938667 0 1 1 0 33.877334 16.938667 16.938667 0 0 1 0-33.877334z m30.848-17.194666c12.586667 11.178667 15.488 26.453333 15.274667 34.432-1.408 16.810667-9.045333 42.837333-45.653334 47.36-52.949333-5.930667-49.664-47.36-49.664-47.36s-1.493333-21.162667 12.885334-34.090667l-124.458667 0.64s24.533333 107.733333 151.125333 121.216c149.205333-11.861333 167.253333-122.837333 167.253334-122.837333l-126.762667 0.64zM512 170.666667a213.333333 213.333333 0 1 0 0 426.666666A213.333333 213.333333 0 0 0 512 170.666667z m0.768 416.938666a204.373333 204.373333 0 1 1 0-408.789333 204.373333 204.373333 0 0 1 0 408.789333z" fill="#007ACC" p-id="81536"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/nozzle.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/nozzle.svg
index 9cd1d64..9c6d159 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/nozzle.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/nozzle.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421157800" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23439" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M752.17755 64.635904A535.43257 535.43257 0 0 0 550.622344 286.158899h-86.470198A475.187873 475.187873 0 0 1 700.124766 5.130755c55.295416-21.788214 75.43387 31.117894 52.052784 59.505149z m-11.605211 221.466107c16.156274 0 29.24058 13.311859 29.24058 29.752575v352.821165h168.048004c16.156274 0 29.24058 13.368748 29.24058 29.752574v132.208383c0 16.497604-13.084306 29.752575-29.24058 29.752575H687.211124l-159.912978 155.361915a29.58191 29.58191 0 0 1-40.959568 0l-151.493512-155.305027H86.129469A29.525022 29.525022 0 0 1 56.888889 830.579819v-132.208382c0-16.383827 13.084306-29.752575 29.24058-29.752575h168.218669V315.854586c0-16.440715 13.084306-29.752575 29.24058-29.752575h456.983621z" fill="#0c7008" p-id="23440"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499466619" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="83497" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M752.17755 64.635904A535.43257 535.43257 0 0 0 550.622344 286.158899h-86.470198A475.187873 475.187873 0 0 1 700.124766 5.130755c55.295416-21.788214 75.43387 31.117894 52.052784 59.505149z m-11.605211 221.466107c16.156274 0 29.24058 13.311859 29.24058 29.752575v352.821165h168.048004c16.156274 0 29.24058 13.368748 29.24058 29.752574v132.208383c0 16.497604-13.084306 29.752575-29.24058 29.752575H687.211124l-159.912978 155.361915a29.58191 29.58191 0 0 1-40.959568 0l-151.493512-155.305027H86.129469A29.525022 29.525022 0 0 1 56.888889 830.579819v-132.208382c0-16.383827 13.084306-29.752575 29.24058-29.752575h168.218669V315.854586c0-16.440715 13.084306-29.752575 29.24058-29.752575h456.983621z" fill="#007ACC" p-id="83498"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pipe.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pipe.svg
index fdc4bd7..f519c9b 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pipe.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pipe.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734420976050" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12009" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M928.2 831.5V511.4c0-70.7-57.3-128-128-128h-256v-64h-64v64H352V191.3H95.9v320.1c0 70.7 57.3 128 128 128h256v64h64v-64h128v192.1h256.3zM31.9 95.3H416v64H31.9zM608.1 863.5h384.1v64H608.1z" p-id="12010" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499500438" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="84677" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M928.2 831.5V511.4c0-70.7-57.3-128-128-128h-256v-64h-64v64H352V191.3H95.9v320.1c0 70.7 57.3 128 128 128h256v64h64v-64h128v192.1h256.3zM31.9 95.3H416v64H31.9zM608.1 863.5h384.1v64H608.1z" p-id="84678" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pressmeter.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pressmeter.svg
index cc93e8c..e2c6b42 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pressmeter.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pressmeter.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421317129" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="33400" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M10.141355 670.4128A501.486933 501.486933 0 0 0 150.258688 928.426667l106.9056-105.2672a351.9488 351.9488 0 0 1 54.613333-546.133334 365.533867 365.533867 0 0 1 421.376 14.506667l102.6048-109.806933A518.5536 518.5536 0 0 0 227.809621 153.258667a505.719467 505.719467 0 0 0-188.552533 226.133333 496.4352 496.4352 0 0 0-29.115733 291.1232z" p-id="33401" fill="#0c7008"></path><path d="M1014.514688 670.4128a496.503467 496.503467 0 0 0-29.115733-291.1232 503.7056 503.7056 0 0 0-123.460267-175.3088l-100.522667 111.240533a354.986667 354.986667 0 0 1 84.309334 121.002667 351.061333 351.061333 0 0 1-78.199467 386.935467l106.871467 105.2672a501.418667 501.418667 0 0 0 140.117333-258.013867z" fill="#0c7008" fill-opacity="0.23" p-id="33402"></path><path d="M538.832555 666.624a64.853333 64.853333 0 0 1-90.5216 0 62.2592 62.2592 0 0 1 0-89.088c24.9856-24.576 180.906667-89.053867 180.906666-89.053867s-65.501867 153.6-90.5216 178.107734z" p-id="33403" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734499537934" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="85852" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M10.141355 670.4128A501.486933 501.486933 0 0 0 150.258688 928.426667l106.9056-105.2672a351.9488 351.9488 0 0 1 54.613333-546.133334 365.533867 365.533867 0 0 1 421.376 14.506667l102.6048-109.806933A518.5536 518.5536 0 0 0 227.809621 153.258667a505.719467 505.719467 0 0 0-188.552533 226.133333 496.4352 496.4352 0 0 0-29.115733 291.1232z" p-id="85853" fill="#007ACC"></path><path d="M1014.514688 670.4128a496.503467 496.503467 0 0 0-29.115733-291.1232 503.7056 503.7056 0 0 0-123.460267-175.3088l-100.522667 111.240533a354.986667 354.986667 0 0 1 84.309334 121.002667 351.061333 351.061333 0 0 1-78.199467 386.935467l106.871467 105.2672a501.418667 501.418667 0 0 0 140.117333-258.013867z" fill="#007ACC" fill-opacity="0.23" p-id="85854"></path><path d="M538.832555 666.624a64.853333 64.853333 0 0 1-90.5216 0 62.2592 62.2592 0 0 1 0-89.088c24.9856-24.576 180.906667-89.053867 180.906666-89.053867s-65.501867 153.6-90.5216 178.107734z" p-id="85855" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pump.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pump.svg
index 15511ed..96cc876 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pump.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/pump.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734420839394" class="icon" viewBox="0 0 1442 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6377" width="45.0625" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M738.304 422.912c-45.056 0-81.408 36.352-81.408 81.408s36.352 81.408 81.408 81.408c44.544 0 80.896-36.352 81.408-81.408 0-45.056-36.352-81.408-81.408-81.408z m-0.512 135.68c-29.696 0-54.272-24.064-54.272-54.272 0-30.208 24.064-54.272 54.272-54.272 30.208 0 54.272 24.064 54.272 54.272 0 30.208-24.064 54.272-54.272 54.272z" fill="#4694F5" p-id="6378"></path><path d="M1208.832 57.856h-468.992c-251.392 0-455.68 204.288-455.68 455.68 0 43.52 6.144 87.552 18.432 129.536H250.368c-90.112 0.512-162.816 73.216-163.328 163.328 0.512 90.112 72.704 162.816 163.328 163.328H740.864c251.392 0 455.68-204.288 455.68-455.68 0-43.52-6.144-87.552-18.432-129.536h31.744c89.6-0.512 162.816-72.704 163.328-163.328-1.536-90.112-74.24-162.816-164.352-163.328z m-254.464 646.144s-43.52 102.4-227.84 102.4v-157.696c-26.624-2.56-51.2-12.288-71.68-28.672l-104.96 107.52s-102.4-44.032-102.4-228.352h157.696c2.56-26.624 13.824-51.712 30.72-72.192L528.896 322.56s43.52-102.4 227.84-102.4v160.768c24.576 3.072 48.128 13.312 67.584 29.184l106.496-109.056c0.512 0 102.4 44.032 102.4 228.864h-160.768c-2.56 24.064-12.288 47.616-27.136 67.072l109.056 107.008z" fill="#4694F5" p-id="6379"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498556241" class="icon" viewBox="0 0 1442 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="49374" data-spm-anchor-id="a313x.search_index.0.i60.6afa3a81HgxtZ3" width="45.0625" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M738.304 422.912c-45.056 0-81.408 36.352-81.408 81.408s36.352 81.408 81.408 81.408c44.544 0 80.896-36.352 81.408-81.408 0-45.056-36.352-81.408-81.408-81.408z m-0.512 135.68c-29.696 0-54.272-24.064-54.272-54.272 0-30.208 24.064-54.272 54.272-54.272 30.208 0 54.272 24.064 54.272 54.272 0 30.208-24.064 54.272-54.272 54.272z" fill="#007ACC" p-id="49375"></path><path d="M1208.832 57.856h-468.992c-251.392 0-455.68 204.288-455.68 455.68 0 43.52 6.144 87.552 18.432 129.536H250.368c-90.112 0.512-162.816 73.216-163.328 163.328 0.512 90.112 72.704 162.816 163.328 163.328H740.864c251.392 0 455.68-204.288 455.68-455.68 0-43.52-6.144-87.552-18.432-129.536h31.744c89.6-0.512 162.816-72.704 163.328-163.328-1.536-90.112-74.24-162.816-164.352-163.328z m-254.464 646.144s-43.52 102.4-227.84 102.4v-157.696c-26.624-2.56-51.2-12.288-71.68-28.672l-104.96 107.52s-102.4-44.032-102.4-228.352h157.696c2.56-26.624 13.824-51.712 30.72-72.192L528.896 322.56s43.52-102.4 227.84-102.4v160.768c24.576 3.072 48.128 13.312 67.584 29.184l106.496-109.056c0.512 0 102.4 44.032 102.4 228.864h-160.768c-2.56 24.064-12.288 47.616-27.136 67.072l109.056 107.008z" fill="#007ACC" p-id="49376"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/resistance.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/resistance.svg
index 6277c8f..3f8419a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/resistance.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/resistance.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421497889" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="42277" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M128 320a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h448V320z" p-id="42278" fill="#0c7008"></path><path d="M896 320h-192v384h192a64 64 0 0 0 64-64V384a64 64 0 0 0-64-64z" p-id="42279" fill="#0c7008"></path><path d="M576 832h-32a32 32 0 0 0 0 64h192a32 32 0 0 0 0-64H704v-128H576z" p-id="42280" fill="#0c7008"></path><path d="M704 192h32a32 32 0 0 0 0-64h-192a32 32 0 0 0 0 64H576v128h128z" p-id="42281" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421497889" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="42277" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M128 320a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h448V320z" p-id="42278" fill="#007ACC"></path><path d="M896 320h-192v384h192a64 64 0 0 0 64-64V384a64 64 0 0 0-64-64z" p-id="42279" fill="#007ACC"></path><path d="M576 832h-32a32 32 0 0 0 0 64h192a32 32 0 0 0 0-64H704v-128H576z" p-id="42280" fill="#007ACC"></path><path d="M704 192h32a32 32 0 0 0 0-64h-192a32 32 0 0 0 0 64H576v128h128z" p-id="42281" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/tank.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/tank.svg
index b531c63..c03a4e0 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/tank.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/tank.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421002230" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13357" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M654.507 111.29l54.245 84.66h80.366v592.352H196.737V195.95h286.906l50.864-84.66H112.112v761.672h761.631V111.29z" fill="#0c7008" p-id="13358"></path><path d="M134.269 459.886s130.974-120.878 316.35 0c185.37 120.866 370.74-38.266 370.74-38.266v382.813H142.334l-8.065-344.547z" fill="#0c7008" p-id="13359"></path><path d="M598.203 75.048c32.101 39.318 63.86 78.098 84.871 124.458 24.718 54.643-15.875 116.936-72.833 124.668-55.684 7.522-106.303-36.452-105.857-92.463 0.116-16.611 6.598-31.585 14.049-46.021 20.653-39.868 48.396-74.811 77.221-108.934 0.432-0.479 1.122-0.748 2.549-1.708z" fill="#0c7008" p-id="13360"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421002230" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13357" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M654.507 111.29l54.245 84.66h80.366v592.352H196.737V195.95h286.906l50.864-84.66H112.112v761.672h761.631V111.29z" fill="#007ACC" p-id="13358"></path><path d="M134.269 459.886s130.974-120.878 316.35 0c185.37 120.866 370.74-38.266 370.74-38.266v382.813H142.334l-8.065-344.547z" fill="#007ACC" p-id="13359"></path><path d="M598.203 75.048c32.101 39.318 63.86 78.098 84.871 124.458 24.718 54.643-15.875 116.936-72.833 124.668-55.684 7.522-106.303-36.452-105.857-92.463 0.116-16.611 6.598-31.585 14.049-46.021 20.653-39.868 48.396-74.811 77.221-108.934 0.432-0.479 1.122-0.748 2.549-1.708z" fill="#007ACC" p-id="13360"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/threelink.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/threelink.svg
index c6644b0..dd017f5 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/threelink.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/threelink.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421079292" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18198" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M181.96 159.44h336.76v705.16H181.96z" fill="#0c7008" p-id="18199"></path><path d="M506.88 159.88h46.52v725.16h-46.52z" fill="#0c7008" p-id="18200"></path><path d="M518.72 652.76h341.32v41.4h-341.32z" fill="#0c7008" p-id="18201"></path><path d="M222.72 188.76h140v696.32h-140z" fill="#0c7008" p-id="18202"></path><path d="M473.36 397.4h365.32v255.36h-365.32z" fill="#0c7008" p-id="18203"></path><path d="M332.8 431.96h492.52v119.44H332.8z" fill="#0c7008" p-id="18204"></path><path d="M920.6 766.2A44.72 44.72 0 0 1 876 810.8h-23.2a44.72 44.72 0 0 1-44.6-44.6V336.72A44.72 44.72 0 0 1 852.84 292H876a44.72 44.72 0 0 1 44.6 44.6z" fill="#0c7008" p-id="18205"></path><path d="M920.6 766.2A44.72 44.72 0 0 1 876 810.8h-23.2a44.72 44.72 0 0 1-44.6-44.6V336.72A44.72 44.72 0 0 1 852.84 292H876a44.72 44.72 0 0 1 44.6 44.6z" fill="#0c7008" p-id="18206"></path><path d="M592 103.24c16.52 0 30.04 20 30.04 44.6v23.2c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6V148c0-24.52 13.52-44.6 30.04-44.6z" fill="#0c7008" p-id="18207"></path><path d="M592 103.24c16.52 0 30.04 20 30.04 44.6v23.2c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6V148c0-24.52 13.52-44.6 30.04-44.6z" fill="#0c7008" p-id="18208"></path><path d="M592 808.36c16.52 0 30.04 20 30.04 44.6V876c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6v-23.2c0-24.52 13.52-44.6 30.04-44.6z" fill="#0c7008" p-id="18209"></path><path d="M592 808.36c16.52 0 30.04 20 30.04 44.6V876c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6v-23.2c0-24.52 13.52-44.6 30.04-44.6z" fill="#0c7008" p-id="18210"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498881965" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="57752" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M181.96 159.44h336.76v705.16H181.96z" fill="#007ACC" p-id="57753"></path><path d="M506.88 159.88h46.52v725.16h-46.52z" fill="#007ACC" p-id="57754"></path><path d="M518.72 652.76h341.32v41.4h-341.32z" fill="#007ACC" p-id="57755"></path><path d="M222.72 188.76h140v696.32h-140z" fill="#007ACC" p-id="57756"></path><path d="M473.36 397.4h365.32v255.36h-365.32z" fill="#007ACC" p-id="57757"></path><path d="M332.8 431.96h492.52v119.44H332.8z" fill="#007ACC" p-id="57758"></path><path d="M920.6 766.2A44.72 44.72 0 0 1 876 810.8h-23.2a44.72 44.72 0 0 1-44.6-44.6V336.72A44.72 44.72 0 0 1 852.84 292H876a44.72 44.72 0 0 1 44.6 44.6z" fill="#007ACC" p-id="57759"></path><path d="M920.6 766.2A44.72 44.72 0 0 1 876 810.8h-23.2a44.72 44.72 0 0 1-44.6-44.6V336.72A44.72 44.72 0 0 1 852.84 292H876a44.72 44.72 0 0 1 44.6 44.6z" fill="#007ACC" p-id="57760"></path><path d="M592 103.24c16.52 0 30.04 20 30.04 44.6v23.2c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6V148c0-24.52 13.52-44.6 30.04-44.6z" fill="#007ACC" p-id="57761"></path><path d="M592 103.24c16.52 0 30.04 20 30.04 44.6v23.2c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6V148c0-24.52 13.52-44.6 30.04-44.6z" fill="#007ACC" p-id="57762"></path><path d="M592 808.36c16.52 0 30.04 20 30.04 44.6V876c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6v-23.2c0-24.52 13.52-44.6 30.04-44.6z" fill="#007ACC" p-id="57763"></path><path d="M592 808.36c16.52 0 30.04 20 30.04 44.6V876c0 24.52-13.52 44.6-30.04 44.6H133.44c-16.52 0-30.04-20-30.04-44.6v-23.2c0-24.52 13.52-44.6 30.04-44.6z" fill="#007ACC" p-id="57764"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/translation.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/translation.svg
index 4ebee05..47058c4 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/translation.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/translation.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421370068" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35716" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M896 708.266667L165.12 829.44V185.173333L896 306.346667v401.92z" fill="#0c7008" p-id="35717"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734421370068" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="35716" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M896 708.266667L165.12 829.44V185.173333L896 306.346667v401.92z" fill="#007ACC" p-id="35717"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/valve.svg b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/valve.svg
index 1b337a6..a6cd363 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/valve.svg
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Resources/valve.svg
@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734420941834" class="icon" viewBox="0 0 1090 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10497" width="34.0625" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M502.944 296.975V143.052h-231.98c-31.587 0-57.321-24.93-57.321-55.526 0-30.598 25.75-55.526 57.321-55.526H833.06c31.571 0 57.306 24.93 57.306 55.525 0 30.922-25.735 55.526-57.29 55.526h-231.64v153.924h18.179c21.615 0 39.112 16.955 39.112 37.904v90.565l-213.105-0.34v-90.225c0-20.95 17.497-37.904 39.128-37.904h18.194z m-381.74 590.293v63.84c0 9.306-7.834 16.955-17.698 16.955H58.231c-9.862-0.001-17.698-7.65-17.698-17.296V542.472c0-9.63 7.835-17.28 17.698-17.28h45.274c9.863 0 17.698 7.65 17.698 17.28v83.133h150.55c6.272-85.518 79.247-152.95 168.387-152.95h207.98c89.14 0 162.116 67.432 168.403 152.95h150.873v-83.798c0-9.29 7.495-16.615 17.033-16.615h46.297c9.523 0 17.001 7.308 17.001 16.615v409.625c0.341 9.321-7.478 16.63-17.016 16.63h-46.297c-9.523 0-17.018-7.309-17.018-16.63v-64.165H805.36C780.755 948.583 719.655 992 648.119 992H440.142c-71.52 0-132.635-43.402-157.239-104.733H121.204z" p-id="10498" fill="#0c7008"></path></svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734498669284" class="icon" viewBox="0 0 1090 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="52721" width="34.0625" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M493.238 282.64V118.455H245.793c-33.693 0-61.143-26.591-61.143-59.227C184.65 26.59 212.117 0 245.793 0h599.569c33.676 0 61.126 26.591 61.126 59.227 0 32.983-27.45 59.227-61.11 59.227H598.297V282.64h19.39c23.056 0 41.72 18.085 41.72 40.431v96.603l-227.312-0.364v-96.239c0-22.346 18.663-40.431 41.736-40.431h19.407zM86.049 912.286v68.096c0 9.926-8.357 18.085-18.878 18.085H18.878C8.358 998.466 0 990.307 0 980.018V544.504c0-10.273 8.357-18.432 18.878-18.432H67.17c10.52 0 18.878 8.159 18.878 18.432v88.675h160.586c6.69-91.219 84.53-163.146 179.613-163.146h221.845c95.083 0 172.924 71.927 179.63 163.146h160.932v-89.385c0-9.91 7.994-17.722 18.168-17.722h49.383c10.158 0 18.135 7.795 18.135 17.722v436.934c0.364 9.942-7.977 17.738-18.151 17.738h-49.383c-10.158 0-18.152-7.796-18.152-17.738v-68.443h-172.84C789.57 977.689 724.396 1024 648.092 1024H426.248c-76.288 0-141.477-46.295-167.721-111.715H86.049z" p-id="52722" fill="#007ACC"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsFunctionHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsFunctionHelper.cs
new file mode 100644
index 0000000..e322341
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsFunctionHelper.cs
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HStation.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class XhsFunctionHelper
+    {
+        /// <summary>
+        /// 妯″潡
+        /// </summary>
+        public const string Modular = "Xhs";
+
+        /// <summary>
+        /// 椤圭洰绠$悊
+        /// </summary>
+        public const string ProjectMgr = "xhs-project-mgr";
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsMainSvgImageHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsMainSvgImageHelper.cs
new file mode 100644
index 0000000..c42c9ad
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/XhsMainSvgImageHelper.cs
@@ -0,0 +1,51 @@
+锘縰sing DevExpress.Utils.Svg;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HStation.WinFrmUI
+{
+    /// <summary>
+    /// SvgImageHelper
+    /// </summary>
+    public class XhsMainSvgImageHelper
+    {
+        /// <summary>
+        /// 棣栭〉
+        /// </summary>
+        public static SvgImage Home
+        {
+            get
+            {
+                if (_home == null)
+                {
+                    _home = SvgImage.FromStream(new MemoryStream(HStation.WinFrmUI.Xhs.Core.Properties.Resources.home));
+                }
+                return _home;
+            }
+        }
+        private static SvgImage _home = null;
+
+
+        /// <summary>
+        /// 椤圭洰
+        /// </summary>
+        public static SvgImage Project
+        {
+            get
+            {
+                if (_project == null)
+                {
+                    _project = SvgImage.FromStream(new MemoryStream(HStation.WinFrmUI.Xhs.Core.Properties.Resources.project));
+                }
+                return _project;
+            }
+        }
+        private static SvgImage _project = null;
+
+
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.Designer.cs
index 1cd6e71..b072a56 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.Designer.cs
@@ -34,17 +34,6 @@
             homeXhsProjectTreeListCtrl1 = new HomeXhsProjectTreeListCtrl();
             svgImg32 = new DevExpress.Utils.SvgImageCollection(components);
             sidePanel1 = new SidePanel();
-            gridControl1 = new DevExpress.XtraGrid.GridControl();
-            layoutView1 = new DevExpress.XtraGrid.Views.Layout.LayoutView();
-            colName = new DevExpress.XtraGrid.Columns.LayoutViewColumn();
-            layoutViewField_colName = new DevExpress.XtraGrid.Views.Layout.LayoutViewField();
-            colCount = new DevExpress.XtraGrid.Columns.LayoutViewColumn();
-            layoutViewField_colCount = new DevExpress.XtraGrid.Views.Layout.LayoutViewField();
-            colPicture = new DevExpress.XtraGrid.Columns.LayoutViewColumn();
-            repPicEdit = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit();
-            layoutViewField_colPicture = new DevExpress.XtraGrid.Views.Layout.LayoutViewField();
-            layoutViewCard1 = new DevExpress.XtraGrid.Views.Layout.LayoutViewCard();
-            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
             sidePanelBottom = new SidePanel();
             dockPanelFill = new DevExpress.XtraBars.Docking.DockPanel();
             controlContainer2 = new DevExpress.XtraBars.Docking.ControlContainer();
@@ -53,16 +42,9 @@
             dockPanelLeft = new DevExpress.XtraBars.Docking.DockPanel();
             dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
             dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
+            xhsProjectHomeTitleCtrl1 = new XhsProjectHomeTitleCtrl();
             ((ISupportInitialize)svgImg32).BeginInit();
             sidePanel1.SuspendLayout();
-            ((ISupportInitialize)gridControl1).BeginInit();
-            ((ISupportInitialize)layoutView1).BeginInit();
-            ((ISupportInitialize)layoutViewField_colName).BeginInit();
-            ((ISupportInitialize)layoutViewField_colCount).BeginInit();
-            ((ISupportInitialize)repPicEdit).BeginInit();
-            ((ISupportInitialize)layoutViewField_colPicture).BeginInit();
-            ((ISupportInitialize)layoutViewCard1).BeginInit();
-            ((ISupportInitialize)gridView1).BeginInit();
             sidePanelBottom.SuspendLayout();
             dockPanelFill.SuspendLayout();
             controlContainer2.SuspendLayout();
@@ -115,156 +97,13 @@
             // 
             // sidePanel1
             // 
-            sidePanel1.Controls.Add(gridControl1);
+            sidePanel1.Controls.Add(xhsProjectHomeTitleCtrl1);
             sidePanel1.Dock = DockStyle.Top;
             sidePanel1.Location = new Point(0, 0);
             sidePanel1.Name = "sidePanel1";
             sidePanel1.Size = new Size(1063, 94);
             sidePanel1.TabIndex = 1;
             sidePanel1.Text = "sidePanel1";
-            // 
-            // gridControl1
-            // 
-            gridControl1.Dock = DockStyle.Fill;
-            gridControl1.EmbeddedNavigator.Margin = new Padding(2);
-            gridControl1.Location = new Point(0, 0);
-            gridControl1.MainView = layoutView1;
-            gridControl1.Margin = new Padding(2);
-            gridControl1.Name = "gridControl1";
-            gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repPicEdit });
-            gridControl1.Size = new Size(1063, 93);
-            gridControl1.TabIndex = 0;
-            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { layoutView1, gridView1 });
-            // 
-            // layoutView1
-            // 
-            layoutView1.Appearance.Card.BackColor = Color.Transparent;
-            layoutView1.Appearance.Card.Options.UseBackColor = true;
-            layoutView1.Appearance.FieldCaption.BackColor = Color.Transparent;
-            layoutView1.Appearance.FieldCaption.Options.UseBackColor = true;
-            layoutView1.Appearance.FieldValue.BackColor = Color.Transparent;
-            layoutView1.Appearance.FieldValue.Options.UseBackColor = true;
-            layoutView1.BorderStyle = BorderStyles.NoBorder;
-            layoutView1.CardHorzInterval = 4;
-            layoutView1.CardMinSize = new Size(210, 69);
-            layoutView1.CardVertInterval = 0;
-            layoutView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.LayoutViewColumn[] { colName, colCount, colPicture });
-            layoutView1.DetailHeight = 223;
-            layoutView1.GridControl = gridControl1;
-            layoutView1.Name = "layoutView1";
-            layoutView1.OptionsBehavior.Editable = false;
-            layoutView1.OptionsBehavior.ScrollVisibility = DevExpress.XtraGrid.Views.Base.ScrollVisibility.Auto;
-            layoutView1.OptionsCustomization.AllowFilter = false;
-            layoutView1.OptionsCustomization.AllowSort = false;
-            layoutView1.OptionsItemText.TextToControlDistance = 3;
-            layoutView1.OptionsView.AllowHotTrackFields = false;
-            layoutView1.OptionsView.CardArrangeRule = DevExpress.XtraGrid.Views.Layout.LayoutCardArrangeRule.AllowPartialCards;
-            layoutView1.OptionsView.FocusRectStyle = DevExpress.XtraGrid.Views.Layout.FocusRectStyle.None;
-            layoutView1.OptionsView.ShowCardCaption = false;
-            layoutView1.OptionsView.ShowCardExpandButton = false;
-            layoutView1.OptionsView.ShowCardLines = false;
-            layoutView1.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;
-            layoutView1.OptionsView.ShowHeaderPanel = false;
-            layoutView1.OptionsView.ViewMode = DevExpress.XtraGrid.Views.Layout.LayoutViewMode.Row;
-            layoutView1.TemplateCard = layoutViewCard1;
-            layoutView1.FieldValueClick += layoutView1_FieldValueClick;
-            // 
-            // colName
-            // 
-            colName.AppearanceCell.Font = new Font("Tahoma", 13F, FontStyle.Regular, GraphicsUnit.Point);
-            colName.AppearanceCell.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.Question;
-            colName.AppearanceCell.Options.UseFont = true;
-            colName.AppearanceCell.Options.UseForeColor = true;
-            colName.AppearanceCell.Options.UseTextOptions = true;
-            colName.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
-            colName.Caption = "鍚嶇О";
-            colName.FieldName = "Name";
-            colName.LayoutViewField = layoutViewField_colName;
-            colName.MinWidth = 21;
-            colName.Name = "colName";
-            colName.Width = 78;
-            // 
-            // layoutViewField_colName
-            // 
-            layoutViewField_colName.ContentHorzAlignment = DevExpress.Utils.HorzAlignment.Center;
-            layoutViewField_colName.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
-            layoutViewField_colName.EditorPreferredWidth = 106;
-            layoutViewField_colName.Location = new Point(133, 0);
-            layoutViewField_colName.Name = "layoutViewField_colName";
-            layoutViewField_colName.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
-            layoutViewField_colName.Size = new Size(159, 36);
-            layoutViewField_colName.TextSize = new Size(0, 0);
-            layoutViewField_colName.TextVisible = false;
-            // 
-            // colCount
-            // 
-            colCount.AppearanceCell.Font = new Font("Tahoma", 16F, FontStyle.Bold, GraphicsUnit.Point);
-            colCount.AppearanceCell.FontStyleDelta = FontStyle.Bold;
-            colCount.AppearanceCell.Options.UseFont = true;
-            colCount.AppearanceCell.Options.UseTextOptions = true;
-            colCount.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
-            colCount.Caption = "鏁伴噺";
-            colCount.FieldName = "Count";
-            colCount.LayoutViewField = layoutViewField_colCount;
-            colCount.MinWidth = 21;
-            colCount.Name = "colCount";
-            colCount.Width = 78;
-            // 
-            // layoutViewField_colCount
-            // 
-            layoutViewField_colCount.ContentHorzAlignment = DevExpress.Utils.HorzAlignment.Center;
-            layoutViewField_colCount.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
-            layoutViewField_colCount.EditorPreferredWidth = 106;
-            layoutViewField_colCount.Location = new Point(133, 36);
-            layoutViewField_colCount.Name = "layoutViewField_colCount";
-            layoutViewField_colCount.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
-            layoutViewField_colCount.Size = new Size(159, 65);
-            layoutViewField_colCount.TextSize = new Size(0, 0);
-            layoutViewField_colCount.TextVisible = false;
-            // 
-            // colPicture
-            // 
-            colPicture.Caption = "鍥剧墖";
-            colPicture.ColumnEdit = repPicEdit;
-            colPicture.FieldName = "Image";
-            colPicture.LayoutViewField = layoutViewField_colPicture;
-            colPicture.MinWidth = 21;
-            colPicture.Name = "colPicture";
-            colPicture.Width = 78;
-            // 
-            // repPicEdit
-            // 
-            repPicEdit.Name = "repPicEdit";
-            // 
-            // layoutViewField_colPicture
-            // 
-            layoutViewField_colPicture.EditorPreferredWidth = 87;
-            layoutViewField_colPicture.Location = new Point(0, 0);
-            layoutViewField_colPicture.Name = "layoutViewField_colPicture";
-            layoutViewField_colPicture.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
-            layoutViewField_colPicture.Size = new Size(133, 101);
-            layoutViewField_colPicture.StartNewLine = true;
-            layoutViewField_colPicture.TextSize = new Size(0, 0);
-            layoutViewField_colPicture.TextVisible = false;
-            // 
-            // layoutViewCard1
-            // 
-            layoutViewCard1.CustomizationFormText = "TemplateCard";
-            layoutViewCard1.GroupBordersVisible = false;
-            layoutViewCard1.GroupStyle = DevExpress.Utils.GroupStyle.Light;
-            layoutViewCard1.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
-            layoutViewCard1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutViewField_colCount, layoutViewField_colPicture, layoutViewField_colName });
-            layoutViewCard1.Name = "layoutViewCard1";
-            layoutViewCard1.OptionsItemText.TextToControlDistance = 3;
-            layoutViewCard1.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
-            layoutViewCard1.Text = "TemplateCard";
-            // 
-            // gridView1
-            // 
-            gridView1.DetailHeight = 223;
-            gridView1.GridControl = gridControl1;
-            gridView1.Name = "gridView1";
-            gridView1.OptionsEditForm.PopupEditFormWidth = 560;
             // 
             // sidePanelBottom
             // 
@@ -356,6 +195,14 @@
             dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
             dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
             // 
+            // xhsProjectHomeTitleCtrl1
+            // 
+            xhsProjectHomeTitleCtrl1.Dock = DockStyle.Fill;
+            xhsProjectHomeTitleCtrl1.Location = new Point(0, 0);
+            xhsProjectHomeTitleCtrl1.Name = "xhsProjectHomeTitleCtrl1";
+            xhsProjectHomeTitleCtrl1.Size = new Size(1063, 93);
+            xhsProjectHomeTitleCtrl1.TabIndex = 0;
+            // 
             // HomeXhsProjectPage
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -369,14 +216,6 @@
             Size = new Size(1063, 677);
             ((ISupportInitialize)svgImg32).EndInit();
             sidePanel1.ResumeLayout(false);
-            ((ISupportInitialize)gridControl1).EndInit();
-            ((ISupportInitialize)layoutView1).EndInit();
-            ((ISupportInitialize)layoutViewField_colName).EndInit();
-            ((ISupportInitialize)layoutViewField_colCount).EndInit();
-            ((ISupportInitialize)repPicEdit).EndInit();
-            ((ISupportInitialize)layoutViewField_colPicture).EndInit();
-            ((ISupportInitialize)layoutViewCard1).EndInit();
-            ((ISupportInitialize)gridView1).EndInit();
             sidePanelBottom.ResumeLayout(false);
             dockPanelFill.ResumeLayout(false);
             controlContainer2.ResumeLayout(false);
@@ -395,13 +234,6 @@
         private DevExpress.Utils.SvgImageCollection svgImg32;
         private DevExpress.XtraEditors.SidePanel sidePanel1;
         private DevExpress.XtraEditors.SidePanel sidePanelBottom;
-        private DevExpress.XtraGrid.GridControl gridControl1;
-        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
-        private DevExpress.XtraGrid.Views.Layout.LayoutView layoutView1;
-        private DevExpress.XtraGrid.Columns.LayoutViewColumn colName;
-        private DevExpress.XtraGrid.Columns.LayoutViewColumn colCount;
-        private DevExpress.XtraGrid.Columns.LayoutViewColumn colPicture;
-        private DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit repPicEdit;
         private DevExpress.XtraBars.Docking.DockPanel dockPanelLeft;
         private DevExpress.XtraBars.Docking.ControlContainer dockPanel1_Container;
         private DevExpress.XtraBars.Docking.DockManager dockManager1;
@@ -409,9 +241,6 @@
         private DevExpress.XtraBars.Docking.ControlContainer controlContainer1;
         private DevExpress.XtraBars.Docking.DockPanel dockPanelFill;
         private DevExpress.XtraBars.Docking.ControlContainer controlContainer2;
-        private DevExpress.XtraGrid.Views.Layout.LayoutViewField layoutViewField_colName;
-        private DevExpress.XtraGrid.Views.Layout.LayoutViewField layoutViewField_colCount;
-        private DevExpress.XtraGrid.Views.Layout.LayoutViewField layoutViewField_colPicture;
-        private DevExpress.XtraGrid.Views.Layout.LayoutViewCard layoutViewCard1;
+        private XhsProjectHomeTitleCtrl xhsProjectHomeTitleCtrl1;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs
index feca9ea..a1e7bbb 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs
@@ -11,69 +11,24 @@
         {
             InitializeComponent();
             this.PageTitle.Caption = "棣栭〉";
-            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
+            this.PageTitle.HeaderSvgImage = XhsMainSvgImageHelper.Home;
             this.PageTitle.SvgImageSize = new Size(24, 24);
             this.PageTitle.AllowClose = false;
-            this.repPicEdit.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom;
+            this.xhsProjectHomeTitleCtrl1.JumpEvent += XhsProjectHomeTitleCtrl1_JumpEvent;
+            this.mapViewProjectListContainer1.LoadCompletedEvent += MapViewProjectListContainer1_LoadCompletedEvent;
         }
 
-        //椤甸潰绫�
-        private class CurrentViewModel
-        {
-            public string Name { get; set; }
-            public int Count { get; set; }
-            public SvgImage Image { get; set; }
-        }
-
-        private List<XhsProjectVmo> _allProjectList = null;
-
-        private Lazy<BLL.AssetsPumpMain> _bllPump = new(() => new BLL.AssetsPumpMain());
+        private List<XhsProjectVmo> _allProjectList = null;//鎵�鏈夐」鐩垪琛�
 
         /// <summary>
         /// 鍒濆鍖栨暟鎹簮
         /// </summary>
         public override async void InitialDataSource()
         {
-            SetBindingData();
-            this.mapViewProjectListContainer1.LoadCompletedEvent += MapViewProjectListContainer1_LoadCompletedEvent;
-            await this.mapViewProjectListContainer1.InitialContainer();
-        }
-
-        private async void SetBindingData()
-        {
+            base.InitialDataSource();
             _allProjectList = await BLLFactory<HStation.BLL.XhsProject>.Instance.GetAll();
-            var allPump = await _bllPump.Value.GetAll();
-            var allValveList = await new BLL.AssetsValveMain().GetAll();
-            var vm = new CurrentViewModel()
-            {
-                Name = "椤圭洰鏁伴噺",
-                Count = _allProjectList?.Count ?? 0,
-                Image = ImageLib.Project
-            };
-
-            var vm2 = new CurrentViewModel()
-            {
-                Name = "姘存车鍨嬪彿鏁伴噺",
-                Count = allPump?.Count ?? 0,
-                Image = ImageLib.PumpMain
-            };
-
-            var vm3 = new CurrentViewModel()
-            {
-                Name = "闃�闂ㄥ瀷鍙锋暟閲�",
-                Count = allValveList?.Count ?? 0,
-                Image = ImageLib.Valve
-            };
-            var vm4 = new CurrentViewModel()
-            {
-                Name = "鍐峰嵈濉旀暟閲�",
-                Count = 0,
-                Image = ImageLib.CoolingTower
-            };
-
-            var list = new List<CurrentViewModel>() { vm, vm2, vm3, vm4 };
-            this.gridControl1.DataSource = list;
-            this.gridControl1.RefreshDataSource();
+            this.xhsProjectHomeTitleCtrl1.SetBindingData();
+            await this.mapViewProjectListContainer1.InitialContainer();
         }
 
         /// <summary>
@@ -83,9 +38,9 @@
         {
             base.RefreshData();
             _allProjectList = await BLLFactory<HStation.BLL.XhsProject>.Instance.GetAll();
+            this.xhsProjectHomeTitleCtrl1.SetBindingData();
             await this.mapViewProjectListContainer1.SetProjectList(_allProjectList);
             this.homeXhsProjectTreeListCtrl1.SetBindingData(_allProjectList);
-            SetBindingData();
         }
 
         //鍦板浘鍔犺浇瀹屾垚
@@ -160,82 +115,89 @@
             RefreshData();
         }
 
-        //鍗曞嚮鏁伴噺鎬昏璺宠浆
-        private void layoutView1_FieldValueClick(object sender, DevExpress.XtraGrid.Views.Layout.Events.FieldValueClickEventArgs e)
+        //Title璺宠浆
+        private void XhsProjectHomeTitleCtrl1_JumpEvent(string obj)
         {
-            if (e.Column.Caption != "鍚嶇О")
-                return;
-            switch (e.FieldValue)
+            switch (obj)
             {
-                case "椤圭洰鏁伴噺":
-                    var guid = new PageGuid()
+                case HStation.Xhs.DataType.XhsProject:
                     {
-                        Modular = "Xhs",
-                        MoudingType = eMoudingType.Tab,
-                        Function = "ProjectMgr",
-                    };
-                    if (!IsExistPage(guid, true))
-                    {
-                        var page = new XhsProjectMgrPage();
-                        CreatePage(page, guid);
+                        var guid = new PageGuid()
+                        {
+                            Modular = XhsFunctionHelper.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = XhsFunctionHelper.ProjectMgr
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new XhsProjectMgrPage();
+                            CreatePage(page, guid);
+                        }
                     }
                     break;
-
-                case "姘存车鍨嬪彿鏁伴噺":
-                    var pumpGuid = new PageGuid()
+                case HStation.Assets.DataType.CoolingMain:
                     {
-                        Modular = "Xhs",
-                        MoudingType = eMoudingType.Tab,
-                        Function = "pumpMgr",
-                    };
-                    if (!IsExistPage(pumpGuid, true))
-                    {
-                        var page = new PumpProductMainPage();
-                        CreatePage(page, pumpGuid);
+                        var guid = new PageGuid()
+                        {
+                            Modular = AssetsFunctionHelper.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = AssetsFunctionHelper.CoolingMgr
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new AssetsCoolingMgrPage();
+                            CreatePage(page, guid);
+                        }
                     }
                     break;
-
-                case "闃�闂ㄥ瀷鍙锋暟閲�":
-                    var valveGuid = new PageGuid()
+                case HStation.Assets.DataType.PumpMain:
                     {
-                        Modular = "Xhs",
-                        MoudingType = eMoudingType.Tab,
-                        Function = "ValveMgr",
-                    };
-                    if (!IsExistPage(valveGuid, true))
-                    {
-                        var page = new ValveManageMainPage();
-                        CreatePage(page, valveGuid);
+                        var guid = new PageGuid()
+                        {
+                            Modular = AssetsFunctionHelper.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = AssetsFunctionHelper.PumpMgr
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new PumpProductMainPage();
+                            CreatePage(page, guid);
+                        }
                     }
                     break;
+                case HStation.Assets.DataType.ValveMain:
+                    {
+                        var guid = new PageGuid()
+                        {
+                            Modular = AssetsFunctionHelper.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = AssetsFunctionHelper.ValveMgr
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new ValveManageMainPage();
+                            CreatePage(page, guid);
+                        }
+                    }
+                    break;
+                case HStation.Assets.DataType.ExchangerMain:
+                    {
+                        var guid = new PageGuid()
+                        {
+                            Modular = AssetsFunctionHelper.Modular,
+                            MoudingType = eMoudingType.Tab,
+                            Function = AssetsFunctionHelper.ExchangerMgr
+                        };
+                        if (!IsExistPage(guid, true))
+                        {
+                            var page = new ExchangerManageMainPage();
+                            CreatePage(page, guid);
+                        }
+                    }
+                    break;
+                default: break;
             }
         }
 
-        #region 榧犳爣浜嬩欢
-
-        /*   private void layoutView1_MouseMove(object sender, MouseEventArgs e)
-    {
-        var info = layoutView1.CalcHitInfo(e.X, e.Y);
-        if (info.Column == null)
-            return;
-        if (info.Column.Caption == "鍚嶇О")
-        {
-            Cursor.Current = Cursors.Help;
-        }
-        else
-        {
-        }
-    }*/
-
-        /*     private void layoutView1_MouseEnter(object sender, EventArgs e)
-             {
-                 var info = layoutView1.CalcHitInfo(Cursor.Position.X, Cursor.Position.Y);
-                 if (info.Column != null && info.Column.Caption == "鍚嶇О")
-                 {
-                     Cursor.Current = Cursors.Help;
-                 }
-             }*/
-
-        #endregion 榧犳爣浜嬩欢
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.Designer.cs
new file mode 100644
index 0000000..562dbca
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.Designer.cs
@@ -0,0 +1,233 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsProjectHomeTitleCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new Container();
+            gridControl1 = new DevExpress.XtraGrid.GridControl();
+            xhsProjectHomeTitleViewModelBindingSource = new BindingSource(components);
+            layoutView1 = new DevExpress.XtraGrid.Views.Layout.LayoutView();
+            colName = new DevExpress.XtraGrid.Columns.LayoutViewColumn();
+            layoutViewField_colName = new DevExpress.XtraGrid.Views.Layout.LayoutViewField();
+            colCount = new DevExpress.XtraGrid.Columns.LayoutViewColumn();
+            layoutViewField_colCount = new DevExpress.XtraGrid.Views.Layout.LayoutViewField();
+            colImage = new DevExpress.XtraGrid.Columns.LayoutViewColumn();
+            repImageEdit = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit();
+            layoutViewField_colPicture = new DevExpress.XtraGrid.Views.Layout.LayoutViewField();
+            layoutViewCard1 = new DevExpress.XtraGrid.Views.Layout.LayoutViewCard();
+            ((ISupportInitialize)gridControl1).BeginInit();
+            ((ISupportInitialize)xhsProjectHomeTitleViewModelBindingSource).BeginInit();
+            ((ISupportInitialize)layoutView1).BeginInit();
+            ((ISupportInitialize)layoutViewField_colName).BeginInit();
+            ((ISupportInitialize)layoutViewField_colCount).BeginInit();
+            ((ISupportInitialize)repImageEdit).BeginInit();
+            ((ISupportInitialize)layoutViewField_colPicture).BeginInit();
+            ((ISupportInitialize)layoutViewCard1).BeginInit();
+            SuspendLayout();
+            // 
+            // gridControl1
+            // 
+            gridControl1.DataSource = xhsProjectHomeTitleViewModelBindingSource;
+            gridControl1.Dock = DockStyle.Fill;
+            gridControl1.EmbeddedNavigator.Margin = new Padding(2);
+            gridControl1.Location = new Point(0, 0);
+            gridControl1.MainView = layoutView1;
+            gridControl1.Margin = new Padding(2);
+            gridControl1.Name = "gridControl1";
+            gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repImageEdit });
+            gridControl1.Size = new Size(1017, 221);
+            gridControl1.TabIndex = 1;
+            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { layoutView1 });
+            // 
+            // xhsProjectHomeTitleViewModelBindingSource
+            // 
+            xhsProjectHomeTitleViewModelBindingSource.DataSource = typeof(XhsProjectHomeTitleViewModel);
+            // 
+            // layoutView1
+            // 
+            layoutView1.Appearance.Card.BackColor = Color.Transparent;
+            layoutView1.Appearance.Card.Options.UseBackColor = true;
+            layoutView1.Appearance.FieldCaption.BackColor = Color.Transparent;
+            layoutView1.Appearance.FieldCaption.Options.UseBackColor = true;
+            layoutView1.Appearance.FieldValue.BackColor = Color.Transparent;
+            layoutView1.Appearance.FieldValue.Options.UseBackColor = true;
+            layoutView1.BorderStyle = BorderStyles.NoBorder;
+            layoutView1.CardHorzInterval = 4;
+            layoutView1.CardMinSize = new Size(211, 69);
+            layoutView1.CardVertInterval = 0;
+            layoutView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.LayoutViewColumn[] { colName, colCount, colImage });
+            layoutView1.DetailHeight = 223;
+            layoutView1.GridControl = gridControl1;
+            layoutView1.Name = "layoutView1";
+            layoutView1.OptionsBehavior.Editable = false;
+            layoutView1.OptionsBehavior.ScrollVisibility = DevExpress.XtraGrid.Views.Base.ScrollVisibility.Auto;
+            layoutView1.OptionsCustomization.AllowFilter = false;
+            layoutView1.OptionsCustomization.AllowSort = false;
+            layoutView1.OptionsItemText.TextToControlDistance = 3;
+            layoutView1.OptionsView.AllowHotTrackFields = false;
+            layoutView1.OptionsView.CardArrangeRule = DevExpress.XtraGrid.Views.Layout.LayoutCardArrangeRule.AllowPartialCards;
+            layoutView1.OptionsView.FocusRectStyle = DevExpress.XtraGrid.Views.Layout.FocusRectStyle.None;
+            layoutView1.OptionsView.ShowCardCaption = false;
+            layoutView1.OptionsView.ShowCardExpandButton = false;
+            layoutView1.OptionsView.ShowCardLines = false;
+            layoutView1.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;
+            layoutView1.OptionsView.ShowHeaderPanel = false;
+            layoutView1.OptionsView.ViewMode = DevExpress.XtraGrid.Views.Layout.LayoutViewMode.Row;
+            layoutView1.TemplateCard = layoutViewCard1;
+            layoutView1.FieldValueClick += layoutView1_FieldValueClick;
+            // 
+            // colName
+            // 
+            colName.AppearanceCell.Font = new Font("Tahoma", 13F, FontStyle.Regular, GraphicsUnit.Point);
+            colName.AppearanceCell.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.Question;
+            colName.AppearanceCell.Options.UseFont = true;
+            colName.AppearanceCell.Options.UseForeColor = true;
+            colName.AppearanceCell.Options.UseTextOptions = true;
+            colName.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+            colName.Caption = "鍚嶇О";
+            colName.FieldName = "Name";
+            colName.LayoutViewField = layoutViewField_colName;
+            colName.MinWidth = 21;
+            colName.Name = "colName";
+            colName.Width = 78;
+            // 
+            // layoutViewField_colName
+            // 
+            layoutViewField_colName.ContentHorzAlignment = DevExpress.Utils.HorzAlignment.Center;
+            layoutViewField_colName.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
+            layoutViewField_colName.EditorPreferredWidth = 106;
+            layoutViewField_colName.Location = new Point(93, 0);
+            layoutViewField_colName.Name = "layoutViewField_colName";
+            layoutViewField_colName.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
+            layoutViewField_colName.Size = new Size(112, 26);
+            layoutViewField_colName.TextSize = new Size(0, 0);
+            layoutViewField_colName.TextVisible = false;
+            // 
+            // colCount
+            // 
+            colCount.AppearanceCell.Font = new Font("Tahoma", 16F, FontStyle.Bold, GraphicsUnit.Point);
+            colCount.AppearanceCell.FontStyleDelta = FontStyle.Bold;
+            colCount.AppearanceCell.Options.UseFont = true;
+            colCount.AppearanceCell.Options.UseTextOptions = true;
+            colCount.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+            colCount.Caption = "鏁伴噺";
+            colCount.FieldName = "Count";
+            colCount.LayoutViewField = layoutViewField_colCount;
+            colCount.MinWidth = 21;
+            colCount.Name = "colCount";
+            colCount.Width = 78;
+            // 
+            // layoutViewField_colCount
+            // 
+            layoutViewField_colCount.ContentHorzAlignment = DevExpress.Utils.HorzAlignment.Center;
+            layoutViewField_colCount.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
+            layoutViewField_colCount.EditorPreferredWidth = 106;
+            layoutViewField_colCount.Location = new Point(93, 26);
+            layoutViewField_colCount.Name = "layoutViewField_colCount";
+            layoutViewField_colCount.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
+            layoutViewField_colCount.Size = new Size(112, 26);
+            layoutViewField_colCount.TextSize = new Size(0, 0);
+            layoutViewField_colCount.TextVisible = false;
+            // 
+            // colImage
+            // 
+            colImage.AppearanceCell.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.Question;
+            colImage.AppearanceCell.Options.UseForeColor = true;
+            colImage.Caption = "鍥剧墖";
+            colImage.ColumnEdit = repImageEdit;
+            colImage.FieldName = "Image";
+            colImage.LayoutViewField = layoutViewField_colPicture;
+            colImage.MinWidth = 21;
+            colImage.Name = "colImage";
+            colImage.Width = 78;
+            // 
+            // repImageEdit
+            // 
+            repImageEdit.ContextButtonOptions.AllowGlyphSkinning = true;
+            repImageEdit.Name = "repImageEdit";
+            repImageEdit.SizeMode = PictureSizeMode.Zoom;
+            // 
+            // layoutViewField_colPicture
+            // 
+            layoutViewField_colPicture.AppearanceItemCaption.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.Question;
+            layoutViewField_colPicture.AppearanceItemCaption.Options.UseForeColor = true;
+            layoutViewField_colPicture.EditorPreferredWidth = 87;
+            layoutViewField_colPicture.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
+            layoutViewField_colPicture.Location = new Point(0, 0);
+            layoutViewField_colPicture.Name = "layoutViewField_colPicture";
+            layoutViewField_colPicture.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
+            layoutViewField_colPicture.Size = new Size(93, 52);
+            layoutViewField_colPicture.StartNewLine = true;
+            layoutViewField_colPicture.TextSize = new Size(0, 0);
+            layoutViewField_colPicture.TextVisible = false;
+            // 
+            // layoutViewCard1
+            // 
+            layoutViewCard1.CustomizationFormText = "TemplateCard";
+            layoutViewCard1.GroupBordersVisible = false;
+            layoutViewCard1.GroupStyle = DevExpress.Utils.GroupStyle.Light;
+            layoutViewCard1.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
+            layoutViewCard1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutViewField_colCount, layoutViewField_colPicture, layoutViewField_colName });
+            layoutViewCard1.Name = "layoutViewTemplateCard";
+            layoutViewCard1.OptionsItemText.TextToControlDistance = 3;
+            layoutViewCard1.Padding = new DevExpress.XtraLayout.Utils.Padding(3, 3, 3, 3);
+            layoutViewCard1.Text = "TemplateCard";
+            // 
+            // XhsProjectHomeTitleCtrl
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(gridControl1);
+            Name = "XhsProjectHomeTitleCtrl";
+            Size = new Size(1017, 221);
+            ((ISupportInitialize)gridControl1).EndInit();
+            ((ISupportInitialize)xhsProjectHomeTitleViewModelBindingSource).EndInit();
+            ((ISupportInitialize)layoutView1).EndInit();
+            ((ISupportInitialize)layoutViewField_colName).EndInit();
+            ((ISupportInitialize)layoutViewField_colCount).EndInit();
+            ((ISupportInitialize)repImageEdit).EndInit();
+            ((ISupportInitialize)layoutViewField_colPicture).EndInit();
+            ((ISupportInitialize)layoutViewCard1).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraGrid.GridControl gridControl1;
+        private DevExpress.XtraGrid.Views.Layout.LayoutView layoutView1;
+        private DevExpress.XtraGrid.Columns.LayoutViewColumn colName;
+        private DevExpress.XtraGrid.Columns.LayoutViewColumn colCount;
+        private DevExpress.XtraGrid.Columns.LayoutViewColumn colImage;
+        private DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit repImageEdit;
+        private BindingSource xhsProjectHomeTitleViewModelBindingSource;
+        private DevExpress.XtraGrid.Views.Layout.LayoutViewField layoutViewField_colName;
+        private DevExpress.XtraGrid.Views.Layout.LayoutViewField layoutViewField_colCount;
+        private DevExpress.XtraGrid.Views.Layout.LayoutViewField layoutViewField_colPicture;
+        private DevExpress.XtraGrid.Views.Layout.LayoutViewCard layoutViewCard1;
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.cs
new file mode 100644
index 0000000..9f362df
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.cs
@@ -0,0 +1,96 @@
+锘縰sing DevExpress.Utils.Svg;
+using DevExpress.XtraEditors;
+using HStation.WinFrmUI.Assets;
+using HStation.WinFrmUI.Xhs.PumpProduct;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Yw.WinFrmUI.Page;
+
+namespace HStation.WinFrmUI
+{
+    public partial class XhsProjectHomeTitleCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public XhsProjectHomeTitleCtrl()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 璺宠浆浜嬩欢
+        /// </summary>
+        public event Action<string> JumpEvent;
+
+        private List<XhsProjectHomeTitleViewModel> _allBindingList = null;
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public async void SetBindingData()
+        {
+            _allBindingList = new List<XhsProjectHomeTitleViewModel>();
+
+            var vmProject = new XhsProjectHomeTitleViewModel();
+            vmProject.Id = HStation.Xhs.DataType.XhsProject;
+            vmProject.Name = "椤圭洰鏁伴噺";
+            vmProject.Count = await BLLFactory<HStation.BLL.XhsProject>.Instance.GetCount();
+            vmProject.Image = XhsMainSvgImageHelper.Project;
+            _allBindingList.Add(vmProject);
+
+            var vmCooling = new XhsProjectHomeTitleViewModel();
+            vmCooling.Id = HStation.Assets.DataType.CoolingMain;
+            vmCooling.Name = "鍐峰嵈濉斿瀷鍙�";
+            vmCooling.Count = await BLLFactory<HStation.BLL.AssetsCoolingMain>.Instance.GetCount();
+            vmCooling.Image = AssetsMainSvgImageHelper.Cooling;
+            _allBindingList.Add(vmCooling);
+
+            var vmPump = new XhsProjectHomeTitleViewModel();
+            vmPump.Id = HStation.Assets.DataType.PumpMain;
+            vmPump.Name = "姘存车鍨嬪彿";
+            vmPump.Count = await BLLFactory<HStation.BLL.AssetsPumpMain>.Instance.GetCount();
+            vmPump.Image = AssetsMainSvgImageHelper.Pump;
+            _allBindingList.Add(vmPump);
+
+            var vmValve = new XhsProjectHomeTitleViewModel();
+            vmValve.Id = HStation.Assets.DataType.ValveMain;
+            vmValve.Name = "闃�闂ㄥ瀷鍙�";
+            vmValve.Count = await BLLFactory<HStation.BLL.AssetsValveMain>.Instance.GetCount();
+            vmValve.Image = AssetsMainSvgImageHelper.Valve;
+            _allBindingList.Add(vmValve);
+
+            var vmExchanger = new XhsProjectHomeTitleViewModel();
+            vmExchanger.Id = HStation.Assets.DataType.ExchangerMain;
+            vmExchanger.Name = "鎹㈢儹鍣ㄥ瀷鍙�";
+            vmExchanger.Count = await BLLFactory<HStation.BLL.AssetsExchangerMain>.Instance.GetCount();
+            vmExchanger.Image = AssetsMainSvgImageHelper.Exchanger;
+            _allBindingList.Add(vmExchanger);
+
+            this.xhsProjectHomeTitleViewModelBindingSource.DataSource = _allBindingList;
+            this.xhsProjectHomeTitleViewModelBindingSource.ResetBindings(false);
+        }
+
+        //璺宠浆
+        private void layoutView1_FieldValueClick(object sender, DevExpress.XtraGrid.Views.Layout.Events.FieldValueClickEventArgs e)
+        {
+            if (e.Column != this.colName)
+            {
+                return;
+            }
+            var row = this.layoutView1.GetRow(e.RowHandle) as XhsProjectHomeTitleViewModel;
+            if (row == null)
+            {
+                return;
+            }
+            this.JumpEvent?.Invoke(row.Id);
+        }
+
+
+
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.resx
new file mode 100644
index 0000000..a298de1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleCtrl.resx
@@ -0,0 +1,123 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="xhsProjectHomeTitleViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleViewModel.cs
new file mode 100644
index 0000000..0a9e0d5
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/04-title/XhsProjectHomeTitleViewModel.cs
@@ -0,0 +1,38 @@
+锘縰sing DevExpress.Utils.Svg;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HStation.WinFrmUI
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class XhsProjectHomeTitleViewModel
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public int Count { get; set; }
+
+        /// <summary>
+        /// 鍥剧墖
+        /// </summary>
+        public SvgImage Image { get; set; }
+
+
+
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
index f0cffa6..2fc92ea 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -138,6 +138,8 @@
 		</Content>
 		<None Include="Resources\apply_32x32.png" />
 		<None Include="Resources\clear_32x32.png" />
+		<None Include="Resources\home.svg" />
+		<None Include="Resources\project.svg" />
 		<None Include="Resources\pump128.png" />
 		<None Include="Resources\omit.svg" />
 		<None Include="Resources\pipe.svg" />
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
index 55d2b8c..fe5be71 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -13,6 +13,9 @@
     <Compile Update="01-home\03-property\HomeXhsProjectPropertyCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Update="01-home\04-title\XhsProjectHomeTitleCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Update="02-project\01-import\00-core\ImportXhsProjectDlg.cs">
       <SubType>Form</SubType>
     </Compile>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/DataSources/HStation.WinFrmUI.XhsProjectHomeTitleViewModel.datasource b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/DataSources/HStation.WinFrmUI.XhsProjectHomeTitleViewModel.datasource
new file mode 100644
index 0000000..38be943
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/DataSources/HStation.WinFrmUI.XhsProjectHomeTitleViewModel.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="XhsProjectHomeTitleViewModel" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+  <TypeInfo>HStation.WinFrmUI.XhsProjectHomeTitleViewModel, HStation.WinFrmUI.Xhs.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs
index ec4a29d..ef358ae 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.Designer.cs
@@ -131,6 +131,16 @@
         }
         
         /// <summary>
+        ///   鏌ユ壘 System.Byte[] 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static byte[] home {
+            get {
+                object obj = ResourceManager.GetObject("home", resourceCulture);
+                return ((byte[])(obj));
+            }
+        }
+        
+        /// <summary>
         ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
         /// </summary>
         internal static DevExpress.Utils.Svg.SvgImage IncomingCall {
@@ -203,6 +213,16 @@
         /// <summary>
         ///   鏌ユ壘 System.Byte[] 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
         /// </summary>
+        internal static byte[] project {
+            get {
+                object obj = ResourceManager.GetObject("project", resourceCulture);
+                return ((byte[])(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Byte[] 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
         internal static byte[] pump {
             get {
                 object obj = ResourceManager.GetObject("pump", resourceCulture);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx
index 0912965..d353d39 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Properties/Resources.resx
@@ -184,4 +184,10 @@
   <data name="apply_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\apply_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="project" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\project.svg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="home" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\home.svg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/home.svg b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/home.svg
new file mode 100644
index 0000000..272fe20
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/home.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734496693776" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19831" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M22.311657 420.524612c-10.023284 8.991792-17.588587 22.285562-17.588587 37.752836 0 27.185152 22.001083 49.212842 49.155537 49.212842l98.397031 0 0 467.197608c0 27.213805 22.00006 49.15656 49.155537 49.15656l163.104775 0c27.127847 0 49.15349-21.971407 49.15349-49.15656l0-196.72857 196.708104 0 0 196.72857c0 27.185152 21.912056 49.15656 49.127907 49.15656l163.073052 0c27.158547 0 49.157583-21.942755 49.157583-49.15656l0-467.197608 98.367355 0c27.211758 0 49.154513-22.026666 49.154513-49.212842 0-15.46625-7.504928-28.760021-18.822694-37.752836-168.776961-142.224212-488.427118-420.36907-488.427118-420.36907S192.293049 278.3004 22.311657 420.524612zM432.279842 64.149019" fill="#007ACC" p-id="19832"></path></svg>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/project.svg b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/project.svg
new file mode 100644
index 0000000..510e968
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/Resources/project.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1734497437701" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="47056" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M203.776 181.37088h228.9664c15.1552 0 29.73696 5.89824 40.46848 16.384 10.73152 10.52672 16.75264 24.7808 16.75264 39.60832v224.0512c0 30.96576-25.64096 56.03328-57.22112 56.03328h-228.9664c-15.19616 0-29.73696-5.89824-40.50944-16.384a55.41888 55.41888 0 0 1-16.75264-39.64928v-224.0512c0-14.82752 6.02112-29.0816 16.7936-39.60832 10.73152-10.48576 25.27232-16.384 40.46848-16.384z m228.9664 387.76832h-228.9664c-15.1552 0-29.73696 5.89824-40.46848 16.384-10.73152 10.52672-16.7936 24.7808-16.7936 39.60832v224.0512c0 14.86848 6.06208 29.12256 16.7936 39.60832 10.73152 10.52672 25.27232 16.42496 40.46848 16.42496h228.9664c15.1552 0 29.73696-5.89824 40.46848-16.384 10.73152-10.52672 16.7936-24.7808 16.7936-39.60832v-224.0512c0-14.86848-6.06208-29.12256-16.7936-39.60832a57.87648 57.87648 0 0 0-40.46848-16.42496z m396.24704 0h-228.9664c-15.1552 0-29.73696 5.89824-40.46848 16.384-10.73152 10.52672-16.7936 24.7808-16.7936 39.60832v224.0512c0 14.86848 6.06208 29.12256 16.7936 39.60832 10.73152 10.52672 25.27232 16.42496 40.46848 16.42496h228.9664c15.1552 0 29.73696-5.89824 40.46848-16.384 10.73152-10.52672 16.7936-24.7808 16.7936-39.60832v-224.0512c0-14.86848-6.06208-29.12256-16.7936-39.60832a57.87648 57.87648 0 0 0-40.46848-16.42496z" fill="#007ACC" p-id="47057"></path><path d="M694.72256 489.8816a80.73216 80.73216 0 0 0 112.39424 0l123.82208-121.11872a76.5952 76.5952 0 0 0 0-109.9776L807.15776 137.6256a80.73216 80.73216 0 0 0-112.39424 0l-123.82208 121.15968a76.5952 76.5952 0 0 0 0 109.9776l123.78112 121.15968z" fill="#007ACC" p-id="47058"></path></svg>
\ No newline at end of file

--
Gitblit v1.9.3