From 6e1306ab578ed1ad79fc33b0bb7e496b897bf4a4 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 20 一月 2025 10:48:03 +0800
Subject: [PATCH] 冲突处理

---
 BLL/HStation.BLL.Assets.Core/02-httpclient/15-Tank/AssetsTankMain.cs                                       |    8 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.designer.cs                       |   60 
 Application/HStation.Application.Assets.Core/23-translation/03-factor/AssetsCoolingFactor_Controller.cs    |  133 +
 WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/02-main/AddAssetsHydrantMainDlg.cs                       |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardTextHelper.cs                                   |    5 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AssetsValveFactorMgrViewModel.cs                 |    4 
 Application/HStation.Application.PhartRelation.Core/01-relation/PhartDiagramRelation_Controller.cs         |    1 
 BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantMain.cs                                 |   10 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.cs                     |   10 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.resx                   |   27 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/business_calculator.svg                                          |   18 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.Designer.cs                |  118 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.Designer.cs               |  188 +
 BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationFactor.cs                       |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.resx                    |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.Designer.cs       |   23 
 Dto/HStation.Dto.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainDto.cs                              |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByExcelDlg.cs   |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.cs                      |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter.svg                                                 |   22 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByPictureDlg.cs         |    1 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut.svg                                                          |   19 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.cs                                          |   49 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.resx                      |    7 
 WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.resx                                              |   27 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/03-factor/AddAssetsElbowFactorDlg.cs                       |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpEditChart.cs                                           |  251 +-
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.cs               |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.Designer.cs               |   76 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.Designer.cs                                 |  406 ++--
 WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.cs                                                |   21 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut1.svg                                                         |   19 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.cs                        |   98 
 Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs                                        |    7 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/EditAssetsTranslationSeriesDlg.cs          |    1 
 Application/HStation.Application.Assets.Core/23-translation/01-series/AssetsCoolingSeries_Controller.cs    |  278 +++
 Service/HStation.Service.PhartRelation.Core/paras_hstation_phart_relation_settings.json                    |    3 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.cs                      |    7 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.designer.cs                         |   25 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByPictureDlg.cs             |    1 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.designer.cs               |   42 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/AddAssetsTranslationSeriesDlg.cs           |    1 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.Designer.cs               |  182 ++
 WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs                                                |    2 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.resx                         |   27 
 BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantFactor.cs                               |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/02-main/AddAssetsBluntheadMainDlg.cs                   |    3 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.cs                        |   82 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj                                              |    8 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.resx                |    4 
 Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/UpdatePumpPartMainExInput.cs                          |   16 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/03-factor/AddAssetsBluntheadFactorDlg.cs               |    2 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.cs                           |   10 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/21-compressor/02-main/ViewAssetsCompressorMainDlg.cs                |    5 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs                           |    8 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByPictureDlg.cs |    7 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/01-series/AddAssetsTankSeriesDlg.cs                         |    1 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.cs                              |   16 
 BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationMain.cs                         |   10 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/AddAssetsPipeMainDlg.cs                             |    1 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextUIHelper.cs                            |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.Designer.cs                                     |   26 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.resx                    |    4 
 Service/HStation.Service.PhartRelation.Core/00-core/ConfigHelper.cs                                        |   32 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/03-factor/AddAssetsHydrantFactorDlg.cs                   |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.resx                      |  120 +
 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs                         |    3 
 BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantSeries.cs                               |    2 
 Service/HStation.Service.PhartRelation.Core/05-service/00-core/DbFirstHelper.cs                            |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.Designer.cs             |   26 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.Designer.cs             |   30 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartExcelHelper.cs                                      |  621 +++---
 BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadMain.cs                             |    8 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.resx                            |    0 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow2.svg                                        |   14 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.resx                      |    4 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/UserLoginLogPage.cs                                       |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveEditChart.cs                                         |  264 +-
 WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.resx                 |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.Designer.cs              |   54 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartRegulateHelper - 复制.cs                              |   59 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/ViewAssetsTranslationFactorDlg.cs          |    3 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.resx                         |   27 
 Dto/HStation.Dto.Assets.Core/04-PipeLine/02-Main/AssetsPipeMainDto.cs                                      |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/EditAssetsPipeMainDlg.cs                            |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/01-series/AddAssetsBluntheadSeriesDlg.cs               |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.resx                     |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByExcelDlg.cs           |    1 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.Designer.cs                                           |  100 +
 Application/HStation.Application.Assets.Core/23-translation/02-main/AssetsCoolingMain_Controller.cs        |  240 ++
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/使用黏贴板.txt                                        |   99 +
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.cs                        |    5 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user                                         |    3 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.resx                         |   27 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.resx                                                  |   27 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.cs                         |    2 
 Application/HStation.Application.PhartRelation.Core/Directory.Build.props                                  |   17 
 Application/HStation.Application.Assets.Core/01-Pump/PumpPart_Controller.cs                                |   42 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/EditAssetsHydrantSeriesDlg.cs                  |    1 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/launchSettings.json                                      |    9 
 Application/HStation.Application.Assets.Core/01-Pump/PumpMain_Controller.cs                                |    6 
 Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs                                                     |    2 
 WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.Designer.cs                                       |   24 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/02-main/AddAssetsElbowMainDlg.cs                           |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.cs                                  |    6 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/AssetsTranslationFactorMgrPage.Designer.cs |   34 
 Desktop/HStation.Desktop.Xhs.Core/Properties/launchSettings.json                                           |    3 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.Designer.cs         |   30 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.Designer.cs            |   15 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter1.svg                                                |   22 
 Application/HStation.Application.Assets.Core/01-Pump/PumpPropContent_Controller.cs                         |   22 
 Desktop/HStation.Desktop.Xhs.Core/MainForm.cs                                                              |    4 
 Dto/HStation.Dto.Assets.Core/00-Pump/03-PumpMain/AddPumpMainExInput.cs                                     |   15 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.resx                       |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.settings                                        |    6 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter2.svg                                                |   22 
 Entry/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user                                          |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.resx              |    4 
 Entry/HStation.Entry.Xhs.Core/Directory.Build.props                                                        |   17 
 Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/AddPumpPartMainExInput.cs                             |   21 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.Designer.cs                  |   15 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/AddAssetsHydrantSeriesDlg.cs                   |    1 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs                                             |   20 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.cs                       |    6 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.Designer.cs                  |   15 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.Designer.cs         |   30 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.Designer.cs                     |    2 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.resx                                        |   26 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.resx                |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.cs                        |    2 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.cs                           |    9 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs                  |    9 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPartMain.cs                                         |   50 
 BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadFactor.cs                           |   15 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.Designer.cs          |   30 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs                                 |  208 +-
 WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs                                           |   25 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.Designer.cs                  |   15 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.cs                                |  137 
 /dev/null                                                                                                  |   25 
 WinFrmUI/HStation.WinFrmUI.Core/00-UICore/01-用户登陆类/GlobalParas.cs                                          |   40 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs                                    |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow.svg                                         |   14 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs                                  |    2 
 Vmo/HStation.Vmo.Assets.Core/15-Tank/AssetsTankSeriesVmo.cs                                                |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/00-core/AssetsMatchingHelper.cs              |    2 
 WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow1.svg                                        |   14 
 147 files changed, 3,728 insertions(+), 1,512 deletions(-)

diff --git a/Application/HStation.Application.Assets.Core/01-Pump/PumpMain_Controller.cs b/Application/HStation.Application.Assets.Core/01-Pump/PumpMain_Controller.cs
index f9cd17b..4c6fbc3 100644
--- a/Application/HStation.Application.Assets.Core/01-Pump/PumpMain_Controller.cs
+++ b/Application/HStation.Application.Assets.Core/01-Pump/PumpMain_Controller.cs
@@ -91,10 +91,10 @@
         /// </summary>
         [Route("InsertEx@V1.0")]
         [HttpPost]
-        public long InsertEx(AddAssetsPumpMainInput input, AddAssetsPumpGroupAndMainMapInput mainmap)
+        public long InsertEx(AddPumpMainExInput input)
         {
-            var mainmodel = input.Adapt<AddAssetsPumpMainInput, Model.AssetsPumpMain>();
-            var mainmapmodel = mainmap.Adapt<AddAssetsPumpGroupAndMainMapInput, Model.AssetsPumpGroupAndMainMapping>();
+            var mainmodel = input.MainInput.Adapt<AddAssetsPumpMainInput, Model.AssetsPumpMain>();
+            var mainmapmodel = input.MainMapInput.Adapt<AddAssetsPumpGroupAndMainMapInput, Model.AssetsPumpGroupAndMainMapping>();
             mainmodel.SortCode = _service.GetMaxSortCode() + 1;
             var id = _service.InsertEx(mainmodel, mainmapmodel);
             return id;
diff --git a/Application/HStation.Application.Assets.Core/01-Pump/PumpPart_Controller.cs b/Application/HStation.Application.Assets.Core/01-Pump/PumpPart_Controller.cs
index 95ee5da..95d2f82 100644
--- a/Application/HStation.Application.Assets.Core/01-Pump/PumpPart_Controller.cs
+++ b/Application/HStation.Application.Assets.Core/01-Pump/PumpPart_Controller.cs
@@ -1,4 +1,6 @@
-锘縩amespace HStation.Application
+锘縰sing Mapster;
+
+namespace HStation.Application
 {
     /// <summary>
     /// AssetsPumpMain
@@ -95,12 +97,12 @@
         //鎻掑叆鎷撳睍
         [Route("InsertEx@V1.0")]
         [HttpPost]
-        public long InsertEx(AddAssetsPumpPartMainInput part, List<AddAssetsPumpPropContentInput> propcontents, AddAssetsPumpMainAndPartMapInput partmap)
+        public long InsertEx(AddPumpPartMainExInput input)
         {
-            var partmodel = part.Adapt<AddAssetsPumpPartMainInput, Model.AssetsPumpPartMain>();
+            var partmodel = input.PartMain.Adapt<AddAssetsPumpPartMainInput, Model.AssetsPumpPartMain>();
             partmodel.SortCode = _service.GetMaxSortCode() + 1;
-            var propcontentlistmodel = propcontents.Select(x => x.Adapt<AddAssetsPumpPropContentInput, Model.AssetsPumpPropContent>()).ToList();
-            var partmapmodel = partmap.Adapt<AddAssetsPumpMainAndPartMapInput, Model.AssetsPumpMainAndPartMapping>();
+            var propcontentlistmodel = input.PropContent.Select(x => x.Adapt<AddAssetsPumpPropContentInput, Model.AssetsPumpPropContent>()).ToList();
+            var partmapmodel = input.PartMapping.Adapt<AddAssetsPumpMainAndPartMapInput, Model.AssetsPumpMainAndPartMapping>();
             var id = _service.InsertEX(partmodel, propcontentlistmodel, partmapmodel);
             return id;
         }
@@ -146,11 +148,11 @@
 
         //缂栬緫鎷撳睍
         [Route("UpdateEx@V1.0")]
-        [HttpPut]
-        public bool UpdateEx(UpdateAssetsPumpPartMainInput pumppart, List<UpdateAssetsPumpPropContentInput> updateAssetsPumpPropContentDtos)
+        [HttpPost]
+        public bool UpdateEx(UpdatePumpPartMainExInput input)
         {
-            var partmodel = pumppart.Adapt<UpdateAssetsPumpPartMainInput, Model.AssetsPumpPartMain>();
-            var propcontentlistmodel = updateAssetsPumpPropContentDtos.Select(x => x.Adapt<UpdateAssetsPumpPropContentInput, Model.AssetsPumpPropContent>()).ToList();
+            var partmodel = input.PartMain.Adapt<UpdateAssetsPumpPartMainInput, Model.AssetsPumpPartMain>();
+            var propcontentlistmodel = input.PropContent.Select(x => x.Adapt<UpdateAssetsPumpPropContentInput, Model.AssetsPumpPropContent>()).ToList();
             return _service.UpdateEX(partmodel, propcontentlistmodel);
         }
 
@@ -200,17 +202,17 @@
             return true;
         }
 
-        /*        [Route("DeleteEx@V1.0")]
-                [HttpDelete]
-                public bool DeleteEx(long ID)
-                {
-                    var bol = _service.DeleteExByID(ID);
-                    if (!bol)
-                    {
-                        throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, "鍒犻櫎澶辫触");
-                    }
-                    return true;
-                }*/
+        [Route("DeleteEx@V1.0")]
+        [HttpDelete]
+        public bool DeleteEx(long ID)
+        {
+            var bol = _service.DeleteExByID(ID);
+            if (!bol)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, "鍒犻櫎澶辫触");
+            }
+            return true;
+        }
 
         #endregion Delete
     }
diff --git a/Application/HStation.Application.Assets.Core/01-Pump/PumpPropContent_Controller.cs b/Application/HStation.Application.Assets.Core/01-Pump/PumpPropContent_Controller.cs
index 62648e7..f374682 100644
--- a/Application/HStation.Application.Assets.Core/01-Pump/PumpPropContent_Controller.cs
+++ b/Application/HStation.Application.Assets.Core/01-Pump/PumpPropContent_Controller.cs
@@ -47,17 +47,17 @@
             return vm_list;
         }
 
-        /*        /// <summary>
-                /// 閫氳繃浜у搧ID 鑾峰彇
-                /// </summary>
-                [Route("GetByPumpPartID@V1.0")]
-                [HttpGet]
-                public List<AssetsPumpPropContentDto> GetByPumpPartID(long pumpPartId)
-                {
-                    var list = _service.GetByPartID(pumpPartId);
-                    var vm_list = list?.Select(x => new AssetsPumpPropContentDto(x)).ToList();
-                    return vm_list;
-                }*/
+        /// <summary>
+        /// 閫氳繃浜у搧ID 鑾峰彇
+        /// </summary>
+        [Route("GetByPumpPartID@V1.0")]
+        [HttpGet]
+        public List<AssetsPumpPropContentDto> GetByPumpPartID(long pumpPartId)
+        {
+            var list = _service.GetByPartID(pumpPartId);
+            var vm_list = list?.Select(x => new AssetsPumpPropContentDto(x)).ToList();
+            return vm_list;
+        }
 
         #endregion Query
 
diff --git a/Application/HStation.Application.Assets.Core/23-translation/01-series/AssetsCoolingSeries_Controller.cs b/Application/HStation.Application.Assets.Core/23-translation/01-series/AssetsCoolingSeries_Controller.cs
new file mode 100644
index 0000000..412034d
--- /dev/null
+++ b/Application/HStation.Application.Assets.Core/23-translation/01-series/AssetsCoolingSeries_Controller.cs
@@ -0,0 +1,278 @@
+锘縩amespace HStation.Application
+{
+    /// <summary>
+    /// 杩囨浮浠剁郴鍒�
+    /// </summary>
+    [Route("Assets/Translation/Series")]
+    [ApiDescriptionSettings("Assets", Name = "杩囨浮浠剁郴鍒�", Order = 10000)]
+    public class AssetsTranslationSeries_Controller : IDynamicApiController
+    {
+        private readonly HStation.Service.AssetsTranslationSeries _service = new();
+
+        #region Query
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈�
+        /// </summary>
+        [Route("GetAll@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationSeriesDto> GetAll()
+        {
+            var list = _service.GetAll();
+            var vmList = list?.Select(x => new AssetsTranslationSeriesDto(x)).ToList();
+            return vmList;
+        }
+
+        /// <summary>
+        /// 閫氳繃 ID 鑾峰彇
+        /// </summary>
+        [Route("GetByID@V1.0")]
+        [HttpGet]
+        public AssetsTranslationSeriesDto GetByID([FromQuery][Required] IDInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            return model == null ? null : new AssetsTranslationSeriesDto(model);
+        }
+
+        /// <summary>
+        /// 閫氳繃 Ids 鑾峰彇
+        /// </summary>
+        [Route("GetByIds@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationSeriesDto> GetByIds([FromQuery][Required] IdsInput input)
+        {
+            var ids = LongListHelper.ToList(input.Ids);
+            var list = _service.GetByIds(ids);
+            var vmList = list?.Select(x => new AssetsTranslationSeriesDto(x)).ToList();
+            return vmList;
+        }
+
+        #endregion Query
+
+        #region Insert
+
+        /// <summary>
+        /// 鎻掑叆涓�鏉�
+        /// </summary>
+        [Route("Insert@V1.0")]
+        [HttpPost]
+        public long Insert([Required] AddAssetsTranslationSeriesInput input)
+        {
+            var parentIds = new List<long>();
+            if (input.ParentID > 0)
+            {
+                var parent = _service.GetByID(input.ParentID);
+                if (parent == null)
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ParentID:{input.ParentID} 鏁版嵁涓嶅瓨鍦�");
+                }
+                parentIds = TreeParentIdsHelper.GetChildParentIds(parent.ID, parent.ParentIds);
+            }
+            if (!string.IsNullOrEmpty(input.TagName))
+            {
+                if (_service.IsExistTagName(input.TagName))
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName} 鏍囪宸插瓨鍦�");
+                }
+            }
+            var model = input.Adapt<AddAssetsTranslationSeriesInput, Model.AssetsTranslationSeries>();
+            model.ParentIds = parentIds;
+            model.SortCode = _service.GetMaxSortCode(input.ParentID) + 1;
+            var id = _service.Insert(model);
+            return id;
+        }
+
+        #endregion Insert
+
+        #region Update
+
+        /// <summary>
+        /// 鏇存柊涓�鏉�
+        /// </summary>
+        [Route("Update@V1.0")]
+        [HttpPut]
+        public bool Update(UpdateAssetsTranslationSeriesInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            if (model == null)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 鏁版嵁涓嶅瓨鍦�");
+            }
+            if (!string.IsNullOrEmpty(input.TagName))
+            {
+                if (_service.IsExistTagNameExceptID(input.TagName, input.ID))
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName} 鏍囪宸插瓨鍦�");
+                }
+            }
+            var rhs = new Model.AssetsTranslationSeries(model);
+            input.Adapt(rhs);
+            var bol = _service.Update(rhs);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎺掑簭鐮�
+        /// </summary>
+        [Route("UpdateSortCode@V1.0")]
+        [HttpPut]
+        public bool UpdateSortCode([Required] UpdateSortCodeInput input)
+        {
+            var bol = _service.UpdateSortCode(input.ID, input.SortCode);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎺掑簭
+        /// </summary>
+        [Route("UpdateSorter@V1.0")]
+        [HttpPut]
+        public bool UpdateSorter([Required] List<UpdateSortCodeInput> input)
+        {
+            var list = input.Select(x => x.Adapt<UpdateSortCodeInput, Yw.Model.Sorter>()).ToList();
+            var bol = _service.UpdateSorter(list);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鏍戞帓搴忕爜
+        /// </summary>
+        [Route("UpdateTreeSortCode@V1.0")]
+        [HttpPut]
+        public bool UpdateTreeSortCode([Required] UpdateTreeSortCodeInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            if (model == null)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 鏁版嵁涓嶅瓨鍦�");
+            }
+            var parentIds = new List<long>();
+            if (input.ParentID > 0)
+            {
+                var parent = _service.GetByID(input.ParentID);
+                if (parent == null)
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ParentID:{input.ParentID} 鏁版嵁涓嶅瓨鍦�");
+                }
+                parentIds = TreeParentIdsHelper.GetChildParentIds(parent.ID, parent.ParentIds);
+            }
+            var sorterList = new List<Yw.Model.TreeSorter>()
+            {
+                new Yw.Model.TreeSorter()
+                {
+                    ID=input.ID,
+                    ParentIds=parentIds,
+                    SortCode=input.SortCode
+                }
+            };
+            if (TreeParentIdsHelper.ToString(parentIds) != TreeParentIdsHelper.ToString(model.ParentIds))
+            {
+                var children = _service.GetChildrenByID(input.ID);
+                if (children != null && children.Count > 0)
+                {
+                    foreach (var item in children)
+                    {
+                        var itemParent = sorterList.Find(x => x.ID == item.ParentIds.Last());
+                        var itemParentIds = TreeParentIdsHelper.GetChildParentIds(itemParent.ID, itemParent.ParentIds);
+                        var sorter = new Yw.Model.TreeSorter()
+                        {
+                            ID = item.ID,
+                            ParentIds = itemParentIds,
+                            SortCode = item.SortCode
+                        };
+                        sorterList.Add(sorter);
+                    }
+                }
+            }
+            var bol = _service.UpdateTreeSorter(sorterList);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊 Paras
+        /// </summary>
+        [Route("UpdateParas@V1.0")]
+        [HttpPut]
+        public bool UpdateParas([Required] UpdateParasInput input)
+        {
+            var bol = _service.UpdateParas(input.ID, input.Paras);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊 Flags
+        /// </summary>
+        [Route("UpdateFlags@V1.0")]
+        [HttpPut]
+        public bool UpdateFlags([Required] UpdateFlagsInput input)
+        {
+            var bol = _service.UpdateFlags(input.ID, input.Flags);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊TagName
+        /// </summary>
+        [Route("UpdateTagName@V1.0")]
+        [HttpPut]
+        public bool UpdateTagName([Required] UpdateTagNameInput input)
+        {
+            if (!string.IsNullOrEmpty(input.TagName))
+            {
+                if (_service.IsExistTagNameExceptID(input.TagName, input.ID))
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName} 鏍囪宸插瓨鍦�");
+                }
+            }
+            var bol = _service.UpdateTagName(input.ID, input.TagName);
+            return bol;
+        }
+
+        #endregion Update
+
+        #region Exist
+
+        /// <summary>
+        /// 鍒ゆ柇TagName鏄惁瀛樺湪
+        /// </summary>
+        [Route("IsExistTagName@V1.0")]
+        [HttpGet]
+        public bool IsExistTagName([FromQuery][Required] TagNameInput input)
+        {
+            var bol = _service.IsExistTagName(input.TagName);
+            return bol;
+        }
+
+        /// <summary>
+        ///  鍒ゆ柇TagName鏄惁瀛樺湪 ExceptID
+        /// </summary>
+        [Route("IsExistTagNameExceptID@V1.0")]
+        [HttpGet]
+        public bool IsExistTagNameExceptID([FromQuery][Required] TagNameExceptInput input)
+        {
+            var bol = _service.IsExistTagNameExceptID(input.TagName, input.ExceptID);
+            return bol;
+        }
+
+        #endregion Exist
+
+        #region Delete
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        [Route("DeleteByID@V1.0")]
+        [HttpDelete]
+        public bool DeleteByID([FromQuery][Required] IDInput input)
+        {
+            var bol = _service.DeleteByID(input.ID, out string Msg);
+            if (!bol)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, Msg);
+            }
+            return bol;
+        }
+
+        #endregion Delete
+    }
+}
\ No newline at end of file
diff --git a/Application/HStation.Application.Assets.Core/23-translation/02-main/AssetsCoolingMain_Controller.cs b/Application/HStation.Application.Assets.Core/23-translation/02-main/AssetsCoolingMain_Controller.cs
new file mode 100644
index 0000000..2acf0f0
--- /dev/null
+++ b/Application/HStation.Application.Assets.Core/23-translation/02-main/AssetsCoolingMain_Controller.cs
@@ -0,0 +1,240 @@
+锘縩amespace HStation.Application
+{
+    /// <summary>
+    /// 杩囨浮浠跺瀷鍙�
+    /// </summary>
+    [Route("Assets/Translation/Main")]
+    [ApiDescriptionSettings("Assets", Name = "杩囨浮浠跺瀷鍙�", Order = 9000)]
+    public class AssetsTranslationMain_Controller : IDynamicApiController
+    {
+        private readonly HStation.Service.AssetsTranslationMain _service = new();
+
+        #region Query
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈�
+        /// </summary>
+        [Route("GetAll@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationMainDto> GetAll()
+        {
+            var list = _service.GetAll();
+            var vmList = list?.Select(x => new AssetsTranslationMainDto(x)).ToList();
+            return vmList;
+        }
+
+        /// <summary>
+        /// 閫氳繃 SeriesID 鑾峰彇
+        /// </summary>
+        [Route("GetBySeriesID@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationMainDto> GetBySeriesID([FromQuery][Required] SeriesIDInput input)
+        {
+            var list = _service.GetBySeriesID(input.SeriesID);
+            var vmList = list?.Select(x => new AssetsTranslationMainDto(x)).ToList();
+            return vmList;
+        }
+
+        /// <summary>
+        /// 閫氳繃 ID 鑾峰彇
+        /// </summary>
+        [Route("GetByID@V1.0")]
+        [HttpGet]
+        public AssetsTranslationMainDto GetByID([FromQuery][Required] IDInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            return model == null ? null : new AssetsTranslationMainDto(model);
+        }
+
+        /// <summary>
+        /// 閫氳繃 Ids 鑾峰彇
+        /// </summary>
+        [Route("GetByIds@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationMainDto> GetByIds([FromQuery][Required] IdsInput input)
+        {
+            var ids = LongListHelper.ToList(input.Ids);
+            var list = _service.GetByIds(ids);
+            var vmList = list?.Select(x => new AssetsTranslationMainDto(x)).ToList();
+            return vmList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏁伴噺
+        /// </summary>
+        [Route("GetCount@V1.0")]
+        [HttpGet]
+        public int GetCount()
+        {
+            return _service.GetCount();
+        }
+
+        #endregion Query
+
+        #region Insert
+
+        /// <summary>
+        /// 鎻掑叆涓�鏉�
+        /// </summary>
+        [Route("Insert@V1.0")]
+        [HttpPost]
+        public long Insert([Required] AddAssetsTranslationMainInput input)
+        {
+            var series = new HStation.Service.AssetsTranslationSeries().GetByID(input.SeriesID);
+            if (series == null)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"SeriesID:{input.SeriesID} 鏁版嵁涓嶅瓨鍦�");
+            }
+            if (!string.IsNullOrEmpty(input.TagName))
+            {
+                if (_service.IsExistTagName(input.TagName))
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName} 鏍囪宸插瓨鍦�");
+                }
+            }
+            var model = input.Adapt<AddAssetsTranslationMainInput, Model.AssetsTranslationMain>();
+            model.SortCode = _service.GetMaxSortCode(input.SeriesID) + 1;
+            var id = _service.Insert(model);
+            return id;
+        }
+
+        #endregion Insert
+
+        #region Update
+
+        /// <summary>
+        /// 鏇存柊涓�鏉�
+        /// </summary>
+        [Route("Update@V1.0")]
+        [HttpPut]
+        public bool Update(UpdateAssetsTranslationMainInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            if (model == null)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 鏁版嵁涓嶅瓨鍦�");
+            }
+            if (!string.IsNullOrEmpty(input.TagName))
+            {
+                if (_service.IsExistTagNameExceptID(input.TagName, input.ID))
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName} 鏍囪宸插瓨鍦�");
+                }
+            }
+            var rhs = new Model.AssetsTranslationMain(model);
+            input.Adapt(rhs);
+            var bol = _service.Update(rhs);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎺掑簭鐮�
+        /// </summary>
+        [Route("UpdateSortCode@V1.0")]
+        [HttpPut]
+        public bool UpdateSortCode([Required] UpdateSortCodeInput input)
+        {
+            var bol = _service.UpdateSortCode(input.ID, input.SortCode);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎺掑簭
+        /// </summary>
+        [Route("UpdateSorter@V1.0")]
+        [HttpPut]
+        public bool UpdateSorter([Required] List<UpdateSortCodeInput> input)
+        {
+            var list = input.Select(x => x.Adapt<UpdateSortCodeInput, Yw.Model.Sorter>()).ToList();
+            var bol = _service.UpdateSorter(list);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊 Paras
+        /// </summary>
+        [Route("UpdateParas@V1.0")]
+        [HttpPut]
+        public bool UpdateParas([Required] UpdateParasInput input)
+        {
+            var bol = _service.UpdateParas(input.ID, input.Paras);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊 Flags
+        /// </summary>
+        [Route("UpdateFlags@V1.0")]
+        [HttpPut]
+        public bool UpdateFlags([Required] UpdateFlagsInput input)
+        {
+            var bol = _service.UpdateFlags(input.ID, input.Flags);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊TagName
+        /// </summary>
+        [Route("UpdateTagName@V1.0")]
+        [HttpPut]
+        public bool UpdateTagName([Required] UpdateTagNameInput input)
+        {
+            if (!string.IsNullOrEmpty(input.TagName))
+            {
+                if (_service.IsExistTagNameExceptID(input.TagName, input.ID))
+                {
+                    throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName} 鏍囪宸插瓨鍦�");
+                }
+            }
+            var bol = _service.UpdateTagName(input.ID, input.TagName);
+            return bol;
+        }
+
+        #endregion Update
+
+        #region Exist
+
+        /// <summary>
+        /// 鍒ゆ柇TagName鏄惁瀛樺湪
+        /// </summary>
+        [Route("IsExistTagName@V1.0")]
+        [HttpGet]
+        public bool IsExistTagName([FromQuery][Required] TagNameInput input)
+        {
+            var bol = _service.IsExistTagName(input.TagName);
+            return bol;
+        }
+
+        /// <summary>
+        ///  鍒ゆ柇TagName鏄惁瀛樺湪 ExceptID
+        /// </summary>
+        [Route("IsExistTagNameExceptID@V1.0")]
+        [HttpGet]
+        public bool IsExistTagNameExceptID([FromQuery][Required] TagNameExceptInput input)
+        {
+            var bol = _service.IsExistTagNameExceptID(input.TagName, input.ExceptID);
+            return bol;
+        }
+
+        #endregion Exist
+
+        #region Delete
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        [Route("DeleteByID@V1.0")]
+        [HttpDelete]
+        public bool DeleteByID([FromQuery][Required] IDInput input)
+        {
+            var bol = _service.DeleteByID(input.ID, out string Msg);
+            if (!bol)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, Msg);
+            }
+            return bol;
+        }
+
+        #endregion Delete
+    }
+}
\ No newline at end of file
diff --git a/Application/HStation.Application.Assets.Core/23-translation/03-factor/AssetsCoolingFactor_Controller.cs b/Application/HStation.Application.Assets.Core/23-translation/03-factor/AssetsCoolingFactor_Controller.cs
new file mode 100644
index 0000000..ebee6bd
--- /dev/null
+++ b/Application/HStation.Application.Assets.Core/23-translation/03-factor/AssetsCoolingFactor_Controller.cs
@@ -0,0 +1,133 @@
+锘縩amespace HStation.Application
+{
+    /// <summary>
+    /// 杩囨浮浠剁郴鏁�
+    /// </summary>
+    [Route("Assets/Translation/Factor")]
+    [ApiDescriptionSettings("Assets", Name = "杩囨浮浠剁郴鏁�", Order = 8000)]
+    public class AssetsTranslationFactor_Controller : IDynamicApiController
+    {
+        private readonly HStation.Service.AssetsTranslationFactor _service = new();
+
+        #region Query
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈�
+        /// </summary>
+        [Route("GetAll@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationFactorDto> GetAll()
+        {
+            var list = _service.GetAll();
+            var vmList = list?.Select(x => new AssetsTranslationFactorDto(x)).ToList();
+            return vmList;
+        }
+
+        /// <summary>
+        /// 閫氳繃 ID 鑾峰彇
+        /// </summary>
+        [Route("GetByID@V1.0")]
+        [HttpGet]
+        public AssetsTranslationFactorDto GetByID([FromQuery][Required] IDInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            return model == null ? null : new AssetsTranslationFactorDto(model);
+        }
+
+        /// <summary>
+        /// 閫氳繃 Ids 鑾峰彇
+        /// </summary>
+        [Route("GetByIds@V1.0")]
+        [HttpGet]
+        public List<AssetsTranslationFactorDto> GetByIds([FromQuery][Required] IdsInput input)
+        {
+            var ids = LongListHelper.ToList(input.Ids);
+            var list = _service.GetByIds(ids);
+            var vmList = list?.Select(x => new AssetsTranslationFactorDto(x)).ToList();
+            return vmList;
+        }
+
+        #endregion Query
+
+        #region Insert
+
+        /// <summary>
+        /// 鎻掑叆涓�鏉�
+        /// </summary>
+        [Route("Insert@V1.0")]
+        [HttpPost]
+        public long Insert([Required] AddAssetsTranslationFactorInput input)
+        {
+            var model = input.Adapt<AddAssetsTranslationFactorInput, Model.AssetsTranslationFactor>();
+            model.SortCode = _service.GetMaxSortCode() + 1;
+            var id = _service.Insert(model);
+            return id;
+        }
+
+        #endregion Insert
+
+        #region Update
+
+        /// <summary>
+        /// 鏇存柊涓�鏉�
+        /// </summary>
+        [Route("Update@V1.0")]
+        [HttpPut]
+        public bool Update(UpdateAssetsTranslationFactorInput input)
+        {
+            var model = _service.GetByID(input.ID);
+            if (model == null)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 鏁版嵁涓嶅瓨鍦�");
+            }
+            var rhs = new Model.AssetsTranslationFactor(model);
+            input.Adapt(rhs);
+            var bol = _service.Update(rhs);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎺掑簭鐮�
+        /// </summary>
+        [Route("UpdateSortCode@V1.0")]
+        [HttpPut]
+        public bool UpdateSortCode([Required] UpdateSortCodeInput input)
+        {
+            var bol = _service.UpdateSortCode(input.ID, input.SortCode);
+            return bol;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎺掑簭
+        /// </summary>
+        [Route("UpdateSorter@V1.0")]
+        [HttpPut]
+        public bool UpdateSorter([Required] List<UpdateSortCodeInput> input)
+        {
+            var list = input.Select(x => x.Adapt<UpdateSortCodeInput, Yw.Model.Sorter>()).ToList();
+            var bol = _service.UpdateSorter(list);
+            return bol;
+        }
+
+        #endregion Update
+
+        #region Delete
+
+        /// <summary>
+        /// 鍒犻櫎
+        /// </summary>
+        [Route("DeleteByID@V1.0")]
+        [HttpDelete]
+        public bool DeleteByID([FromQuery][Required] IDInput input)
+        {
+            var bol = _service.DeleteByID(input.ID, out string Msg);
+            if (!bol)
+            {
+                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, Msg);
+            }
+            return bol;
+        }
+
+        #endregion Delete
+    }
+}
\ No newline at end of file
diff --git a/Application/HStation.Application.PhartRelation.Core/01-relation/PhartDiagramRelation_Controller.cs b/Application/HStation.Application.PhartRelation.Core/01-relation/PhartDiagramRelation_Controller.cs
index de3e35e..69faf22 100644
--- a/Application/HStation.Application.PhartRelation.Core/01-relation/PhartDiagramRelation_Controller.cs
+++ b/Application/HStation.Application.PhartRelation.Core/01-relation/PhartDiagramRelation_Controller.cs
@@ -258,7 +258,6 @@
 
         #endregion Update
 
-
         #region Delete
 
         /// <summary>
diff --git a/Application/HStation.Application.PhartRelation.Core/Directory.Build.props b/Application/HStation.Application.PhartRelation.Core/Directory.Build.props
new file mode 100644
index 0000000..0abed26
--- /dev/null
+++ b/Application/HStation.Application.PhartRelation.Core/Directory.Build.props
@@ -0,0 +1,17 @@
+<Project>
+	<PropertyGroup>
+		<DebugType>embedded</DebugType>
+		<DebugSymbols>true</DebugSymbols>
+		<PublishRepositoryUrl>true</PublishRepositoryUrl>
+	</PropertyGroup>
+ 
+	<!--<PropertyGroup Condition="'$(GITLAB_CI)' == 'true'">-->
+	<PropertyGroup Condition="'$(Configuration)' == 'Release'">
+		<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
+		<Deterministic>true</Deterministic>
+		<EmbedUntrackedSources>true</EmbedUntrackedSources>
+	</PropertyGroup>
+	<ItemGroup>
+		<PackageReference Include="Microsoft.SourceLink.GitLab" Version="1.0.0" PrivateAssets="All"/>
+	</ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs
index c20ce77..a76e5ba 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs
@@ -5,7 +5,7 @@
     /// <summary>
     ///
     /// </summary>
-    public class AssetsPumpGroupAndMainMap : BaseCAL_Paras_Flags_TagName_Sorter<AddAssetsPumpGroupAndMainMapInput, UpdateAssetsPumpGroupAndMainMapInput, AssetsPumpGroupAndMainMapDto>, IAssetsPumpGroupAndMainMapping
+    public class AssetsPumpGroupAndMainMapping : BaseCAL_Paras_Flags_TagName_Sorter<AddAssetsPumpGroupAndMainMapInput, UpdateAssetsPumpGroupAndMainMapInput, AssetsPumpGroupAndMainMapDto>, IAssetsPumpGroupAndMainMapping
     {
         protected override string Prefix
         {
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs
index d5acdea..c24ea33 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs
@@ -13,7 +13,7 @@
         }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public async Task<int> GetCount()
         {
@@ -38,19 +38,21 @@
             return await GetUrl("GetByPumpSeriesID@V1.0").Get<List<AssetsPumpMainDto>>(paras);
         }
 
-        public Task<List<AssetsPumpPartMainDto>> GetPartByID(long ID)
+        public async Task<List<AssetsPumpPartMainDto>> GetPartByID(long ID)
         {
-            throw new NotImplementedException();
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(ID),ID)
+            };
+            return await GetUrl("GetPartByID@V1.0").Get<List<AssetsPumpPartMainDto>>(paras);
         }
 
         public async Task<long> InsertEx(AddAssetsPumpMainInput input, AddAssetsPumpGroupAndMainMapInput mainmap)
         {
-            var paras = new List<(string Name, object Value)>()
-            {
-                (nameof(input),input),
-                (nameof (mainmap),mainmap)
-             };
-            return await GetUrl("InsertEx@V1.0").Post<long>(paras);
+            var mainExInput = new AddPumpMainExInput();
+            mainExInput.MainInput = input;
+            mainExInput.MainMapInput = mainmap;
+            return await GetUrl("InsertEx@V1.0").Post<long>(mainExInput);
         }
     }
 }
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPart.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPart.cs
deleted file mode 100644
index 76f1172..0000000
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPart.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-锘縰sing Yw.CAL.HttpClient;
-
-namespace HStation.CAL.HttpClient
-{
-    /// <summary>
-    ///
-    /// </summary>
-    public class PumpPart : BaseCAL_Paras_Flags_TagName_Sorter<AddAssetsPumpPartMainInput, UpdateAssetsPumpPartMainInput, AssetsPumpPartMainDto>, IAssetsPumpPartMain
-    {
-        protected override string Prefix
-        {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/PumpPumpPart"; }
-        }
-
-        public async Task<bool> DeleteEx(long ID)
-        {
-            var paras = new List<(string Name, object Value)>()
-            {
-                (nameof(ID),ID)
-            };
-            return await GetUrl("DeleteEx@V1.0").Delete<bool>(paras);
-        }
-
-        public async Task<List<AssetsPumpPartMainDto>> GetByPumpMainID(long ID)
-        {
-            var paras = new List<(string Name, object Value)>()
-            {
-                (nameof(ID),ID)
-            };
-            return await GetUrl("GetByPumpMainID@V1.0").Get<List<AssetsPumpPartMainDto>>(paras);
-        }
-
-        public async Task<long> InsertEx(AddAssetsPumpPartMainInput part, List<AddAssetsPumpPropContentInput> propcontents, AddAssetsPumpMainAndPartMapInput partmap)
-        {
-            var paras = new List<(string Name, object Value)>()
-            {
-                (nameof(part),part),
-                (nameof(propcontents),propcontents),
-                (nameof(partmap),partmap),
-            };
-            return await GetUrl("InsertEx@V1.0").Get<long>(paras);
-        }
-
-        public async Task<bool> UpdateEx(UpdateAssetsPumpPartMainInput pumppart, List<UpdateAssetsPumpPropContentInput> updateAssetsPumpPropContentDtos)
-        {
-            var paras = new List<(string Name, object Value)>()
-            {
-                (nameof(pumppart),pumppart),
-                (nameof ( updateAssetsPumpPropContentDtos),updateAssetsPumpPropContentDtos)
-            };
-            return await GetUrl("GetByPumpMainID@V1.0").Put<bool>(paras);
-        }
-    }
-}
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPartMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPartMain.cs
new file mode 100644
index 0000000..63a718c
--- /dev/null
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPartMain.cs
@@ -0,0 +1,50 @@
+锘縰sing Yw.CAL.HttpClient;
+
+namespace HStation.CAL.HttpClient
+{
+    /// <summary>
+    ///
+    /// </summary>
+    public class AssetsPumpPartMain : BaseCAL_Paras_Flags_TagName_Sorter<AddAssetsPumpPartMainInput, UpdateAssetsPumpPartMainInput, AssetsPumpPartMainDto>, IAssetsPumpPartMain
+    {
+        protected override string Prefix
+        {
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/PumpPart"; }
+        }
+
+        public async Task<bool> DeleteEx(long ID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(ID),ID)
+            };
+            return await GetUrl("DeleteEx@V1.0").Delete<bool>(paras);
+        }
+
+        public async Task<List<AssetsPumpPartMainDto>> GetByPumpMainID(long ID)
+        {
+            var paras = new List<(string Name, object Value)>()
+            {
+                (nameof(ID),ID)
+            };
+            return await GetUrl("GetByPumpMainID@V1.0").Get<List<AssetsPumpPartMainDto>>(paras);
+        }
+
+        public async Task<long> InsertEx(AddAssetsPumpPartMainInput part, List<AddAssetsPumpPropContentInput> propcontents, AddAssetsPumpMainAndPartMapInput partmap)
+        {
+            var addPartInput = new AddPumpPartMainExInput();
+            addPartInput.PartMain = part;
+            addPartInput.PropContent = propcontents;
+            addPartInput.PartMapping = partmap;
+            return await GetUrl("InsertEx@V1.0").Post<long>(addPartInput);
+        }
+
+        public async Task<bool> UpdateEx(UpdateAssetsPumpPartMainInput pumppart, List<UpdateAssetsPumpPropContentInput> Contents)
+        {
+            var updatePartInput = new UpdatePumpPartMainExInput();
+            updatePartInput.PartMain = pumppart;
+            updatePartInput.PropContent = Contents;
+            return await GetUrl("UpdateEx@V1.0").Post<bool>(updatePartInput);
+        }
+    }
+}
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs
index baee4b2..cd86717 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs
@@ -5,7 +5,7 @@
     /// <summary>
     ///
     /// </summary>
-    public class AssetsPumpTypeSeriesMap : BaseCAL_Sorter<AddAssetsPumpTypeSeriesMapInput, UpdateAssetsPumpTypeSeriesMapInput, AssetsPumpTypeSeriesMapDto>, IAssetsPumpSeriesTypeMapping
+    public class AssetsPumpSeriesTypeMapping : BaseCAL_Sorter<AddAssetsPumpTypeSeriesMapInput, UpdateAssetsPumpTypeSeriesMapInput, AssetsPumpTypeSeriesMapDto>, IAssetsPumpSeriesTypeMapping
     {
         protected override string Prefix
         {
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadCoefficient.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadCoefficient.cs
deleted file mode 100644
index b368a49..0000000
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadCoefficient.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-锘縰sing Yw.CAL.HttpClient;
-
-namespace HStation.CAL.HttpClient
-{
-    /// <summary>
-    ///
-    ///</summary>
-    public class AssetsBluntheadCoefficient : BaseCAL<AddAssetsBluntheadFactorInput, UpdateAssetsBluntheadFactorInput, AssetsBluntheadFactorDto>, IAssetsBluntheadFactor
-    {
-        protected override string Prefix
-        {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Blunthead/Factor"; }
-        }
-
-        public Task<bool> UpdateSortCode(long ID, int SortCode)
-        {
-            throw new NotImplementedException();
-        }
-
-        public Task<bool> UpdateSorter(List<UpdateSortCodeInput> Sorters)
-        {
-            throw new NotImplementedException();
-        }
-    }
-}
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadFactor.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadFactor.cs
new file mode 100644
index 0000000..8df93e2
--- /dev/null
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadFactor.cs
@@ -0,0 +1,15 @@
+锘縰sing Yw.CAL.HttpClient;
+
+namespace HStation.CAL.HttpClient
+{
+    /// <summary>
+    ///
+    ///</summary>
+    public class AssetsBluntheadFactor : BaseCAL_Sorter<AddAssetsBluntheadFactorInput, UpdateAssetsBluntheadFactorInput, AssetsBluntheadFactorDto>, IAssetsBluntheadFactor
+    {
+        protected override string Prefix
+        {
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Blunthead/Factor"; }
+        }
+    }
+}
\ No newline at end of file
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadMain.cs
index 253a573..6fa5552 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/14-Blunthead/AssetsBluntheadMain.cs
@@ -12,9 +12,13 @@
             get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Blunthead/Main"; }
         }
 
-        public Task<List<AssetsBluntheadMainDto>> GetBySeriesID(long ID)
+        public async Task<List<AssetsBluntheadMainDto>> GetBySeriesID(long ID)
         {
-            throw new NotImplementedException();
+            var paras = new List<(string Name, object Value)>()
+            {
+                ("SeriesID",ID)
+            };
+            return await GetUrl("GetBySeriesID@V1.0").Get<List<AssetsBluntheadMainDto>>(paras);
         }
 
         /// <summary>
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/15-Tank/AssetsTankMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/15-Tank/AssetsTankMain.cs
index f5188b2..342ad38 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/15-Tank/AssetsTankMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/15-Tank/AssetsTankMain.cs
@@ -12,9 +12,13 @@
             get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Tank/Main"; }
         }
 
-        public Task<List<AssetsTankMainDto>> GetBySeriesID(long ID)
+        public async Task<List<AssetsTankMainDto>> GetBySeriesID(long ID)
         {
-            throw new NotImplementedException();
+            var paras = new List<(string Name, object Value)>()
+            {
+                ("SeriesID",ID)
+            };
+            return await GetUrl("GetBySeriesID@V1.0").Get<List<AssetsTankMainDto>>(paras);
         }
 
         /// <summary>
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantCoefficient.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantFactor.cs
similarity index 73%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantCoefficient.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantFactor.cs
index f5609ae..0f9a5b5 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantCoefficient.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantFactor.cs
@@ -5,11 +5,11 @@
     /// <summary>
     /// 娑堢伀鏍撶郴鏁�
     ///</summary>
-    public class AssetsHydrantCoefficient : BaseCAL<AddAssetsHydrantFactorInput, UpdateAssetsHydrantFactorInput, AssetsHydrantFactorDto>, IAssetsHydrantFactor
+    public class AssetsHydrantFactor : BaseCAL<AddAssetsHydrantFactorInput, UpdateAssetsHydrantFactorInput, AssetsHydrantFactorDto>, IAssetsHydrantFactor
     {
         protected override string Prefix
         {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/AssetsHydrantCoefficient"; }
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Hydrant/Factor"; }
         }
 
         public Task<bool> UpdateSortCode(long ID, int SortCode)
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantMain.cs
index 7ae5b2f..9e891bf 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantMain.cs
@@ -9,12 +9,16 @@
     {
         protected override string Prefix
         {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/AssetsHydrantMain"; }
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Hydrant/Main"; }
         }
 
-        public Task<List<AssetsHydrantMainDto>> GetBySeriesID(long ID)
+        public async Task<List<AssetsHydrantMainDto>> GetBySeriesID(long ID)
         {
-            throw new NotImplementedException();
+            var paras = new List<(string Name, object Value)>()
+            {
+                ("SeriesID",ID)
+            };
+            return await GetUrl("GetBySeriesID@V1.0").Get<List<AssetsHydrantMainDto>>(paras);
         }
 
         /// <summary>
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantSeries.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantSeries.cs
index 967fc0a..a539d5d 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantSeries.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/18-Hydrant/AssetsHydrantSeries.cs
@@ -9,7 +9,7 @@
     {
         protected override string Prefix
         {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/AssetsHydrantSeries"; }
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Hydrant/Series"; }
         }
 
         /// <summary>
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationFactor.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationFactor.cs
index bfba88d..879794f 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationFactor.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationFactor.cs
@@ -9,7 +9,7 @@
     {
         protected override string Prefix
         {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/AssetsTranslationFactor"; }
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Translation/Factor"; }
         }
 
         public Task<bool> UpdateSortCode(long ID, int SortCode)
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationMain.cs
index c29a31b..e030ec9 100644
--- a/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationMain.cs
+++ b/BLL/HStation.BLL.Assets.Core/02-httpclient/20-Translation/AssetsTranslationMain.cs
@@ -9,12 +9,16 @@
     {
         protected override string Prefix
         {
-            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/AssetsTranslationMain"; }
+            get { return $"{HStation.BLL.Assets.ConfigHelper.HttpUrl}/Assets/Translation/Main"; }
         }
 
-        public Task<List<AssetsTranslationMainDto>> GetBySeriesID(long ID)
+        public async Task<List<AssetsTranslationMainDto>> GetBySeriesID(long ID)
         {
-            throw new NotImplementedException();
+            var paras = new List<(string Name, object Value)>()
+            {
+                ("SeriesID",ID)
+            };
+            return await GetUrl("GetBySeriesID@V1.0").Get<List<AssetsTranslationMainDto>>(paras);
         }
 
         /// <summary>
diff --git a/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs b/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
index b880637..78da491 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
+++ b/Desktop/HStation.Desktop.Xhs.Core/MainForm.Designer.cs
@@ -418,6 +418,8 @@
             svgImg32Model.Add("menu", "image://svgimages/pdf viewer/menu.svg");
             svgImg32Model.Add("relations", "image://svgimages/dashboards/relations.svg");
             svgImg32Model.Add("text", "image://svgimages/spreadsheet/text.svg");
+            svgImg32Model.Add("functionsinformation", "image://svgimages/spreadsheet/functionsinformation.svg");
+            svgImg32Model.Add("editrangepermission", "image://svgimages/richedit/editrangepermission.svg");
             // 
             // flyoutPanel2
             // 
diff --git a/Desktop/HStation.Desktop.Xhs.Core/MainForm.cs b/Desktop/HStation.Desktop.Xhs.Core/MainForm.cs
index 470392c..ecdf4cd 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/MainForm.cs
+++ b/Desktop/HStation.Desktop.Xhs.Core/MainForm.cs
@@ -470,7 +470,7 @@
             var peekUserLoginLog = new TilePeekItem();
             peekUserLoginLog.Id = AuthFunctionHelper.UserLoginLog;
             peekUserLoginLog.Caption = "登录日志";
-            peekUserLoginLog.SvgImage = svgImg32Model[1];
+            peekUserLoginLog.SvgImage = svgImg32Model[26];
             peekUserLoginLog.SvgImageSize = new Size(24, 24);
             peekUserLoginLog.Tag = AuthFunctionHelper.UserLoginLog;
             list.Add(peekUserLoginLog);
@@ -479,7 +479,7 @@
             var peekUserInfo = new TilePeekItem();
             peekUserInfo.Id = AuthFunctionHelper.UserInfo;
             peekUserInfo.Caption = "个人中心";
-            peekUserInfo.SvgImage = svgImg32Model[1];
+            peekUserInfo.SvgImage = svgImg32Model[27];
             peekUserInfo.SvgImageSize = new Size(24, 24);
             peekUserInfo.Tag = AuthFunctionHelper.UserInfo;
             list.Add(peekUserInfo);
diff --git a/Desktop/HStation.Desktop.Xhs.Core/Properties/launchSettings.json b/Desktop/HStation.Desktop.Xhs.Core/Properties/launchSettings.json
index b8adad3..535add9 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/Properties/launchSettings.json
+++ b/Desktop/HStation.Desktop.Xhs.Core/Properties/launchSettings.json
@@ -2,7 +2,8 @@
   "profiles": {
     "HStation.Desktop.Xhs.Core": {
       "commandName": "Project",
-      "nativeDebugging": false
+      "nativeDebugging": false,
+      "hotReloadEnabled": true
     }
   }
 }
\ No newline at end of file
diff --git a/Dto/HStation.Dto.Assets.Core/00-Pump/03-PumpMain/AddPumpMainExInput.cs b/Dto/HStation.Dto.Assets.Core/00-Pump/03-PumpMain/AddPumpMainExInput.cs
new file mode 100644
index 0000000..d5fff9f
--- /dev/null
+++ b/Dto/HStation.Dto.Assets.Core/00-Pump/03-PumpMain/AddPumpMainExInput.cs
@@ -0,0 +1,15 @@
+锘縰sing HStation.Dto.Assets;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HStation.Dto
+{
+    public class AddPumpMainExInput
+    {
+        public AddAssetsPumpMainInput MainInput { get; set; }
+        public AddAssetsPumpGroupAndMainMapInput MainMapInput { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/AddPumpPartMainExInput.cs b/Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/AddPumpPartMainExInput.cs
new file mode 100644
index 0000000..499f546
--- /dev/null
+++ b/Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/AddPumpPartMainExInput.cs
@@ -0,0 +1,21 @@
+锘縰sing HStation.Dto.Assets;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HStation.Dto 
+{ 
+    public class AddPumpPartMainExInput
+    {
+        public AddAssetsPumpPartMainInput PartMain { get; set; }
+
+
+        public List<AddAssetsPumpPropContentInput> PropContent { get; set; }
+
+
+        public AddAssetsPumpMainAndPartMapInput PartMapping { get; set; }
+ 
+    }
+}
diff --git a/Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/UpdatePumpPartMainExInput.cs b/Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/UpdatePumpPartMainExInput.cs
new file mode 100644
index 0000000..71d2b8c
--- /dev/null
+++ b/Dto/HStation.Dto.Assets.Core/00-Pump/05-PumpPartMain/UpdatePumpPartMainExInput.cs
@@ -0,0 +1,16 @@
+锘縰sing HStation.Dto.Assets;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HStation.Dto
+{
+    public class UpdatePumpPartMainExInput
+    {
+        public UpdateAssetsPumpPartMainInput PartMain { get; set; }
+
+        public List<UpdateAssetsPumpPropContentInput> PropContent { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Dto/HStation.Dto.Assets.Core/04-PipeLine/02-Main/AssetsPipeMainDto.cs b/Dto/HStation.Dto.Assets.Core/04-PipeLine/02-Main/AssetsPipeMainDto.cs
index 04d78bc..609a47c 100644
--- a/Dto/HStation.Dto.Assets.Core/04-PipeLine/02-Main/AssetsPipeMainDto.cs
+++ b/Dto/HStation.Dto.Assets.Core/04-PipeLine/02-Main/AssetsPipeMainDto.cs
@@ -14,6 +14,7 @@
             this.Material = rhs.Material;
             this.Hazen = rhs.Hazen;
             this.KeyWords = rhs.KeyWords;
+            this.TagName = rhs.TagName;
             this.SortCode = rhs.SortCode;
             this.Description = rhs.Description;
         }
diff --git a/Dto/HStation.Dto.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainDto.cs b/Dto/HStation.Dto.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainDto.cs
index ecb53e2..0170c83 100644
--- a/Dto/HStation.Dto.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainDto.cs
+++ b/Dto/HStation.Dto.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainDto.cs
@@ -22,6 +22,7 @@
             this.Paras = rhs.Paras;
             this.Flags = rhs.Flags;
             this.TagName = rhs.TagName;
+            this.KeyWords = rhs.KeyWords;
             this.SortCode = rhs.SortCode;
             this.Description = rhs.Description;
         }
diff --git a/Entry/HStation.Entry.Xhs.Core/Directory.Build.props b/Entry/HStation.Entry.Xhs.Core/Directory.Build.props
new file mode 100644
index 0000000..0abed26
--- /dev/null
+++ b/Entry/HStation.Entry.Xhs.Core/Directory.Build.props
@@ -0,0 +1,17 @@
+<Project>
+	<PropertyGroup>
+		<DebugType>embedded</DebugType>
+		<DebugSymbols>true</DebugSymbols>
+		<PublishRepositoryUrl>true</PublishRepositoryUrl>
+	</PropertyGroup>
+ 
+	<!--<PropertyGroup Condition="'$(GITLAB_CI)' == 'true'">-->
+	<PropertyGroup Condition="'$(Configuration)' == 'Release'">
+		<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
+		<Deterministic>true</Deterministic>
+		<EmbedUntrackedSources>true</EmbedUntrackedSources>
+	</PropertyGroup>
+	<ItemGroup>
+		<PackageReference Include="Microsoft.SourceLink.GitLab" Version="1.0.0" PrivateAssets="All"/>
+	</ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/Entry/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user b/Entry/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user
index 7f10306..aa53506 100644
--- a/Entry/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user
+++ b/Entry/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <NameOfLastUsedPublishProfile>D:\WorkData\git\HStation\XHS\Entry\HStation.Entry.Xhs.Core\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
+    <NameOfLastUsedPublishProfile>D:\WorkCode\HStation\XHS.V1.0\Entry\HStation.Entry.Xhs.Core\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
     <ActiveDebugProfile>IIS Express</ActiveDebugProfile>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
diff --git a/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs b/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs
index 3ae7f4f..681490a 100644
--- a/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs
+++ b/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs
@@ -217,8 +217,11 @@
 
                 foreach (var node in new Node[] { currentLink.StartNode, currentLink.EndNode })
                 {
-                    if (direction == 1 && dictLinks[currentLink.Id].Flow >= 0 && node == currentLink.StartNode) continue;
-                    if (direction == -1 && dictLinks[currentLink.Id].Flow <= 0 && node == currentLink.EndNode) continue;
+                    int Sflag= node == currentLink.StartNode?1:-1;
+                    if (direction != 0 && direction * Sflag* dictLinks[currentLink.Id].Flow >= 0) continue;
+                    //if (direction == 1 && dictLinks[currentLink.Id].Flow >= 0 && node == currentLink.StartNode) continue;
+                    //if (direction == -1 && dictLinks[currentLink.Id].Flow <= 0 && node == currentLink.EndNode) continue;
+                    
                     if (node != null && !visitedNodes.Contains(node))
                     {
                         visitedNodes.Add(node);
diff --git a/Service/HStation.Service.PhartRelation.Core/00-core/ConfigHelper.cs b/Service/HStation.Service.PhartRelation.Core/00-core/ConfigHelper.cs
index 7d58210..f10b88b 100644
--- a/Service/HStation.Service.PhartRelation.Core/00-core/ConfigHelper.cs
+++ b/Service/HStation.Service.PhartRelation.Core/00-core/ConfigHelper.cs
@@ -9,26 +9,24 @@
         {
             get
             {
-                //SnowFlakeSingle.WorkId = Settings.SqlSugar.SnowFlakeWorkId; 涓嶅悓鏈哄櫒閰嶇疆鐨勫敮涓�鏁板瓧; // 鍗曟湇鍔″櫒涓嶉渶瑕佹寚瀹�
-                return new ConnectionConfig()
+                ConnectionConfig connectConfig = null;
+                switch (Settings.PhartRelationParasHelper.PhartRelation.DataBase.DbType)
                 {
-                    DbType = SqlSugar.DbType.PostgreSQL,//鏁版嵁搴撶被鍨�
-                    ConnectionString = Settings.PhartRelationParasHelper.PhartRelation.DataBase.PostgreSql.ConnectString,
-                    IsAutoCloseConnection = true,//鏄惁鑷姩鍏抽棴
-                    MoreSettings = new ConnMoreSettings()
-                    {
-                        //PgSqlIsAutoToLower = false //鏁版嵁搴撳瓨鍦ㄥぇ鍐欏瓧娈电殑 锛岄渶瑕佹妸杩欎釜璁句负false 锛屽苟涓斿疄浣撳拰瀛楁鍚嶇О瑕佷竴鏍�
-                    },
-                    AopEvents = new AopEvents
-                    {
-                        OnLogExecuting = (sql, p) =>
+                    case DbType.PostgreSql:
                         {
-                            // var sqlString = UtilMethods.GetNativeSql(sql, p);
-                            //LogHelper.Debug(sqlString);
-                            // Console.WriteLine(sql);
+                            connectConfig = PostgreSqlConnectionConfig;
                         }
-                    }
-                };
+                        break;
+
+                    case DbType.SQLite:
+                        {
+                            connectConfig = SQLiteConnectionConfig;
+                        }
+                        break;
+
+                    default: break;
+                }
+                return connectConfig;
             }
         }
 
diff --git a/Service/HStation.Service.PhartRelation.Core/05-service/00-core/DbFirstHelper.cs b/Service/HStation.Service.PhartRelation.Core/05-service/00-core/DbFirstHelper.cs
index 19d3524..963f5d2 100644
--- a/Service/HStation.Service.PhartRelation.Core/05-service/00-core/DbFirstHelper.cs
+++ b/Service/HStation.Service.PhartRelation.Core/05-service/00-core/DbFirstHelper.cs
@@ -13,7 +13,7 @@
             msg = string.Empty;
             try
             {
-                var connectConfig = HStation.PhartRelation.ConfigHelper.SQLiteConnectionConfig;
+                var connectConfig = HStation.PhartRelation.ConfigHelper.DefaultConnectionConfig;
                 if (connectConfig == null)
                 {
                     msg = "杩炴帴閰嶇疆鍒濆鍖栧け璐�";
diff --git a/Service/HStation.Service.PhartRelation.Core/paras_hstation_phart_relation_settings.json b/Service/HStation.Service.PhartRelation.Core/paras_hstation_phart_relation_settings.json
index 56b217f..d99822d 100644
--- a/Service/HStation.Service.PhartRelation.Core/paras_hstation_phart_relation_settings.json
+++ b/Service/HStation.Service.PhartRelation.Core/paras_hstation_phart_relation_settings.json
@@ -16,7 +16,7 @@
       }
     },
     "CAL": {
-      "CALType": "LocalClient", //HttpClient/LocalClient
+      "CALType": "HttpClient", //HttpClient/LocalClient
       "HttpClient": {
         "HttpUrl": ""
       },
@@ -24,4 +24,5 @@
       }
     }
   }
+
 }
\ No newline at end of file
diff --git a/Vmo/HStation.Vmo.Assets.Core/15-Tank/AssetsTankSeriesVmo.cs b/Vmo/HStation.Vmo.Assets.Core/15-Tank/AssetsTankSeriesVmo.cs
index 31134b3..d747933 100644
--- a/Vmo/HStation.Vmo.Assets.Core/15-Tank/AssetsTankSeriesVmo.cs
+++ b/Vmo/HStation.Vmo.Assets.Core/15-Tank/AssetsTankSeriesVmo.cs
@@ -18,6 +18,7 @@
         {
             this.ID = rhs.ID;
             this.ParentID = rhs.ParentID;
+            this.CatalogID = rhs.CatalogID;
             this.Name = rhs.Name;
             this.Paras = rhs.Paras;
             this.Flags = rhs.Flags;
@@ -33,6 +34,7 @@
         {
             this.ID = rhs.ID;
             this.ParentID = rhs.ParentID;
+            this.CatalogID = rhs.CatalogID;
             this.Name = rhs.Name;
             this.Paras = rhs.Paras;
             this.Flags = rhs.Flags;
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs
index 29e4db3..b1563e0 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs
@@ -130,7 +130,6 @@
             updatepart.NO = TextEditNo.Text;
             updatepart.Code = TextEditProductCode.Text;
             updatepart.SeriesID = _series.ID;
-            var propList = _propList.Where(x => x.TagName == "Prop").ToList(); //鎵惧埌鎵�鏈夌殑棰濆灞炴��
             foreach (var item in _propList)
             {
                 if (_allPropList != null)
@@ -177,10 +176,10 @@
             }
             var pumpMainBll = new BLL.AssetsPumpMain();
             await pumpMainBll.Update(_pumpMain);
-            _propList.Remove(_propList.Find(x => x.TagName == "Basic_Flow"));
-            _propList.Remove(_propList.Find(x => x.TagName == "Basic_Head"));
-            _propList.Remove(_propList.Find(x => x.TagName == "Basic_Power"));
-            _propList.Remove(_propList.Find(x => x.TagName == "Basic_Speed"));
+            _allPropList.Remove(_allPropList.Find(x => x.TagName == "Basic_Flow"));
+            _allPropList.Remove(_allPropList.Find(x => x.TagName == "Basic_Head"));
+            _allPropList.Remove(_allPropList.Find(x => x.TagName == "Basic_Power"));
+            _allPropList.Remove(_allPropList.Find(x => x.TagName == "Basic_Speed"));
             if (await _bll.UpdateEx(updatepart, _allPropList))
             {
                 vm.Reset(updatepart);
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.Designer.cs
index eae1878..f435efa 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.Designer.cs
@@ -38,11 +38,11 @@
             txtName = new DevExpress.XtraEditors.TextEdit();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
@@ -53,11 +53,11 @@
             ((ISupportInitialize)txtName.Properties).BeginInit();
             ((ISupportInitialize)Root).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
-            ((ISupportInitialize)layoutControlItem3).BeginInit();
-            ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)dxErrorProvider1).BeginInit();
             SuspendLayout();
             // 
@@ -120,7 +120,7 @@
             txtCaliber.StyleController = layoutControl1;
             txtCaliber.TabIndex = 4;
             // 
-            // txtDN
+            // txtMaterial
             // 
             txtMaterial.Location = new Point(83, 36);
             txtMaterial.Name = "txtMaterial";
@@ -159,25 +159,6 @@
             layoutControlItem1.Text = "<color=red>*</color>鍚嶇О:";
             layoutControlItem1.TextSize = new Size(59, 14);
             // 
-            // layoutControlItem3
-            // 
-            layoutControlItem3.Control = txtCaliber;
-            layoutControlItem3.Location = new Point(252, 0);
-            layoutControlItem3.Name = "layoutControlItem3";
-            layoutControlItem3.Size = new Size(253, 24);
-            layoutControlItem3.Text = "鍙e緞:";
-            layoutControlItem3.TextSize = new Size(59, 14);
-            // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.AllowHtmlStringInCaption = true;
-            layoutControlItem4.Control = txtMinorLoss;
-            layoutControlItem4.Location = new Point(252, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(253, 24);
-            layoutControlItem4.Text = "<color=red>*</color>娴侀噺绯绘暟:";
-            layoutControlItem4.TextSize = new Size(59, 14);
-            // 
             // layoutControlItem2
             // 
             layoutControlItem2.AllowHtmlStringInCaption = true;
@@ -185,7 +166,7 @@
             layoutControlItem2.Location = new Point(0, 24);
             layoutControlItem2.Name = "layoutControlItem2";
             layoutControlItem2.Size = new Size(252, 24);
-            layoutControlItem2.Text = "<color=red>*</color>鏉愯川:";
+            layoutControlItem2.Text = "鏉愯川:";
             layoutControlItem2.TextSize = new Size(59, 14);
             // 
             // layoutControlItem6
@@ -205,6 +186,25 @@
             layoutControlItem7.Size = new Size(505, 30);
             layoutControlItem7.TextSize = new Size(0, 0);
             layoutControlItem7.TextVisible = false;
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = txtCaliber;
+            layoutControlItem3.Location = new Point(252, 0);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(253, 24);
+            layoutControlItem3.Text = "鍙e緞:";
+            layoutControlItem3.TextSize = new Size(59, 14);
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.AllowHtmlStringInCaption = true;
+            layoutControlItem4.Control = txtMinorLoss;
+            layoutControlItem4.Location = new Point(252, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(253, 24);
+            layoutControlItem4.Text = "<color=red>*</color>灞�闃荤郴鏁�:";
+            layoutControlItem4.TextSize = new Size(59, 14);
             // 
             // dxErrorProvider1
             // 
@@ -228,11 +228,11 @@
             ((ISupportInitialize)txtName.Properties).EndInit();
             ((ISupportInitialize)Root).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
-            ((ISupportInitialize)layoutControlItem3).EndInit();
-            ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)dxErrorProvider1).EndInit();
             ResumeLayout(false);
         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.cs
index f2c64c4..55e30e5 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.cs
@@ -46,11 +46,6 @@
                 this.dxErrorProvider1.SetError(this.txtName, "蹇呭~椤�");
                 return false;
             }
-            if (string.IsNullOrEmpty(this.txtMaterial.Text.Trim()))
-            {
-                this.dxErrorProvider1.SetError(this.txtMaterial, "蹇呭~椤�");
-                return false;
-            }
             if (string.IsNullOrEmpty(this.txtMinorLoss.Text.Trim()))
             {
                 this.dxErrorProvider1.SetError(this.txtMinorLoss, "蹇呭~椤�");
@@ -74,6 +69,7 @@
             _vmo.Material = this.txtMaterial.Text.Trim();
             _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.MinorLoss = double.Parse(this.txtMinorLoss.EditValue?.ToString());
+            _vmo.Description = this.txtDescription.EditValue?.ToString();
             var id = await BLLFactory<HStation.BLL.AssetsValveFactor>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AddAssetsValveFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AssetsValveFactorMgrViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AssetsValveFactorMgrViewModel.cs
index 5df6eff..6ebc64f 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AssetsValveFactorMgrViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/AssetsValveFactorMgrViewModel.cs
@@ -21,6 +21,7 @@
             this.Material = rhs.Material;
             this.Caliber = rhs.Caliber;
             this.Coefficient = rhs.MinorLoss;
+            this.Description = rhs.Description;
             this.Vmo = rhs;
         }
 
@@ -34,6 +35,7 @@
             this.Material = rhs.Material;
             this.Caliber = rhs.Caliber;
             this.Coefficient = rhs.MinorLoss;
+            this.Description = rhs.Description;
             this.Vmo = rhs;
         }
 
@@ -64,7 +66,7 @@
         /// <summary>
         /// 鍠峰皠绯绘暟
         /// </summary>
-        [Display(Name = "鍠峰皠绯绘暟")]
+        [Display(Name = "灞�闃荤郴鏁�")]
         public double Coefficient { get; set; }
 
         /// <summary>
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.Designer.cs
index 6176b99..5614fb6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.Designer.cs
@@ -39,10 +39,10 @@
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
@@ -54,10 +54,10 @@
             ((ISupportInitialize)Root).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
             ((ISupportInitialize)layoutControlItem3).BeginInit();
-            ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)dxErrorProvider1).BeginInit();
             SuspendLayout();
             // 
@@ -120,7 +120,7 @@
             txtCaliber.StyleController = layoutControl1;
             txtCaliber.TabIndex = 4;
             // 
-            // txtDN
+            // txtMaterial
             // 
             txtMaterial.Location = new Point(83, 36);
             txtMaterial.Name = "txtMaterial";
@@ -168,16 +168,6 @@
             layoutControlItem3.Text = "鍙e緞:";
             layoutControlItem3.TextSize = new Size(59, 14);
             // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.AllowHtmlStringInCaption = true;
-            layoutControlItem4.Control = txtCoefficient;
-            layoutControlItem4.Location = new Point(252, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(253, 24);
-            layoutControlItem4.Text = "<color=red>*</color>娴侀噺绯绘暟:";
-            layoutControlItem4.TextSize = new Size(59, 14);
-            // 
             // layoutControlItem2
             // 
             layoutControlItem2.AllowHtmlStringInCaption = true;
@@ -185,7 +175,7 @@
             layoutControlItem2.Location = new Point(0, 24);
             layoutControlItem2.Name = "layoutControlItem2";
             layoutControlItem2.Size = new Size(252, 24);
-            layoutControlItem2.Text = "<color=red>*</color>鏉愯川:";
+            layoutControlItem2.Text = "鏉愯川:";
             layoutControlItem2.TextSize = new Size(59, 14);
             // 
             // layoutControlItem6
@@ -205,6 +195,16 @@
             layoutControlItem7.Size = new Size(505, 30);
             layoutControlItem7.TextSize = new Size(0, 0);
             layoutControlItem7.TextVisible = false;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.AllowHtmlStringInCaption = true;
+            layoutControlItem4.Control = txtCoefficient;
+            layoutControlItem4.Location = new Point(252, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(253, 24);
+            layoutControlItem4.Text = "<color=red>*</color>灞�闃荤郴鏁�:";
+            layoutControlItem4.TextSize = new Size(59, 14);
             // 
             // dxErrorProvider1
             // 
@@ -229,10 +229,10 @@
             ((ISupportInitialize)Root).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
             ((ISupportInitialize)layoutControlItem3).EndInit();
-            ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)dxErrorProvider1).EndInit();
             ResumeLayout(false);
         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.cs
index b99777b..ab89b92 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.cs
@@ -44,11 +44,6 @@
                 this.dxErrorProvider1.SetError(this.txtName, "蹇呭~椤�");
                 return false;
             }
-            if (string.IsNullOrEmpty(this.txtMaterial.Text.Trim()))
-            {
-                this.dxErrorProvider1.SetError(this.txtMaterial, "蹇呭~椤�");
-                return false;
-            }
             if (string.IsNullOrEmpty(this.txtCoefficient.Text.Trim()))
             {
                 this.dxErrorProvider1.SetError(this.txtCoefficient, "蹇呭~椤�");
@@ -72,6 +67,8 @@
             _vmo.Material = this.txtMaterial.Text.Trim();
             _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.MinorLoss = double.Parse(this.txtCoefficient.EditValue?.ToString());
+            _vmo.Description = this.txtDescription.EditValue?.ToString();
+
             var bol = await BLLFactory<HStation.BLL.AssetsValveFactor>.Instance.Update(_vmo);
             if (!bol)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/EditAssetsValveFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.Designer.cs
index 51ae4b7..901559b 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.Designer.cs
@@ -37,9 +37,9 @@
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtDescription.Properties).BeginInit();
@@ -50,9 +50,9 @@
             ((ISupportInitialize)Root).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
             ((ISupportInitialize)layoutControlItem3).BeginInit();
-            ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
@@ -108,7 +108,7 @@
             txtCaliber.StyleController = layoutControl1;
             txtCaliber.TabIndex = 4;
             // 
-            // txtDN
+            // txtMaterial
             // 
             txtMaterial.Location = new Point(76, 36);
             txtMaterial.Name = "txtMaterial";
@@ -159,15 +159,6 @@
             layoutControlItem3.Text = "鍙e緞:";
             layoutControlItem3.TextSize = new Size(52, 14);
             // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.Control = txtCoefficient;
-            layoutControlItem4.Location = new Point(252, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(253, 24);
-            layoutControlItem4.Text = "娴侀噺绯绘暟:";
-            layoutControlItem4.TextSize = new Size(52, 14);
-            // 
             // layoutControlItem2
             // 
             layoutControlItem2.Control = txtMaterial;
@@ -185,6 +176,15 @@
             layoutControlItem6.Size = new Size(505, 248);
             layoutControlItem6.Text = "璇存槑:";
             layoutControlItem6.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = txtCoefficient;
+            layoutControlItem4.Location = new Point(252, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(253, 24);
+            layoutControlItem4.Text = "灞�闃荤郴鏁�:";
+            layoutControlItem4.TextSize = new Size(52, 14);
             // 
             // ViewAssetsValveFactorDlg
             // 
@@ -205,9 +205,9 @@
             ((ISupportInitialize)Root).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
             ((ISupportInitialize)layoutControlItem3).EndInit();
-            ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
             ResumeLayout(false);
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.cs
index 52aa210..77b6d1d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.cs
@@ -25,6 +25,8 @@
             this.txtMaterial.EditValue = vmo.Material;
             this.txtCaliber.EditValue = vmo.Caliber;
             this.txtCoefficient.EditValue = vmo.MinorLoss;
+            this.txtDescription.EditValue = vmo.Description;
+
         }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.resx
index af32865..8b2ff64 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/03-factor/ViewAssetsValveFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.cs
index 99e0731..47f83ed 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.cs
@@ -66,6 +66,8 @@
                 return;
             }
             var diagram = this.valveChartExcelImportCtrl1.Get();
+            diagram.Name = this.txtName.Text.Trim();
+
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByPictureDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByPictureDlg.cs
index 5c04919..723ba56 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByPictureDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByPictureDlg.cs
@@ -67,6 +67,7 @@
                 return;
             }
             var diagram = this.universalChartImageImportCtrl1.Get();
+            diagram.Name = this.txtName.Text.Trim();
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/AddAssetsPipeMainDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/AddAssetsPipeMainDlg.cs
index b21b001..f0ce751 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/AddAssetsPipeMainDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/AddAssetsPipeMainDlg.cs
@@ -92,6 +92,7 @@
                 return;
             }
             _vmo.Name = this.txtName.Text.Trim();
+            _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.KeyWords = HStation.Service.Assets.KeyWordHelper.ToList(this.txtKeyWord.Text.Trim());
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/EditAssetsPipeMainDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/EditAssetsPipeMainDlg.cs
index 281f932..3a4d375 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/EditAssetsPipeMainDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/02-main/EditAssetsPipeMainDlg.cs
@@ -78,6 +78,7 @@
                 return;
             }
             _vmo.Name = this.txtName.Text.Trim();
+            _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.KeyWords = HStation.Service.Assets.KeyWordHelper.ToList(this.txtKeyWord.Text.Trim());
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.Designer.cs
index ef755f0..aa93724 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.Designer.cs
@@ -33,23 +33,31 @@
             generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             txtDescription = new DevExpress.XtraEditors.MemoEdit();
             txtMinorLoss = new DevExpress.XtraEditors.TextEdit();
+            txtCaliber = new DevExpress.XtraEditors.TextEdit();
+            txtMaterial = new DevExpress.XtraEditors.TextEdit();
             txtName = new DevExpress.XtraEditors.TextEdit();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtDescription.Properties).BeginInit();
             ((ISupportInitialize)txtMinorLoss.Properties).BeginInit();
+            ((ISupportInitialize)txtCaliber.Properties).BeginInit();
+            ((ISupportInitialize)txtMaterial.Properties).BeginInit();
             ((ISupportInitialize)txtName.Properties).BeginInit();
             ((ISupportInitialize)Root).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
-            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)dxErrorProvider1).BeginInit();
             SuspendLayout();
             // 
@@ -58,6 +66,8 @@
             layoutControl1.Controls.Add(generalOkAndCancelCtrl1);
             layoutControl1.Controls.Add(txtDescription);
             layoutControl1.Controls.Add(txtMinorLoss);
+            layoutControl1.Controls.Add(txtCaliber);
+            layoutControl1.Controls.Add(txtMaterial);
             layoutControl1.Controls.Add(txtName);
             layoutControl1.Dock = DockStyle.Fill;
             layoutControl1.Location = new Point(0, 0);
@@ -65,7 +75,7 @@
             layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(826, 220, 650, 400);
             layoutControl1.Root = Root;
             layoutControl1.Size = new Size(380, 262);
-            layoutControl1.TabIndex = 0;
+            layoutControl1.TabIndex = 1;
             layoutControl1.Text = "layoutControl1";
             // 
             // generalOkAndCancelCtrl1
@@ -74,35 +84,57 @@
             generalOkAndCancelCtrl1.ButtonCancelMinSize = new Size(100, 26);
             generalOkAndCancelCtrl1.ButtonOkMaxSize = new Size(100, 26);
             generalOkAndCancelCtrl1.ButtonOkMinSize = new Size(100, 26);
-            generalOkAndCancelCtrl1.Location = new Point(12, 217);
+            generalOkAndCancelCtrl1.Location = new Point(12, 224);
             generalOkAndCancelCtrl1.Name = "generalOkAndCancelCtrl1";
-            generalOkAndCancelCtrl1.Size = new Size(356, 33);
+            generalOkAndCancelCtrl1.Size = new Size(356, 26);
             generalOkAndCancelCtrl1.TabIndex = 8;
             // 
             // txtDescription
             // 
             txtDescription.Location = new Point(83, 60);
             txtDescription.Name = "txtDescription";
-            txtDescription.Size = new Size(285, 153);
+            txtDescription.Size = new Size(285, 160);
             txtDescription.StyleController = layoutControl1;
             txtDescription.TabIndex = 7;
             // 
             // txtMinorLoss
             // 
-            txtMinorLoss.Location = new Point(83, 36);
+            txtMinorLoss.Location = new Point(263, 36);
             txtMinorLoss.Name = "txtMinorLoss";
             txtMinorLoss.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtMinorLoss.Size = new Size(285, 20);
+            txtMinorLoss.Size = new Size(105, 20);
             txtMinorLoss.StyleController = layoutControl1;
             txtMinorLoss.TabIndex = 5;
+            // 
+            // txtCaliber
+            // 
+            txtCaliber.Location = new Point(263, 12);
+            txtCaliber.Name = "txtCaliber";
+            txtCaliber.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
+            txtCaliber.Properties.DisplayFormat.FormatString = "{0}mm";
+            txtCaliber.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtCaliber.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtCaliber.Properties.NullValuePrompt = "mm";
+            txtCaliber.Size = new Size(105, 20);
+            txtCaliber.StyleController = layoutControl1;
+            txtCaliber.TabIndex = 4;
+            // 
+            // txtMaterial
+            // 
+            txtMaterial.Location = new Point(83, 36);
+            txtMaterial.Name = "txtMaterial";
+            txtMaterial.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
+            txtMaterial.Size = new Size(105, 20);
+            txtMaterial.StyleController = layoutControl1;
+            txtMaterial.TabIndex = 3;
             // 
             // txtName
             // 
             txtName.Location = new Point(83, 12);
             txtName.Name = "txtName";
             txtName.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtName.Size = new Size(285, 20);
+            txtName.Size = new Size(105, 20);
             txtName.StyleController = layoutControl1;
             txtName.TabIndex = 0;
             // 
@@ -112,7 +144,7 @@
             Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem6, layoutControlItem7, layoutControlItem4 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem6, layoutControlItem7, layoutControlItem3, layoutControlItem4 });
             Root.Name = "Root";
             Root.Size = new Size(380, 262);
             Root.TextVisible = false;
@@ -123,37 +155,56 @@
             layoutControlItem1.Control = txtName;
             layoutControlItem1.Location = new Point(0, 0);
             layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(360, 24);
+            layoutControlItem1.Size = new Size(180, 24);
             layoutControlItem1.Text = "<color=red>*</color>鍚嶇О:";
             layoutControlItem1.TextSize = new Size(59, 14);
             // 
-            // layoutControlItem4
+            // layoutControlItem2
             // 
-            layoutControlItem4.AllowHtmlStringInCaption = true;
-            layoutControlItem4.Control = txtMinorLoss;
-            layoutControlItem4.Location = new Point(0, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(360, 24);
-            layoutControlItem4.Text = "<color=red>*</color>灞�闃荤郴鏁�:";
-            layoutControlItem4.TextSize = new Size(59, 14);
+            layoutControlItem2.AllowHtmlStringInCaption = true;
+            layoutControlItem2.Control = txtMaterial;
+            layoutControlItem2.Location = new Point(0, 24);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.Size = new Size(180, 24);
+            layoutControlItem2.Text = "鏉愯川:";
+            layoutControlItem2.TextSize = new Size(59, 14);
             // 
             // layoutControlItem6
             // 
             layoutControlItem6.Control = txtDescription;
             layoutControlItem6.Location = new Point(0, 48);
             layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Size = new Size(360, 157);
+            layoutControlItem6.Size = new Size(360, 164);
             layoutControlItem6.Text = "璇存槑:";
             layoutControlItem6.TextSize = new Size(59, 14);
             // 
             // layoutControlItem7
             // 
             layoutControlItem7.Control = generalOkAndCancelCtrl1;
-            layoutControlItem7.Location = new Point(0, 205);
+            layoutControlItem7.Location = new Point(0, 212);
             layoutControlItem7.Name = "layoutControlItem7";
-            layoutControlItem7.Size = new Size(360, 37);
+            layoutControlItem7.Size = new Size(360, 30);
             layoutControlItem7.TextSize = new Size(0, 0);
             layoutControlItem7.TextVisible = false;
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = txtCaliber;
+            layoutControlItem3.Location = new Point(180, 0);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(180, 24);
+            layoutControlItem3.Text = "鍙e緞:";
+            layoutControlItem3.TextSize = new Size(59, 14);
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.AllowHtmlStringInCaption = true;
+            layoutControlItem4.Control = txtMinorLoss;
+            layoutControlItem4.Location = new Point(180, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(180, 24);
+            layoutControlItem4.Text = "<color=red>*</color>灞�闃荤郴鏁�:";
+            layoutControlItem4.TextSize = new Size(59, 14);
             // 
             // dxErrorProvider1
             // 
@@ -172,32 +223,37 @@
             layoutControl1.ResumeLayout(false);
             ((ISupportInitialize)txtDescription.Properties).EndInit();
             ((ISupportInitialize)txtMinorLoss.Properties).EndInit();
+            ((ISupportInitialize)txtCaliber.Properties).EndInit();
+            ((ISupportInitialize)txtMaterial.Properties).EndInit();
             ((ISupportInitialize)txtName.Properties).EndInit();
             ((ISupportInitialize)Root).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
-            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)dxErrorProvider1).EndInit();
             ResumeLayout(false);
         }
 
         #endregion
-
-        private DevExpress.XtraLayout.LayoutControl layoutControl1;
-        private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private DevExpress.XtraEditors.TextEdit txtName;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
-        private DevExpress.XtraEditors.TextEdit txtMinorLoss;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
         private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
         private DevExpress.XtraEditors.MemoEdit txtDescription;
+        private DevExpress.XtraEditors.TextEdit txtMinorLoss;
+        private DevExpress.XtraEditors.TextEdit txtCaliber;
+        private DevExpress.XtraEditors.TextEdit txtMaterial;
+        private DevExpress.XtraEditors.TextEdit txtName;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
         private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.cs
index af33445..8155bdd 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.cs
@@ -66,6 +66,8 @@
             }
             _vmo.Name = this.txtName.Text.Trim();
             _vmo.MinorLoss = double.Parse(this.txtMinorLoss.EditValue?.ToString());
+            _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
+            _vmo.Material = this.txtMaterial.EditValue == null ? null : this.txtMaterial.EditValue?.ToString();
             _vmo.Description = this.txtDescription.Text.Trim();
             var id = await BLLFactory<HStation.BLL.AssetsPipeFactor>.Instance.Insert(_vmo);
             if (id < 1)
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/AddAssetsPipeFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.Designer.cs
index bc9ab6e..11dd2d7 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.Designer.cs
@@ -29,35 +29,81 @@
         private void InitializeComponent()
         {
             components = new Container();
+            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
+            Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            txtName = new DevExpress.XtraEditors.TextEdit();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             txtDescription = new DevExpress.XtraEditors.MemoEdit();
             txtMinorLoss = new DevExpress.XtraEditors.TextEdit();
-            txtName = new DevExpress.XtraEditors.TextEdit();
-            Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            txtCaliber = new DevExpress.XtraEditors.TextEdit();
+            txtMaterial = new DevExpress.XtraEditors.TextEdit();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
-            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            dxErrorProvider2 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
+            ((ISupportInitialize)dxErrorProvider1).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)txtName.Properties).BeginInit();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtDescription.Properties).BeginInit();
             ((ISupportInitialize)txtMinorLoss.Properties).BeginInit();
-            ((ISupportInitialize)txtName.Properties).BeginInit();
-            ((ISupportInitialize)Root).BeginInit();
-            ((ISupportInitialize)layoutControlItem1).BeginInit();
-            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            ((ISupportInitialize)txtCaliber.Properties).BeginInit();
+            ((ISupportInitialize)txtMaterial.Properties).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
-            ((ISupportInitialize)dxErrorProvider1).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            ((ISupportInitialize)dxErrorProvider2).BeginInit();
             SuspendLayout();
+            // 
+            // dxErrorProvider1
+            // 
+            dxErrorProvider1.ContainerControl = this;
+            // 
+            // Root
+            // 
+            Root.AppearanceItemCaption.Options.UseTextOptions = true;
+            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem6, layoutControlItem7, layoutControlItem3, layoutControlItem4 });
+            Root.Name = "Root";
+            Root.Size = new Size(383, 277);
+            Root.TextVisible = false;
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.AllowHtmlStringInCaption = true;
+            layoutControlItem1.Control = txtName;
+            layoutControlItem1.Location = new Point(0, 0);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Size = new Size(181, 24);
+            layoutControlItem1.Text = "<color=red>*</color>鍚嶇О:";
+            layoutControlItem1.TextSize = new Size(59, 14);
+            // 
+            // txtName
+            // 
+            txtName.Location = new Point(83, 12);
+            txtName.Name = "txtName";
+            txtName.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
+            txtName.Size = new Size(106, 20);
+            txtName.StyleController = layoutControl1;
+            txtName.TabIndex = 0;
             // 
             // layoutControl1
             // 
             layoutControl1.Controls.Add(generalOkAndCancelCtrl1);
             layoutControl1.Controls.Add(txtDescription);
             layoutControl1.Controls.Add(txtMinorLoss);
+            layoutControl1.Controls.Add(txtCaliber);
+            layoutControl1.Controls.Add(txtMaterial);
             layoutControl1.Controls.Add(txtName);
             layoutControl1.Dock = DockStyle.Fill;
             layoutControl1.Location = new Point(0, 0);
@@ -65,7 +111,7 @@
             layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(826, 220, 650, 400);
             layoutControl1.Root = Root;
             layoutControl1.Size = new Size(383, 277);
-            layoutControl1.TabIndex = 0;
+            layoutControl1.TabIndex = 2;
             layoutControl1.Text = "layoutControl1";
             // 
             // generalOkAndCancelCtrl1
@@ -89,53 +135,45 @@
             // 
             // txtMinorLoss
             // 
-            txtMinorLoss.Location = new Point(83, 36);
+            txtMinorLoss.Location = new Point(264, 36);
             txtMinorLoss.Name = "txtMinorLoss";
             txtMinorLoss.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtMinorLoss.Size = new Size(288, 20);
+            txtMinorLoss.Size = new Size(107, 20);
             txtMinorLoss.StyleController = layoutControl1;
             txtMinorLoss.TabIndex = 5;
             // 
-            // txtName
+            // txtCaliber
             // 
-            txtName.Location = new Point(83, 12);
-            txtName.Name = "txtName";
-            txtName.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtName.Size = new Size(288, 20);
-            txtName.StyleController = layoutControl1;
-            txtName.TabIndex = 0;
+            txtCaliber.Location = new Point(264, 12);
+            txtCaliber.Name = "txtCaliber";
+            txtCaliber.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
+            txtCaliber.Properties.DisplayFormat.FormatString = "{0}mm";
+            txtCaliber.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtCaliber.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtCaliber.Properties.NullValuePrompt = "mm";
+            txtCaliber.Size = new Size(107, 20);
+            txtCaliber.StyleController = layoutControl1;
+            txtCaliber.TabIndex = 4;
             // 
-            // Root
+            // txtMaterial
             // 
-            Root.AppearanceItemCaption.Options.UseTextOptions = true;
-            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem4, layoutControlItem6, layoutControlItem7 });
-            Root.Name = "Root";
-            Root.Size = new Size(383, 277);
-            Root.TextVisible = false;
+            txtMaterial.Location = new Point(83, 36);
+            txtMaterial.Name = "txtMaterial";
+            txtMaterial.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
+            txtMaterial.Size = new Size(106, 20);
+            txtMaterial.StyleController = layoutControl1;
+            txtMaterial.TabIndex = 3;
             // 
-            // layoutControlItem1
+            // layoutControlItem2
             // 
-            layoutControlItem1.AllowHtmlStringInCaption = true;
-            layoutControlItem1.Control = txtName;
-            layoutControlItem1.Location = new Point(0, 0);
-            layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(363, 24);
-            layoutControlItem1.Text = "<color=red>*</color>鍚嶇О:";
-            layoutControlItem1.TextSize = new Size(59, 14);
-            // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.AllowHtmlStringInCaption = true;
-            layoutControlItem4.Control = txtMinorLoss;
-            layoutControlItem4.Location = new Point(0, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(363, 24);
-            layoutControlItem4.Text = "<color=red>*</color>灞�闃荤郴鏁�:";
-            layoutControlItem4.TextSize = new Size(59, 14);
+            layoutControlItem2.AllowHtmlStringInCaption = true;
+            layoutControlItem2.Control = txtMaterial;
+            layoutControlItem2.Location = new Point(0, 24);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.Size = new Size(181, 24);
+            layoutControlItem2.Text = "鏉愯川:";
+            layoutControlItem2.TextSize = new Size(59, 14);
             // 
             // layoutControlItem6
             // 
@@ -155,9 +193,28 @@
             layoutControlItem7.TextSize = new Size(0, 0);
             layoutControlItem7.TextVisible = false;
             // 
-            // dxErrorProvider1
+            // layoutControlItem3
             // 
-            dxErrorProvider1.ContainerControl = this;
+            layoutControlItem3.Control = txtCaliber;
+            layoutControlItem3.Location = new Point(181, 0);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(182, 24);
+            layoutControlItem3.Text = "鍙e緞:";
+            layoutControlItem3.TextSize = new Size(59, 14);
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.AllowHtmlStringInCaption = true;
+            layoutControlItem4.Control = txtMinorLoss;
+            layoutControlItem4.Location = new Point(181, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(182, 24);
+            layoutControlItem4.Text = "<color=red>*</color>灞�闃荤郴鏁�:";
+            layoutControlItem4.TextSize = new Size(59, 14);
+            // 
+            // dxErrorProvider2
+            // 
+            dxErrorProvider2.ContainerControl = this;
             // 
             // EditAssetsPipeFactorDlg
             // 
@@ -168,32 +225,41 @@
             Name = "EditAssetsPipeFactorDlg";
             StartPosition = FormStartPosition.CenterParent;
             Text = "缂栬緫";
+            ((ISupportInitialize)dxErrorProvider1).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)txtName.Properties).EndInit();
             ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
             ((ISupportInitialize)txtDescription.Properties).EndInit();
             ((ISupportInitialize)txtMinorLoss.Properties).EndInit();
-            ((ISupportInitialize)txtName.Properties).EndInit();
-            ((ISupportInitialize)Root).EndInit();
-            ((ISupportInitialize)layoutControlItem1).EndInit();
-            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ((ISupportInitialize)txtCaliber.Properties).EndInit();
+            ((ISupportInitialize)txtMaterial.Properties).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
-            ((ISupportInitialize)dxErrorProvider1).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ((ISupportInitialize)dxErrorProvider2).EndInit();
             ResumeLayout(false);
         }
 
         #endregion
-
+        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
         private DevExpress.XtraLayout.LayoutControl layoutControl1;
-        private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private DevExpress.XtraEditors.TextEdit txtName;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
-        private DevExpress.XtraEditors.TextEdit txtMinorLoss;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
         private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
         private DevExpress.XtraEditors.MemoEdit txtDescription;
+        private DevExpress.XtraEditors.TextEdit txtMinorLoss;
+        private DevExpress.XtraEditors.TextEdit txtCaliber;
+        private DevExpress.XtraEditors.TextEdit txtMaterial;
+        private DevExpress.XtraEditors.TextEdit txtName;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
-        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider2;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.cs
index cbb98ed..a46fed8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.cs
@@ -64,8 +64,9 @@
             }
             _vmo.Name = this.txtName.Text.Trim();
             _vmo.MinorLoss = double.Parse(this.txtMinorLoss.EditValue?.ToString());
-            _vmo.Description = this.txtDescription.Text.Trim();
-            var bol = await BLLFactory<HStation.BLL.AssetsPipeFactor>.Instance.Update(_vmo);
+            _vmo.Caliber = double.Parse(this.txtCaliber.EditValue?.ToString());
+            _vmo.Material = this.txtMaterial.EditValue?.ToString();
+            _vmo.Description = this.txtDescription.Text.Trim(); var bol = await BLLFactory<HStation.BLL.AssetsPipeFactor>.Instance.Update(_vmo);
             if (!bol)
             {
                 TipFormHelper.ShowError("鏇存柊澶辫触锛�");
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.resx
index d438392..1b73a40 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/EditAssetsPipeFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
@@ -120,4 +120,7 @@
   <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="dxErrorProvider2.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.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.Designer.cs
index e12dd8c..87c9bab 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.Designer.cs
@@ -36,6 +36,10 @@
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
+            txtCaliber = new DevExpress.XtraEditors.TextEdit();
+            txtMaterial = new DevExpress.XtraEditors.TextEdit();
+            layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtDescription.Properties).BeginInit();
@@ -45,10 +49,16 @@
             ((ISupportInitialize)layoutControlItem1).BeginInit();
             ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
+            ((ISupportInitialize)txtCaliber.Properties).BeginInit();
+            ((ISupportInitialize)txtMaterial.Properties).BeginInit();
+            ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem8).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
             // 
+            layoutControl1.Controls.Add(txtCaliber);
+            layoutControl1.Controls.Add(txtMaterial);
             layoutControl1.Controls.Add(txtDescription);
             layoutControl1.Controls.Add(txtMinorLoss);
             layoutControl1.Controls.Add(txtName);
@@ -73,13 +83,13 @@
             // 
             // txtMinorLoss
             // 
-            txtMinorLoss.Location = new Point(76, 36);
+            txtMinorLoss.Location = new Point(265, 36);
             txtMinorLoss.Name = "txtMinorLoss";
             txtMinorLoss.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
             txtMinorLoss.Properties.ReadOnly = true;
             txtMinorLoss.Properties.UseReadOnlyAppearance = false;
-            txtMinorLoss.Size = new Size(311, 20);
+            txtMinorLoss.Size = new Size(122, 20);
             txtMinorLoss.StyleController = layoutControl1;
             txtMinorLoss.TabIndex = 5;
             // 
@@ -90,7 +100,7 @@
             txtName.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtName.Properties.ReadOnly = true;
             txtName.Properties.UseReadOnlyAppearance = false;
-            txtName.Size = new Size(311, 20);
+            txtName.Size = new Size(121, 20);
             txtName.StyleController = layoutControl1;
             txtName.TabIndex = 0;
             // 
@@ -100,7 +110,7 @@
             Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem4, layoutControlItem6 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem4, layoutControlItem6, layoutControlItem7, layoutControlItem8 });
             Root.Name = "Root";
             Root.Size = new Size(399, 299);
             Root.TextVisible = false;
@@ -110,16 +120,16 @@
             layoutControlItem1.Control = txtName;
             layoutControlItem1.Location = new Point(0, 0);
             layoutControlItem1.Name = "layoutControlItem1";
-            layoutControlItem1.Size = new Size(379, 24);
+            layoutControlItem1.Size = new Size(189, 24);
             layoutControlItem1.Text = "鍚嶇О:";
             layoutControlItem1.TextSize = new Size(52, 14);
             // 
             // layoutControlItem4
             // 
             layoutControlItem4.Control = txtMinorLoss;
-            layoutControlItem4.Location = new Point(0, 24);
+            layoutControlItem4.Location = new Point(189, 24);
             layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(379, 24);
+            layoutControlItem4.Size = new Size(190, 24);
             layoutControlItem4.Text = "灞�闃荤郴鏁�:";
             layoutControlItem4.TextSize = new Size(52, 14);
             // 
@@ -131,6 +141,50 @@
             layoutControlItem6.Size = new Size(379, 231);
             layoutControlItem6.Text = "璇存槑:";
             layoutControlItem6.TextSize = new Size(52, 14);
+            // 
+            // txtCaliber
+            // 
+            txtCaliber.Location = new Point(76, 36);
+            txtCaliber.Name = "txtCaliber";
+            txtCaliber.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
+            txtCaliber.Properties.DisplayFormat.FormatString = "{0}mm";
+            txtCaliber.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtCaliber.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtCaliber.Properties.NullValuePrompt = "mm";
+            txtCaliber.Properties.ReadOnly = true;
+            txtCaliber.Properties.UseReadOnlyAppearance = false;
+            txtCaliber.Size = new Size(121, 20);
+            txtCaliber.StyleController = layoutControl1;
+            txtCaliber.TabIndex = 6;
+            // 
+            // txtMaterial
+            // 
+            txtMaterial.Location = new Point(265, 12);
+            txtMaterial.Name = "txtMaterial";
+            txtMaterial.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
+            txtMaterial.Properties.ReadOnly = true;
+            txtMaterial.Properties.UseReadOnlyAppearance = false;
+            txtMaterial.Size = new Size(122, 20);
+            txtMaterial.StyleController = layoutControl1;
+            txtMaterial.TabIndex = 5;
+            // 
+            // layoutControlItem7
+            // 
+            layoutControlItem7.Control = txtMaterial;
+            layoutControlItem7.Location = new Point(189, 0);
+            layoutControlItem7.Name = "layoutControlItem7";
+            layoutControlItem7.Size = new Size(190, 24);
+            layoutControlItem7.Text = "鏉愯川:";
+            layoutControlItem7.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem8
+            // 
+            layoutControlItem8.Control = txtCaliber;
+            layoutControlItem8.Location = new Point(0, 24);
+            layoutControlItem8.Name = "layoutControlItem8";
+            layoutControlItem8.Size = new Size(189, 24);
+            layoutControlItem8.Text = "鍙e緞:";
+            layoutControlItem8.TextSize = new Size(52, 14);
             // 
             // ViewAssetsPipeFactorDlg
             // 
@@ -150,6 +204,10 @@
             ((ISupportInitialize)layoutControlItem1).EndInit();
             ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
+            ((ISupportInitialize)txtCaliber.Properties).EndInit();
+            ((ISupportInitialize)txtMaterial.Properties).EndInit();
+            ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem8).EndInit();
             ResumeLayout(false);
         }
 
@@ -167,5 +225,9 @@
         private DevExpress.XtraEditors.MemoEdit txtDescription;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
         private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraEditors.TextEdit txtCaliber;
+        private DevExpress.XtraEditors.TextEdit txtMaterial;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.cs
index 59ba645..e80f523 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.cs
@@ -23,6 +23,8 @@
             _vmo = vmo;
             this.txtName.EditValue = vmo.Name;
             this.txtMinorLoss.EditValue = vmo.MinorLoss;
+            this.txtCaliber.EditValue = vmo.Caliber;
+            this.txtMaterial.EditValue = vmo.Material;
             this.txtDescription.EditValue = vmo.Description;
         }
     }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.resx
index af32865..8b2ff64 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/04-pipe/03-factor/ViewAssetsPipeFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/02-main/AddAssetsElbowMainDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/02-main/AddAssetsElbowMainDlg.cs
index 39918ff..158087e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/02-main/AddAssetsElbowMainDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/02-main/AddAssetsElbowMainDlg.cs
@@ -106,7 +106,7 @@
             _vmo.ElbowType = this.imageComboBoxEditConnectlenght.EditValue != null
             ? (eElbowType)Enum.Parse(typeof(eElbowType), this.imageComboBoxEditConnectlenght.EditValue.ToString())
             : (eElbowType?)null;
-            _vmo.Angle = int.Parse(this.txtAngle.EditValue?.ToString());
+            _vmo.Angle = this.txtAngle.EditValue == null ? null : int.Parse(this.txtAngle.EditValue?.ToString());
             var id = await BLLFactory<HStation.BLL.AssetsElbowMain>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/03-factor/AddAssetsElbowFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/03-factor/AddAssetsElbowFactorDlg.cs
index d9d505a..5763e20 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/03-factor/AddAssetsElbowFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/05-elbow/03-factor/AddAssetsElbowFactorDlg.cs
@@ -75,7 +75,7 @@
             _vmo.Material = this.txtMaterial.Text.Trim();
             _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.MinorLoss = double.Parse(this.txtCoefficient.EditValue?.ToString());
-            _vmo.Angle = int.Parse(this.txtAngle.EditValue?.ToString());
+            _vmo.Angle = this.txtAngle.EditValue == null ? null : int.Parse(this.txtAngle.EditValue?.ToString());
             _vmo.Description = this.txtDescription.Text.Trim();
             var id = await BLLFactory<HStation.BLL.AssetsElbowFactor>.Instance.Insert(_vmo);
             if (id < 1)
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/01-series/AddAssetsBluntheadSeriesDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/01-series/AddAssetsBluntheadSeriesDlg.cs
index ef920a6..e6194e2 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/01-series/AddAssetsBluntheadSeriesDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/01-series/AddAssetsBluntheadSeriesDlg.cs
@@ -76,6 +76,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
+            _vmo.CatalogID = 1;
             var id = await BLLFactory<HStation.BLL.AssetsBluntheadSeries>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/02-main/AddAssetsBluntheadMainDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/02-main/AddAssetsBluntheadMainDlg.cs
index d6295a3..4544707 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/02-main/AddAssetsBluntheadMainDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/02-main/AddAssetsBluntheadMainDlg.cs
@@ -97,8 +97,9 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
-            _vmo.Caliber = double.Parse(this.txtCaliber.EditValue?.ToString());
+            _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.Material = this.txtMaterial.Text.Trim();
+
             var id = await BLLFactory<HStation.BLL.AssetsBluntheadMain>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/03-factor/AddAssetsBluntheadFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/03-factor/AddAssetsBluntheadFactorDlg.cs
index 4917ff2..f9ad3a1 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/03-factor/AddAssetsBluntheadFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/13-blunthead/03-factor/AddAssetsBluntheadFactorDlg.cs
@@ -68,7 +68,7 @@
             }
             _vmo.Name = this.txtName.Text.Trim();
             _vmo.MinorLoss = double.Parse(this.txtMinorLoss.EditValue?.ToString());
-            _vmo.Caliber = double.Parse(this.txtDiameter.EditValue?.ToString());
+            _vmo.Caliber = this.txtDiameter.EditValue == null ? null : double.Parse(this.txtDiameter.EditValue?.ToString());
             _vmo.Material = this.txtMaterial.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
             var id = await BLLFactory<HStation.BLL.AssetsBluntheadFactor>.Instance.Insert(_vmo);
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/01-series/AddAssetsTankSeriesDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/01-series/AddAssetsTankSeriesDlg.cs
index a77a4e9..8eb7679 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/01-series/AddAssetsTankSeriesDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/01-series/AddAssetsTankSeriesDlg.cs
@@ -76,6 +76,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
+            _vmo.CatalogID = 1;
             var id = await BLLFactory<HStation.BLL.AssetsTankSeries>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByExcelDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByExcelDlg.cs
index 5443788..c1a8027 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByExcelDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByExcelDlg.cs
@@ -63,6 +63,7 @@
                 return;
             }
             var diagram = this.universalChartExcelImportCtrl1.Get();
+            diagram.Name = this.txtName.Text.Trim();
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByPictureDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByPictureDlg.cs
index 6af4750..006782c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByPictureDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/14-tank/03-curveVol/ImportAssetsTankCurveVOLByPictureDlg.cs
@@ -63,6 +63,7 @@
                 return;
             }
             var diagram = this.universalChartImageImportCtrl1.Get();
+            diagram.Name = this.txtName.Text.Trim();
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/AddAssetsHydrantSeriesDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/AddAssetsHydrantSeriesDlg.cs
index e01913c..484ee0c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/AddAssetsHydrantSeriesDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/AddAssetsHydrantSeriesDlg.cs
@@ -76,6 +76,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
+            _vmo.CatalogID = 1;
             var id = await BLLFactory<HStation.BLL.AssetsHydrantSeries>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/EditAssetsHydrantSeriesDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/EditAssetsHydrantSeriesDlg.cs
index 1eb83d6..f743bc6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/EditAssetsHydrantSeriesDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/01-series/EditAssetsHydrantSeriesDlg.cs
@@ -73,6 +73,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
+            _vmo.CatalogID = 1;
             var bol = await BLLFactory<HStation.BLL.AssetsHydrantSeries>.Instance.Update(_vmo);
             if (!bol)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/02-main/AddAssetsHydrantMainDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/02-main/AddAssetsHydrantMainDlg.cs
index 7148d25..5c9dc01 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/02-main/AddAssetsHydrantMainDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/02-main/AddAssetsHydrantMainDlg.cs
@@ -97,7 +97,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
-            _vmo.Caliber = double.Parse(this.txtCaliber.EditValue?.ToString());
+            _vmo.Caliber = this.txtCaliber.EditValue == null ? null : double.Parse(this.txtCaliber.EditValue?.ToString());
             _vmo.Material = this.txtMaterial.Text.Trim();
             var id = await BLLFactory<HStation.BLL.AssetsHydrantMain>.Instance.Insert(_vmo);
             if (id < 1)
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/03-factor/AddAssetsHydrantFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/03-factor/AddAssetsHydrantFactorDlg.cs
index 01ddb7a..36311c6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/03-factor/AddAssetsHydrantFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/17-hydrant/03-factor/AddAssetsHydrantFactorDlg.cs
@@ -68,7 +68,7 @@
             }
             _vmo.Name = this.txtName.Text.Trim();
             _vmo.MinorLoss = double.Parse(this.txtMinorLoss.EditValue?.ToString());
-            _vmo.Caliber = double.Parse(this.txtDiameter.EditValue?.ToString());
+            _vmo.Caliber = this.txtDiameter.EditValue == null ? null : double.Parse(this.txtDiameter.EditValue?.ToString());
             _vmo.Material = this.txtMaterial.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
             var id = await BLLFactory<HStation.BLL.AssetsHydrantFactor>.Instance.Insert(_vmo);
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.Designer.cs
index bac123a..e19ebc8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.Designer.cs
@@ -52,6 +52,7 @@
             ribPageGroupForMore = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             panelControl1 = new DevExpress.XtraEditors.PanelControl();
             gridControl1 = new DevExpress.XtraGrid.GridControl();
+            assetsPressmeterMainMgrViewModelBindingSource = new BindingSource(components);
             gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
             colID = new DevExpress.XtraGrid.Columns.GridColumn();
             colName = new DevExpress.XtraGrid.Columns.GridColumn();
@@ -65,15 +66,14 @@
             repositoryItemButtonEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
             behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(components);
             dragDropEvents1 = new DevExpress.Utils.DragDrop.DragDropEvents(components);
-            assetsPressmeterMainMgrViewModelBindingSource = new BindingSource(components);
             ((ISupportInitialize)ribbonControl1).BeginInit();
             ((ISupportInitialize)panelControl1).BeginInit();
             panelControl1.SuspendLayout();
             ((ISupportInitialize)gridControl1).BeginInit();
+            ((ISupportInitialize)assetsPressmeterMainMgrViewModelBindingSource).BeginInit();
             ((ISupportInitialize)gridView1).BeginInit();
             ((ISupportInitialize)repositoryItemButtonEdit1).BeginInit();
             ((ISupportInitialize)behaviorManager1).BeginInit();
-            ((ISupportInitialize)assetsPressmeterMainMgrViewModelBindingSource).BeginInit();
             SuspendLayout();
             // 
             // ribbonControl1
@@ -89,7 +89,7 @@
             ribbonControl1.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.False;
             ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages;
             ribbonControl1.ShowToolbarCustomizeItem = false;
-            ribbonControl1.Size = new Size(1107, 128);
+            ribbonControl1.Size = new Size(1107, 101);
             ribbonControl1.Toolbar.ShowCustomizeItem = false;
             ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
             // 
@@ -173,6 +173,7 @@
             barBtnFactor.Id = 18;
             barBtnFactor.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barBtnFactor.ImageOptions.SvgImage");
             barBtnFactor.Name = "barBtnFactor";
+            barBtnFactor.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
             barBtnFactor.ItemClick += barBtnFactor_ItemClick;
             // 
             // ribbonPage1
@@ -211,10 +212,10 @@
             panelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
             panelControl1.Controls.Add(gridControl1);
             panelControl1.Dock = DockStyle.Fill;
-            panelControl1.Location = new Point(1, 129);
+            panelControl1.Location = new Point(1, 102);
             panelControl1.Name = "panelControl1";
             panelControl1.Padding = new Padding(0, 1, 0, 0);
-            panelControl1.Size = new Size(1107, 540);
+            panelControl1.Size = new Size(1107, 567);
             panelControl1.TabIndex = 3;
             // 
             // gridControl1
@@ -226,9 +227,13 @@
             gridControl1.MenuManager = ribbonControl1;
             gridControl1.Name = "gridControl1";
             gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repositoryItemButtonEdit1 });
-            gridControl1.Size = new Size(1107, 539);
+            gridControl1.Size = new Size(1107, 566);
             gridControl1.TabIndex = 0;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
+            // 
+            // assetsPressmeterMainMgrViewModelBindingSource
+            // 
+            assetsPressmeterMainMgrViewModelBindingSource.DataSource = typeof(AssetsPressmeterMainMgrViewModel);
             // 
             // gridView1
             // 
@@ -333,10 +338,6 @@
             // 
             dragDropEvents1.DragDrop += dragDropEvents1_DragDrop;
             // 
-            // assetsPressmeterMainMgrViewModelBindingSource
-            // 
-            assetsPressmeterMainMgrViewModelBindingSource.DataSource = typeof(AssetsPressmeterMainMgrViewModel);
-            // 
             // AssetsPressmeterMainMgrPage
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -352,10 +353,10 @@
             ((ISupportInitialize)panelControl1).EndInit();
             panelControl1.ResumeLayout(false);
             ((ISupportInitialize)gridControl1).EndInit();
+            ((ISupportInitialize)assetsPressmeterMainMgrViewModelBindingSource).EndInit();
             ((ISupportInitialize)gridView1).EndInit();
             ((ISupportInitialize)repositoryItemButtonEdit1).EndInit();
             ((ISupportInitialize)behaviorManager1).EndInit();
-            ((ISupportInitialize)assetsPressmeterMainMgrViewModelBindingSource).EndInit();
             ResumeLayout(false);
             PerformLayout();
         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.resx
index beca434..ab47437 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/18-pressmeter/02-main/AssetsPressmeterMainMgrPage.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/AddAssetsTranslationSeriesDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/AddAssetsTranslationSeriesDlg.cs
index 4e0c63d..38b092c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/AddAssetsTranslationSeriesDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/AddAssetsTranslationSeriesDlg.cs
@@ -76,6 +76,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
+            _vmo.CatalogID = 1;
             var id = await BLLFactory<HStation.BLL.AssetsTranslationSeries>.Instance.Insert(_vmo);
             if (id < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/EditAssetsTranslationSeriesDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/EditAssetsTranslationSeriesDlg.cs
index 7da4735..ce707a9 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/EditAssetsTranslationSeriesDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/01-series/EditAssetsTranslationSeriesDlg.cs
@@ -73,6 +73,7 @@
             _vmo.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
             _vmo.TagName = this.txtTagName.Text.Trim();
             _vmo.Description = this.txtDescription.Text.Trim();
+            _vmo.CatalogID = 1;
             var bol = await BLLFactory<HStation.BLL.AssetsTranslationSeries>.Instance.Update(_vmo);
             if (!bol)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/AssetsTranslationFactorMgrPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/AssetsTranslationFactorMgrPage.Designer.cs
index f68fdc9..c514a2c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/AssetsTranslationFactorMgrPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/AssetsTranslationFactorMgrPage.Designer.cs
@@ -60,13 +60,12 @@
             colDescription = new DevExpress.XtraGrid.Columns.GridColumn();
             colDetail = new DevExpress.XtraGrid.Columns.GridColumn();
             repositoryItemButtonEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
-            colDiameter = new DevExpress.XtraGrid.Columns.GridColumn();
             colEndDiameter = new DevExpress.XtraGrid.Columns.GridColumn();
             colStartDiameter = new DevExpress.XtraGrid.Columns.GridColumn();
             colTranslationType = new DevExpress.XtraGrid.Columns.GridColumn();
+            colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
             behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(components);
             dragDropEvents1 = new DevExpress.Utils.DragDrop.DragDropEvents(components);
-            colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
             ((ISupportInitialize)ribbonControl1).BeginInit();
             ((ISupportInitialize)panelControl1).BeginInit();
             panelControl1.SuspendLayout();
@@ -229,7 +228,7 @@
             // gridView1
             // 
             behaviorManager1.SetBehaviors(gridView1, new DevExpress.Utils.Behaviors.Behavior[] { DevExpress.Utils.DragDrop.DragDropBehavior.Create(typeof(DevExpress.XtraGrid.Extensions.ColumnViewDragDropSource), true, true, true, true, dragDropEvents1) });
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colID, colName, colMinorLoss, colSortCode, colDescription, colDetail, colDiameter, colEndDiameter, colStartDiameter, colTranslationType, colMaterial });
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colID, colName, colMinorLoss, colSortCode, colDescription, colDetail, colEndDiameter, colStartDiameter, colTranslationType, colMaterial });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.RowCellClick += gridView1_RowCellClick;
@@ -259,7 +258,7 @@
             colMinorLoss.MinWidth = 100;
             colMinorLoss.Name = "colMinorLoss";
             colMinorLoss.Visible = true;
-            colMinorLoss.VisibleIndex = 6;
+            colMinorLoss.VisibleIndex = 5;
             colMinorLoss.Width = 100;
             // 
             // colSortCode
@@ -276,7 +275,7 @@
             colDescription.MinWidth = 100;
             colDescription.Name = "colDescription";
             colDescription.Visible = true;
-            colDescription.VisibleIndex = 7;
+            colDescription.VisibleIndex = 6;
             colDescription.Width = 100;
             // 
             // colDetail
@@ -287,7 +286,7 @@
             colDetail.MinWidth = 60;
             colDetail.Name = "colDetail";
             colDetail.Visible = true;
-            colDetail.VisibleIndex = 8;
+            colDetail.VisibleIndex = 7;
             colDetail.Width = 60;
             // 
             // repositoryItemButtonEdit1
@@ -299,44 +298,37 @@
             repositoryItemButtonEdit1.Name = "repositoryItemButtonEdit1";
             repositoryItemButtonEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
-            // colDiameter
-            // 
-            colDiameter.FieldName = "Diameter";
-            colDiameter.Name = "colDiameter";
-            colDiameter.Visible = true;
-            colDiameter.VisibleIndex = 1;
-            // 
             // colEndDiameter
             // 
             colEndDiameter.FieldName = "EndDiameter";
             colEndDiameter.Name = "colEndDiameter";
             colEndDiameter.Visible = true;
-            colEndDiameter.VisibleIndex = 4;
+            colEndDiameter.VisibleIndex = 3;
             // 
             // colStartDiameter
             // 
             colStartDiameter.FieldName = "StartDiameter";
             colStartDiameter.Name = "colStartDiameter";
             colStartDiameter.Visible = true;
-            colStartDiameter.VisibleIndex = 3;
+            colStartDiameter.VisibleIndex = 2;
             // 
             // colTranslationType
             // 
             colTranslationType.FieldName = "TranslationType";
             colTranslationType.Name = "colTranslationType";
             colTranslationType.Visible = true;
-            colTranslationType.VisibleIndex = 5;
-            // 
-            // dragDropEvents1
-            // 
-            dragDropEvents1.DragDrop += dragDropEvents1_DragDrop;
+            colTranslationType.VisibleIndex = 4;
             // 
             // colMaterial
             // 
             colMaterial.FieldName = "Material";
             colMaterial.Name = "colMaterial";
             colMaterial.Visible = true;
-            colMaterial.VisibleIndex = 2;
+            colMaterial.VisibleIndex = 1;
+            // 
+            // dragDropEvents1
+            // 
+            dragDropEvents1.DragDrop += dragDropEvents1_DragDrop;
             // 
             // AssetsTranslationFactorMgrPage
             // 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/ViewAssetsTranslationFactorDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/ViewAssetsTranslationFactorDlg.cs
index 3a94208..6ae81c4 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/ViewAssetsTranslationFactorDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/19-translation/03-factor/ViewAssetsTranslationFactorDlg.cs
@@ -25,8 +25,9 @@
             this.TextEditMinorLoss.EditValue = vmo.MinorLoss;
             this.textEditStartDiameter.EditValue = vmo.StartDiameter;
             this.textEditEndDiameter.EditValue = vmo.EndDiameter;
+            this.textEditTranslationType.Properties.AddEnum(typeof(HStation.Assets.eTranslationType));
             this.textEditTranslationType.EditValue = vmo.TranslationType;
-            this.txtMaterial.EditValue = vmo.Material;
+             this.txtMaterial.EditValue = vmo.Material;
             this.txtDescription.EditValue = vmo.Description;
         }
     }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByExcelDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByExcelDlg.cs
index 4219e8e..9d98939 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByExcelDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByExcelDlg.cs
@@ -64,6 +64,7 @@
                 return;
             }
             var diagram = this.universalChartExcelImportCtrl1.Get();
+            diagram.Name = this.txtName.Text.Trim();
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByPictureDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByPictureDlg.cs
index 5ac09cc..08de05a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByPictureDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/20-exchanger/04-curveql/ImportAssetsExchangerCurveQLByPictureDlg.cs
@@ -14,7 +14,7 @@
         }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public event Action<HStation.Vmo.PhartDiagramRelationVmo> ReloadDataEvent;
 
@@ -22,7 +22,7 @@
         private PhartDiagramRelationVmo _vmo = null;
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public void SetBindingData(AssetsExchangerMainVmo exchanger)
         {
@@ -53,7 +53,6 @@
                 return false;
             }
             return true;
-
         }
 
         //纭畾
@@ -64,6 +63,7 @@
                 return;
             }
             var diagram = this.universalChartImageImportCtrl1.Get();
+            diagram.Name = this.txtName.Text.Trim();
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
@@ -84,7 +84,6 @@
             this.DialogResult = DialogResult.OK;
             this.Close();
         }
-
 
         //瀵煎叆鍥剧墖
         private void btnEditPicture_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/21-compressor/02-main/ViewAssetsCompressorMainDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/21-compressor/02-main/ViewAssetsCompressorMainDlg.cs
index a51fb5e..54470ba 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/21-compressor/02-main/ViewAssetsCompressorMainDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/21-compressor/02-main/ViewAssetsCompressorMainDlg.cs
@@ -9,7 +9,6 @@
             this.layoutControl1.SetupLayoutControl();
         }
 
-
         private HStation.Vmo.AssetsCompressorMainVmo _vmo = null;
 
         /// <summary>
@@ -25,13 +24,11 @@
             this.txtName.EditValue = vmo.Name;
             this.txtMaterial.EditValue = vmo.Material;
             this.txtDiameter.EditValue = vmo.Diameter;
-            this.txtCoefficient.EditValue = vmo.MinorLoss;
+            this.txtMinorLoss.EditValue = vmo.MinorLoss;
             this.txtKeyWord.EditValue = HStation.Service.Assets.KeyWordHelper.ToString(vmo.KeyWords);
             this.txtFlags.EditValue = Yw.Untity.FlagsHelper.ToString(vmo.Flags);
             this.txtTagName.EditValue = vmo.TagName;
             this.txtDescription.EditValue = vmo.Description;
         }
-
-
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.Designer.cs
index 9ccd88a..1d26e91 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.Designer.cs
@@ -44,7 +44,6 @@
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
-            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             ((ISupportInitialize)layoutControl1).BeginInit();
@@ -62,7 +61,6 @@
             ((ISupportInitialize)layoutControlItem5).BeginInit();
             ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
-            ((ISupportInitialize)emptySpaceItem1).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
             ((ISupportInitialize)dxErrorProvider1).BeginInit();
             SuspendLayout();
@@ -106,7 +104,7 @@
             // 
             // txtLowerLimit
             // 
-            txtLowerLimit.Location = new Point(335, 60);
+            txtLowerLimit.Location = new Point(335, 36);
             txtLowerLimit.Name = "txtLowerLimit";
             txtLowerLimit.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtLowerLimit.Properties.DisplayFormat.FormatString = "{0}m";
@@ -117,19 +115,19 @@
             txtLowerLimit.StyleController = layoutControl1;
             txtLowerLimit.TabIndex = 6;
             // 
-            // txtMinorLoss
+            // txtCoefficient
             // 
             txtCoefficient.Location = new Point(83, 60);
             txtCoefficient.Name = "txtCoefficient";
             txtCoefficient.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtCoefficient.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtCoefficient.Size = new Size(177, 20);
+            txtCoefficient.Size = new Size(430, 20);
             txtCoefficient.StyleController = layoutControl1;
             txtCoefficient.TabIndex = 5;
             // 
             // txtCaliber
             // 
-            txtCaliber.Location = new Point(335, 36);
+            txtCaliber.Location = new Point(335, 12);
             txtCaliber.Name = "txtCaliber";
             txtCaliber.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
             txtCaliber.Properties.DisplayFormat.FormatString = "{0}mm";
@@ -140,7 +138,7 @@
             txtCaliber.StyleController = layoutControl1;
             txtCaliber.TabIndex = 4;
             // 
-            // txtDN
+            // txtMaterial
             // 
             txtMaterial.Location = new Point(83, 36);
             txtMaterial.Name = "txtMaterial";
@@ -164,7 +162,7 @@
             Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem3, layoutControlItem4, layoutControlItem5, layoutControlItem2, layoutControlItem6, emptySpaceItem1, layoutControlItem7 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem3, layoutControlItem2, layoutControlItem6, layoutControlItem7, layoutControlItem4, layoutControlItem5 });
             Root.Name = "Root";
             Root.Size = new Size(525, 316);
             Root.TextVisible = false;
@@ -182,7 +180,7 @@
             // layoutControlItem3
             // 
             layoutControlItem3.Control = txtCaliber;
-            layoutControlItem3.Location = new Point(252, 24);
+            layoutControlItem3.Location = new Point(252, 0);
             layoutControlItem3.Name = "layoutControlItem3";
             layoutControlItem3.Size = new Size(253, 24);
             layoutControlItem3.Text = "鍙e緞:";
@@ -194,7 +192,7 @@
             layoutControlItem4.Control = txtCoefficient;
             layoutControlItem4.Location = new Point(0, 48);
             layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(252, 24);
+            layoutControlItem4.Size = new Size(505, 24);
             layoutControlItem4.Text = "<color=red>*</color>娴侀噺绯绘暟:";
             layoutControlItem4.TextSize = new Size(59, 14);
             // 
@@ -202,7 +200,7 @@
             // 
             layoutControlItem5.AllowHtmlStringInCaption = true;
             layoutControlItem5.Control = txtLowerLimit;
-            layoutControlItem5.Location = new Point(252, 48);
+            layoutControlItem5.Location = new Point(252, 24);
             layoutControlItem5.Name = "layoutControlItem5";
             layoutControlItem5.Size = new Size(253, 24);
             layoutControlItem5.Text = "<color=red>*</color>鏈�灏忓帇鍔�:";
@@ -226,14 +224,6 @@
             layoutControlItem6.Size = new Size(505, 194);
             layoutControlItem6.Text = "璇存槑:";
             layoutControlItem6.TextSize = new Size(59, 14);
-            // 
-            // emptySpaceItem1
-            // 
-            emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new Point(252, 0);
-            emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(253, 24);
-            emptySpaceItem1.TextSize = new Size(0, 0);
             // 
             // layoutControlItem7
             // 
@@ -272,7 +262,6 @@
             ((ISupportInitialize)layoutControlItem5).EndInit();
             ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
-            ((ISupportInitialize)emptySpaceItem1).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
             ((ISupportInitialize)dxErrorProvider1).EndInit();
             ResumeLayout(false);
@@ -295,7 +284,6 @@
         private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
         private DevExpress.XtraEditors.MemoEdit txtDescription;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
         private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
     }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/AddAssetsCoolingFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.Designer.cs
index 11acd0a..16c26e0 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.Designer.cs
@@ -44,7 +44,6 @@
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
-            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             ((ISupportInitialize)layoutControl1).BeginInit();
@@ -62,7 +61,6 @@
             ((ISupportInitialize)layoutControlItem5).BeginInit();
             ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
-            ((ISupportInitialize)emptySpaceItem1).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
             ((ISupportInitialize)dxErrorProvider1).BeginInit();
             SuspendLayout();
@@ -106,7 +104,7 @@
             // 
             // txtLowerLimit
             // 
-            txtLowerLimit.Location = new Point(335, 60);
+            txtLowerLimit.Location = new Point(335, 36);
             txtLowerLimit.Name = "txtLowerLimit";
             txtLowerLimit.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtLowerLimit.Properties.DisplayFormat.FormatString = "{0}m";
@@ -117,19 +115,19 @@
             txtLowerLimit.StyleController = layoutControl1;
             txtLowerLimit.TabIndex = 6;
             // 
-            // txtMinorLoss
+            // txtCoefficient
             // 
             txtCoefficient.Location = new Point(83, 60);
             txtCoefficient.Name = "txtCoefficient";
             txtCoefficient.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtCoefficient.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtCoefficient.Size = new Size(177, 20);
+            txtCoefficient.Size = new Size(430, 20);
             txtCoefficient.StyleController = layoutControl1;
             txtCoefficient.TabIndex = 5;
             // 
             // txtCaliber
             // 
-            txtCaliber.Location = new Point(335, 36);
+            txtCaliber.Location = new Point(335, 12);
             txtCaliber.Name = "txtCaliber";
             txtCaliber.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
             txtCaliber.Properties.DisplayFormat.FormatString = "{0}mm";
@@ -140,7 +138,7 @@
             txtCaliber.StyleController = layoutControl1;
             txtCaliber.TabIndex = 4;
             // 
-            // txtDN
+            // txtMaterial
             // 
             txtMaterial.Location = new Point(83, 36);
             txtMaterial.Name = "txtMaterial";
@@ -164,7 +162,7 @@
             Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem3, layoutControlItem4, layoutControlItem5, layoutControlItem2, layoutControlItem6, emptySpaceItem1, layoutControlItem7 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem5, layoutControlItem2, layoutControlItem6, layoutControlItem7, layoutControlItem3, layoutControlItem4 });
             Root.Name = "Root";
             Root.Size = new Size(525, 316);
             Root.TextVisible = false;
@@ -182,7 +180,7 @@
             // layoutControlItem3
             // 
             layoutControlItem3.Control = txtCaliber;
-            layoutControlItem3.Location = new Point(252, 24);
+            layoutControlItem3.Location = new Point(252, 0);
             layoutControlItem3.Name = "layoutControlItem3";
             layoutControlItem3.Size = new Size(253, 24);
             layoutControlItem3.Text = "鍙e緞:";
@@ -194,7 +192,7 @@
             layoutControlItem4.Control = txtCoefficient;
             layoutControlItem4.Location = new Point(0, 48);
             layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(252, 24);
+            layoutControlItem4.Size = new Size(505, 24);
             layoutControlItem4.Text = "<color=red>*</color>娴侀噺绯绘暟:";
             layoutControlItem4.TextSize = new Size(59, 14);
             // 
@@ -202,7 +200,7 @@
             // 
             layoutControlItem5.AllowHtmlStringInCaption = true;
             layoutControlItem5.Control = txtLowerLimit;
-            layoutControlItem5.Location = new Point(252, 48);
+            layoutControlItem5.Location = new Point(252, 24);
             layoutControlItem5.Name = "layoutControlItem5";
             layoutControlItem5.Size = new Size(253, 24);
             layoutControlItem5.Text = "<color=red>*</color>鏈�灏忓帇鍔�:";
@@ -226,14 +224,6 @@
             layoutControlItem6.Size = new Size(505, 194);
             layoutControlItem6.Text = "璇存槑:";
             layoutControlItem6.TextSize = new Size(59, 14);
-            // 
-            // emptySpaceItem1
-            // 
-            emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new Point(252, 0);
-            emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(253, 24);
-            emptySpaceItem1.TextSize = new Size(0, 0);
             // 
             // layoutControlItem7
             // 
@@ -272,7 +262,6 @@
             ((ISupportInitialize)layoutControlItem5).EndInit();
             ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
-            ((ISupportInitialize)emptySpaceItem1).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
             ((ISupportInitialize)dxErrorProvider1).EndInit();
             ResumeLayout(false);
@@ -295,7 +284,6 @@
         private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
         private DevExpress.XtraEditors.MemoEdit txtDescription;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
         private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
     }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/EditAssetsCoolingFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.Designer.cs
index bfeb15e..5f9e8da 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.Designer.cs
@@ -42,7 +42,6 @@
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
-            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtDescription.Properties).BeginInit();
@@ -58,7 +57,6 @@
             ((ISupportInitialize)layoutControlItem5).BeginInit();
             ((ISupportInitialize)layoutControlItem2).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
-            ((ISupportInitialize)emptySpaceItem1).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
@@ -90,7 +88,7 @@
             // 
             // txtLowerLimit
             // 
-            txtLowerLimit.Location = new Point(328, 60);
+            txtLowerLimit.Location = new Point(328, 36);
             txtLowerLimit.Name = "txtLowerLimit";
             txtLowerLimit.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
             txtLowerLimit.Properties.DisplayFormat.FormatString = "{0}m";
@@ -103,7 +101,7 @@
             txtLowerLimit.StyleController = layoutControl1;
             txtLowerLimit.TabIndex = 6;
             // 
-            // txtMinorLoss
+            // txtCoefficient
             // 
             txtCoefficient.Location = new Point(76, 60);
             txtCoefficient.Name = "txtCoefficient";
@@ -111,13 +109,13 @@
             txtCoefficient.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
             txtCoefficient.Properties.ReadOnly = true;
             txtCoefficient.Properties.UseReadOnlyAppearance = false;
-            txtCoefficient.Size = new Size(184, 20);
+            txtCoefficient.Size = new Size(437, 20);
             txtCoefficient.StyleController = layoutControl1;
             txtCoefficient.TabIndex = 5;
             // 
             // txtCaliber
             // 
-            txtCaliber.Location = new Point(328, 36);
+            txtCaliber.Location = new Point(328, 12);
             txtCaliber.Name = "txtCaliber";
             txtCaliber.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
             txtCaliber.Properties.DisplayFormat.FormatString = "{0}mm";
@@ -130,7 +128,7 @@
             txtCaliber.StyleController = layoutControl1;
             txtCaliber.TabIndex = 4;
             // 
-            // txtDN
+            // txtMaterial
             // 
             txtMaterial.Location = new Point(76, 36);
             txtMaterial.Name = "txtMaterial";
@@ -158,7 +156,7 @@
             Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem3, layoutControlItem4, layoutControlItem5, layoutControlItem2, layoutControlItem6, emptySpaceItem1 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem3, layoutControlItem2, layoutControlItem6, layoutControlItem4, layoutControlItem5 });
             Root.Name = "Root";
             Root.Size = new Size(525, 316);
             Root.TextVisible = false;
@@ -175,7 +173,7 @@
             // layoutControlItem3
             // 
             layoutControlItem3.Control = txtCaliber;
-            layoutControlItem3.Location = new Point(252, 24);
+            layoutControlItem3.Location = new Point(252, 0);
             layoutControlItem3.Name = "layoutControlItem3";
             layoutControlItem3.Size = new Size(253, 24);
             layoutControlItem3.Text = "鍙e緞:";
@@ -186,14 +184,14 @@
             layoutControlItem4.Control = txtCoefficient;
             layoutControlItem4.Location = new Point(0, 48);
             layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(252, 24);
+            layoutControlItem4.Size = new Size(505, 24);
             layoutControlItem4.Text = "娴侀噺绯绘暟:";
             layoutControlItem4.TextSize = new Size(52, 14);
             // 
             // layoutControlItem5
             // 
             layoutControlItem5.Control = txtLowerLimit;
-            layoutControlItem5.Location = new Point(252, 48);
+            layoutControlItem5.Location = new Point(252, 24);
             layoutControlItem5.Name = "layoutControlItem5";
             layoutControlItem5.Size = new Size(253, 24);
             layoutControlItem5.Text = "鏈�灏忓帇鍔�:";
@@ -216,14 +214,6 @@
             layoutControlItem6.Size = new Size(505, 224);
             layoutControlItem6.Text = "璇存槑:";
             layoutControlItem6.TextSize = new Size(52, 14);
-            // 
-            // emptySpaceItem1
-            // 
-            emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new Point(252, 0);
-            emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(253, 24);
-            emptySpaceItem1.TextSize = new Size(0, 0);
             // 
             // ViewAssetsCoolingFactorDlg
             // 
@@ -249,7 +239,6 @@
             ((ISupportInitialize)layoutControlItem5).EndInit();
             ((ISupportInitialize)layoutControlItem2).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
-            ((ISupportInitialize)emptySpaceItem1).EndInit();
             ResumeLayout(false);
         }
 
@@ -269,6 +258,5 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
         private DevExpress.XtraEditors.MemoEdit txtDescription;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.resx
index af32865..8b2ff64 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/22-cooling/03-factor/ViewAssetsCoolingFactorDlg.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..59dca8c
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HStation.WinFrmUI.Assets.Core.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.settings b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.settings
new file mode 100644
index 0000000..049245f
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/Settings.settings
@@ -0,0 +1,6 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+</SettingsFile>
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/launchSettings.json b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/launchSettings.json
new file mode 100644
index 0000000..58d5874
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/Properties/launchSettings.json
@@ -0,0 +1,9 @@
+{
+  "profiles": {
+    "HStation.WinFrmUI.Assets.Core": {
+      "commandName": "Project",
+      "hotReloadEnabled": true,
+      "remoteDebugEnabled": false
+    }
+  }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs
index 46ce4b6..1c84539 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs
@@ -515,7 +515,7 @@
             if (e.Column == this.colEditPwd)
             {
                 var dlg = new UpdatePwdDlg();
-                dlg.SetBindingData(vm.ID);//涓嶅瑕佷慨鏀�,杩樻槸鍋氭垚鍒楄〃
+                dlg.SetBindingData(vm.ID);
                 dlg.ShowDialog();
             }
         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/UserLoginLogPage.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/UserLoginLogPage.cs
index fd39f9a..d733afd 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/UserLoginLogPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/UserLoginLogPage.cs
@@ -15,7 +15,7 @@
             this.gridView1.SetNormalView(30);
             this.PageTitle.Caption = "鐧诲綍鏃ュ織";
             this.PageTitle.SvgImageSize = new Size(24, 24);
-            this.dtStart.DateTime = DateTime.Now.Date.AddDays(-3);
+            this.dtStart.DateTime = DateTime.Now.Date.AddDays(-2);
             this.dtEnd.DateTime = DateTime.Now.Date;
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.Designer.cs
index e6f0b86..5637b73 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.Designer.cs
@@ -29,26 +29,33 @@
         private void InitializeComponent()
         {
             components = new System.ComponentModel.Container();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition1 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition2 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition3 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition2 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition3 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UserInfoPage));
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions2 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
-            txtMobileNumber = new DevExpress.XtraEditors.TextEdit();
-            txtEditAdminType = new DevExpress.XtraEditors.ImageComboBoxEdit();
             txtEditUserName = new DevExpress.XtraEditors.TextEdit();
-            txtAccount = new DevExpress.XtraEditors.TextEdit();
-            textEdit3 = new DevExpress.XtraEditors.TextEdit();
+            txtAccountName = new DevExpress.XtraEditors.TextEdit();
+            textAccountType = new DevExpress.XtraEditors.TextEdit();
             BtnResetPwd = new DevExpress.XtraEditors.SimpleButton();
             BtnEditPwd = new DevExpress.XtraEditors.SimpleButton();
-            BtnPhoneBinding = new DevExpress.XtraEditors.SimpleButton();
-            BtnWechatBinding = new DevExpress.XtraEditors.SimpleButton();
+            txtMobileNumber = new DevExpress.XtraEditors.TextEdit();
+            txtEditAdminType = new DevExpress.XtraEditors.TextEdit();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
-            emptySpaceItem2 = new DevExpress.XtraLayout.EmptySpaceItem();
             tabbedControlGroup1 = new DevExpress.XtraLayout.TabbedControlGroup();
-            layoutControlGroup4 = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
-            emptySpaceItem5 = new DevExpress.XtraLayout.EmptySpaceItem();
-            emptySpaceItem6 = new DevExpress.XtraLayout.EmptySpaceItem();
-            layoutControlItem11 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -57,27 +64,23 @@
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             emptySpaceItem3 = new DevExpress.XtraLayout.EmptySpaceItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
-            layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlGroup4 = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
             emptySpaceItem4 = new DevExpress.XtraLayout.EmptySpaceItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            buttonEditBinding = new DevExpress.XtraEditors.ButtonEdit();
+            layoutControlItem12 = new DevExpress.XtraLayout.LayoutControlItem();
             ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)txtEditUserName.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)txtAccountName.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)textAccountType.Properties).BeginInit();
             ((System.ComponentModel.ISupportInitialize)txtMobileNumber.Properties).BeginInit();
             ((System.ComponentModel.ISupportInitialize)txtEditAdminType.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)txtEditUserName.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)txtAccount.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)textEdit3.Properties).BeginInit();
             ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem2).BeginInit();
             ((System.ComponentModel.ISupportInitialize)tabbedControlGroup1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup4).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem5).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem6).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem11).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).BeginInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem2).BeginInit();
@@ -86,210 +89,146 @@
             ((System.ComponentModel.ISupportInitialize)layoutControlItem5).BeginInit();
             ((System.ComponentModel.ISupportInitialize)emptySpaceItem3).BeginInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem6).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup2).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlGroup4).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)dxErrorProvider1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)emptySpaceItem4).BeginInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem7).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)buttonEditBinding.Properties).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem12).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
             // 
-            layoutControl1.Controls.Add(txtMobileNumber);
-            layoutControl1.Controls.Add(txtEditAdminType);
+            layoutControl1.Controls.Add(buttonEditBinding);
             layoutControl1.Controls.Add(txtEditUserName);
-            layoutControl1.Controls.Add(txtAccount);
-            layoutControl1.Controls.Add(textEdit3);
+            layoutControl1.Controls.Add(txtAccountName);
+            layoutControl1.Controls.Add(textAccountType);
             layoutControl1.Controls.Add(BtnResetPwd);
             layoutControl1.Controls.Add(BtnEditPwd);
-            layoutControl1.Controls.Add(BtnPhoneBinding);
-            layoutControl1.Controls.Add(BtnWechatBinding);
+            layoutControl1.Controls.Add(txtMobileNumber);
+            layoutControl1.Controls.Add(txtEditAdminType);
             layoutControl1.Dock = DockStyle.Fill;
             layoutControl1.Location = new Point(0, 0);
             layoutControl1.Name = "layoutControl1";
             layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(692, 467);
+            layoutControl1.Size = new Size(946, 549);
             layoutControl1.TabIndex = 0;
             layoutControl1.Text = "layoutControl1";
             // 
-            // txtMobileNumber
-            // 
-            txtMobileNumber.Location = new Point(88, 145);
-            txtMobileNumber.Name = "txtMobileNumber";
-            txtMobileNumber.Properties.Appearance.Font = new Font("Tahoma", 12F, FontStyle.Regular, GraphicsUnit.Point);
-            txtMobileNumber.Properties.Appearance.Options.UseFont = true;
-            txtMobileNumber.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
-            txtMobileNumber.Properties.NullValuePrompt = "鎵嬫満鍙风爜";
-            txtMobileNumber.Size = new Size(411, 24);
-            txtMobileNumber.StyleController = layoutControl1;
-            txtMobileNumber.TabIndex = 5;
-            // 
-            // txtEditAdminType
-            // 
-            txtEditAdminType.Location = new Point(88, 169);
-            txtEditAdminType.Name = "txtEditAdminType";
-            txtEditAdminType.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
-            txtEditAdminType.Size = new Size(580, 20);
-            txtEditAdminType.StyleController = layoutControl1;
-            txtEditAdminType.TabIndex = 2;
-            // 
             // txtEditUserName
             // 
-            txtEditUserName.Location = new Point(88, 145);
+            txtEditUserName.Location = new Point(340, 154);
             txtEditUserName.Name = "txtEditUserName";
-            txtEditUserName.Size = new Size(580, 20);
+            txtEditUserName.Properties.ReadOnly = true;
+            txtEditUserName.Properties.UseReadOnlyAppearance = false;
+            txtEditUserName.Size = new Size(329, 20);
             txtEditUserName.StyleController = layoutControl1;
             txtEditUserName.TabIndex = 0;
             // 
-            // txtAccount
+            // txtAccountName
             // 
-            txtAccount.Location = new Point(88, 193);
-            txtAccount.Name = "txtAccount";
-            txtAccount.Size = new Size(580, 20);
-            txtAccount.StyleController = layoutControl1;
-            txtAccount.TabIndex = 3;
+            txtAccountName.Location = new Point(340, 202);
+            txtAccountName.Name = "txtAccountName";
+            txtAccountName.Properties.ReadOnly = true;
+            txtAccountName.Properties.UseReadOnlyAppearance = false;
+            txtAccountName.Size = new Size(329, 20);
+            txtAccountName.StyleController = layoutControl1;
+            txtAccountName.TabIndex = 3;
             // 
-            // textEdit3
+            // textAccountType
             // 
-            textEdit3.Location = new Point(88, 217);
-            textEdit3.Name = "textEdit3";
-            textEdit3.Size = new Size(580, 20);
-            textEdit3.StyleController = layoutControl1;
-            textEdit3.TabIndex = 4;
+            textAccountType.Location = new Point(340, 226);
+            textAccountType.Name = "textAccountType";
+            textAccountType.Properties.ReadOnly = true;
+            textAccountType.Properties.UseReadOnlyAppearance = false;
+            textAccountType.Size = new Size(329, 20);
+            textAccountType.StyleController = layoutControl1;
+            textAccountType.TabIndex = 4;
             // 
             // BtnResetPwd
             // 
             BtnResetPwd.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
             BtnResetPwd.Appearance.Options.UseBackColor = true;
-            BtnResetPwd.Location = new Point(583, 241);
+            BtnResetPwd.Location = new Point(614, 250);
             BtnResetPwd.Name = "BtnResetPwd";
-            BtnResetPwd.Size = new Size(85, 22);
+            BtnResetPwd.Size = new Size(55, 22);
             BtnResetPwd.StyleController = layoutControl1;
             BtnResetPwd.TabIndex = 5;
             BtnResetPwd.Text = "閲嶇疆瀵嗙爜";
+            BtnResetPwd.Click += BtnResetPwd_Click;
             // 
             // BtnEditPwd
             // 
             BtnEditPwd.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Question;
             BtnEditPwd.Appearance.Options.UseBackColor = true;
-            BtnEditPwd.Location = new Point(494, 241);
+            BtnEditPwd.Location = new Point(555, 250);
             BtnEditPwd.Name = "BtnEditPwd";
-            BtnEditPwd.Size = new Size(85, 22);
+            BtnEditPwd.Size = new Size(55, 22);
             BtnEditPwd.StyleController = layoutControl1;
             BtnEditPwd.TabIndex = 6;
             BtnEditPwd.Text = "淇敼瀵嗙爜";
             BtnEditPwd.Click += BtnEditPwd_Click;
             // 
-            // BtnPhoneBinding
+            // txtMobileNumber
             // 
-            BtnPhoneBinding.Location = new Point(24, 241);
-            BtnPhoneBinding.Name = "BtnPhoneBinding";
-            BtnPhoneBinding.Size = new Size(475, 22);
-            BtnPhoneBinding.StyleController = layoutControl1;
-            BtnPhoneBinding.TabIndex = 11;
-            BtnPhoneBinding.Text = "鎵嬫満缁戝畾";
-            BtnPhoneBinding.Click += BtnPhoneBinding_Click;
+            txtMobileNumber.Location = new Point(340, 154);
+            txtMobileNumber.Name = "txtMobileNumber";
+            txtMobileNumber.Size = new Size(173, 20);
+            txtMobileNumber.StyleController = layoutControl1;
+            txtMobileNumber.TabIndex = 13;
             // 
-            // BtnWechatBinding
+            // txtEditAdminType
             // 
-            BtnWechatBinding.Location = new Point(24, 215);
-            BtnWechatBinding.Name = "BtnWechatBinding";
-            BtnWechatBinding.Size = new Size(475, 22);
-            BtnWechatBinding.StyleController = layoutControl1;
-            BtnWechatBinding.TabIndex = 12;
-            BtnWechatBinding.Text = "寰俊缁戝畾";
-            BtnWechatBinding.Click += btnWechatBinding_Click;
+            txtEditAdminType.Location = new Point(340, 178);
+            txtEditAdminType.Name = "txtEditAdminType";
+            txtEditAdminType.Properties.ReadOnly = true;
+            txtEditAdminType.Properties.UseReadOnlyAppearance = false;
+            txtEditAdminType.Size = new Size(329, 20);
+            txtEditAdminType.StyleController = layoutControl1;
+            txtEditAdminType.TabIndex = 2;
             // 
             // Root
             // 
             Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
             Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { emptySpaceItem1, emptySpaceItem2, tabbedControlGroup1 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { tabbedControlGroup1, emptySpaceItem1 });
+            Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
             Root.Name = "Root";
-            Root.Size = new Size(692, 467);
+            columnDefinition1.SizeType = SizeType.Percent;
+            columnDefinition1.Width = 60D;
+            columnDefinition2.SizeType = SizeType.Percent;
+            columnDefinition2.Width = 100D;
+            columnDefinition3.SizeType = SizeType.Percent;
+            columnDefinition3.Width = 60D;
+            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1, columnDefinition2, columnDefinition3 });
+            rowDefinition1.Height = 40D;
+            rowDefinition1.SizeType = SizeType.Percent;
+            rowDefinition2.Height = 100D;
+            rowDefinition2.SizeType = SizeType.Percent;
+            rowDefinition3.Height = 60D;
+            rowDefinition3.SizeType = SizeType.Percent;
+            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1, rowDefinition2, rowDefinition3 });
+            Root.Size = new Size(946, 549);
             Root.TextVisible = false;
-            // 
-            // emptySpaceItem1
-            // 
-            emptySpaceItem1.AllowHotTrack = false;
-            emptySpaceItem1.Location = new Point(0, 0);
-            emptySpaceItem1.Name = "emptySpaceItem1";
-            emptySpaceItem1.Size = new Size(672, 97);
-            emptySpaceItem1.TextSize = new Size(0, 0);
-            // 
-            // emptySpaceItem2
-            // 
-            emptySpaceItem2.AllowHotTrack = false;
-            emptySpaceItem2.Location = new Point(0, 267);
-            emptySpaceItem2.Name = "emptySpaceItem2";
-            emptySpaceItem2.Size = new Size(672, 180);
-            emptySpaceItem2.TextSize = new Size(0, 0);
             // 
             // tabbedControlGroup1
             // 
-            tabbedControlGroup1.Location = new Point(0, 97);
+            tabbedControlGroup1.Location = new Point(252, 106);
             tabbedControlGroup1.Name = "tabbedControlGroup1";
+            tabbedControlGroup1.OptionsTableLayoutItem.ColumnIndex = 1;
+            tabbedControlGroup1.OptionsTableLayoutItem.RowIndex = 1;
             tabbedControlGroup1.SelectedTabPage = layoutControlGroup4;
-            tabbedControlGroup1.Size = new Size(672, 170);
-            tabbedControlGroup1.TabPages.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1, layoutControlGroup2, layoutControlGroup4 });
-            // 
-            // layoutControlGroup4
-            // 
-            layoutControlGroup4.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem9, emptySpaceItem5, emptySpaceItem6, layoutControlItem11, layoutControlItem8 });
-            layoutControlGroup4.Location = new Point(0, 0);
-            layoutControlGroup4.Name = "layoutControlGroup4";
-            layoutControlGroup4.Size = new Size(648, 122);
-            layoutControlGroup4.Text = "淇℃伅缁戝畾";
-            // 
-            // layoutControlItem9
-            // 
-            layoutControlItem9.Control = txtMobileNumber;
-            layoutControlItem9.Location = new Point(0, 0);
-            layoutControlItem9.Name = "layoutControlItem9";
-            layoutControlItem9.Size = new Size(479, 28);
-            layoutControlItem9.Text = "鎵嬫満鍙�:";
-            layoutControlItem9.TextSize = new Size(52, 14);
-            // 
-            // emptySpaceItem5
-            // 
-            emptySpaceItem5.AllowHotTrack = false;
-            emptySpaceItem5.Location = new Point(0, 28);
-            emptySpaceItem5.Name = "emptySpaceItem5";
-            emptySpaceItem5.Size = new Size(479, 42);
-            emptySpaceItem5.TextSize = new Size(0, 0);
-            // 
-            // emptySpaceItem6
-            // 
-            emptySpaceItem6.AllowHotTrack = false;
-            emptySpaceItem6.Location = new Point(479, 0);
-            emptySpaceItem6.Name = "emptySpaceItem6";
-            emptySpaceItem6.Size = new Size(169, 122);
-            emptySpaceItem6.TextSize = new Size(0, 0);
-            // 
-            // layoutControlItem11
-            // 
-            layoutControlItem11.Control = BtnPhoneBinding;
-            layoutControlItem11.Location = new Point(0, 96);
-            layoutControlItem11.Name = "layoutControlItem11";
-            layoutControlItem11.Size = new Size(479, 26);
-            layoutControlItem11.Text = "鎵嬫満缁戝畾";
-            layoutControlItem11.TextSize = new Size(0, 0);
-            layoutControlItem11.TextVisible = false;
-            // 
-            // layoutControlItem8
-            // 
-            layoutControlItem8.Control = BtnWechatBinding;
-            layoutControlItem8.Location = new Point(0, 70);
-            layoutControlItem8.Name = "layoutControlItem8";
-            layoutControlItem8.Size = new Size(479, 26);
-            layoutControlItem8.TextSize = new Size(0, 0);
-            layoutControlItem8.TextVisible = false;
+            tabbedControlGroup1.Size = new Size(421, 264);
+            tabbedControlGroup1.TabPages.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1, layoutControlGroup4 });
             // 
             // layoutControlGroup1
             // 
             layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem4, layoutControlItem5, emptySpaceItem3, layoutControlItem6 });
             layoutControlGroup1.Location = new Point(0, 0);
             layoutControlGroup1.Name = "layoutControlGroup1";
-            layoutControlGroup1.Size = new Size(648, 122);
+            layoutControlGroup1.Size = new Size(397, 216);
             layoutControlGroup1.Text = "鍩虹淇℃伅";
             // 
             // layoutControlItem1
@@ -298,7 +237,7 @@
             layoutControlItem1.Location = new Point(0, 0);
             layoutControlItem1.Name = "layoutControlItem1";
             layoutControlItem1.OptionsTableLayoutItem.RowIndex = 1;
-            layoutControlItem1.Size = new Size(648, 24);
+            layoutControlItem1.Size = new Size(397, 24);
             layoutControlItem1.Text = "鐢ㄦ埛鍚�:";
             layoutControlItem1.TextSize = new Size(52, 14);
             // 
@@ -307,34 +246,34 @@
             layoutControlItem2.Control = txtEditAdminType;
             layoutControlItem2.Location = new Point(0, 24);
             layoutControlItem2.Name = "layoutControlItem2";
-            layoutControlItem2.Size = new Size(648, 24);
+            layoutControlItem2.Size = new Size(397, 24);
             layoutControlItem2.Text = "绠$悊绫诲瀷:";
             layoutControlItem2.TextSize = new Size(52, 14);
             // 
             // layoutControlItem3
             // 
-            layoutControlItem3.Control = txtAccount;
+            layoutControlItem3.Control = txtAccountName;
             layoutControlItem3.Location = new Point(0, 48);
             layoutControlItem3.Name = "layoutControlItem3";
-            layoutControlItem3.Size = new Size(648, 24);
+            layoutControlItem3.Size = new Size(397, 24);
             layoutControlItem3.Text = "璐︽埛鍚�:";
             layoutControlItem3.TextSize = new Size(52, 14);
             // 
             // layoutControlItem4
             // 
-            layoutControlItem4.Control = textEdit3;
+            layoutControlItem4.Control = textAccountType;
             layoutControlItem4.Location = new Point(0, 72);
             layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(648, 24);
+            layoutControlItem4.Size = new Size(397, 24);
             layoutControlItem4.Text = "璐︽埛绫诲瀷:";
             layoutControlItem4.TextSize = new Size(52, 14);
             // 
             // layoutControlItem5
             // 
             layoutControlItem5.Control = BtnResetPwd;
-            layoutControlItem5.Location = new Point(559, 96);
+            layoutControlItem5.Location = new Point(338, 96);
             layoutControlItem5.Name = "layoutControlItem5";
-            layoutControlItem5.Size = new Size(89, 26);
+            layoutControlItem5.Size = new Size(59, 120);
             layoutControlItem5.TextSize = new Size(0, 0);
             layoutControlItem5.TextVisible = false;
             // 
@@ -343,24 +282,42 @@
             emptySpaceItem3.AllowHotTrack = false;
             emptySpaceItem3.Location = new Point(0, 96);
             emptySpaceItem3.Name = "emptySpaceItem3";
-            emptySpaceItem3.Size = new Size(470, 26);
+            emptySpaceItem3.Size = new Size(279, 120);
             emptySpaceItem3.TextSize = new Size(0, 0);
             // 
             // layoutControlItem6
             // 
             layoutControlItem6.Control = BtnEditPwd;
-            layoutControlItem6.Location = new Point(470, 96);
+            layoutControlItem6.Location = new Point(279, 96);
             layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Size = new Size(89, 26);
+            layoutControlItem6.Size = new Size(59, 120);
             layoutControlItem6.TextSize = new Size(0, 0);
             layoutControlItem6.TextVisible = false;
             // 
-            // layoutControlGroup2
+            // layoutControlGroup4
             // 
-            layoutControlGroup2.Location = new Point(0, 0);
-            layoutControlGroup2.Name = "layoutControlGroup2";
-            layoutControlGroup2.Size = new Size(648, 122);
-            layoutControlGroup2.Text = "淇敼瀵嗙爜";
+            layoutControlGroup4.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem9, layoutControlItem12 });
+            layoutControlGroup4.Location = new Point(0, 0);
+            layoutControlGroup4.Name = "layoutControlGroup4";
+            layoutControlGroup4.Size = new Size(397, 216);
+            layoutControlGroup4.Text = "淇℃伅缁戝畾";
+            // 
+            // layoutControlItem9
+            // 
+            layoutControlItem9.Control = txtMobileNumber;
+            layoutControlItem9.Location = new Point(0, 0);
+            layoutControlItem9.Name = "layoutControlItem9";
+            layoutControlItem9.Size = new Size(241, 216);
+            layoutControlItem9.Text = "鎵嬫満鍙�:";
+            layoutControlItem9.TextSize = new Size(52, 14);
+            // 
+            // emptySpaceItem1
+            // 
+            emptySpaceItem1.AllowHotTrack = false;
+            emptySpaceItem1.Location = new Point(0, 0);
+            emptySpaceItem1.Name = "emptySpaceItem1";
+            emptySpaceItem1.Size = new Size(252, 106);
+            emptySpaceItem1.TextSize = new Size(0, 0);
             // 
             // dxErrorProvider1
             // 
@@ -386,6 +343,39 @@
             layoutControlItem7.TextSize = new Size(0, 0);
             layoutControlItem7.TextVisible = false;
             // 
+            // buttonEditBinding
+            // 
+            buttonEditBinding.Location = new Point(517, 154);
+            buttonEditBinding.Margin = new Padding(2);
+            buttonEditBinding.Name = "buttonEditBinding";
+            buttonEditBinding.Properties.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.False;
+            buttonEditBinding.Properties.AllowHtmlDraw = DevExpress.Utils.DefaultBoolean.False;
+            buttonEditBinding.Properties.BeepOnError = true;
+            editorButtonImageOptions1.EnableTransparency = false;
+            editorButtonImageOptions1.Location = DevExpress.XtraEditors.ImageLocation.MiddleLeft;
+            editorButtonImageOptions1.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions1.SvgImage");
+            editorButtonImageOptions1.SvgImageSize = new Size(14, 14);
+            editorButtonImageOptions2.EnableTransparency = false;
+            editorButtonImageOptions2.Location = DevExpress.XtraEditors.ImageLocation.MiddleLeft;
+            editorButtonImageOptions2.SvgImageSize = new Size(14, 14);
+            buttonEditBinding.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "鎵嬫満缁戝畾", -1, true, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "鎵嬫満鍙风粦瀹�", "Phone", null, DevExpress.Utils.ToolTipAnchor.Default), new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "寰俊缁戝畾", -1, true, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "寰俊缁戝畾", "Wechat", null, DevExpress.Utils.ToolTipAnchor.Default) });
+            buttonEditBinding.Properties.ContextImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.False;
+            buttonEditBinding.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
+            buttonEditBinding.Properties.UseMaskAsDisplayFormat = true;
+            buttonEditBinding.Size = new Size(152, 23);
+            buttonEditBinding.StyleController = layoutControl1;
+            buttonEditBinding.TabIndex = 7;
+            buttonEditBinding.ButtonClick += buttonEditBinding_ButtonClick;
+             // 
+            // layoutControlItem12
+            // 
+            layoutControlItem12.Control = buttonEditBinding;
+            layoutControlItem12.Location = new Point(241, 0);
+            layoutControlItem12.Name = "layoutControlItem12";
+            layoutControlItem12.Size = new Size(156, 216);
+            layoutControlItem12.TextSize = new Size(0, 0);
+            layoutControlItem12.TextVisible = false;
+            // 
             // UserInfoPage
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -394,24 +384,16 @@
             AutoScaleMode = AutoScaleMode.Font;
             Controls.Add(layoutControl1);
             Name = "UserInfoPage";
-            Size = new Size(692, 467);
+            Size = new Size(946, 549);
             ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)txtEditUserName.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)txtAccountName.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)textAccountType.Properties).EndInit();
             ((System.ComponentModel.ISupportInitialize)txtMobileNumber.Properties).EndInit();
             ((System.ComponentModel.ISupportInitialize)txtEditAdminType.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)txtEditUserName.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)txtAccount.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)textEdit3.Properties).EndInit();
             ((System.ComponentModel.ISupportInitialize)Root).EndInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem2).EndInit();
             ((System.ComponentModel.ISupportInitialize)tabbedControlGroup1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup4).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).EndInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem5).EndInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem6).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem11).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).EndInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).EndInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem2).EndInit();
@@ -420,10 +402,14 @@
             ((System.ComponentModel.ISupportInitialize)layoutControlItem5).EndInit();
             ((System.ComponentModel.ISupportInitialize)emptySpaceItem3).EndInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem6).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup2).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlGroup4).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).EndInit();
+            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).EndInit();
             ((System.ComponentModel.ISupportInitialize)dxErrorProvider1).EndInit();
             ((System.ComponentModel.ISupportInitialize)emptySpaceItem4).EndInit();
             ((System.ComponentModel.ISupportInitialize)layoutControlItem7).EndInit();
+            ((System.ComponentModel.ISupportInitialize)buttonEditBinding.Properties).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem12).EndInit();
             ResumeLayout(false);
         }
 
@@ -432,34 +418,28 @@
         private DevExpress.XtraLayout.LayoutControl layoutControl1;
         private DevExpress.XtraLayout.LayoutControlGroup Root;
         private DevExpress.XtraEditors.TextEdit txtEditUserName;
-        private DevExpress.XtraEditors.ImageComboBoxEdit txtEditAdminType;
-        private DevExpress.XtraEditors.TextEdit txtAccount;
-        private DevExpress.XtraEditors.TextEdit textEdit3;
+        private DevExpress.XtraEditors.TextEdit txtAccountName;
+        private DevExpress.XtraEditors.TextEdit textAccountType;
+        private DevExpress.XtraEditors.SimpleButton BtnResetPwd;
+        private DevExpress.XtraEditors.SimpleButton BtnEditPwd;
+        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem4;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraLayout.TabbedControlGroup tabbedControlGroup1;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup4;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem2;
-        private DevExpress.XtraLayout.TabbedControlGroup tabbedControlGroup1;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
-        private DevExpress.XtraEditors.SimpleButton BtnResetPwd;
-        private DevExpress.XtraEditors.SimpleButton BtnEditPwd;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
         private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem3;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup4;
-        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem5;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem4;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
         private DevExpress.XtraEditors.TextEdit txtMobileNumber;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
-        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem6;
-        private DevExpress.XtraEditors.SimpleButton BtnPhoneBinding;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem11;
-        private DevExpress.XtraEditors.SimpleButton BtnWechatBinding;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
+        private DevExpress.XtraEditors.TextEdit txtEditAdminType;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraEditors.ButtonEdit buttonEditBinding;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem12;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.cs
index 65af4d9..2feaff8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.cs
@@ -25,19 +25,32 @@
             InitializeComponent();
             this.PageTitle.Caption = "涓汉涓績";
             this.PageTitle.SvgImageSize = new Size(24, 24);
+            this.Load += UserInfoPage_Load;
         }
 
         private const string _smsTemplate = "hzkw_sms_template";//鎵嬫満鍙风櫥褰曟ā鏉�
-        private const string _vxTemplate = "hzkw_vx_template";//寰俊鐧诲綍妯℃澘
+        private const string _vxTemplate = "hzkw_wx_template";//寰俊鐧诲綍妯℃澘
         private const string _software = "HStation_XHS_DESKTOP";//杞欢缂栫爜
 
         //淇敼瀵嗙爜
         private void BtnEditPwd_Click(object sender, EventArgs e)
         {
+            var dlg = new UpdatePwdDlg();
+            dlg.SetBindingData(GlobalParas._GlobalParas.LoginID);
+            dlg.ShowDialog();
+        }
+
+        //鍒濆鍖�
+        private void UserInfoPage_Load(object? sender, EventArgs e)
+        {
+            this.txtEditUserName.Text = GlobalParas._GlobalParas.LoginName;
+            this.txtEditAdminType.Text = GlobalParas._GlobalParas.AdminType;
+            this.txtAccountName.Text = GlobalParas._GlobalParas.AccountName;
+            this.textAccountType.Text = GlobalParas._GlobalParas.LoginType;
         }
 
         //鎵嬫満缁戝畾
-        private async void BtnPhoneBinding_Click(object sender, EventArgs e)
+        private async void PhoneBinding()
         {
             if (!IsValidMobileNumber(this.txtMobileNumber.Text.Trim()))
             {
@@ -86,14 +99,12 @@
         }
 
         //寰俊缁戝畾
-        private void btnWechatBinding_Click(object sender, EventArgs e)
+        private void WechatBinding()
         {
             var dlg = new WechatBindingDlg();
             dlg.SetBindingData();
             dlg.CodeReloadData += async (code) =>
             {
-                // Yw.Dto.InternalException 鎶ラ敊绫�
-
                 var loginType = await BLLFactory<Yw.BLL.UserLoginType>.Instance.GetByIdentifier(LoginType.Wechat);
                 if (loginType != null)
                 {
@@ -132,5 +143,33 @@
             };
             dlg.ShowDialog();
         }
+
+        //閲嶇疆瀵嗙爜
+        private async void BtnResetPwd_Click(object sender, EventArgs e)
+        {
+            if (XtraMessageBox.Show($"纭閲嶇疆瀵嗙爜鍚�?", "鎻愮ず", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) != DialogResult.OK)
+                return;
+            if (!await BLLFactory<Yw.BLL.UserLoginAccount>.Instance.ResetSystemLoginPwd(GlobalParas._GlobalParas.LoginID))
+            {
+                MessageBoxHelper.ShowError("閲嶇疆澶辫触锛�");
+                return;
+            }
+            MessageBoxHelper.ShowSuccess("閲嶇疆鎴愬姛锛�");
+        }
+
+        private void buttonEditBinding_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
+        {
+            var tag_obj = e.Button.Tag;
+            switch (tag_obj)
+            {
+                case "Phone":
+                    PhoneBinding();
+                    break;
+
+                case "Wechat":
+                    WechatBinding();
+                    break;
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.resx b/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.resx
index 43b467c..2b54964 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/06-user-info/UserInfoPage.resx
@@ -117,6 +117,32 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="editorButtonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAADAEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJQaG9uZSI+DQogICAg
+        PHBhdGggZD0iTTI3LjcsMjMuNmwtNS4zLTUuM2MtMC40LTAuNC0xLTAuNC0xLjQsMGwtMi44LDIuOGMt
+        My4yLTEuNS01LjgtNC4xLTcuMy03LjNsMi44LTIuOGMwLjQtMC40LDAuNC0xLDAtMS40ICAgTDguNCw0
+        LjNjLTAuNC0wLjQtMS0wLjQtMS41LDBMNC4zLDYuOUM0LjEsNy4yLDQsNy40LDQsNy43QzQsMTguOSwx
+        My4xLDI4LDI0LjMsMjhjMC4zLDAsMC41LTAuMSwwLjctMC4zbDIuNi0yLjYgICBDMjguMSwyNC42LDI4
+        LjEsMjQsMjcuNywyMy42eiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
   <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.Designer.cs
index 922e91d..8896c69 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.Designer.cs
@@ -54,6 +54,7 @@
             sidePanel1 = new DevExpress.XtraEditors.SidePanel();
             behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(components);
             dragDropEvents1 = new DevExpress.Utils.DragDrop.DragDropEvents(components);
+            btnRefresh = new DevExpress.XtraBars.BarButtonItem();
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
             dockPanel1.SuspendLayout();
@@ -71,9 +72,9 @@
             ribbonControl1.DrawGroupsBorderMode = DevExpress.Utils.DefaultBoolean.True;
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, barCheckSorter });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, barCheckSorter, btnRefresh });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 19;
+            ribbonControl1.MaxItemId = 20;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
@@ -132,6 +133,7 @@
             // ribbonPageGroup2
             // 
             ribbonPageGroup2.ItemLinks.Add(barCheckSorter);
+            ribbonPageGroup2.ItemLinks.Add(btnRefresh);
             ribbonPageGroup2.Name = "ribbonPageGroup2";
             ribbonPageGroup2.Text = "鏇村";
             // 
@@ -266,6 +268,14 @@
             // 
             dragDropEvents1.DragDrop += dragDropEvents1_DragDrop;
             // 
+            // btnRefresh
+            // 
+            btnRefresh.Caption = "鍒锋柊";
+            btnRefresh.Id = 19;
+            btnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barButtonItem2.ImageOptions.SvgImage");
+            btnRefresh.Name = "btnRefresh";
+            btnRefresh.HyperlinkClick += btnRefresh_HyperlinkClick;
+            // 
             // SysTypeManageMainPanel
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -316,5 +326,6 @@
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
         private DevExpress.Utils.Behaviors.BehaviorManager behaviorManager1;
         private DevExpress.Utils.DragDrop.DragDropEvents dragDropEvents1;
+        private DevExpress.XtraBars.BarButtonItem btnRefresh;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.cs
index 88bcff3..8eb9a20 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.cs
@@ -17,7 +17,7 @@
 
         private List<SysTypeViewModel> _allBindingList = new List<SysTypeViewModel>();
 
-        private int _LastRowIndex;
+        private long _mouduleId;
 
         private Yw.BLL.SysType _bll = null;
 
@@ -29,6 +29,7 @@
         //鑱氱劍鍒囨崲
         private async void ModuleTreeListCtrl1_FocusedChangedEvent(long moduleid)
         {
+            _mouduleId = moduleid;
             var alllist = await _bll.GetByModuleID(moduleid);
             _allBindingList.Clear();
             foreach (var item in alllist)
@@ -38,7 +39,7 @@
             this.typeViewModelBindingSource.ResetBindings(false);
         }
 
-        private async void SetBindingData()
+        private void SetBindingData()
         {
             this.moduleTreeListCtrl1.SetBindingData();
             _bll = new Yw.BLL.SysType();
@@ -226,5 +227,10 @@
                 }
             });
         }
+
+        private void btnRefresh_HyperlinkClick(object sender, DevExpress.Utils.HyperlinkClickEventArgs e)
+        {
+            ModuleTreeListCtrl1_FocusedChangedEvent(_mouduleId);
+        }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.resx b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.resx
index 9e92849..9dffc2c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysTypeManage/SysTypeManageMainPanel.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
@@ -210,6 +210,29 @@
         IDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
+  <data name="barButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</value>
+  </data>
   <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.Designer.cs
index c526929..acd1144 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.Designer.cs
@@ -52,6 +52,7 @@
             barButtonItem1 = new DevExpress.XtraBars.BarButtonItem();
             svgImage32 = new DevExpress.Utils.SvgImageCollection(components);
             sidePanel1 = new DevExpress.XtraEditors.SidePanel();
+            btnRefresh = new DevExpress.XtraBars.BarButtonItem();
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
             dockPanel1.SuspendLayout();
@@ -66,9 +67,9 @@
             // 
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, BtnPropEdit, barBtnUpdateParent, barCheckSorter });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, BtnPropEdit, barBtnUpdateParent, barCheckSorter, btnRefresh });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 23;
+            ribbonControl1.MaxItemId = 24;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
@@ -145,6 +146,7 @@
             ribbonPageGroup2.ItemLinks.Add(BtnPropEdit);
             ribbonPageGroup2.ItemLinks.Add(barBtnUpdateParent);
             ribbonPageGroup2.ItemLinks.Add(barCheckSorter);
+            ribbonPageGroup2.ItemLinks.Add(btnRefresh);
             ribbonPageGroup2.Name = "ribbonPageGroup2";
             ribbonPageGroup2.Text = "鏇村";
             // 
@@ -263,6 +265,14 @@
             sidePanel1.TabIndex = 9;
             sidePanel1.Text = "sidePanel1";
             // 
+            // btnRefresh
+            // 
+            btnRefresh.Caption = "鍒锋柊";
+            btnRefresh.Id = 23;
+            btnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barButtonItem2.ImageOptions.SvgImage");
+            btnRefresh.Name = "btnRefresh";
+            btnRefresh.ItemClick += btnRefresh_ItemClick;
+            // 
             // SysCatalogManageMainPanel
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -309,5 +319,6 @@
         private DevExpress.XtraEditors.SidePanel sidePanel1;
         private DevExpress.XtraBars.BarButtonItem barBtnUpdateParent;
         private DevExpress.XtraBars.BarCheckItem barCheckSorter;
+        private DevExpress.XtraBars.BarButtonItem btnRefresh;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.cs
index ae9e8e8..eba30df 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.cs
@@ -22,6 +22,8 @@
 
         private Yw.BLL.SysCatalog _bll;
 
+        private long _typeId;
+
         private List<SysCatalogViewModel> _IndexList;
 
         public override void InitialDataSource()
@@ -33,6 +35,7 @@
         //鑱氱劍鍒囨崲
         private async void TypeTreeListCtrl2_FocusedChangedEvent(long typeID)
         {
+            _typeId = typeID;
             _allBindingList = new List<SysCatalogViewModel>();
             var alllist = await _bll.GetByTypeID(typeID);
             _allBindingList.Clear();
@@ -127,7 +130,7 @@
         }
 
         //鐩稿簲灞炴�х紪杈�
-        private async void BtnPropEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        private void BtnPropEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var currentVm = this.treeList1.GetCurrentViewModel(_allBindingList);
             if (currentVm != null)
@@ -315,5 +318,10 @@
             }
             return i;
         }
+
+        private void btnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            TypeTreeListCtrl2_FocusedChangedEvent(_typeId);
+        }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.resx b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.resx
index 0a62f49..01695ed 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysCatalogManage/SysCatalogManageMainPanel.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
@@ -253,6 +253,29 @@
         Lz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
+  <data name="barButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</value>
+  </data>
   <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.Designer.cs
index c6c410b..32d4779 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.Designer.cs
@@ -52,6 +52,7 @@
             sidePanel1 = new DevExpress.XtraEditors.SidePanel();
             behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(components);
             dragDropEvents1 = new DevExpress.Utils.DragDrop.DragDropEvents(components);
+            btnRefresh = new DevExpress.XtraBars.BarButtonItem();
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
             dockPanel1.SuspendLayout();
@@ -69,9 +70,9 @@
             ribbonControl1.DrawGroupsBorderMode = DevExpress.Utils.DefaultBoolean.True;
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, barCheckSorter });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, barCheckSorter, btnRefresh });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 19;
+            ribbonControl1.MaxItemId = 20;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
@@ -130,6 +131,7 @@
             // ribbonPageGroup2
             // 
             ribbonPageGroup2.ItemLinks.Add(barCheckSorter);
+            ribbonPageGroup2.ItemLinks.Add(btnRefresh);
             ribbonPageGroup2.Name = "ribbonPageGroup2";
             ribbonPageGroup2.Text = "鏇村";
             // 
@@ -238,6 +240,14 @@
             // 
             dragDropEvents1.DragDrop += dragDropEvents1_DragDrop;
             // 
+            // btnRefresh
+            // 
+            btnRefresh.Caption = "鍒锋柊";
+            btnRefresh.Id = 19;
+            btnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barButtonItem2.ImageOptions.SvgImage");
+            btnRefresh.Name = "btnRefresh";
+            btnRefresh.ItemClick += btnRefresh_ItemClick;
+            // 
             // SysFlagManageMainPanel
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -286,5 +296,6 @@
         private DevExpress.XtraGrid.Columns.GridColumn colName;
         private DevExpress.XtraGrid.Columns.GridColumn colDescription;
         private DevExpress.Utils.DragDrop.DragDropEvents dragDropEvents1;
+        private DevExpress.XtraBars.BarButtonItem btnRefresh;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs
index 7c86897..6248dd9 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.cs
@@ -17,7 +17,7 @@
 
         private List<SysFlagViewModel> _allBindingList = new List<SysFlagViewModel>();
 
-        private int _LastRowIndex;
+        private long _typeId;
 
         private Yw.BLL.SysFlag _bll = null;
 
@@ -29,6 +29,7 @@
         //鑱氱劍鍒囨崲
         private async void ModuleTreeListCtrl1_FocusedChangedEvent(long typeId)
         {
+            _typeId = typeId;
             var alllist = await _bll.GetByTypeID(typeId);
             _allBindingList.Clear();
             foreach (var item in alllist)
@@ -225,5 +226,10 @@
                 }
             });
         }
+
+        private void btnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ModuleTreeListCtrl1_FocusedChangedEvent(_typeId);
+        }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.resx b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.resx
index 889d942..7a96c2c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/03-SysFlagManage/SysFlagManageMainPanel.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
@@ -210,6 +210,29 @@
         IDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
+  <data name="barButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</value>
+  </data>
   <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.Designer.cs
index 09dcff3..74bfe8f 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.Designer.cs
@@ -64,6 +64,7 @@
             sidePanel1 = new DevExpress.XtraEditors.SidePanel();
             behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(components);
             dragDropEvents1 = new DevExpress.Utils.DragDrop.DragDropEvents(components);
+            btnRefresh = new DevExpress.XtraBars.BarButtonItem();
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
             dockPanel1.SuspendLayout();
@@ -81,9 +82,9 @@
             // 
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, barCheckSorter });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, barBtnEditPumpCurve, BtnAdd, BtnDelete, barCheckSorter, btnRefresh });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 20;
+            ribbonControl1.MaxItemId = 21;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
@@ -142,6 +143,7 @@
             // ribbonPageGroup2
             // 
             ribbonPageGroup2.ItemLinks.Add(barCheckSorter);
+            ribbonPageGroup2.ItemLinks.Add(btnRefresh);
             ribbonPageGroup2.Name = "ribbonPageGroup2";
             ribbonPageGroup2.Text = "鏇村";
             // 
@@ -326,6 +328,14 @@
             // 
             dragDropEvents1.DragDrop += dragDropEvents1_DragDrop;
             // 
+            // btnRefresh
+            // 
+            btnRefresh.Caption = "鍒锋柊";
+            btnRefresh.Id = 20;
+            btnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barButtonItem2.ImageOptions.SvgImage");
+            btnRefresh.Name = "btnRefresh";
+            btnRefresh.ItemClick += btnRefresh_ItemClick;
+            // 
             // SysPropManageMainPanel
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -382,5 +392,6 @@
         private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
         private DevExpress.Utils.Behaviors.BehaviorManager behaviorManager1;
         private DevExpress.Utils.DragDrop.DragDropEvents dragDropEvents1;
+        private DevExpress.XtraBars.BarButtonItem btnRefresh;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.cs
index a51aeb0..63d739c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.cs
@@ -1,4 +1,5 @@
 锘縰sing DevExpress.Utils.DragDrop;
+using DevExpress.XtraDiagram.Bars;
 
 namespace HStation.WinFrmUI.Basic
 {
@@ -19,6 +20,8 @@
 
         private Yw.BLL.SysProp _bll = null;
 
+        private long _groupID;
+
         public override void InitialDataSource()
         {
             SetBindingData();
@@ -28,6 +31,7 @@
         //鑱氱劍鍒囨崲
         private async void ModuleTreeListCtrl1_FocusedChangedEvent(long groupID)
         {
+            _groupID = groupID;
             var alllist = await _bll.GetByGroupID(groupID);
             _allBindingList.Clear();
             foreach (var item in alllist)
@@ -222,5 +226,10 @@
                 }
             });
         }
+
+        private void btnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            ModuleTreeListCtrl1_FocusedChangedEvent(_groupID);
+        }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.resx b/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.resx
index 9525cad..5be6177 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/04-SysPropManage/SysPropManageMainPanel.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
@@ -210,6 +210,29 @@
         IDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
+  <data name="barButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</value>
+  </data>
   <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
diff --git "a/WinFrmUI/HStation.WinFrmUI.Core/00-UICore/01-\347\224\250\346\210\267\347\231\273\351\231\206\347\261\273/GlobalParas.cs" "b/WinFrmUI/HStation.WinFrmUI.Core/00-UICore/01-\347\224\250\346\210\267\347\231\273\351\231\206\347\261\273/GlobalParas.cs"
index 4238978..3c9591a 100644
--- "a/WinFrmUI/HStation.WinFrmUI.Core/00-UICore/01-\347\224\250\346\210\267\347\231\273\351\231\206\347\261\273/GlobalParas.cs"
+++ "b/WinFrmUI/HStation.WinFrmUI.Core/00-UICore/01-\347\224\250\346\210\267\347\231\273\351\231\206\347\261\273/GlobalParas.cs"
@@ -1,4 +1,5 @@
-锘縰sing Yw.Dto;
+锘縰sing Yw.Auth;
+using Yw.Dto;
 
 namespace HStation
 {
@@ -23,6 +24,23 @@
             _GlobalParas.ProductID = rhs.Software.Project.Product.ID;
             _GlobalParas.UserID = rhs.User.ID;
             _GlobalParas.SoftwareID = rhs.Software.ID;
+            switch (rhs.User.AdminType)
+            {
+                case Yw.Model.eAdminType.Admin:
+                    _GlobalParas.AdminType = "绠$悊鐢ㄦ埛";
+                    break;
+
+                case Yw.Model.eAdminType.Normal:
+                    _GlobalParas.AdminType = "甯歌鐢ㄦ埛";
+                    break;
+
+                case Yw.Model.eAdminType.System:
+                    _GlobalParas.AdminType = "绯荤粺鐢ㄦ埛";
+                    break;
+            }
+            _GlobalParas.AccountName = rhs.User.LoginAccount.Identifier;
+            _GlobalParas.LoginType = rhs.User.LoginAccount.LoginType.Name;
+            _GlobalParas.LoginID = rhs.User.LoginAccount.ID;
         }
 
         public long SoftwareID { get; set; }
@@ -53,6 +71,26 @@
         public long CreateUserID { get; set; }
 
         /// <summary>
+        /// 璐︽埛鍚�
+        /// </summary>
+        public string AccountName { get; set; }
+
+        /// <summary>
+        /// 绠$悊绫诲瀷
+        /// </summary>
+        public string AdminType { get; set; }
+
+        /// <summary>
+        /// 璐︽埛绫诲瀷
+        /// </summary>
+        public string LoginType { get; set; }
+
+        /// <summary>
+        /// 璐︽埛绫诲瀷
+        /// </summary>
+        public long LoginID { get; set; }
+
+        /// <summary>
         /// 鍏崇郴绫诲瀷
         /// </summary>
         public string RelatedType { get; set; }
diff --git a/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.Designer.cs
index f527405..d3b9124 100644
--- a/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.Designer.cs
@@ -58,6 +58,8 @@
             dockPanel1 = new DevExpress.XtraBars.Docking.DockPanel();
             dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
             dictGroupTreeListCtrl1 = new DictGroupTreeListCtrl();
+            ribbonPageGroup2 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
+            btnRefresh = new DevExpress.XtraBars.BarButtonItem();
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)svgImageCollection1).BeginInit();
             sidePanel1.SuspendLayout();
@@ -75,9 +77,9 @@
             ribbonControl1.DrawGroupsBorderMode = DevExpress.Utils.DefaultBoolean.True;
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, BtnAdd, BtnEdit, BtnDelete, BarBtnEidtPumpPart });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, BtnAdd, BtnEdit, BtnDelete, BarBtnEidtPumpPart, btnRefresh });
             ribbonControl1.Location = new Point(0, 0);
-            ribbonControl1.MaxItemId = 22;
+            ribbonControl1.MaxItemId = 23;
             ribbonControl1.Name = "ribbonControl1";
             ribbonControl1.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
             ribbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.False;
@@ -119,7 +121,7 @@
             // 
             // ribbonPage1
             // 
-            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { ribbonPageGroup1 });
+            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { ribbonPageGroup1, ribbonPageGroup2 });
             ribbonPage1.Name = "ribbonPage1";
             ribbonPage1.Text = "ribbonPage1";
             // 
@@ -260,6 +262,20 @@
             dictGroupTreeListCtrl1.Size = new Size(193, 491);
             dictGroupTreeListCtrl1.TabIndex = 0;
             // 
+            // ribbonPageGroup2
+            // 
+            ribbonPageGroup2.ItemLinks.Add(btnRefresh);
+            ribbonPageGroup2.Name = "ribbonPageGroup2";
+            ribbonPageGroup2.Text = "鏇村";
+            // 
+            // btnRefresh
+            // 
+            btnRefresh.Caption = "鍒锋柊";
+            btnRefresh.Id = 22;
+            btnRefresh.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("barButtonItem1.ImageOptions.SvgImage");
+            btnRefresh.Name = "btnRefresh";
+            btnRefresh.ItemClick += btnRefresh_ItemClick;
+            // 
             // DictManageMainPanel
             // 
             Appearance.BackColor = SystemColors.Control;
@@ -308,5 +324,7 @@
         private DevExpress.XtraGrid.Columns.GridColumn colDescription;
         private DevExpress.XtraGrid.Columns.GridColumn colDictValue;
         private DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit repositoryItemButtonEdit1;
+        private DevExpress.XtraBars.BarButtonItem btnRefresh;
+        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup2;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.cs b/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.cs
index d2a3416..9625609 100644
--- a/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.cs
@@ -1,4 +1,5 @@
-锘縰sing HStation.WinFrmUI.Dict.Core;
+锘縰sing DevExpress.XtraDiagram.Bars;
+using HStation.WinFrmUI.Dict.Core;
 using Yw;
 
 namespace HStation.WinFrmUI.Dict
@@ -13,15 +14,17 @@
             this.gridView1.RegistCustomDrawRowIndicator();
             this.PageTitle.HeaderSvgImage = this.svgImageCollection1[0];
             this.PageTitle.SvgImageSize = new Size(24, 24);
-            this.dictGroupTreeListCtrl1.RloadEvent += ValveTypeTreeListCtrl1_RloadEvent;
+            this.dictGroupTreeListCtrl1.RloadEvent += DictTreeListCtrl1_RloadEvent;
         }
 
         private List<DictTypeViewModel> _allBindingList = null;
 
         private Yw.BLL.SysDictType _bll = null;
 
+        private long _groupId;
+
         //鍒濆鍖栨暟鎹�
-        public override async void InitialDataSource()
+        public override void InitialDataSource()
         {
             _bll = new Yw.BLL.SysDictType();
             _allBindingList = new List<DictTypeViewModel>();
@@ -30,8 +33,9 @@
             this.dictGroupTreeListCtrl1.SetBindingData();
         }
 
-        private async void ValveTypeTreeListCtrl1_RloadEvent(long groupId)
+        private async void DictTreeListCtrl1_RloadEvent(long groupId)
         {
+            _groupId = groupId;
             var alllist = await _bll.GetByGroupID(groupId);
             _allBindingList.Clear();
             if (alllist != null)
@@ -70,7 +74,7 @@
             dlg.ShowDialog();
         }
 
-        //缂栬緫闃�闂�
+        //缂栬緫
         private async void BtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
@@ -98,7 +102,7 @@
             dlg.ShowDialog();
         }
 
-        //鍒犻櫎闃�闂�
+        //鍒犻櫎
         private async void BtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             var currentVm = this.gridView1.GetCurrentViewModel(_allBindingList);
@@ -138,5 +142,10 @@
                 dlg.ShowDialog();
             }
         }
+
+        private void btnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            DictTreeListCtrl1_RloadEvent(_groupId);
+        }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.resx b/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.resx
index caac213..6fe42ea 100644
--- a/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Dict.Core/DictManageMainPanel.resx
@@ -1,7 +1,7 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <root>
   <!--
-    Microsoft ResX Schema 
+    Microsoft ResX Schema
 
     Version 2.0
 
@@ -48,7 +48,7 @@
     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
@@ -189,6 +189,29 @@
         L2c+DQo8L3N2Zz4L
 </value>
   </data>
+  <data name="barButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQ2hhbmdlVmlldyI+DQogICAgPHBh
+        dGggZD0iTTI0LjUsNy41QzIyLjMsNS4zLDE5LjMsNCwxNiw0QzEwLjEsNCw1LjEsOC4zLDQuMiwxNGg0
+        LjFjMC45LTMuNCw0LTYsNy43LTZjMi4yLDAsNC4yLDAuOSw1LjYsMi40TDE4LDE0ICAgaDUuN2g0LjFI
+        MjhWNEwyNC41LDcuNXogTTE2LDI0Yy0yLjIsMC00LjItMC45LTUuNi0yLjRMMTQsMThIOC4yaC00SDR2
+        MTBsMy41LTMuNUM5LjcsMjYuNywxMi43LDI4LDE2LDI4YzUuOSwwLDEwLjgtNC4zLDExLjgtMTAgICBo
+        LTQuMUMyMi44LDIxLjQsMTkuNywyNCwxNiwyNHoiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2
+        Zz4L
+</value>
+  </data>
   <metadata name="svgImageCollection1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs
index ad8e718..0160710 100644
--- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/01-pump/01-view/PumpChartViewCtrl.cs
@@ -7,6 +7,9 @@
 
 namespace HStation.WinFrmUI
 {
+    /// <summary>
+    /// 寰呮暣鐞� 鎶借薄鍒板簳灞�
+    /// </summary>
     public partial class PumpChartViewCtrl : DevExpress.XtraEditors.XtraUserControl
     {
         public PumpChartViewCtrl()
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/00-core/AssetsMatchingHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/00-core/AssetsMatchingHelper.cs
index 7caf1c6..f64a335 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/00-core/AssetsMatchingHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/00-core/AssetsMatchingHelper.cs
@@ -1706,7 +1706,7 @@
             {
                 return false;
             }
-
+            allElbowList = allElbowList.Where(x => x.Angle == 90).ToList();
             //鏉冮噸瀛楀吀
             var dict = new Dictionary<AssetsElbowMainVmo, double>();
             foreach (var item in allElbowList)
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartExcelHelper.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartExcelHelper.cs
index 88e5759..1e316de 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartExcelHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartExcelHelper.cs
@@ -5,6 +5,7 @@
     /// </summary>
     public class PhartExcelHelper
     {
+
         #region Export
 
         public static void ExportUniversalTemplate(string file_path, Yw.Ahart.eCurveType curve_type)
@@ -76,82 +77,88 @@
 
         public static string ParseUniversalExcel(string file_path, out List<Yw.Geometry.Point2d> list)
         {
-            list = new List<Geometry.Point2d>(); ;
-            if (!File.Exists(file_path))
-                return "鏂囦欢涓嶅瓨鍦�";
-
-            //鍒濆鍖栨枃浠�
-            NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
-            using (FileStream file = new FileStream(file_path, FileMode.Open, FileAccess.Read))
+            list = new List<Geometry.Point2d>();
+            try
             {
-                theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
-            }
+                if (!File.Exists(file_path))
+                    return "鏂囦欢涓嶅瓨鍦�";
 
-            //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
-            NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
-            if (sheet1 == null)
-            {
-                sheet1 = theBook.GetSheetAt(0);
+                //鍒濆鍖栨枃浠�
+                NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
+                using (FileStream file = new FileStream(file_path, FileMode.Open, FileAccess.ReadWrite))
+                {
+                    theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
+                }
+
+                //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
+                NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
                 if (sheet1 == null)
-                    return ("鏃燬heet鏁版嵁");
+                {
+                    sheet1 = theBook.GetSheetAt(0);
+                    if (sheet1 == null)
+                        return ("鏃燬heet鏁版嵁");
+                }
+
+                //鏍囬琛�
+                int title_line_index = 0;
+                //x 鍒�
+                int col_index_x = 1;
+                //y 鍒�
+                int col_index_y = 2;
+
+                var row_title = sheet1.GetRow(title_line_index);
+                if (row_title == null)
+                {
+                    return ("绗竴琛岀涓�鍒椾笉鑳界┖");
+                }
+
+                //寮�濮嬭鍙栫殑琛�
+                int start_line = title_line_index + 1;
+                var cell_0 = row_title.GetCell(0);
+                if (cell_0 == null)
+                {
+                    return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
+                }
+                else if (cell_0.StringCellValue.Contains("搴忓彿"))
+                {
+                    col_index_x = 1;
+                    col_index_y = 2;
+                }
+                else if (cell_0.StringCellValue.Contains("娴侀噺"))
+                {
+                    col_index_x = 0;
+                    col_index_y = 1;
+                }
+
+                NPOI.SS.UserModel.IRow row_temp;
+                NPOI.SS.UserModel.ICell cell;
+
+                int line = 0;
+                for (line = start_line; line < 1000; line++)
+                {
+                    row_temp = sheet1.GetRow(line);
+                    if (row_temp == null)
+                        break;
+
+                    cell = row_temp.GetCell(col_index_x);
+                    if (cell == null)
+                        break;
+                    if (!ParseCellValue(cell, out double x))
+                        break;
+
+                    cell = row_temp.GetCell(col_index_y);
+                    if (cell == null)
+                        break;
+                    if (!ParseCellValue(cell, out double y))
+                        break;
+
+                    list.Add(new(x, y));
+                }
             }
-
-            //鏍囬琛�
-            int title_line_index = 0;
-            //x 鍒�
-            int col_index_x = 1;
-            //y 鍒�
-            int col_index_y = 2;
-
-            var row_title = sheet1.GetRow(title_line_index);
-            if (row_title == null)
+            catch (Exception ex)
             {
-                return ("绗竴琛岀涓�鍒椾笉鑳界┖");
+                return "鏂囦欢寮傚父!";
             }
-
-            //寮�濮嬭鍙栫殑琛�
-            int start_line = title_line_index + 1;
-            var cell_0 = row_title.GetCell(0);
-            if (cell_0 == null)
-            {
-                return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
-            }
-            else if (cell_0.StringCellValue.Contains("搴忓彿"))
-            {
-                col_index_x = 1;
-                col_index_y = 2;
-            }
-            else if (cell_0.StringCellValue.Contains("娴侀噺"))
-            {
-                col_index_x = 0;
-                col_index_y = 1;
-            }
-
-            NPOI.SS.UserModel.IRow row_temp;
-            NPOI.SS.UserModel.ICell cell;
-
-            int line = 0;
-            for (line = start_line; line < 1000; line++)
-            {
-                row_temp = sheet1.GetRow(line);
-                if (row_temp == null)
-                    break;
-
-                cell = row_temp.GetCell(col_index_x);
-                if (cell == null)
-                    break;
-                if (!ParseCellValue(cell, out double x))
-                    break;
-
-                cell = row_temp.GetCell(col_index_y);
-                if (cell == null)
-                    break;
-                if (!ParseCellValue(cell, out double y))
-                    break;
-
-                list.Add(new(x, y));
-            }
-
             return "";
         }
 
@@ -160,160 +167,40 @@
             qh = new List<Geometry.Point2d>();
             qe = new List<Geometry.Point2d>();
             qp = new List<Geometry.Point2d>();
-
-            if (!File.Exists(fileName))
-                return "鏂囦欢涓嶅瓨鍦�";
-            int line = 0;
-
-            //鍒濆鍖栨枃浠�
-            NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
-            using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
+            try
             {
-                theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
-            }
+                if (!File.Exists(fileName))
+                    return "鏂囦欢涓嶅瓨鍦�";
+                int line = 0;
 
-            //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
-            NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
-            if (sheet1 == null)
-            {
-                sheet1 = theBook.GetSheetAt(0);
+                //鍒濆鍖栨枃浠�
+                NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
+                using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
+                {
+                    theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
+                }
+
+                //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
+                NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
                 if (sheet1 == null)
-                    return ("鏃燬heet鏁版嵁");
-            }
-
-            //鏍囬琛�
-            int title_line_index = 0;
-            //娴侀噺鍒�
-            int col_index_q = 1;
-            //鎵▼鍒�
-            int col_index_h = 2;
-            //鏁堢巼鍒�
-            int col_index_e = 3;
-            //鍔熺巼鍒�
-            int col_index_p = 4;
-
-            var row_title = sheet1.GetRow(title_line_index);
-            if (row_title == null)
-            {
-                return ("绗竴琛岀涓�鍒椾笉鑳界┖");
-            }
-
-            //寮�濮嬭鍙栫殑琛�
-            int start_line = title_line_index + 1;
-            var cell_0 = row_title.GetCell(0);
-            if (cell_0 == null)
-            {
-                return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
-            }
-            else if (cell_0.StringCellValue.Contains("搴忓彿"))
-            {
-                col_index_q = 1;
-                col_index_h = 2;
-                col_index_e = 3;
-                col_index_p = 4;
-            }
-            else if (cell_0.StringCellValue.Contains("娴侀噺"))
-            {
-                col_index_q = 0;
-                col_index_h = 1;
-                col_index_e = 2;
-                col_index_p = 3;
-            }
-
-
-            NPOI.SS.UserModel.IRow row_temp = null;
-            NPOI.SS.UserModel.ICell cell;
-
-            var list = new List<(double Q, double H, double P, double E)>();
-            for (line = start_line; line < 1000; line++)
-            {
-
-                row_temp = sheet1.GetRow(line);
-                if (row_temp == null)
-                    break;
-
-                cell = row_temp.GetCell(col_index_q);
-                if (cell == null)
-                    break;
-                if (!ParseCellValue(cell, out double flow))
-                    break;
-                if (flow < 0)
-                    break;
-
-                cell = row_temp.GetCell(col_index_h);
-                if (cell == null)
-                    break;
-                if (!ParseCellValue(cell, out double head))
-                    break;
-                if (head < 0)
-                    break;
-
-                cell = row_temp.GetCell(col_index_e);
-                if (cell == null)
-                    break;
-                if (!ParseCellValue(cell, out double eff))
                 {
-                    eff = -1;
+                    sheet1 = theBook.GetSheetAt(0);
+                    if (sheet1 == null)
+                        return ("鏃燬heet鏁版嵁");
                 }
 
-
-                cell = row_temp.GetCell(col_index_p);
-                if (cell == null)
-                    break;
-                if (!ParseCellValue(cell, out double power))
-                {
-                    power = -1;
-                }
-
-                if (eff > 0)
-                {
-                    power = Yw.Pump.CalculationHelper.CalcuP(flow, head, eff);
-                }
-                else
-                {
-                    eff = Yw.Pump.CalculationHelper.CalcuE(flow, head, power);
-                }
-
-                if (eff > 99)
-                {
-                    throw new Exception("鏁堢巼澶т簬100%");
-                }
-
-                qh.Add(new Geometry.Point2d(flow, head));
-                qe.Add(new Geometry.Point2d(flow, eff));
-                qp.Add(new Geometry.Point2d(flow, power));
-            }
-
-            return "";
-        }
-
-        public static string ParseValveExcel(string fileName, out List<(Yw.Ahart.eCurveType CurveType, List<Yw.Geometry.Point2d> DefPointList, int Opening)> list)
-        {
-            list = new List<(Ahart.eCurveType CurveType, List<Geometry.Point2d> DefPointList, int Opening)>();
-            if (!File.Exists(fileName))
-                return "鏂囦欢涓嶅瓨鍦�";
-            int line = 0;
-
-            //鍒濆鍖栨枃浠�
-            NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
-            using (FileStream file = new(fileName, FileMode.Open, FileAccess.Read))
-                theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
-
-
-            //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
-            NPOI.SS.UserModel.ISheet sheet_ql = theBook.GetSheet("娴侀噺鎹熷け");
-            if (sheet_ql != null)
-            {
                 //鏍囬琛�
                 int title_line_index = 0;
-                //寮�搴﹀垪
-                int col_index_opening = 0;
                 //娴侀噺鍒�
-                int col_index_flow = 1;
-                //姘村ご鎹熷け鍒�
-                int col_index_head_loss = 2;
+                int col_index_q = 1;
+                //鎵▼鍒�
+                int col_index_h = 2;
+                //鏁堢巼鍒�
+                int col_index_e = 3;
+                //鍔熺巼鍒�
+                int col_index_p = 4;
 
-                var row_title = sheet_ql.GetRow(title_line_index);
+                var row_title = sheet1.GetRow(title_line_index);
                 if (row_title == null)
                 {
                     return ("绗竴琛岀涓�鍒椾笉鑳界┖");
@@ -326,28 +213,34 @@
                 {
                     return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
                 }
-            
+                else if (cell_0.StringCellValue.Contains("搴忓彿"))
+                {
+                    col_index_q = 1;
+                    col_index_h = 2;
+                    col_index_e = 3;
+                    col_index_p = 4;
+                }
+                else if (cell_0.StringCellValue.Contains("娴侀噺"))
+                {
+                    col_index_q = 0;
+                    col_index_h = 1;
+                    col_index_e = 2;
+                    col_index_p = 3;
+                }
 
 
                 NPOI.SS.UserModel.IRow row_temp = null;
                 NPOI.SS.UserModel.ICell cell;
 
-                var cell_value_list = new List<(double Opening, double Flow, double HeadLoss)>();
+                var list = new List<(double Q, double H, double P, double E)>();
                 for (line = start_line; line < 1000; line++)
                 {
-                    row_temp = sheet_ql.GetRow(line);
+
+                    row_temp = sheet1.GetRow(line);
                     if (row_temp == null)
                         break;
 
-                    cell = row_temp.GetCell(col_index_opening);
-                    if (cell == null)
-                        break;
-                    if (!ParseCellValue(cell, out double opening))
-                        break;
-                    if (opening < 0 || opening > 100)
-                        break;
-
-                    cell = row_temp.GetCell(col_index_flow);
+                    cell = row_temp.GetCell(col_index_q);
                     if (cell == null)
                         break;
                     if (!ParseCellValue(cell, out double flow))
@@ -355,91 +248,222 @@
                     if (flow < 0)
                         break;
 
-                    cell = row_temp.GetCell(col_index_head_loss);
+                    cell = row_temp.GetCell(col_index_h);
                     if (cell == null)
                         break;
-                    if (!ParseCellValue(cell, out double head_loss))
+                    if (!ParseCellValue(cell, out double head))
                         break;
-                    if (head_loss < 0)
+                    if (head < 0)
                         break;
 
-                    cell_value_list.Add((opening, flow, head_loss));
+                    cell = row_temp.GetCell(col_index_e);
+                    if (cell == null)
+                        break;
+                    if (!ParseCellValue(cell, out double eff))
+                    {
+                        eff = -1;
+                    }
+
+
+                    cell = row_temp.GetCell(col_index_p);
+                    if (cell == null)
+                        break;
+                    if (!ParseCellValue(cell, out double power))
+                    {
+                        power = -1;
+                    }
+
+                    if (eff > 0)
+                    {
+                        power = Yw.Pump.CalculationHelper.CalcuP(flow, head, eff);
+                    }
+                    else
+                    {
+                        eff = Yw.Pump.CalculationHelper.CalcuE(flow, head, power);
+                    }
+
+                    if (eff > 99)
+                    {
+                        throw new Exception("鏁堢巼澶т簬100%");
+                    }
+
+                    qh.Add(new Geometry.Point2d(flow, head));
+                    qe.Add(new Geometry.Point2d(flow, eff));
+                    qp.Add(new Geometry.Point2d(flow, power));
                 }
 
-                var opening_group = cell_value_list.GroupBy(x => x.Opening);
-                foreach (var item in opening_group)
-                {
-                    var pt_list = item.Select(x => new Yw.Geometry.Point2d(x.Flow, x.HeadLoss));
-                    list.Add((Yw.Ahart.eCurveType.QL, pt_list.ToList(), (int)item.Key));
-                }
+                return "";
+
             }
-
-
-            //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
-            NPOI.SS.UserModel.ISheet sheet_ol = theBook.GetSheet("寮�搴︽崯澶�");
-            if (sheet_ol != null)
+            catch (Exception ex)
             {
-                //鏍囬琛�
-                int title_line_index = 0;
-                //寮�搴﹀垪
-                int col_index_opening = 0;
-                //鎹熷け绯绘暟鍒�
-                int col_index_k = 1;
-
-                var row_title = sheet_ol.GetRow(title_line_index);
-                if (row_title == null)
-                {
-                    return ("绗竴琛岀涓�鍒椾笉鑳界┖");
-                }
-
-                //寮�濮嬭鍙栫殑琛�
-                int start_line = title_line_index + 1;
-                var cell_0 = row_title.GetCell(0);
-                if (cell_0 == null)
-                {
-                    return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
-                }
-              
-
-
-                NPOI.SS.UserModel.IRow row_temp = null;
-                NPOI.SS.UserModel.ICell cell;
-
-                var pt_list = new List<Yw.Geometry.Point2d>();
-                for (line = start_line; line < 1000; line++)
-                {
-                    row_temp = sheet_ol.GetRow(line);
-                    if (row_temp == null)
-                        break;
-
-                    cell = row_temp.GetCell(col_index_opening);
-                    if (cell == null)
-                        break;
-                    if (!ParseCellValue(cell, out double opening))
-                        break;
-                    if (opening < 0 || opening > 100)
-                        break;
-
-                    cell = row_temp.GetCell(col_index_k);
-                    if (cell == null)
-                        break;
-                    if (!ParseCellValue(cell, out double k))
-                        break;
-                    if (k < 0)
-                        break;
-
-                    pt_list.Add(new Geometry.Point2d(opening, k));
-                }
-
-                list.Add((Yw.Ahart.eCurveType.OL, pt_list.ToList(), 100));
+                return "鏂囦欢寮傚父!";
             }
+        }
 
-            if (list == null || !list.Any())
+        public static string ParseValveExcel(string fileName, out List<(Yw.Ahart.eCurveType CurveType, List<Yw.Geometry.Point2d> DefPointList, int Opening)> list)
+        {
+            list = new List<(Ahart.eCurveType CurveType, List<Geometry.Point2d> DefPointList, int Opening)>();
+            try
             {
-                return ("琛ㄦ牸涓嶇鍚堟牸寮�");
-            }
+                if (!File.Exists(fileName))
+                    return "鏂囦欢涓嶅瓨鍦�";
+                int line = 0;
 
-            return "";
+                //鍒濆鍖栨枃浠�
+                NPOI.HSSF.UserModel.HSSFWorkbook theBook = null;
+                using (FileStream file = new(fileName, FileMode.Open, FileAccess.ReadWrite))
+                    theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
+
+
+                //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
+                NPOI.SS.UserModel.ISheet sheet_ql = theBook.GetSheet("娴侀噺鎹熷け");
+                if (sheet_ql != null)
+                {
+                    //鏍囬琛�
+                    int title_line_index = 0;
+                    //寮�搴﹀垪
+                    int col_index_opening = 0;
+                    //娴侀噺鍒�
+                    int col_index_flow = 1;
+                    //姘村ご鎹熷け鍒�
+                    int col_index_head_loss = 2;
+
+                    var row_title = sheet_ql.GetRow(title_line_index);
+                    if (row_title == null)
+                    {
+                        return ("绗竴琛岀涓�鍒椾笉鑳界┖");
+                    }
+
+                    //寮�濮嬭鍙栫殑琛�
+                    int start_line = title_line_index + 1;
+                    var cell_0 = row_title.GetCell(0);
+                    if (cell_0 == null)
+                    {
+                        return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
+                    }
+
+
+
+                    NPOI.SS.UserModel.IRow row_temp = null;
+                    NPOI.SS.UserModel.ICell cell;
+
+                    var cell_value_list = new List<(double Opening, double Flow, double HeadLoss)>();
+                    for (line = start_line; line < 1000; line++)
+                    {
+                        row_temp = sheet_ql.GetRow(line);
+                        if (row_temp == null)
+                            break;
+
+                        cell = row_temp.GetCell(col_index_opening);
+                        if (cell == null)
+                            break;
+                        if (!ParseCellValue(cell, out double opening))
+                            break;
+                        if (opening < 0 || opening > 100)
+                            break;
+
+                        cell = row_temp.GetCell(col_index_flow);
+                        if (cell == null)
+                            break;
+                        if (!ParseCellValue(cell, out double flow))
+                            break;
+                        if (flow < 0)
+                            break;
+
+                        cell = row_temp.GetCell(col_index_head_loss);
+                        if (cell == null)
+                            break;
+                        if (!ParseCellValue(cell, out double head_loss))
+                            break;
+                        if (head_loss < 0)
+                            break;
+
+                        cell_value_list.Add((opening, flow, head_loss));
+                    }
+
+                    var opening_group = cell_value_list.GroupBy(x => x.Opening);
+                    foreach (var item in opening_group)
+                    {
+                        var pt_list = item.Select(x => new Yw.Geometry.Point2d(x.Flow, x.HeadLoss));
+                        list.Add((Yw.Ahart.eCurveType.QL, pt_list.ToList(), (int)item.Key));
+                    }
+                }
+
+
+                //妫�鏌ヨ〃鏍兼槸鍚︾鍚�
+                NPOI.SS.UserModel.ISheet sheet_ol = theBook.GetSheet("寮�搴︽崯澶�");
+                if (sheet_ol != null)
+                {
+                    //鏍囬琛�
+                    int title_line_index = 0;
+                    //寮�搴﹀垪
+                    int col_index_opening = 0;
+                    //鎹熷け绯绘暟鍒�
+                    int col_index_k = 1;
+
+                    var row_title = sheet_ol.GetRow(title_line_index);
+                    if (row_title == null)
+                    {
+                        return ("绗竴琛岀涓�鍒椾笉鑳界┖");
+                    }
+
+                    //寮�濮嬭鍙栫殑琛�
+                    int start_line = title_line_index + 1;
+                    var cell_0 = row_title.GetCell(0);
+                    if (cell_0 == null)
+                    {
+                        return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢");
+                    }
+
+
+
+                    NPOI.SS.UserModel.IRow row_temp = null;
+                    NPOI.SS.UserModel.ICell cell;
+
+                    var pt_list = new List<Yw.Geometry.Point2d>();
+                    for (line = start_line; line < 1000; line++)
+                    {
+                        row_temp = sheet_ol.GetRow(line);
+                        if (row_temp == null)
+                            break;
+
+                        cell = row_temp.GetCell(col_index_opening);
+                        if (cell == null)
+                            break;
+                        if (!ParseCellValue(cell, out double opening))
+                            break;
+                        if (opening < 0 || opening > 100)
+                            break;
+
+                        cell = row_temp.GetCell(col_index_k);
+                        if (cell == null)
+                            break;
+                        if (!ParseCellValue(cell, out double k))
+                            break;
+                        if (k < 0)
+                            break;
+
+                        pt_list.Add(new Geometry.Point2d(opening, k));
+                    }
+
+                    if (pt_list.Any())
+                        list.Add((Yw.Ahart.eCurveType.OL, pt_list.ToList(), 100));
+                }
+
+                if (list == null || !list.Any())
+                {
+                    return ("琛ㄦ牸涓嶇鍚堟牸寮�");
+                }
+
+                return "";
+
+
+            }
+            catch (Exception ex)
+            {
+                return "鏂囦欢寮傚父!";
+            }
         }
 
         private static bool ParseCellValue(NPOI.SS.UserModel.ICell cell, out double cell_value)
@@ -464,5 +488,6 @@
         }
 
         #endregion
+
     }
 }
diff --git "a/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartRegulateHelper - \345\244\215\345\210\266.cs" "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartRegulateHelper - \345\244\215\345\210\266.cs"
new file mode 100644
index 0000000..5c33be3
--- /dev/null
+++ "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/00-core/01-helper/PhartRegulateHelper - \345\244\215\345\210\266.cs"
@@ -0,0 +1,59 @@
+锘縩amespace Yw.WinFrmUI.Phart
+{
+    /// <summary>
+    /// 楠岃瘉杈呭姪绫�
+    /// </summary>
+    public   class PhartVerifyHelper
+    {
+        /// <summary>
+        /// 鎷熷悎鏁伴噺鏄惁鏈夋晥
+        /// </summary>
+        public static bool VerifyCount(Yw.Ahart.eFeatType feat_type, int pt_count)
+        {
+            switch (feat_type)
+            {
+                case Ahart.eFeatType.Cubic:
+                    {
+                        if (pt_count < 4)
+                        {
+                            TipFormHelper.ShowInfo("鐐规暟灏戜簬4涓偣");
+                            return false;
+                        }
+                    }
+                    break;
+                case Ahart.eFeatType.Through:
+                    {
+                        if (pt_count < 1)
+                        {
+                            TipFormHelper.ShowInfo("鐐规暟灏戜簬1涓偣");
+                            return false;
+                        }
+                    }
+                    break;
+                case Ahart.eFeatType.Quadratic:
+                    {
+                        if (pt_count < 3)
+                        {
+                            TipFormHelper.ShowInfo("鐐规暟灏戜簬3涓偣");
+                            return false;
+                        }
+                    }
+                    break;
+                case Ahart.eFeatType.Quartic:
+                    {
+                        if (pt_count < 5)
+                        {
+                            TipFormHelper.ShowInfo("鐐规暟灏戜簬5涓偣");
+                            return false;
+                        }
+                    }
+                    break;
+            }
+
+            return true;
+
+        }
+         
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs
index a304805..7679ba1 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/01-view/PumpViewChart.cs
@@ -14,7 +14,7 @@
         public PumpViewChart()
         {
             InitializeComponent();
-            InitialChart();
+            InitialChart(); 
         }
 
         #region Private Variable
@@ -186,7 +186,7 @@
 
         #endregion
 
-        #region Private Chart Event      
+        #region Private Chart Event
 
         ToolTipController _tool_tip = new();
         private void chartControl1_ObjectHotTracked(object sender, HotTrackEventArgs e)
@@ -264,6 +264,27 @@
                 double chartH = axis_value.NumericalValue;
                 SetAxisYValue(chartH);
             }
+            else if (_on_move_annotation)
+            {
+                var pane_anchor_pt = _on_move_annotation_obj.AnchorPoint as PaneAnchorPoint;
+                if (pane_anchor_pt != null)
+                {
+                    var diagram_coordinates = _diagram.PointToDiagram(e.Location);
+                    AxisValue axis_x_value = diagram_coordinates.GetAxisValue(_axis_x_flow);
+                    AxisValue axis_y_value = diagram_coordinates.GetAxisValue(pane_anchor_pt.AxisYCoordinate.Axis);
+
+                    if (axis_x_value == null || axis_y_value == null)
+                    {
+                        return;
+                    }
+                     
+                    var x = axis_x_value.NumericalValue;
+                    var y = axis_y_value.NumericalValue;
+
+                    pane_anchor_pt.AxisXCoordinate.AxisValue = x;
+                    pane_anchor_pt.AxisYCoordinate.AxisValue = y; 
+                }
+            }
             else
             {
                 var hitInfo = chartControl1.CalcHitInfo(e.Location);
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.cs
index c034980..4e5d213 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.cs
@@ -4,6 +4,7 @@
     {
         public PumpChartExcelEditCtrl()
         {
+
             InitializeComponent();
             this.gridView1.SetDefaultEditView();
             this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
@@ -25,6 +26,9 @@
             {
                 this.gridView1.FocusedRowHandle = index;
             };
+
+            this.Enabled = false;
+
         }
 
 
@@ -71,6 +75,8 @@
             this.barFeatType.EditValue = _feat_type_qh;
             this.bindingSource1.DataSource = _def_qh_pt_list;
             this.bindingSource1.ResetBindings(false);
+
+            this.Enabled = true;
         }
 
         private void PumpEditChart1_DefinePointChangedEvent1(Ahart.eCurveType curve_type, List<Geometry.Point2d> pt_list)
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.designer.cs
index 830dfd0..9ee27a5 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpChartExcelEditCtrl.designer.cs
@@ -71,7 +71,7 @@
             gridControl1.Location = new Point(1, 0);
             gridControl1.MainView = gridView1;
             gridControl1.Name = "gridControl1";
-            gridControl1.Size = new Size(249, 627);
+            gridControl1.Size = new Size(249, 626);
             gridControl1.TabIndex = 9;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
@@ -116,10 +116,10 @@
             // pumpEditChart1
             // 
             pumpEditChart1.Dock = DockStyle.Fill;
-            pumpEditChart1.Location = new Point(0, 33);
+            pumpEditChart1.Location = new Point(0, 34);
             pumpEditChart1.MouseModel = false;
             pumpEditChart1.Name = "pumpEditChart1";
-            pumpEditChart1.Size = new Size(750, 627);
+            pumpEditChart1.Size = new Size(750, 626);
             pumpEditChart1.TabIndex = 7;
             // 
             // barManager1
@@ -210,6 +210,7 @@
             barBtnCalc.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnCalc.Caption = "璁$畻";
             barBtnCalc.Id = 9;
+            barBtnCalc.ImageOptions.SvgImage = Core.Properties.Resources.business_calculator;
             barBtnCalc.Name = "barBtnCalc";
             barBtnCalc.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnCalc.ItemClick += barBtnCalc_ItemClick;
@@ -219,7 +220,9 @@
             barBtnAdd.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnAdd.Caption = "娣诲姞";
             barBtnAdd.Id = 6;
+            barBtnAdd.ImageOptions.SvgImage = Core.Properties.Resources.inserttablerowsbelow;
             barBtnAdd.Name = "barBtnAdd";
+            barBtnAdd.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnAdd.ItemClick += barAdd_ItemClick;
             // 
             // barBtnDelete
@@ -227,7 +230,9 @@
             barBtnDelete.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnDelete.Caption = "鍒犻櫎";
             barBtnDelete.Id = 8;
+            barBtnDelete.ImageOptions.SvgImage = Core.Properties.Resources.removefooter;
             barBtnDelete.Name = "barBtnDelete";
+            barBtnDelete.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnDelete.ItemClick += btnDelete_ItemClick;
             // 
             // barDockControlTop
@@ -236,7 +241,7 @@
             barDockControlTop.Dock = DockStyle.Top;
             barDockControlTop.Location = new Point(0, 0);
             barDockControlTop.Manager = barManager1;
-            barDockControlTop.Size = new Size(1000, 33);
+            barDockControlTop.Size = new Size(1000, 34);
             // 
             // barDockControlBottom
             // 
@@ -250,17 +255,17 @@
             // 
             barDockControlLeft.CausesValidation = false;
             barDockControlLeft.Dock = DockStyle.Left;
-            barDockControlLeft.Location = new Point(0, 33);
+            barDockControlLeft.Location = new Point(0, 34);
             barDockControlLeft.Manager = barManager1;
-            barDockControlLeft.Size = new Size(0, 627);
+            barDockControlLeft.Size = new Size(0, 626);
             // 
             // barDockControlRight
             // 
             barDockControlRight.CausesValidation = false;
             barDockControlRight.Dock = DockStyle.Right;
-            barDockControlRight.Location = new Point(1000, 33);
+            barDockControlRight.Location = new Point(1000, 34);
             barDockControlRight.Manager = barManager1;
-            barDockControlRight.Size = new Size(0, 627);
+            barDockControlRight.Size = new Size(0, 626);
             // 
             // repCmbEditModel
             // 
@@ -272,9 +277,9 @@
             // 
             sidePanel1.Controls.Add(gridControl1);
             sidePanel1.Dock = DockStyle.Right;
-            sidePanel1.Location = new Point(750, 33);
+            sidePanel1.Location = new Point(750, 34);
             sidePanel1.Name = "sidePanel1";
-            sidePanel1.Size = new Size(250, 627);
+            sidePanel1.Size = new Size(250, 626);
             sidePanel1.TabIndex = 14;
             sidePanel1.Text = "sidePanel1";
             // 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpEditChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpEditChart.cs
index fc6338e..e6b350e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpEditChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/01-pump/02-edit/PumpEditChart.cs
@@ -78,7 +78,7 @@
 
         #endregion
 
-        #region Initial
+        #region Private Initial
 
         /// <summary>
         /// 鍒濆鍖栧浘琛�
@@ -141,6 +141,131 @@
             _coordinate.CoordMinE = 0; _coordinate.CoordSpaceE = 100;
             _coordinate.CoordMinP = 10; _coordinate.CoordSpaceP = 100;
         }
+
+        #endregion
+
+        #region Private Chart Event
+
+        private int _pick_point_index = -1;
+        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
+        {
+            if (!_initial_data)
+                return;
+            var hitInfo = chartControl1.CalcHitInfo(e.Location);
+            _pick_point_index = -1;
+            if (e.Button == MouseButtons.Left)
+            {
+                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
+                {
+                    _pick_point_index = index;
+                    this.SelectedPointIndexChangedEvent?.Invoke(_pick_point_index);
+                }
+            }
+        }
+
+        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
+        {
+            if (!_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            AxisYBase axis_y = null;
+            if (_edit_curve_type == Yw.Ahart.eCurveType.QH)
+                axis_y = _axis_y_head;
+            else if (_edit_curve_type == Yw.Ahart.eCurveType.QE)
+                axis_y = _axis_y_eff;
+            else if (_edit_curve_type == Yw.Ahart.eCurveType.QP)
+                axis_y = _axis_y_power;
+
+            var diagram_coordinates = _diagram.PointToDiagram(e.Location);
+            var axis_value = diagram_coordinates.GetAxisValue(axis_y);
+            if (axis_value == null)
+                return;
+            _series_edit_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
+            _series_edit_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
+        }
+
+        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
+        {
+            if (!_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            var x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
+            var y = _series_edit_pt.Points[_pick_point_index].Values[0];
+            x = Math.Round(x, 2);
+            y = Math.Round(y, 2);
+            SetPointValue(_pick_point_index, x, y);
+            _pick_point_index = -1;
+        }
+        private void chartControl1_KeyUp(object sender, KeyEventArgs e)
+        {
+            if (!_initial_data)
+                return;
+            if (_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            double space_x = _coordinate.CoordSpaceQ / 50;
+            double space_y = 0;
+            if (_edit_curve_type == Yw.Ahart.eCurveType.QH)
+                space_y = _coordinate.CoordSpaceH / 50;
+            else if (_edit_curve_type == Yw.Ahart.eCurveType.QE)
+                space_y = _coordinate.CoordSpaceE / 50;
+            else if (_edit_curve_type == Yw.Ahart.eCurveType.QP)
+                space_y = _coordinate.CoordSpaceP / 50;
+
+            double x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
+            double y = _series_edit_pt.Points[_pick_point_index].Values[0];
+            if (e.KeyCode == Keys.Up)
+            {
+                y += space_y;
+            }
+            else if (e.KeyCode == Keys.Down)
+            {
+                y -= space_y;
+            }
+            else if (e.KeyCode == Keys.Left)
+            {
+                x -= space_x;
+            }
+            else if (e.KeyCode == Keys.Right)
+            {
+                x += space_x;
+            }
+            x = Math.Round(x, 2);
+            y = Math.Round(y, 2);
+            _series_edit_pt.Points[_pick_point_index].NumericalArgument = x;
+            _series_edit_pt.Points[_pick_point_index].Values[0] = y;
+            SetPointValue(_pick_point_index, x, y);
+        }
+
+        /// <summary>
+        /// 鏇存柊鏁版嵁
+        /// </summary>
+        private void SetPointValue(int index, double x, double y)
+        {
+            if (IsInvalidData())
+                return;
+            List<Yw.Geometry.Point2d> def_pt_list = null;
+            if (_edit_curve_type == Yw.Ahart.eCurveType.QH)
+                def_pt_list = _def_qh_pt_list;
+            else if (_edit_curve_type == Yw.Ahart.eCurveType.QE)
+                def_pt_list = _def_qe_pt_list;
+            else if (_edit_curve_type == Yw.Ahart.eCurveType.QP)
+                def_pt_list = _def_qp_pt_list;
+
+            def_pt_list[index].X = x;
+            def_pt_list[index].Y = y;
+            this.DefinePointChangedEvent?.Invoke(_edit_curve_type, def_pt_list);
+        }
+
 
         #endregion
 
@@ -560,130 +685,6 @@
 
         #endregion
 
-        #region  Chart Event
-
-        private int _pick_point_index = -1;
-        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            var hitInfo = chartControl1.CalcHitInfo(e.Location);
-            _pick_point_index = -1;
-            if (e.Button == MouseButtons.Left)
-            {
-                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
-                {
-                    _pick_point_index = index;
-                    this.SelectedPointIndexChangedEvent?.Invoke(_pick_point_index);
-                }
-            }
-        }
-
-        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
-        {
-            if (!_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            AxisYBase axis_y = null;
-            if (_edit_curve_type == Yw.Ahart.eCurveType.QH)
-                axis_y = _axis_y_head;
-            else if (_edit_curve_type == Yw.Ahart.eCurveType.QE)
-                axis_y = _axis_y_eff;
-            else if (_edit_curve_type == Yw.Ahart.eCurveType.QP)
-                axis_y = _axis_y_power;
-
-            var diagram_coordinates = _diagram.PointToDiagram(e.Location);
-            var axis_value = diagram_coordinates.GetAxisValue(axis_y);
-            if (axis_value == null)
-                return;
-            _series_edit_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
-            _series_edit_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
-        }
-
-        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
-        {
-            if (!_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            var x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
-            var y = _series_edit_pt.Points[_pick_point_index].Values[0];
-            x = Math.Round(x, 2);
-            y = Math.Round(y, 2);
-            SetPointValue(_pick_point_index, x, y);
-            _pick_point_index = -1;
-        }
-        private void chartControl1_KeyUp(object sender, KeyEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            if (_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            double space_x = _coordinate.CoordSpaceQ / 50;
-            double space_y = 0;
-            if (_edit_curve_type == Yw.Ahart.eCurveType.QH)
-                space_y = _coordinate.CoordSpaceH / 50;
-            else if (_edit_curve_type == Yw.Ahart.eCurveType.QE)
-                space_y = _coordinate.CoordSpaceE / 50;
-            else if (_edit_curve_type == Yw.Ahart.eCurveType.QP)
-                space_y = _coordinate.CoordSpaceP / 50;
-
-            double x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
-            double y = _series_edit_pt.Points[_pick_point_index].Values[0];
-            if (e.KeyCode == Keys.Up)
-            {
-                y += space_y;
-            }
-            else if (e.KeyCode == Keys.Down)
-            {
-                y -= space_y;
-            }
-            else if (e.KeyCode == Keys.Left)
-            {
-                x -= space_x;
-            }
-            else if (e.KeyCode == Keys.Right)
-            {
-                x += space_x;
-            }
-            x = Math.Round(x, 2);
-            y = Math.Round(y, 2);
-            _series_edit_pt.Points[_pick_point_index].NumericalArgument = x;
-            _series_edit_pt.Points[_pick_point_index].Values[0] = y;
-            SetPointValue(_pick_point_index, x, y);
-        }
-
-        /// <summary>
-        /// 鏇存柊鏁版嵁
-        /// </summary>
-        private void SetPointValue(int index, double x, double y)
-        {
-            if (IsInvalidData())
-                return;
-            List<Yw.Geometry.Point2d> def_pt_list = null;
-            if (_edit_curve_type == Yw.Ahart.eCurveType.QH)
-                def_pt_list = _def_qh_pt_list;
-            else if (_edit_curve_type == Yw.Ahart.eCurveType.QE)
-                def_pt_list = _def_qe_pt_list;
-            else if (_edit_curve_type == Yw.Ahart.eCurveType.QP)
-                def_pt_list = _def_qp_pt_list;
-
-            def_pt_list[index].X = x;
-            def_pt_list[index].Y = y;
-            this.DefinePointChangedEvent?.Invoke(_edit_curve_type, def_pt_list);
-        }
-
-
-        #endregion
 
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.cs
index a33d9d1..d0e10c4 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.cs
@@ -1,4 +1,4 @@
-锘縰sing Yw.Ahart;
+锘縰sing Yw.WinFrmUI.Phart;
 
 namespace Yw.WinFrmUI.Phart
 {
@@ -10,7 +10,7 @@
             this.gridView1.SetDefaultEditView();
             this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
 
-            this.repImgCmbFeatType.Items.Add("绌胯繃鐐�", Yw.Ahart.eFeatType.Through, -1); 
+            this.repImgCmbFeatType.Items.Add("绌胯繃鐐�", Yw.Ahart.eFeatType.Through, -1);
             this.repImgCmbFeatType.Items.Add("浜屾鎷熷悎", Yw.Ahart.eFeatType.Quadratic, -1);
             this.repImgCmbFeatType.Items.Add("涓夋鎷熷悎", Yw.Ahart.eFeatType.Cubic, -1);
             this.repImgCmbFeatType.Items.Add("鍥涙鎷熷悎", Yw.Ahart.eFeatType.Quartic, -1);
@@ -23,6 +23,8 @@
             {
                 this.gridView1.FocusedRowHandle = index;
             };
+
+            this.Enabled = false;
         }
 
 
@@ -50,13 +52,14 @@
             this.colX.Caption = axis_x_title;
             this.colY.Caption = axis_y_title;
 
-             this.universalEditChart1.AxisXTitle = axis_x_title;
-             this.universalEditChart1.AxisYTitle = axis_y_title;
+            this.universalEditChart1.AxisXTitle = axis_x_title;
+            this.universalEditChart1.AxisYTitle = axis_y_title;
 
             this.barEditModel.EditValue = 0;
             this.barFeatType.EditValue = _feat_type;
             this.bindingSource1.DataSource = _def_pt_list;
             this.bindingSource1.ResetBindings(false);
+            this.Enabled = true;
         }
 
 
@@ -74,7 +77,7 @@
         {
             if (def_pt_list == null || def_pt_list.Count < 4)
             {
-               this.universalEditChart1.Clear();
+                this.universalEditChart1.Clear();
                 return;
             }
             var fit_pt_list = def_pt_list.GetPointList(feat_type);
@@ -99,7 +102,7 @@
         private void barEditModel_EditValueChanged(object sender, EventArgs e)
         {
             var index = (int)this.barEditModel.EditValue;
-           this.universalEditChart1.MouseModel = index == 0;
+            this.universalEditChart1.MouseModel = index == 0;
         }
 
         //娣诲姞鐐�
@@ -124,55 +127,55 @@
         private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             if (_def_pt_list == null || !_def_pt_list.Any())
-                return; 
+                return;
             var row = this.gridView1.GetCurrentViewModel(_def_pt_list);
             if (row == null)
-                return; 
+                return;
             var count = _def_pt_list.Count - 1;
-            switch (_feat_type)
-            {
-                case Ahart.eFeatType.Cubic:
-                    {
-                        if (count < 4)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬4涓偣");
-                            return;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Through:
-                    {
-                        if (count < 1)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬1涓偣");
-                            return;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Quadratic:
-                    {
-                        if (count < 3)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬3涓偣");
-                            return;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Quartic:
-                    {
-                        if (count < 5)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬5涓偣");
-                            return;
-                        }
-                    }
-                    break;
-            }
+            var bol = PhartVerifyHelper.VerifyCount(_feat_type, count);
+            if (!bol)
+                return; 
 
             _def_pt_list.Remove(row);
             this.bindingSource1.ResetBindings(false);
             SetChart(_feat_type, _def_pt_list);
         }
+
+        //绮樿创鏉胯鐩�
+        private void barBtnPastePlateCovering_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        { 
+            if (!ClipboardCurveTextUIHelper.CopyDouble(out List<List<double?>> list))
+                return;
+            if (list == null || list.Count < 1)
+                return;
+            if (list.Count != 2)
+            {
+                TipFormHelper.ShowError("鏁版嵁涓嶅畬鏁�");
+                return;
+            }
+            var cell_count = list.Count;
+            var min_row_count = list.Min(x => x.Count); 
+            var pt_list = new List<Yw.Geometry.Point2d>(min_row_count);
+            for (int i = 0; i < min_row_count; i++)
+            {
+                var x = list[0][i];
+                var y = list[1][i];
+                if (x.HasValue && y.HasValue)
+                {
+                    pt_list.Add(new Geometry.Point2d(x.Value, y.Value));
+                }
+            }
+             
+            var bol = PhartVerifyHelper.VerifyCount(_feat_type, pt_list.Count);
+            if (!bol)
+                return;
+            _def_pt_list.Clear();
+            _def_pt_list.AddRange(pt_list);
+            this.bindingSource1.ResetBindings(false);
+            SetChart(_feat_type, _def_pt_list); 
+        }
+
+
 
         /// <summary>
         /// 鑾峰彇鏁版嵁
@@ -185,7 +188,6 @@
                 return false;
             return true;
         }
-
 
     }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.designer.cs
index 48356bd..612f19e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalChartExcelEditCtrl.designer.cs
@@ -43,6 +43,7 @@
             repImgCmbEditModel = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
             barBtnAdd = new DevExpress.XtraBars.BarButtonItem();
             barBtnDelete = new DevExpress.XtraBars.BarButtonItem();
+            barBtnPastePlateCovering = new DevExpress.XtraBars.BarButtonItem();
             barDockControlTop = new DevExpress.XtraBars.BarDockControl();
             barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
             barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
@@ -67,7 +68,7 @@
             gridControl1.Location = new Point(1, 0);
             gridControl1.MainView = gridView1;
             gridControl1.Name = "gridControl1";
-            gridControl1.Size = new Size(249, 627);
+            gridControl1.Size = new Size(249, 626);
             gridControl1.TabIndex = 9;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
@@ -117,9 +118,9 @@
             barManager1.DockControls.Add(barDockControlLeft);
             barManager1.DockControls.Add(barDockControlRight);
             barManager1.Form = this;
-            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barFeatType, barEditModel, barBtnAdd, barBtnDelete });
+            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barFeatType, barEditModel, barBtnAdd, barBtnDelete, barBtnPastePlateCovering });
             barManager1.MainMenu = bar2;
-            barManager1.MaxItemId = 9;
+            barManager1.MaxItemId = 10;
             barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repImgCmbFeatType, repCmbEditModel, repImgCmbEditModel });
             // 
             // bar2
@@ -129,7 +130,7 @@
             bar2.DockRow = 0;
             bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
             bar2.HideWhenMerging = DevExpress.Utils.DefaultBoolean.False;
-            bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barFeatType), new DevExpress.XtraBars.LinkPersistInfo(barEditModel), new DevExpress.XtraBars.LinkPersistInfo(barBtnAdd), new DevExpress.XtraBars.LinkPersistInfo(barBtnDelete) });
+            bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barFeatType), new DevExpress.XtraBars.LinkPersistInfo(barEditModel), new DevExpress.XtraBars.LinkPersistInfo(barBtnAdd), new DevExpress.XtraBars.LinkPersistInfo(barBtnDelete), new DevExpress.XtraBars.LinkPersistInfo(barBtnPastePlateCovering) });
             bar2.OptionsBar.AllowQuickCustomization = false;
             bar2.OptionsBar.DrawBorder = false;
             bar2.OptionsBar.DrawDragBorder = false;
@@ -181,7 +182,9 @@
             barBtnAdd.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnAdd.Caption = "娣诲姞";
             barBtnAdd.Id = 6;
+            barBtnAdd.ImageOptions.SvgImage = Core.Properties.Resources.inserttablerowsbelow1;
             barBtnAdd.Name = "barBtnAdd";
+            barBtnAdd.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnAdd.ItemClick += barAdd_ItemClick;
             // 
             // barBtnDelete
@@ -189,8 +192,20 @@
             barBtnDelete.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnDelete.Caption = "鍒犻櫎";
             barBtnDelete.Id = 8;
+            barBtnDelete.ImageOptions.SvgImage = Core.Properties.Resources.removefooter1;
             barBtnDelete.Name = "barBtnDelete";
+            barBtnDelete.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnDelete.ItemClick += btnDelete_ItemClick;
+            // 
+            // barBtnPastePlateCovering
+            // 
+            barBtnPastePlateCovering.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            barBtnPastePlateCovering.Caption = "绮樿创鏉胯鐩�";
+            barBtnPastePlateCovering.Id = 9;
+            barBtnPastePlateCovering.ImageOptions.SvgImage = Core.Properties.Resources.cut;
+            barBtnPastePlateCovering.Name = "barBtnPastePlateCovering";
+            barBtnPastePlateCovering.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+            barBtnPastePlateCovering.ItemClick += barBtnPastePlateCovering_ItemClick;
             // 
             // barDockControlTop
             // 
@@ -198,7 +213,7 @@
             barDockControlTop.Dock = DockStyle.Top;
             barDockControlTop.Location = new Point(0, 0);
             barDockControlTop.Manager = barManager1;
-            barDockControlTop.Size = new Size(1000, 33);
+            barDockControlTop.Size = new Size(1000, 34);
             // 
             // barDockControlBottom
             // 
@@ -212,17 +227,17 @@
             // 
             barDockControlLeft.CausesValidation = false;
             barDockControlLeft.Dock = DockStyle.Left;
-            barDockControlLeft.Location = new Point(0, 33);
+            barDockControlLeft.Location = new Point(0, 34);
             barDockControlLeft.Manager = barManager1;
-            barDockControlLeft.Size = new Size(0, 627);
+            barDockControlLeft.Size = new Size(0, 626);
             // 
             // barDockControlRight
             // 
             barDockControlRight.CausesValidation = false;
             barDockControlRight.Dock = DockStyle.Right;
-            barDockControlRight.Location = new Point(1000, 33);
+            barDockControlRight.Location = new Point(1000, 34);
             barDockControlRight.Manager = barManager1;
-            barDockControlRight.Size = new Size(0, 627);
+            barDockControlRight.Size = new Size(0, 626);
             // 
             // repCmbEditModel
             // 
@@ -234,9 +249,9 @@
             // 
             sidePanel1.Controls.Add(gridControl1);
             sidePanel1.Dock = DockStyle.Right;
-            sidePanel1.Location = new Point(750, 33);
+            sidePanel1.Location = new Point(750, 34);
             sidePanel1.Name = "sidePanel1";
-            sidePanel1.Size = new Size(250, 627);
+            sidePanel1.Size = new Size(250, 626);
             sidePanel1.TabIndex = 14;
             sidePanel1.Text = "sidePanel1";
             // 
@@ -245,10 +260,10 @@
             universalEditChart1.AxisXTitle = "Z";
             universalEditChart1.AxisYTitle = "鎵▼/m";
             universalEditChart1.Dock = DockStyle.Fill;
-            universalEditChart1.Location = new Point(0, 33);
+            universalEditChart1.Location = new Point(0, 34);
             universalEditChart1.MouseModel = false;
             universalEditChart1.Name = "universalEditChart1";
-            universalEditChart1.Size = new Size(750, 627);
+            universalEditChart1.Size = new Size(750, 626);
             universalEditChart1.TabIndex = 19;
             // 
             // UniversalChartExcelEditCtrl
@@ -298,5 +313,6 @@
         private DevExpress.XtraBars.BarDockControl barDockControlRight;
         private DevExpress.XtraEditors.SidePanel sidePanel1;
         private UniversalEditChart universalEditChart1;
+        private DevExpress.XtraBars.BarButtonItem barBtnPastePlateCovering;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs
index dd63276..da8a813 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/02-universal/02-edit/UniversalEditChart.cs
@@ -99,7 +99,7 @@
         public event Action<int> SelectedPointIndexChangedEvent;
         #endregion 
 
-        #region Initial
+        #region Private Initial
 
         /// <summary>
         /// 鍒濆鍖栧浘琛�
@@ -149,7 +149,109 @@
 
         #endregion Initial
 
-        #region SetBindingData
+        #region Private Chart Event
+
+        private int _pick_point_index = -1;
+        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
+        {
+            if (!_initial_data)
+                return;
+            var hitInfo = chartControl1.CalcHitInfo(e.Location);
+            _pick_point_index = -1;
+            if (e.Button == MouseButtons.Left)
+            {
+                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
+                {
+                    _pick_point_index = index;
+                    this.SelectedPointIndexChangedEvent?.Invoke(_pick_point_index);
+                }
+            }
+        }
+
+        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
+        {
+            if (!_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            var diagram_coordinates = _diagram.PointToDiagram(e.Location);
+            var axis_value = diagram_coordinates.GetAxisValue(_axis_y);
+            if (axis_value == null)
+                return;
+            _series_edit_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
+            _series_edit_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
+        }
+
+
+        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
+        {
+            if (!_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            var x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
+            var y = _series_edit_pt.Points[_pick_point_index].Values[0];
+            x = Math.Round(x, 2);
+            y = Math.Round(y, 2);
+            SetPointValue(_pick_point_index, x, y);
+            _pick_point_index = -1;
+        }
+
+        private void chartControl1_KeyUp(object sender, KeyEventArgs e)
+        {
+            if (_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            double space_x = _coordinate.CoordSpaceX / 50;
+            double space_y = _coordinate.CoordSpaceY / 50;
+            double x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
+            double y = _series_edit_pt.Points[_pick_point_index].Values[0];
+            if (e.KeyCode == Keys.Up)
+            {
+                y += space_y;
+            }
+            else if (e.KeyCode == Keys.Down)
+            {
+                y -= space_y;
+            }
+            else if (e.KeyCode == Keys.Left)
+            {
+                x -= space_x;
+            }
+            else if (e.KeyCode == Keys.Right)
+            {
+                x += space_x;
+            }
+            x = Math.Round(x, 2);
+            y = Math.Round(y, 2);
+            _series_edit_pt.Points[_pick_point_index].NumericalArgument = x;
+            _series_edit_pt.Points[_pick_point_index].Values[0] = y;
+            SetPointValue(_pick_point_index, x, y);
+        }
+
+
+        /// <summary>
+        /// 鏇存柊鏁版嵁
+        /// </summary>
+        private void SetPointValue(int index, double x, double y)
+        {
+            if (IsInvalidData())
+                return;
+            _def_pt_list[index].X = x;
+            _def_pt_list[index].Y = y;
+            this.DefinePointChangedEvent?.Invoke(_def_pt_list);
+        }
+
+        #endregion
+
+        #region Set
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -389,107 +491,7 @@
 
         #endregion Calc
 
-        #region Chart Event
-
-        private int _pick_point_index = -1;
-        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            var hitInfo = chartControl1.CalcHitInfo(e.Location);
-            _pick_point_index = -1;
-            if (e.Button == MouseButtons.Left)
-            {
-                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
-                {
-                    _pick_point_index = index;
-                    this.SelectedPointIndexChangedEvent?.Invoke(_pick_point_index);
-                }
-            }
-        }
-
-        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
-        {
-            if (!_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            var diagram_coordinates = _diagram.PointToDiagram(e.Location);
-            var axis_value = diagram_coordinates.GetAxisValue(_axis_y);
-            if (axis_value == null)
-                return;
-            _series_edit_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
-            _series_edit_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
-        }
-
-
-        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
-        {
-            if (!_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            var x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
-            var y = _series_edit_pt.Points[_pick_point_index].Values[0];
-            x = Math.Round(x, 2);
-            y = Math.Round(y, 2);
-            SetPointValue(_pick_point_index, x, y);
-            _pick_point_index = -1;
-        }
-
-        private void chartControl1_KeyUp(object sender, KeyEventArgs e)
-        {
-            if (_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            double space_x = _coordinate.CoordSpaceX / 50;
-            double space_y = _coordinate.CoordSpaceY / 50;
-            double x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
-            double y = _series_edit_pt.Points[_pick_point_index].Values[0];
-            if (e.KeyCode == Keys.Up)
-            {
-                y += space_y;
-            }
-            else if (e.KeyCode == Keys.Down)
-            {
-                y -= space_y;
-            }
-            else if (e.KeyCode == Keys.Left)
-            {
-                x -= space_x;
-            }
-            else if (e.KeyCode == Keys.Right)
-            {
-                x += space_x;
-            }
-            x = Math.Round(x, 2);
-            y = Math.Round(y, 2);
-            _series_edit_pt.Points[_pick_point_index].NumericalArgument = x;
-            _series_edit_pt.Points[_pick_point_index].Values[0] = y;
-            SetPointValue(_pick_point_index, x, y);
-        }
-
-
-        /// <summary>
-        /// 鏇存柊鏁版嵁
-        /// </summary>
-        private void SetPointValue(int index, double x, double y)
-        {
-            if (IsInvalidData())
-                return;
-            _def_pt_list[index].X = x;
-            _def_pt_list[index].Y = y;
-            this.DefinePointChangedEvent?.Invoke(_def_pt_list);
-        }
-
-        #endregion
+ 
 
 
     }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.cs
index a7e5245..907d8ee 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.cs
@@ -1,4 +1,5 @@
 锘縰sing NetTaste;
+using Yw.Ahart;
 
 namespace Yw.WinFrmUI.Phart
 {
@@ -10,8 +11,7 @@
             this.gridView1.SetDefaultEditView();
             this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
 
-        
-
+         
             this.repImgCmbFeatType.Items.Add("绌胯繃鐐�", Yw.Ahart.eFeatType.Through, -1);
             this.repImgCmbFeatType.Items.Add("浜屾鎷熷悎", Yw.Ahart.eFeatType.Quadratic, -1);
             this.repImgCmbFeatType.Items.Add("涓夋鎷熷悎", Yw.Ahart.eFeatType.Cubic, -1);
@@ -28,6 +28,7 @@
                 this.gridView1.FocusedRowHandle = index;
             };
 
+            this.Enabled = false;
         }
 
         private Yw.Ahart.eCurveType _edit_curve_type = Ahart.eCurveType.QL;
@@ -65,6 +66,8 @@
             this.repImgCmbCurveType.EndInit(); 
 
             this.barImgCmbCurveType.EditValue = _edit_curve_type;
+
+            this.Enabled = true;
         }
 
 
@@ -160,45 +163,12 @@
                 e.Cancel = true;
             }
             var feat_type = (Yw.Ahart.eFeatType)e.NewValue;
-            switch (feat_type)
+            var bol = PhartVerifyHelper.VerifyCount(feat_type, vm.DefPointList.Count);
+            if (!bol)
             {
-                case Ahart.eFeatType.Cubic:
-                    {
-                        if (vm.DefPointList.Count < 4)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬4涓偣");
-                            e.Cancel = true;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Through:
-                    {
-                        if (vm.DefPointList.Count < 1)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬1涓偣");
-                            e.Cancel = true;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Quadratic:
-                    {
-                        if (vm.DefPointList.Count < 3)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬3涓偣");
-                            e.Cancel = true;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Quartic:
-                    {
-                        if (vm.DefPointList.Count < 5)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬5涓偣");
-                            e.Cancel = true;
-                        }
-                    }
-                    break;
+                e.Cancel = true;
             } 
+             
         }
 
         //鎷熷悎绫诲瀷
@@ -263,51 +233,60 @@
             var row = this.gridView1.GetCurrentViewModel(def_pt_list);
             if (row == null)
                 return;
-            var count = vm.DefPointList.Count - 1;
-            switch (vm.FeatType)
-            {
-                case Ahart.eFeatType.Cubic:
-                    {
-                        if (count < 4)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬4涓偣");
-                            return;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Through:
-                    {
-                        if (count < 1)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬1涓偣");
-                            return;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Quadratic:
-                    {
-                        if (count < 3)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬3涓偣");
-                            return;
-                        }
-                    }
-                    break;
-                case Ahart.eFeatType.Quartic:
-                    {
-                        if (count < 5)
-                        {
-                            TipFormHelper.ShowInfo("鐐规暟灏戜簬5涓偣");
-                            return;
-                        }
-                    }
-                    break;
-            }
+            var count = def_pt_list.Count - 1;
+            var bol = PhartVerifyHelper.VerifyCount(vm.FeatType, count);
+            if (!bol)
+                return; 
             def_pt_list.Remove(row);
             this.bindingSource1.ResetBindings(false);
             SetChart();
         }
 
+        //绮樿创鏉胯鐩�
+        private void barBtnPastePlateCovering_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            var vm = _vm_list?.Find(x => x.IsUpdate);
+            if (vm == null)
+            {
+                this.valveEditChart1.Clear();
+                return;
+            }
+            List<Yw.Geometry.Point2d> def_pt_list = vm.DefPointList;
+            var row = this.gridView1.GetCurrentViewModel(def_pt_list);
+            if (row == null)
+                return;
+         
+            if (!ClipboardCurveTextUIHelper.CopyDouble(out List<List<double?>> list))
+                return;
+            if (list == null || list.Count < 1)
+                return;
+            if (list.Count != 2)
+            {
+                TipFormHelper.ShowError("鏁版嵁涓嶅畬鏁�");
+                return;
+            }
+            var cell_count = list.Count;
+            var min_row_count = list.Min(x => x.Count);
+            var pt_list = new List<Yw.Geometry.Point2d>(min_row_count);
+            for (int i = 0; i < min_row_count; i++)
+            {
+                var x = list[0][i];
+                var y = list[1][i];
+                if (x.HasValue && y.HasValue)
+                {
+                    pt_list.Add(new Geometry.Point2d(x.Value, y.Value));
+                }
+            }
+
+            var bol = PhartVerifyHelper.VerifyCount(vm.FeatType, pt_list.Count);
+            if (!bol)
+                return;
+            def_pt_list.Clear();
+            def_pt_list.AddRange(pt_list); 
+            this.bindingSource1.ResetBindings(false);
+            SetChart();
+        }
+
         private void SetChart()
         {
             if (_vm_list == null || !_vm_list.Any())
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.designer.cs
index 6664511..8d53df4 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveChartExcelEditCtrl.designer.cs
@@ -45,13 +45,14 @@
             repImgCmbFeatType = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
             barEditModel = new DevExpress.XtraBars.BarEditItem();
             repImgCmbEditModel = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
-            barBtnCalc = new DevExpress.XtraBars.BarButtonItem();
             barBtnAdd = new DevExpress.XtraBars.BarButtonItem();
             barBtnDelete = new DevExpress.XtraBars.BarButtonItem();
+            barBtnPastePlateCovering = new DevExpress.XtraBars.BarButtonItem();
             barDockControlTop = new DevExpress.XtraBars.BarDockControl();
             barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
             barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
             barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+            barBtnCalc = new DevExpress.XtraBars.BarButtonItem();
             repCmbEditModel = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox();
             repositoryItemHypertextLabel1 = new DevExpress.XtraEditors.Repository.RepositoryItemHypertextLabel();
             sidePanel1 = new DevExpress.XtraEditors.SidePanel();
@@ -76,7 +77,7 @@
             gridControl1.Location = new Point(1, 0);
             gridControl1.MainView = gridView1;
             gridControl1.Name = "gridControl1";
-            gridControl1.Size = new Size(249, 627);
+            gridControl1.Size = new Size(299, 626);
             gridControl1.TabIndex = 9;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
@@ -126,9 +127,9 @@
             barManager1.DockControls.Add(barDockControlLeft);
             barManager1.DockControls.Add(barDockControlRight);
             barManager1.Form = this;
-            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barFeatType, barEditModel, barBtnAdd, barBtnDelete, barBtnCalc, barImgCmbCurveType, barImgCmbCurveSel });
+            barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { barFeatType, barEditModel, barBtnAdd, barBtnDelete, barBtnCalc, barImgCmbCurveType, barImgCmbCurveSel, barBtnPastePlateCovering });
             barManager1.MainMenu = bar2;
-            barManager1.MaxItemId = 14;
+            barManager1.MaxItemId = 15;
             barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repImgCmbFeatType, repCmbEditModel, repImgCmbEditModel, repImgCmbCurveType, repositoryItemHypertextLabel1, repImgCmbCurveSel });
             // 
             // bar2
@@ -138,7 +139,7 @@
             bar2.DockRow = 0;
             bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
             bar2.HideWhenMerging = DevExpress.Utils.DefaultBoolean.False;
-            bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barImgCmbCurveType), new DevExpress.XtraBars.LinkPersistInfo(barImgCmbCurveSel), new DevExpress.XtraBars.LinkPersistInfo(barFeatType), new DevExpress.XtraBars.LinkPersistInfo(barEditModel), new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.KeyTip, barBtnAdd, "", false, true, true, 0, null, DevExpress.XtraBars.BarItemPaintStyle.Standard, "娣诲姞", ""), new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.KeyTip, barBtnDelete, "", false, true, true, 0, null, DevExpress.XtraBars.BarItemPaintStyle.Standard, "鍒犻櫎", "") });
+            bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] { new DevExpress.XtraBars.LinkPersistInfo(barImgCmbCurveType), new DevExpress.XtraBars.LinkPersistInfo(barImgCmbCurveSel), new DevExpress.XtraBars.LinkPersistInfo(barFeatType), new DevExpress.XtraBars.LinkPersistInfo(barEditModel), new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.KeyTip, barBtnAdd, "", false, true, true, 0, null, DevExpress.XtraBars.BarItemPaintStyle.Standard, "娣诲姞", ""), new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.KeyTip, barBtnDelete, "", false, true, true, 0, null, DevExpress.XtraBars.BarItemPaintStyle.Standard, "鍒犻櫎", ""), new DevExpress.XtraBars.LinkPersistInfo(barBtnPastePlateCovering) });
             bar2.OptionsBar.AllowQuickCustomization = false;
             bar2.OptionsBar.DrawBorder = false;
             bar2.OptionsBar.DrawDragBorder = false;
@@ -217,20 +218,14 @@
             repImgCmbEditModel.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
             repImgCmbEditModel.Name = "repImgCmbEditModel";
             // 
-            // barBtnCalc
-            // 
-            barBtnCalc.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
-            barBtnCalc.Caption = "璁$畻";
-            barBtnCalc.Id = 9;
-            barBtnCalc.Name = "barBtnCalc";
-            barBtnCalc.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph; 
-            // 
             // barBtnAdd
             // 
             barBtnAdd.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnAdd.Caption = "娣诲姞";
             barBtnAdd.Id = 6;
+            barBtnAdd.ImageOptions.SvgImage = Core.Properties.Resources.inserttablerowsbelow2;
             barBtnAdd.Name = "barBtnAdd";
+            barBtnAdd.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnAdd.ItemClick += barAdd_ItemClick;
             // 
             // barBtnDelete
@@ -238,8 +233,20 @@
             barBtnDelete.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
             barBtnDelete.Caption = "鍒犻櫎";
             barBtnDelete.Id = 8;
+            barBtnDelete.ImageOptions.SvgImage = Core.Properties.Resources.removefooter2;
             barBtnDelete.Name = "barBtnDelete";
+            barBtnDelete.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             barBtnDelete.ItemClick += btnDelete_ItemClick;
+            // 
+            // barBtnPastePlateCovering
+            // 
+            barBtnPastePlateCovering.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            barBtnPastePlateCovering.Caption = "绮樿创鏉胯鐩�";
+            barBtnPastePlateCovering.Id = 14;
+            barBtnPastePlateCovering.ImageOptions.SvgImage = Core.Properties.Resources.cut1;
+            barBtnPastePlateCovering.Name = "barBtnPastePlateCovering";
+            barBtnPastePlateCovering.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+            barBtnPastePlateCovering.ItemClick += barBtnPastePlateCovering_ItemClick;
             // 
             // barDockControlTop
             // 
@@ -247,7 +254,7 @@
             barDockControlTop.Dock = DockStyle.Top;
             barDockControlTop.Location = new Point(0, 0);
             barDockControlTop.Manager = barManager1;
-            barDockControlTop.Size = new Size(1000, 33);
+            barDockControlTop.Size = new Size(1000, 34);
             // 
             // barDockControlBottom
             // 
@@ -261,17 +268,25 @@
             // 
             barDockControlLeft.CausesValidation = false;
             barDockControlLeft.Dock = DockStyle.Left;
-            barDockControlLeft.Location = new Point(0, 33);
+            barDockControlLeft.Location = new Point(0, 34);
             barDockControlLeft.Manager = barManager1;
-            barDockControlLeft.Size = new Size(0, 627);
+            barDockControlLeft.Size = new Size(0, 626);
             // 
             // barDockControlRight
             // 
             barDockControlRight.CausesValidation = false;
             barDockControlRight.Dock = DockStyle.Right;
-            barDockControlRight.Location = new Point(1000, 33);
+            barDockControlRight.Location = new Point(1000, 34);
             barDockControlRight.Manager = barManager1;
-            barDockControlRight.Size = new Size(0, 627);
+            barDockControlRight.Size = new Size(0, 626);
+            // 
+            // barBtnCalc
+            // 
+            barBtnCalc.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            barBtnCalc.Caption = "璁$畻";
+            barBtnCalc.Id = 9;
+            barBtnCalc.Name = "barBtnCalc";
+            barBtnCalc.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
             // 
             // repCmbEditModel
             // 
@@ -287,19 +302,19 @@
             // 
             sidePanel1.Controls.Add(gridControl1);
             sidePanel1.Dock = DockStyle.Right;
-            sidePanel1.Location = new Point(750, 33);
+            sidePanel1.Location = new Point(700, 34);
             sidePanel1.Name = "sidePanel1";
-            sidePanel1.Size = new Size(300, 627);
+            sidePanel1.Size = new Size(300, 626);
             sidePanel1.TabIndex = 14;
             sidePanel1.Text = "sidePanel1";
             // 
             // valveEditChart1
             // 
             valveEditChart1.Dock = DockStyle.Fill;
-            valveEditChart1.Location = new Point(0, 33);
+            valveEditChart1.Location = new Point(0, 34);
             valveEditChart1.MouseModel = false;
             valveEditChart1.Name = "valveEditChart1";
-            valveEditChart1.Size = new Size(750, 627);
+            valveEditChart1.Size = new Size(700, 626);
             valveEditChart1.TabIndex = 19;
             // 
             // ValveChartExcelEditCtrl
@@ -358,5 +373,6 @@
         private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repImgCmbCurveSel;
         private DevExpress.XtraEditors.Repository.RepositoryItemHypertextLabel repositoryItemHypertextLabel1;
         private ValveEditChart valveEditChart1;
+        private DevExpress.XtraBars.BarButtonItem barBtnPastePlateCovering;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveEditChart.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveEditChart.cs
index 6db858d..e48c537 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveEditChart.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/03-valve/02-edit/ValveEditChart.cs
@@ -76,7 +76,7 @@
         public event Action<int> SelectedPointIndexChangedEvent;
         #endregion 
 
-        #region Initial
+        #region Private Initial
 
         /// <summary>
         /// 鍒濆鍖栧浘琛�
@@ -153,7 +153,135 @@
 
         #endregion Initial
 
-        #region SetBindingData
+        #region Private Chart Event
+
+        private int _pick_point_index = -1;
+        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
+        {
+            if (!_initial_data)
+                return;
+            var hitInfo = chartControl1.CalcHitInfo(e.Location);
+            _pick_point_index = -1;
+            if (e.Button == MouseButtons.Left)
+            {
+                if (hitInfo.InSeries && hitInfo.Series != _series_edit_pt)
+                {
+                    return;
+                }
+                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
+                {
+                    _pick_point_index = index;
+                    this.SelectedPointIndexChangedEvent?.Invoke(_pick_point_index);
+                }
+            }
+
+        }
+
+        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
+        {
+            if (!_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            var diagram_coordinates = _diagram.PointToDiagram(e.Location);
+            AxisYBase axis_y = null;
+            if (_edit_curve_type == Ahart.eCurveType.QL)
+            {
+                axis_y = _axis_y_head_loss;
+            }
+            else
+            {
+                axis_y = _axis_y_k_loss;
+            }
+            var axis_value = diagram_coordinates.GetAxisValue(axis_y);
+            if (axis_value == null)
+                return;
+            _series_edit_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
+            _series_edit_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
+        }
+
+        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
+        {
+            if (!_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            var x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
+            var y = _series_edit_pt.Points[_pick_point_index].Values[0];
+            x = Math.Round(x, 2);
+            y = Math.Round(y, 2);
+            SetPointValue(_pick_point_index, x, y);
+            _pick_point_index = -1;
+        }
+
+        private void chartControl1_KeyUp(object sender, KeyEventArgs e)
+        {
+            if (_mouse_mode)
+                return;
+            if (_pick_point_index < 0)
+                return;
+            if (IsInvalidData())
+                return;
+            double coord_space_x, coord_space_y;
+            if (_edit_curve_type == Ahart.eCurveType.QL)
+            {
+                coord_space_x = _coordinate.QL.CoordSpaceX;
+                coord_space_y = _coordinate.QL.CoordSpaceY;
+            }
+            else
+            {
+                coord_space_x = _coordinate.OL.CoordSpaceX;
+                coord_space_y = _coordinate.OL.CoordSpaceY;
+            }
+            double space_x = coord_space_x / 50;
+            double space_y = coord_space_y / 50;
+            double x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
+            double y = _series_edit_pt.Points[_pick_point_index].Values[0];
+            if (e.KeyCode == Keys.Up)
+            {
+                y += space_y;
+            }
+            else if (e.KeyCode == Keys.Down)
+            {
+                y -= space_y;
+            }
+            else if (e.KeyCode == Keys.Left)
+            {
+                x -= space_x;
+            }
+            else if (e.KeyCode == Keys.Right)
+            {
+                x += space_x;
+            }
+            x = Math.Round(x, 2);
+            y = Math.Round(y, 2);
+            _series_edit_pt.Points[_pick_point_index].NumericalArgument = x;
+            _series_edit_pt.Points[_pick_point_index].Values[0] = y;
+            SetPointValue(_pick_point_index, x, y);
+        }
+
+        /// <summary>
+        /// 鏇存柊鏁版嵁
+        /// </summary>
+        private void SetPointValue(int index, double x, double y)
+        {
+            if (IsInvalidData())
+                return;
+            var vm = _vm_list.Find(x => x.IsUpdate);
+            if (vm == null)
+                return;
+            vm.DefPointList[index].X = x;
+            vm.DefPointList[index].Y = y;
+            this.DefinePointChangedEvent?.Invoke(vm.DefPointList);
+        }
+
+        #endregion
+
+        #region Set
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -361,6 +489,11 @@
 
             foreach (var vm in _vm_list)
             {
+                if (vm.DefPointList == null || !vm.DefPointList.Any())
+                {
+                    continue;
+
+                }
                 if (vm.CurveType == Ahart.eCurveType.QL)
                 {
                     _min_x_flow = Math.Min(vm.DefPointList.Min(x => x.X), _min_x_flow);
@@ -516,133 +649,6 @@
 
         #endregion Calc
 
-        #region Chart Event
-
-        private int _pick_point_index = -1;
-        private void chartControl1_MouseDown(object sender, MouseEventArgs e)
-        {
-            if (!_initial_data)
-                return;
-            var hitInfo = chartControl1.CalcHitInfo(e.Location);
-            _pick_point_index = -1;
-            if (e.Button == MouseButtons.Left)
-            {
-                if (hitInfo.InSeries&& hitInfo.Series != _series_edit_pt)
-                {
-                    return;
-                }
-                if (hitInfo.InSeriesPoint && hitInfo.SeriesPoint.Tag is int index)
-                {
-                    _pick_point_index = index;
-                    this.SelectedPointIndexChangedEvent?.Invoke(_pick_point_index);
-                }
-            }
-
-        }
-
-        private void chartControl1_MouseMove(object sender, MouseEventArgs e)
-        {
-            if (!_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            var diagram_coordinates = _diagram.PointToDiagram(e.Location);
-            AxisYBase axis_y = null;
-            if (_edit_curve_type == Ahart.eCurveType.QL)
-            {
-                axis_y = _axis_y_head_loss;
-            }
-            else
-            {
-                axis_y = _axis_y_k_loss;
-            }
-            var axis_value = diagram_coordinates.GetAxisValue(axis_y);
-            if (axis_value == null)
-                return;
-            _series_edit_pt.Points[_pick_point_index].Values[0] = axis_value.NumericalValue;
-            _series_edit_pt.Points[_pick_point_index].NumericalArgument = diagram_coordinates.NumericalArgument;
-        }
-         
-        private void chartControl1_MouseUp(object sender, MouseEventArgs e)
-        {
-            if (!_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            var x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
-            var y = _series_edit_pt.Points[_pick_point_index].Values[0];
-            x = Math.Round(x, 2);
-            y = Math.Round(y, 2);
-            SetPointValue(_pick_point_index, x, y);
-            _pick_point_index = -1;
-        }
-
-        private void chartControl1_KeyUp(object sender, KeyEventArgs e)
-        {
-            if (_mouse_mode)
-                return;
-            if (_pick_point_index < 0)
-                return;
-            if (IsInvalidData())
-                return;
-            double coord_space_x, coord_space_y;
-            if (_edit_curve_type == Ahart.eCurveType.QL)
-            {
-                coord_space_x = _coordinate.QL.CoordSpaceX;
-                coord_space_y = _coordinate.QL.CoordSpaceY;
-            }
-            else
-            {
-                coord_space_x = _coordinate.OL.CoordSpaceX;
-                coord_space_y = _coordinate.OL.CoordSpaceY;
-            }
-            double space_x = coord_space_x / 50;
-            double space_y = coord_space_y / 50;
-            double x = _series_edit_pt.Points[_pick_point_index].NumericalArgument;
-            double y = _series_edit_pt.Points[_pick_point_index].Values[0];
-            if (e.KeyCode == Keys.Up)
-            {
-                y += space_y;
-            }
-            else if (e.KeyCode == Keys.Down)
-            {
-                y -= space_y;
-            }
-            else if (e.KeyCode == Keys.Left)
-            {
-                x -= space_x;
-            }
-            else if (e.KeyCode == Keys.Right)
-            {
-                x += space_x;
-            }
-            x = Math.Round(x, 2);
-            y = Math.Round(y, 2);
-            _series_edit_pt.Points[_pick_point_index].NumericalArgument = x;
-            _series_edit_pt.Points[_pick_point_index].Values[0] = y;
-            SetPointValue(_pick_point_index, x, y);
-        }
-         
-        /// <summary>
-        /// 鏇存柊鏁版嵁
-        /// </summary>
-        private void SetPointValue(int index, double x, double y)
-        {
-            if (IsInvalidData())
-                return;
-            var vm = _vm_list.Find(x => x.IsUpdate);
-            if (vm == null)
-                return;
-            vm.DefPointList[index].X = x;
-            vm.DefPointList[index].Y = y;
-            this.DefinePointChangedEvent?.Invoke(vm.DefPointList);
-        }
-
-        #endregion
 
     }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.Designer.cs
new file mode 100644
index 0000000..48d7f27
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.Designer.cs
@@ -0,0 +1,182 @@
+锘縩amespace Yw.WinFrmUI.Phart
+{
+    partial class ClipboardCurveExcelDlg
+    {
+        /// <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 Windows Form 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()
+        {
+            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            btnCancel = new DevExpress.XtraEditors.SimpleButton();
+            btnOk = new DevExpress.XtraEditors.SimpleButton();
+            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+            spreadsheetControl1 = new DevExpress.XtraSpreadsheet.SpreadsheetControl();
+            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
+            layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
+            SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            layoutControl1.AllowCustomization = false;
+            layoutControl1.Controls.Add(spreadsheetControl1);
+            layoutControl1.Controls.Add(btnCancel);
+            layoutControl1.Controls.Add(btnOk);
+            layoutControl1.Dock = DockStyle.Fill;
+            layoutControl1.Location = new Point(0, 0);
+            layoutControl1.Margin = new Padding(4, 5, 4, 5);
+            layoutControl1.Name = "layoutControl1";
+            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(772, 198, 802, 751);
+            layoutControl1.Root = layoutControlGroup1;
+            layoutControl1.Size = new Size(637, 690);
+            layoutControl1.TabIndex = 0;
+            layoutControl1.Text = "layoutControl1";
+            // 
+            // btnCancel
+            // 
+            btnCancel.DialogResult = DialogResult.Cancel;
+            btnCancel.Location = new Point(499, 641);
+            btnCancel.Margin = new Padding(4, 5, 4, 5);
+            btnCancel.Name = "btnCancel";
+            btnCancel.Size = new Size(126, 37);
+            btnCancel.StyleController = layoutControl1;
+            btnCancel.TabIndex = 7;
+            btnCancel.Text = "鍙栨秷";
+            // 
+            // btnOk
+            // 
+            btnOk.Location = new Point(369, 641);
+            btnOk.Margin = new Padding(4, 5, 4, 5);
+            btnOk.Name = "btnOk";
+            btnOk.Size = new Size(126, 37);
+            btnOk.StyleController = layoutControl1;
+            btnOk.TabIndex = 6;
+            btnOk.Text = "纭畾";
+            btnOk.Click += btnOk_Click;
+            // 
+            // layoutControlGroup1
+            // 
+            layoutControlGroup1.CustomizationFormText = "Root";
+            layoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            layoutControlGroup1.GroupBordersVisible = false;
+            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem3, layoutControlItem4, emptySpaceItem1, layoutControlItem1 });
+            layoutControlGroup1.Name = "Root";
+            layoutControlGroup1.Size = new Size(637, 690);
+            layoutControlGroup1.TextVisible = false;
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = btnOk;
+            layoutControlItem3.CustomizationFormText = "layoutControlItem3";
+            layoutControlItem3.Location = new Point(357, 629);
+            layoutControlItem3.MaxSize = new Size(130, 41);
+            layoutControlItem3.MinSize = new Size(130, 41);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(130, 41);
+            layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem3.TextSize = new Size(0, 0);
+            layoutControlItem3.TextVisible = false;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = btnCancel;
+            layoutControlItem4.CustomizationFormText = "layoutControlItem4";
+            layoutControlItem4.Location = new Point(487, 629);
+            layoutControlItem4.MaxSize = new Size(130, 41);
+            layoutControlItem4.MinSize = new Size(130, 41);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(130, 41);
+            layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem4.TextSize = new Size(0, 0);
+            layoutControlItem4.TextVisible = false;
+            // 
+            // emptySpaceItem1
+            // 
+            emptySpaceItem1.AllowHotTrack = false;
+            emptySpaceItem1.CustomizationFormText = "emptySpaceItem1";
+            emptySpaceItem1.Location = new Point(0, 629);
+            emptySpaceItem1.Name = "emptySpaceItem1";
+            emptySpaceItem1.Size = new Size(357, 41);
+            emptySpaceItem1.TextSize = new Size(0, 0);
+            // 
+            // spreadsheetControl1
+            // 
+            spreadsheetControl1.Location = new Point(12, 12);
+            spreadsheetControl1.Name = "spreadsheetControl1";
+            spreadsheetControl1.Size = new Size(613, 625);
+            spreadsheetControl1.TabIndex = 8;
+            spreadsheetControl1.Text = "spreadsheetControl1";
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.Control = spreadsheetControl1;
+            layoutControlItem1.Location = new Point(0, 0);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Size = new Size(617, 629);
+            layoutControlItem1.TextSize = new Size(0, 0);
+            layoutControlItem1.TextVisible = false;
+            // 
+            // ClipboardCurveExcelDlg
+            // 
+            AutoScaleDimensions = new SizeF(10F, 22F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(637, 690);
+            Controls.Add(layoutControl1);
+            FormBorderStyle = FormBorderStyle.FixedToolWindow;
+            Margin = new Padding(4, 5, 4, 5);
+            Name = "ClipboardCurveExcelDlg";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "鍓垏鏉挎暟鎹‘璁�";
+            ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
+            layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).EndInit();
+            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+        private DevExpress.XtraEditors.SimpleButton btnCancel;
+        private DevExpress.XtraEditors.SimpleButton btnOk;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraSpreadsheet.SpreadsheetControl spreadsheetControl1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.cs
new file mode 100644
index 0000000..05d9191
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.cs
@@ -0,0 +1,82 @@
+锘縰sing DevExpress.Export;
+using DevExpress.Spreadsheet;
+using DevExpress.XtraEditors;
+using DevExpress.XtraSpreadsheet;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Yw.WinFrmUI.Phart
+{
+    public partial class ClipboardCurveExcelDlg : XtraForm
+    {
+        public ClipboardCurveExcelDlg()
+        {
+            InitializeComponent();
+
+            this.spreadsheetControl1.Options.TabSelector.Visibility = DevExpress.XtraSpreadsheet.SpreadsheetElementVisibility.Hidden;
+            this.spreadsheetControl1.Options.View.Charts.Antialiasing = DevExpress.XtraSpreadsheet.DocumentCapability.Enabled;
+            this.spreadsheetControl1.Options.View.Charts.TextAntialiasing = DevExpress.XtraSpreadsheet.DocumentCapability.Enabled;
+            this.spreadsheetControl1.Options.View.ShowColumnHeaders = false;
+            this.spreadsheetControl1.Options.View.ShowPrintArea = false;
+            this.spreadsheetControl1.Options.View.ShowRowHeaders = false;
+            LimitToTwoColumns();
+
+        }
+
+        /// <summary>
+        /// 闄愬埗 SpreadsheetControl 鍙兘鏈変袱鍒楋紙A 鍜� B锛�
+        /// </summary>
+        private void LimitToTwoColumns()
+        {
+            Worksheet worksheet = this.spreadsheetControl1.Document.Worksheets[0];
+
+            // 闅愯棌浠� C 鍒楀紑濮嬬殑鎵�鏈夊垪
+            for (int col = 3; col <= worksheet.Columns.LastUsedIndex + 1; col++)
+            {
+                worksheet.Columns[col].Visible = false;
+            }
+
+            // 绂佺敤鍒楁彃鍏ュ拰鍒犻櫎
+            //this.spreadsheetControl1.Options.Behavior.allow = false;
+            //this.spreadsheetControl1.Options.Behavior.ColumnDelete = false;
+
+            //// 绂佺敤鍒楄皟鏁村搴�
+            //this.spreadsheetControl1.Options.Behavior..ColumnResize = false;
+    
+            // 璁剧疆鍒楀
+            worksheet.Columns["A"].WidthInPixels = 100;
+            worksheet.Columns["B"].WidthInPixels = 100;
+
+            // 淇濇姢宸ヤ綔琛紝闃叉鐢ㄦ埛淇敼鍒楁垨琛�
+            worksheet.Protect("password", WorksheetProtectionPermissions.Default);
+        }
+
+        private void btnOk_Click(object sender, EventArgs e)
+        {
+        
+            var data = new List<(double, double)>();
+            Worksheet worksheet = this.spreadsheetControl1.Document.Worksheets.ActiveWorksheet;
+
+            int rowCount = worksheet.Rows.LastUsedIndex + 1;
+
+            for (int row = 0; row < rowCount; row++)
+            { 
+                double value1 = worksheet.Columns[0][row].Value.NumericValue;
+                double value2 = worksheet.Columns[1][row].Value.NumericValue;
+                data.Add((value1, value2));
+            }
+
+            var a = data;
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+
+
+    }
+}
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.resx b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/ClipboardCurveExcelDlg.resx
@@ -0,0 +1,120 @@
+锘�<?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>
+</root>
\ No newline at end of file
diff --git "a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/\344\275\277\347\224\250\351\273\217\350\264\264\346\235\277.txt" "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/\344\275\277\347\224\250\351\273\217\350\264\264\346\235\277.txt"
new file mode 100644
index 0000000..9759dba
--- /dev/null
+++ "b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard -update/\344\275\277\347\224\250\351\273\217\350\264\264\346\235\277.txt"
@@ -0,0 +1,99 @@
+     private void barBtnCopyFromClipboard_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            List<List<double?>> list = null;
+            if (!ClipboardCurveTextUIHelper.CopyDouble(out list))
+                return;
+            if (list == null || list.Count < 1)
+                return;
+            if (list.Count < 1)
+            {
+                XtraMessageBox.Show(("鏁版嵁涓嶅畬鏁�"));
+                return;
+            }
+
+            if (list.Count == 1)
+            {
+                #region 鍗曞垪
+                var cels = dataGridView1.SelectedCells.Count;
+                if (cels == 0)
+                    return;
+                var sel_cel = dataGridView1.SelectedCells[0];
+                if (sel_cel.ColumnIndex == 0)
+                {
+                    dataGridView1.Rows.Clear();
+
+                    for (int i = 0; i < list[0].Count; i++)
+                    {
+                        dataGridView1.Rows.Add(list[0][i], "", "", "");
+                    }
+                }
+                else if (sel_cel.ColumnIndex == 1)
+                {
+                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
+                    {
+                        if (dataGridView1.Rows[i].Cells[0].Value == null)
+                            continue;
+                        if (i < list[0].Count)
+                            dataGridView1.Rows[i].Cells[1].Value = list[0][i];
+                    }
+                }
+                else if (sel_cel.ColumnIndex == 2)
+                {
+                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
+                    {
+                        if (dataGridView1.Rows[i].Cells[0].Value == null)
+                            continue;
+                        if (i < list[0].Count)
+                            dataGridView1.Rows[i].Cells[2].Value = list[0][i];
+                    }
+                }
+                else if (sel_cel.ColumnIndex == 3)
+                {
+                    for (int i = 0; i < dataGridView1.Rows.Count; i++)
+                    {
+                        if (dataGridView1.Rows[i].Cells[0].Value == null)
+                            continue;
+                        if (i < list[0].Count)
+                            dataGridView1.Rows[i].Cells[3].Value = list[0][i];
+                    }
+                }
+                #endregion
+            }
+            if (list.Count == 2 && list[0].Count == list[1].Count)
+            {
+                #region 2鍒�
+                dataGridView1.Rows.Clear();
+
+                for (int i = 0; i < list[0].Count; i++)
+                {
+                    dataGridView1.Rows.Add(list[0][i], list[1][i], "", "");
+                }
+                #endregion
+            }
+            if (list.Count == 3 && list[0].Count == list[1].Count && list[0].Count == list[2].Count)
+            {
+                #region 3鍒�
+                dataGridView1.Rows.Clear();
+
+                for (int i = 0; i < list[0].Count; i++)
+                {
+                    dataGridView1.Rows.Add(list[0][i], list[1][i], list[2][i], "");
+                }
+                #endregion
+            }
+            if (list.Count == 4 && list[0].Count == list[1].Count && list[0].Count == list[2].Count && list[0].Count == list[3].Count)
+            {
+                #region 4鍒�
+                dataGridView1.Rows.Clear();
+
+                for (int i = 0; i < list[0].Count; i++)
+                {
+                    dataGridView1.Rows.Add(list[0][i], list[1][i], list[2][i], list[3][i]);
+                }
+
+
+                #endregion
+            }
+ 
+        }
+
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.Designer.cs
similarity index 99%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.Designer.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.Designer.cs
index b8f6d4f..70108dea 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.Designer.cs
@@ -1,4 +1,4 @@
-锘縩amespace XPump.WinFrmUI
+锘縩amespace Yw.WinFrmUI.Phart
 {
     partial class ClipboardCurveTextSelDlg
     {
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.cs
similarity index 87%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.cs
index 45d2533..15b9d14 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.cs
@@ -8,7 +8,7 @@
 using System.Text;
 using System.Windows.Forms;
 
-namespace XPump.WinFrmUI
+namespace Yw.WinFrmUI.Phart
 {
     public partial class ClipboardCurveTextSelDlg : XtraForm
     {
@@ -19,8 +19,8 @@
         }
         private void ClipboardCurveTextSelDlg_Load(object sender, EventArgs e)
         {
-            this.rgSeparator.SelectedIndex = XPump.WinFrmUI.Properties.Settings.Default.LastSelClipboard1;
-            this.rgDirection.SelectedIndex = XPump.WinFrmUI.Properties.Settings.Default.LastSelClipboard2;
+            this.rgSeparator.SelectedIndex =0;
+            this.rgDirection.SelectedIndex =0;
 
             //if (SPump.WinFrmUI.Localization.IsCN)
             //    return;
@@ -78,10 +78,10 @@
             else
                 Direction = eDirection.绾靛悜;
 
-            XPump.WinFrmUI.Properties.Settings.Default.LastSelClipboard1 =
-                     this.rgSeparator.SelectedIndex;
-            XPump.WinFrmUI.Properties.Settings.Default.LastSelClipboard2 =
-                this.rgDirection.SelectedIndex;
+            //Yw.WinFrmUI.Phart.Properties.Settings.Default.LastSelClipboard1 =
+            //         this.rgSeparator.SelectedIndex;
+            //Yw.WinFrmUI.Phart.Properties.Settings.Default.LastSelClipboard2 =
+            //    this.rgDirection.SelectedIndex;
             var neglectList = new List<string>();
             if (!string.IsNullOrEmpty(txtNeglectChar1.Text))
                 neglectList.Add(this.txtNeglectChar1.Text);
@@ -90,7 +90,7 @@
             if (!string.IsNullOrEmpty(txtNeglectChar3.Text))
                 neglectList.Add(this.txtNeglectChar3.Text);
             NeglectList = neglectList;
-            XPump.WinFrmUI.Properties.Settings.Default.Save();
+            //Yw.WinFrmUI.Phart.Properties.Settings.Default.Save();
 
             this.DialogResult = DialogResult.OK;
             this.Close();
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.resx b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.resx
similarity index 100%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextSelDlg.resx
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextSelDlg.resx
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextUIHelper.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextUIHelper.cs
similarity index 98%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextUIHelper.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextUIHelper.cs
index a5f95dd..96dda80 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardCurveTextUIHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardCurveTextUIHelper.cs
@@ -4,7 +4,7 @@
 using System.Text;
 using System.Windows.Forms;
 
-namespace XPump.WinFrmUI
+namespace Yw.WinFrmUI.Phart
 {
     /// <summary>
     /// 鏇茬嚎UI鍓垏鏉胯緟鍔╃被
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardTextHelper.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardTextHelper.cs
similarity index 98%
rename from WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardTextHelper.cs
rename to WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardTextHelper.cs
index cdad0f4..8b67833 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/Clipboard/ClipboardTextHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/99-temp/Clipboard/ClipboardTextHelper.cs
@@ -4,7 +4,7 @@
 using System.Text;
 using System.Windows.Forms;
 
-namespace XPump.WinFrmUI
+namespace Yw.WinFrmUI.Phart
 {
     /// <summary>
     /// 鍓垏鏉挎枃鏈緟鍔╃被
@@ -154,8 +154,7 @@
             }
             return colsList;
         }
-
-
+         
 
 
     }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.Designer.cs
index 7071dd1..6537c42 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.Designer.cs
@@ -59,5 +59,105 @@
                 resourceCulture = value;
             }
         }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage business_calculator {
+            get {
+                object obj = ResourceManager.GetObject("business_calculator", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage cut {
+            get {
+                object obj = ResourceManager.GetObject("cut", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage cut1 {
+            get {
+                object obj = ResourceManager.GetObject("cut1", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage insertgroupfooter {
+            get {
+                object obj = ResourceManager.GetObject("insertgroupfooter", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage inserttablerowsbelow {
+            get {
+                object obj = ResourceManager.GetObject("inserttablerowsbelow", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage inserttablerowsbelow1 {
+            get {
+                object obj = ResourceManager.GetObject("inserttablerowsbelow1", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage inserttablerowsbelow2 {
+            get {
+                object obj = ResourceManager.GetObject("inserttablerowsbelow2", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage removefooter {
+            get {
+                object obj = ResourceManager.GetObject("removefooter", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage removefooter1 {
+            get {
+                object obj = ResourceManager.GetObject("removefooter1", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 DevExpress.Utils.Svg.SvgImage 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static DevExpress.Utils.Svg.SvgImage removefooter2 {
+            get {
+                object obj = ResourceManager.GetObject("removefooter2", resourceCulture);
+                return ((DevExpress.Utils.Svg.SvgImage)(obj));
+            }
+        }
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.resx b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.resx
index 967d922..9c6fffb 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Properties/Resources.resx
@@ -121,4 +121,31 @@
   <data name="insertgroupfooter" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\insertgroupfooter.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
   </data>
+  <data name="business_calculator" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\business_calculator.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="inserttablerowsbelow" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\inserttablerowsbelow.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="removefooter" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\removefooter.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="inserttablerowsbelow1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\inserttablerowsbelow1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="removefooter1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\removefooter1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="inserttablerowsbelow2" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\inserttablerowsbelow2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="removefooter2" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\removefooter2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="cut" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\cut.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
+  <data name="cut1" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\cut1.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2, Version=23.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/business_calculator.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/business_calculator.svg
new file mode 100644
index 0000000..6571af6
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/business_calculator.svg
@@ -0,0 +1,18 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Blue{fill:#1177D7;}
+	.Green{fill:#039C23;}
+	.Yellow{fill:#FFB115;}
+	.Black{fill:#727272;}
+	.White{fill:#FFFFFF;}
+	.Red{fill:#D11C1C;}
+	.st0{opacity:0.75;}
+</style>
+  <g id="Calculator">
+    <path d="M29,0H16v14h14V1C30,0.5,29.5,0,29,0z M28,8H18V6h10V8z" class="Black" />
+    <path d="M0,29c0,0.5,0.5,1,1,1h13V16H0V29z M2.8,20.2l1.4-1.4L7,21.6l2.8-2.8l1.4,1.4L8.4,23l2.8,2.8l-1.4,1.4   L7,24.4l-2.8,2.8l-1.4-1.4L5.6,23L2.8,20.2z" class="Black" />
+    <path d="M0,1v13h14V0H1C0.5,0,0,0.5,0,1z M2,6h4V2h2v4h4v2H8v4H6V8H2V6z" class="Black" />
+    <path d="M16,16v14h13c0.5,0,1-0.5,1-1V16H16z M28,26H18v-2h10V26z M28,22H18v-2h10V22z" class="Yellow" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut.svg
new file mode 100644
index 0000000..501f751
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut.svg
@@ -0,0 +1,19 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Yellow{fill:#FFB115;}
+	.Red{fill:#D11C1C;}
+	.Blue{fill:#1177D7;}
+	.Green{fill:#039C23;}
+	.Black{fill:#727272;}
+	.White{fill:#FFFFFF;}
+	.st0{opacity:0.5;}
+	.st1{display:none;}
+	.st2{display:inline;fill:#039C23;}
+	.st3{display:inline;fill:#D11C1C;}
+	.st4{display:inline;fill:#727272;}
+</style>
+  <g id="Cut">
+    <path d="M16.4,11.6L26,2l-5.8,13.3L16.4,11.6z M12,23c0,2.8-2.2,5-5,5s-5-2.2-5-5s2.2-5,5-5S12,20.2,12,23z M10,23   c0-1.7-1.3-3-3-3s-3,1.3-3,3s1.3,3,3,3S10,24.7,10,23z M28,23c0,2.8-2.2,5-5,5s-5-2.2-5-5c0-0.9,0.2-1.7,0.6-2.4L16,18h-5L4,2   l16.6,16.6c0.7-0.4,1.5-0.6,2.4-0.6C25.8,18,28,20.2,28,23z M26,23c0-1.7-1.3-3-3-3s-3,1.3-3,3s1.3,3,3,3S26,24.7,26,23z" class="Black" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut1.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut1.svg
new file mode 100644
index 0000000..501f751
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/cut1.svg
@@ -0,0 +1,19 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Yellow{fill:#FFB115;}
+	.Red{fill:#D11C1C;}
+	.Blue{fill:#1177D7;}
+	.Green{fill:#039C23;}
+	.Black{fill:#727272;}
+	.White{fill:#FFFFFF;}
+	.st0{opacity:0.5;}
+	.st1{display:none;}
+	.st2{display:inline;fill:#039C23;}
+	.st3{display:inline;fill:#D11C1C;}
+	.st4{display:inline;fill:#727272;}
+</style>
+  <g id="Cut">
+    <path d="M16.4,11.6L26,2l-5.8,13.3L16.4,11.6z M12,23c0,2.8-2.2,5-5,5s-5-2.2-5-5s2.2-5,5-5S12,20.2,12,23z M10,23   c0-1.7-1.3-3-3-3s-3,1.3-3,3s1.3,3,3,3S10,24.7,10,23z M28,23c0,2.8-2.2,5-5,5s-5-2.2-5-5c0-0.9,0.2-1.7,0.6-2.4L16,18h-5L4,2   l16.6,16.6c0.7-0.4,1.5-0.6,2.4-0.6C25.8,18,28,20.2,28,23z M26,23c0-1.7-1.3-3-3-3s-3,1.3-3,3s1.3,3,3,3S26,24.7,26,23z" class="Black" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow.svg
new file mode 100644
index 0000000..52451ab
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow.svg
@@ -0,0 +1,14 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="InsertTableRowsBelow" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Black{fill:#727272;}
+	.Yellow{fill:#FFB115;}
+	.Blue{fill:#1177D7;}
+	.st0{opacity:0.5;}
+</style>
+  <g class="st0">
+    <path d="M10,10H2V4h8V10z M20,4h-8v6h8V4z M30,4h-8v6h8V4z M10,20H2v6h8V20z M30,20h-8v6h8V20z" class="Black" />
+  </g>
+  <path d="M30,12H2v6h28V12z" class="Yellow" />
+  <polygon points="20,24 16,28 12,24 14,24 14,20 18,20 18,24 " class="Blue" />
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow1.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow1.svg
new file mode 100644
index 0000000..52451ab
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow1.svg
@@ -0,0 +1,14 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="InsertTableRowsBelow" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Black{fill:#727272;}
+	.Yellow{fill:#FFB115;}
+	.Blue{fill:#1177D7;}
+	.st0{opacity:0.5;}
+</style>
+  <g class="st0">
+    <path d="M10,10H2V4h8V10z M20,4h-8v6h8V4z M30,4h-8v6h8V4z M10,20H2v6h8V20z M30,20h-8v6h8V20z" class="Black" />
+  </g>
+  <path d="M30,12H2v6h28V12z" class="Yellow" />
+  <polygon points="20,24 16,28 12,24 14,24 14,20 18,20 18,24 " class="Blue" />
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow2.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow2.svg
new file mode 100644
index 0000000..52451ab
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/inserttablerowsbelow2.svg
@@ -0,0 +1,14 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="InsertTableRowsBelow" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Black{fill:#727272;}
+	.Yellow{fill:#FFB115;}
+	.Blue{fill:#1177D7;}
+	.st0{opacity:0.5;}
+</style>
+  <g class="st0">
+    <path d="M10,10H2V4h8V10z M20,4h-8v6h8V4z M30,4h-8v6h8V4z M10,20H2v6h8V20z M30,20h-8v6h8V20z" class="Black" />
+  </g>
+  <path d="M30,12H2v6h28V12z" class="Yellow" />
+  <polygon points="20,24 16,28 12,24 14,24 14,20 18,20 18,24 " class="Blue" />
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter.svg
new file mode 100644
index 0000000..e3a183b
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter.svg
@@ -0,0 +1,22 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Black{fill:#727272;}
+	.Yellow{fill:#FFB115;}
+	.Blue{fill:#1177D7;}
+	.Green{fill:#039C23;}
+	.Red{fill:#D11C1C;}
+	.White{fill:#FFFFFF;}
+	.st0{opacity:0.75;}
+	.st1{opacity:0.5;}
+	.st2{opacity:0.25;}
+</style>
+  <g id="AddFooter_1_">
+    <rect x="4" y="18" width="14" height="6" class="Yellow" />
+    <g class="st0">
+      <path d="M18,8H4V6h14V8z M18,10H4v2h14V10z M18,14H4v2h14V14z" class="Black" />
+    </g>
+    <path d="M20.2,26H20h-2H2V4h18v10.2l2-2V3c0-0.5-0.5-1-1-1H1C0.5,2,0,2.5,0,3v24c0,0.5,0.5,1,1,1h20   c0.3,0,0.6-0.2,0.8-0.4L20.2,26z" class="Black" />
+    <polygon points="28,15 25,18 22,15 20,17 23,20 20,23 22,25 25,22 28,25 30,23 27,20 30,17  " class="Red" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter1.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter1.svg
new file mode 100644
index 0000000..e3a183b
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter1.svg
@@ -0,0 +1,22 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Black{fill:#727272;}
+	.Yellow{fill:#FFB115;}
+	.Blue{fill:#1177D7;}
+	.Green{fill:#039C23;}
+	.Red{fill:#D11C1C;}
+	.White{fill:#FFFFFF;}
+	.st0{opacity:0.75;}
+	.st1{opacity:0.5;}
+	.st2{opacity:0.25;}
+</style>
+  <g id="AddFooter_1_">
+    <rect x="4" y="18" width="14" height="6" class="Yellow" />
+    <g class="st0">
+      <path d="M18,8H4V6h14V8z M18,10H4v2h14V10z M18,14H4v2h14V14z" class="Black" />
+    </g>
+    <path d="M20.2,26H20h-2H2V4h18v10.2l2-2V3c0-0.5-0.5-1-1-1H1C0.5,2,0,2.5,0,3v24c0,0.5,0.5,1,1,1h20   c0.3,0,0.6-0.2,0.8-0.4L20.2,26z" class="Black" />
+    <polygon points="28,15 25,18 22,15 20,17 23,20 20,23 22,25 25,22 28,25 30,23 27,20 30,17  " class="Red" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter2.svg b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter2.svg
new file mode 100644
index 0000000..e3a183b
--- /dev/null
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Resources/removefooter2.svg
@@ -0,0 +1,22 @@
+锘�<?xml version='1.0' encoding='UTF-8'?>
+<svg x="0px" y="0px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" id="Layer_1" style="enable-background:new 0 0 32 32">
+  <style type="text/css">
+	.Black{fill:#727272;}
+	.Yellow{fill:#FFB115;}
+	.Blue{fill:#1177D7;}
+	.Green{fill:#039C23;}
+	.Red{fill:#D11C1C;}
+	.White{fill:#FFFFFF;}
+	.st0{opacity:0.75;}
+	.st1{opacity:0.5;}
+	.st2{opacity:0.25;}
+</style>
+  <g id="AddFooter_1_">
+    <rect x="4" y="18" width="14" height="6" class="Yellow" />
+    <g class="st0">
+      <path d="M18,8H4V6h14V8z M18,10H4v2h14V10z M18,14H4v2h14V14z" class="Black" />
+    </g>
+    <path d="M20.2,26H20h-2H2V4h18v10.2l2-2V3c0-0.5-0.5-1-1-1H1C0.5,2,0,2.5,0,3v24c0,0.5,0.5,1,1,1h20   c0.3,0,0.6-0.2,0.8-0.4L20.2,26z" class="Black" />
+    <polygon points="28,15 25,18 22,15 20,17 23,20 20,23 22,25 25,22 28,25 30,23 27,20 30,17  " class="Red" />
+  </g>
+</svg>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
index 21f1188..8a9b0d3 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
@@ -10,7 +10,6 @@
   <ItemGroup>
     <Compile Remove="01-pump\04-special\04-variable-speed\**" />
     <Compile Remove="02-valve\**" />
-    <Compile Remove="99-temp\Clipboard\**" />
     <Compile Remove="bak2\**" />
     <Compile Remove="bak3\**" />
     <Compile Remove="v1 - 澶嶅埗\**" />
@@ -18,7 +17,6 @@
     <Compile Remove="v2\**" />
     <EmbeddedResource Remove="01-pump\04-special\04-variable-speed\**" />
     <EmbeddedResource Remove="02-valve\**" />
-    <EmbeddedResource Remove="99-temp\Clipboard\**" />
     <EmbeddedResource Remove="bak2\**" />
     <EmbeddedResource Remove="bak3\**" />
     <EmbeddedResource Remove="v1 - 澶嶅埗\**" />
@@ -26,7 +24,6 @@
     <EmbeddedResource Remove="v2\**" />
     <None Remove="01-pump\04-special\04-variable-speed\**" />
     <None Remove="02-valve\**" />
-    <None Remove="99-temp\Clipboard\**" />
     <None Remove="bak2\**" />
     <None Remove="bak3\**" />
     <None Remove="v1 - 澶嶅埗\**" />
@@ -34,7 +31,6 @@
     <None Remove="v2\**" />
     <Page Remove="01-pump\04-special\04-variable-speed\**" />
     <Page Remove="02-valve\**" />
-    <Page Remove="99-temp\Clipboard\**" />
     <Page Remove="bak2\**" />
     <Page Remove="bak3\**" />
     <Page Remove="v1 - 澶嶅埗\**" />
@@ -139,6 +135,9 @@
     <Compile Update="03-valve\02-edit\ValveEditChart.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Update="99-temp\Clipboard\ClipboardCurveTextSelDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
     <Compile Update="Properties\Resources.Designer.cs">
       <DesignTime>True</DesignTime>
       <AutoGen>True</AutoGen>
@@ -157,7 +156,6 @@
     <Folder Include="00-core\03-view-model\02-paras\disp-paras\" />
     <Folder Include="01-pump\03-import\01-excel\" />
     <Folder Include="02-universal\03-import\01-excel\" />
-    <Folder Include="99-temp\" />
     <Folder Include="Properties\DataSources\" />
   </ItemGroup>
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user
index 1995ed1..03ef843 100644
--- a/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user
+++ b/WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj.user
@@ -41,5 +41,8 @@
     <Compile Update="03-valve\02-edit\ValveChartExcelEditCtrl.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Update="99-temp\Clipboard -update\ClipboardCurveExcelDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
   </ItemGroup>
 </Project>
\ No newline at end of file

--
Gitblit v1.9.3