From 2b31b7e3926134da96d384ab3bdac345691a179c Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期五, 10 一月 2025 10:48:45 +0800
Subject: [PATCH] 优化权限

---
 WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/AuthHelper.cs                                                      |  365 +++++++++++++++
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPart.cs                                                  |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrViewModel.cs                                 |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.Designer.cs                                  |   67 +-
 WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.Designer.cs                                            |   94 +-
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/01-info/cloud/SelectXhsProjectTransferFileViewModel.cs |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.cs                             |    8 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroup.cs                                                 |    0 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpSeries.cs                                                |    0 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/02-adapting/AdaptingViewModel.cs                                         |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/09-manufacturer/ManufacturerMainPage.cs                                  |    4 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.Designer.cs                    |  198 ++++----
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ThreelinkMatchingViewModel.cs        |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/CurrentPumpPartMainViewModel.cs                     |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.Designer.cs                    |   20 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.resx                  |    4 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpType.cs                                                  |    0 
 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/03-grid/PhartDiagramRelationGridItemViewModel.cs         |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ValveMatchingViewModel.cs            |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/TreelistViewModel.cs                                |    2 
 Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj                                              |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs                           |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/EditPackagePartPropDlg.cs                                     |    8 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.cs                    |    4 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.Designer.cs                                   |   79 +++
 WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserAccountViewModel.cs                                            |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/02-main/PackageViewModel.cs                                   |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/03-equipment/EquipmentViewModel.cs                            |    2 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SelectCorprationListCtrl.cs                              |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.Designer.cs           |   26 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.resx                                          |  120 +++++
 WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj.user                                    |    3 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.Designer.cs                    |   22 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SysTypeTreeListLookUpEdit.cs                             |    2 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.cs                                            |   21 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.resx                                         |    4 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs                                                     |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/CurrentPackagePartMainViewModel.cs                            |    2 
 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/01-list/PhartDiagramRelationListItemViewModel.cs         |    2 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPropContent.cs                                           |    0 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/09-Manufacturer/ManufacurerViewModel.cs                                  |    2 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj                                         |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.resx                           |    4 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/PageAuthExtensions.cs                                              |   10 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs                                                  |    0 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.resx                                                   |   16 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ElbowMatchingViewModel.cs            |    2 
 WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/01-view/ValveChartViewCtrl.cs                            |   11 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs                       |    2 
 Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.cs                                                             |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs                                       |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.cs                             |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PumpMatchingViewModel.cs             |    2 
 WinFrmUI/PBS.WinFrmUI.WE.Core/WaterUtensil/WaterUtensilMgr.cs                                                   |    6 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs                                           |    2 
 WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/ControlAssemblyInfo.cs                                             |   33 +
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.Designer.cs                   |  152 +++---
 WinFrmUI/PBS.WinFrmUI.WE.Core/WaterWE/WaterEquivalentMgr.cs                                                     |    2 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.resx                          |    4 
 WinFrmUI/HStation.WinFrmUI.Hydro.Core/00-core/HydroQ3dTransferHelper.cs                                         |   24 
 WinFrmUI/HStation.WinFrmUI.Core/00-UICore/01-用户登陆类/GlobalParas.cs                                               |    6 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/FourlinkMatchingViewModel.cs         |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PipeMatchingViewModel.cs             |    2 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs                                         |    0 
 BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs                                       |    0 
 WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.resx                           |    4 
 WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysCatalogManage/00-ViewModel/SysTypeTreeListViewModel.cs              |    2 
 67 files changed, 1,008 insertions(+), 375 deletions(-)

diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpGroup.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroup.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpGroup.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroup.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpGroupAndMainMap.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpGroupAndMainMap.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpGroupAndMainMap.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpMain.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpMain.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpPart.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPart.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpPart.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPart.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpPropContent.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPropContent.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpPropContent.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpPropContent.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpSeries.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpSeries.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpSeries.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpSeries.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpType.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpType.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpType.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpType.cs
diff --git a/BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpTypeSeriesMap.cs b/BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs
similarity index 100%
rename from BLL/HStation.BLL.Assets.Core/02-httpclient/01-PumpProduct/PumpTypeSeriesMap.cs
rename to BLL/HStation.BLL.Assets.Core/02-httpclient/01-Pump/PumpTypeSeriesMap.cs
diff --git a/Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj b/Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj
index bb96a1b..ddf1c31 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj
+++ b/Desktop/HStation.Desktop.Xhs.Core/HStation.Desktop.Xhs.Core.csproj
@@ -16,7 +16,7 @@
 
   <ItemGroup>
     <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
-    <PackageReference Include="Yw.BLL.Auth.Core" Version="3.3.6" />
+    <PackageReference Include="Yw.BLL.Auth.Core" Version="3.3.7" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.cs b/Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.cs
index ca4c7fe..c856b10 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.cs
+++ b/Desktop/HStation.Desktop.Xhs.Core/Login/LoginFrm.cs
@@ -1,4 +1,5 @@
 锘縰sing DevExpress.XtraEditors;
+using Yw;
 using Yw.WinFrmUI;
 
 namespace HStation.Desktop
@@ -127,8 +128,9 @@
                 settings.ExpireTime = DateTime.Now.AddMonths(1);
             }
             settings.Save();
-
             var login = new GlobalParas(result);
+            var authTreelist = await BLLFactory<Yw.BLL.MenuAuthority>.Instance.GetMenuTreeList(GlobalParas._GlobalParas.SoftwareID, GlobalParas._GlobalParas.UserID);
+
             this.DialogResult = DialogResult.OK;
             this.Close();
         }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/CurrentPumpPartMainViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/CurrentPumpPartMainViewModel.cs
index 1ca9e59..c86287c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/CurrentPumpPartMainViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/CurrentPumpPartMainViewModel.cs
@@ -25,7 +25,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/TreelistViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/TreelistViewModel.cs
index e79c4d6..118cb79 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/TreelistViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/00-ViewModel/TreelistViewModel.cs
@@ -6,7 +6,7 @@
     {
         /*      public CurrentTreeViewModel(CurrentTreeViewModel rhs) : base()
               {
-                  this.ID = rhs.ID;
+                  this.UserID = rhs.UserID;
                   this.Name = rhs.Name;
                   this.IsType = true;
                   this.IsGroup = false;
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 8a484f7..29e4db3 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
@@ -135,7 +135,7 @@
             {
                 if (_allPropList != null)
                 {
-                    // 鏌ユ壘 _allPropList 涓槸鍚﹀瓨鍦ㄤ笌 item.ID 鍖归厤鐨勯」
+                    // 鏌ユ壘 _allPropList 涓槸鍚﹀瓨鍦ㄤ笌 item.UserID 鍖归厤鐨勯」
                     var prop = _allPropList.FirstOrDefault(x => x.PropID == item.ID);
                     // 濡傛灉鎵惧埌鍖归厤鐨勯」锛屽垯鏇存柊鍏� PropValue
                     if (prop != null)
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.Designer.cs
index 2e3ea29..be268f6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.Designer.cs
@@ -28,7 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
-            components = new System.ComponentModel.Container();
+            components = new Container();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             BtnOk = new DevExpress.XtraEditors.SimpleButton();
             simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
@@ -67,43 +67,43 @@
             layoutControlGroup3 = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlGroup4 = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem27 = new DevExpress.XtraLayout.LayoutControlItem();
-            ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
+            ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)TextEditName.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)DescriptionTextEdit.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditErosion.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedPower.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedeffciency.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditD2.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditTagName.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedHead.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedFlow.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedSpeed.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)tabbedControlGroup1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem10).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem12).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem11).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)dxErrorProvider1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem13).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)imageComboBoxEdit1.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem15).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)imageComboBoxEdit2.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)tabbedControlGroup2).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup3).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup4).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem27).BeginInit();
+            ((ISupportInitialize)TextEditName.Properties).BeginInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)TextEditErosion.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedPower.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedeffciency.Properties).BeginInit();
+            ((ISupportInitialize)TextEditD2.Properties).BeginInit();
+            ((ISupportInitialize)TextEditTagName.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedHead.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedFlow.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedSpeed.Properties).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            ((ISupportInitialize)emptySpaceItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem8).BeginInit();
+            ((ISupportInitialize)tabbedControlGroup1).BeginInit();
+            ((ISupportInitialize)layoutControlGroup1).BeginInit();
+            ((ISupportInitialize)layoutControlItem5).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem9).BeginInit();
+            ((ISupportInitialize)layoutControlItem6).BeginInit();
+            ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem10).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
+            ((ISupportInitialize)layoutControlItem12).BeginInit();
+            ((ISupportInitialize)layoutControlItem11).BeginInit();
+            ((ISupportInitialize)dxErrorProvider1).BeginInit();
+            ((ISupportInitialize)layoutControlItem13).BeginInit();
+            ((ISupportInitialize)imageComboBoxEdit1.Properties).BeginInit();
+            ((ISupportInitialize)layoutControlItem15).BeginInit();
+            ((ISupportInitialize)imageComboBoxEdit2.Properties).BeginInit();
+            ((ISupportInitialize)tabbedControlGroup2).BeginInit();
+            ((ISupportInitialize)layoutControlGroup3).BeginInit();
+            ((ISupportInitialize)layoutControlGroup4).BeginInit();
+            ((ISupportInitialize)layoutControlItem27).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
@@ -171,35 +171,35 @@
             // 
             // TextEditErosion
             // 
-            TextEditErosion.Location = new Point(441, 56);
+            TextEditErosion.Location = new Point(441, 8);
             TextEditErosion.Name = "TextEditErosion";
             TextEditErosion.Size = new Size(212, 20);
             TextEditErosion.StyleController = layoutControl1;
-            TextEditErosion.TabIndex = 6;
+            TextEditErosion.TabIndex = 2;
             // 
             // TextEditRatedPower
             // 
-            TextEditRatedPower.Location = new Point(441, 32);
+            TextEditRatedPower.Location = new Point(117, 56);
             TextEditRatedPower.Name = "TextEditRatedPower";
-            TextEditRatedPower.Size = new Size(212, 20);
+            TextEditRatedPower.Size = new Size(211, 20);
             TextEditRatedPower.StyleController = layoutControl1;
-            TextEditRatedPower.TabIndex = 4;
+            TextEditRatedPower.TabIndex = 5;
             // 
             // TextEditRatedeffciency
             // 
-            TextEditRatedeffciency.Location = new Point(441, 8);
+            TextEditRatedeffciency.Location = new Point(441, 56);
             TextEditRatedeffciency.Name = "TextEditRatedeffciency";
             TextEditRatedeffciency.Size = new Size(212, 20);
             TextEditRatedeffciency.StyleController = layoutControl1;
-            TextEditRatedeffciency.TabIndex = 2;
+            TextEditRatedeffciency.TabIndex = 6;
             // 
             // TextEditD2
             // 
-            TextEditD2.Location = new Point(441, 80);
+            TextEditD2.Location = new Point(441, 32);
             TextEditD2.Name = "TextEditD2";
             TextEditD2.Size = new Size(212, 20);
             TextEditD2.StyleController = layoutControl1;
-            TextEditD2.TabIndex = 8;
+            TextEditD2.TabIndex = 4;
             // 
             // TextEditTagName
             // 
@@ -211,27 +211,27 @@
             // 
             // TextEditRatedHead
             // 
-            TextEditRatedHead.Location = new Point(117, 80);
+            TextEditRatedHead.Location = new Point(441, 80);
             TextEditRatedHead.Name = "TextEditRatedHead";
-            TextEditRatedHead.Size = new Size(211, 20);
+            TextEditRatedHead.Size = new Size(212, 20);
             TextEditRatedHead.StyleController = layoutControl1;
-            TextEditRatedHead.TabIndex = 7;
+            TextEditRatedHead.TabIndex = 8;
             // 
             // TextEditRatedFlow
             // 
-            TextEditRatedFlow.Location = new Point(117, 56);
+            TextEditRatedFlow.Location = new Point(117, 32);
             TextEditRatedFlow.Name = "TextEditRatedFlow";
             TextEditRatedFlow.Size = new Size(211, 20);
             TextEditRatedFlow.StyleController = layoutControl1;
-            TextEditRatedFlow.TabIndex = 5;
+            TextEditRatedFlow.TabIndex = 3;
             // 
             // TextEditRatedSpeed
             // 
-            TextEditRatedSpeed.Location = new Point(117, 32);
+            TextEditRatedSpeed.Location = new Point(117, 80);
             TextEditRatedSpeed.Name = "TextEditRatedSpeed";
             TextEditRatedSpeed.Size = new Size(211, 20);
             TextEditRatedSpeed.StyleController = layoutControl1;
-            TextEditRatedSpeed.TabIndex = 3;
+            TextEditRatedSpeed.TabIndex = 7;
             // 
             // Root
             // 
@@ -239,7 +239,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[] { layoutControlItem4, emptySpaceItem1, layoutControlItem8, tabbedControlGroup1, layoutControlItem1, layoutControlItem9, layoutControlItem6, layoutControlItem7, layoutControlItem10, layoutControlItem3, layoutControlItem2, layoutControlItem12, layoutControlItem11 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem4, emptySpaceItem1, layoutControlItem8, tabbedControlGroup1, layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem10, layoutControlItem11, layoutControlItem12, layoutControlItem9, layoutControlItem6, layoutControlItem7 });
             Root.Name = "Root";
             Root.Padding = new DevExpress.XtraLayout.Utils.Padding(6, 6, 6, 6);
             Root.Size = new Size(661, 428);
@@ -314,7 +314,7 @@
             // 
             layoutControlItem9.AllowHtmlStringInCaption = true;
             layoutControlItem9.Control = TextEditRatedeffciency;
-            layoutControlItem9.Location = new Point(324, 0);
+            layoutControlItem9.Location = new Point(324, 48);
             layoutControlItem9.Name = "layoutControlItem9";
             layoutControlItem9.Size = new Size(325, 24);
             layoutControlItem9.Text = "<color=red>*</color>棰濆畾鏁堢巼(%):";
@@ -333,9 +333,9 @@
             // 
             layoutControlItem7.AllowHtmlStringInCaption = true;
             layoutControlItem7.Control = TextEditRatedHead;
-            layoutControlItem7.Location = new Point(0, 72);
+            layoutControlItem7.Location = new Point(324, 72);
             layoutControlItem7.Name = "layoutControlItem7";
-            layoutControlItem7.Size = new Size(324, 24);
+            layoutControlItem7.Size = new Size(325, 24);
             layoutControlItem7.Text = "<color=red>*</color>棰濆畾鎵▼(m):";
             layoutControlItem7.TextSize = new Size(97, 14);
             // 
@@ -343,9 +343,9 @@
             // 
             layoutControlItem10.AllowHtmlStringInCaption = true;
             layoutControlItem10.Control = TextEditRatedPower;
-            layoutControlItem10.Location = new Point(324, 24);
+            layoutControlItem10.Location = new Point(0, 48);
             layoutControlItem10.Name = "layoutControlItem10";
-            layoutControlItem10.Size = new Size(325, 24);
+            layoutControlItem10.Size = new Size(324, 24);
             layoutControlItem10.Text = "<color=red>*</color>棰濆畾鍔熺巼(KW):";
             layoutControlItem10.TextSize = new Size(97, 14);
             // 
@@ -353,7 +353,7 @@
             // 
             layoutControlItem3.AllowHtmlStringInCaption = true;
             layoutControlItem3.Control = TextEditRatedFlow;
-            layoutControlItem3.Location = new Point(0, 48);
+            layoutControlItem3.Location = new Point(0, 24);
             layoutControlItem3.Name = "layoutControlItem3";
             layoutControlItem3.Size = new Size(324, 24);
             layoutControlItem3.Text = "<color=red>*</color>棰濆畾娴侀噺(m鲁/h):";
@@ -363,7 +363,7 @@
             // 
             layoutControlItem2.AllowHtmlStringInCaption = true;
             layoutControlItem2.Control = TextEditRatedSpeed;
-            layoutControlItem2.Location = new Point(0, 24);
+            layoutControlItem2.Location = new Point(0, 72);
             layoutControlItem2.Name = "layoutControlItem2";
             layoutControlItem2.Size = new Size(324, 24);
             layoutControlItem2.Text = "<color=red>*</color>棰濆畾杞��(r/min):";
@@ -372,7 +372,7 @@
             // layoutControlItem12
             // 
             layoutControlItem12.Control = TextEditD2;
-            layoutControlItem12.Location = new Point(324, 72);
+            layoutControlItem12.Location = new Point(324, 24);
             layoutControlItem12.Name = "layoutControlItem12";
             layoutControlItem12.Size = new Size(325, 24);
             layoutControlItem12.Text = "鍙惰疆澶栧緞(mm):";
@@ -381,7 +381,7 @@
             // layoutControlItem11
             // 
             layoutControlItem11.Control = TextEditErosion;
-            layoutControlItem11.Location = new Point(324, 48);
+            layoutControlItem11.Location = new Point(324, 0);
             layoutControlItem11.Name = "layoutControlItem11";
             layoutControlItem11.Size = new Size(325, 24);
             layoutControlItem11.Text = "姘旇殌(m):";
@@ -466,43 +466,43 @@
             Name = "AddPumpProductMainDlg";
             StartPosition = FormStartPosition.CenterScreen;
             Text = "娣诲姞鍨嬪彿";
-            ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
+            ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)TextEditName.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)DescriptionTextEdit.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditErosion.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedPower.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedeffciency.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditD2.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditTagName.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedHead.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedFlow.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedSpeed.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)Root).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).EndInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).EndInit();
-            ((System.ComponentModel.ISupportInitialize)tabbedControlGroup1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem10).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem12).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem11).EndInit();
-            ((System.ComponentModel.ISupportInitialize)dxErrorProvider1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem13).EndInit();
-            ((System.ComponentModel.ISupportInitialize)imageComboBoxEdit1.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem15).EndInit();
-            ((System.ComponentModel.ISupportInitialize)imageComboBoxEdit2.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)tabbedControlGroup2).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup3).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlGroup4).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem27).EndInit();
+            ((ISupportInitialize)TextEditName.Properties).EndInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).EndInit();
+            ((ISupportInitialize)TextEditErosion.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedPower.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedeffciency.Properties).EndInit();
+            ((ISupportInitialize)TextEditD2.Properties).EndInit();
+            ((ISupportInitialize)TextEditTagName.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedHead.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedFlow.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedSpeed.Properties).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ((ISupportInitialize)emptySpaceItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem8).EndInit();
+            ((ISupportInitialize)tabbedControlGroup1).EndInit();
+            ((ISupportInitialize)layoutControlGroup1).EndInit();
+            ((ISupportInitialize)layoutControlItem5).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem9).EndInit();
+            ((ISupportInitialize)layoutControlItem6).EndInit();
+            ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem10).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
+            ((ISupportInitialize)layoutControlItem12).EndInit();
+            ((ISupportInitialize)layoutControlItem11).EndInit();
+            ((ISupportInitialize)dxErrorProvider1).EndInit();
+            ((ISupportInitialize)layoutControlItem13).EndInit();
+            ((ISupportInitialize)imageComboBoxEdit1.Properties).EndInit();
+            ((ISupportInitialize)layoutControlItem15).EndInit();
+            ((ISupportInitialize)imageComboBoxEdit2.Properties).EndInit();
+            ((ISupportInitialize)tabbedControlGroup2).EndInit();
+            ((ISupportInitialize)layoutControlGroup3).EndInit();
+            ((ISupportInitialize)layoutControlGroup4).EndInit();
+            ((ISupportInitialize)layoutControlItem27).EndInit();
             ResumeLayout(false);
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/AddPumpProductMainDlg.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/01-pump/04-PumpMain/EditPumpProductMainDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.Designer.cs
index d8c269d..ba59636 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.Designer.cs
@@ -28,7 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
-            components = new System.ComponentModel.Container();
+            components = new Container();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             BtnOk = new DevExpress.XtraEditors.SimpleButton();
             simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
@@ -57,33 +57,33 @@
             layoutControlItem11 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem12 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
-            ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
+            ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)TextEditName.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)DescriptionTextEdit.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditErosion.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedPower.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedeffciency.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditD2.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditTagName.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedHead.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedFlow.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedSpeed.Properties).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem10).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem11).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem12).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)dxErrorProvider1).BeginInit();
+            ((ISupportInitialize)TextEditName.Properties).BeginInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)TextEditErosion.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedPower.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedeffciency.Properties).BeginInit();
+            ((ISupportInitialize)TextEditD2.Properties).BeginInit();
+            ((ISupportInitialize)TextEditTagName.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedHead.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedFlow.Properties).BeginInit();
+            ((ISupportInitialize)TextEditRatedSpeed.Properties).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            ((ISupportInitialize)layoutControlItem5).BeginInit();
+            ((ISupportInitialize)emptySpaceItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem8).BeginInit();
+            ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem6).BeginInit();
+            ((ISupportInitialize)layoutControlItem9).BeginInit();
+            ((ISupportInitialize)layoutControlItem10).BeginInit();
+            ((ISupportInitialize)layoutControlItem11).BeginInit();
+            ((ISupportInitialize)layoutControlItem12).BeginInit();
+            ((ISupportInitialize)dxErrorProvider1).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
@@ -150,35 +150,35 @@
             // 
             // TextEditErosion
             // 
-            TextEditErosion.Location = new Point(414, 56);
+            TextEditErosion.Location = new Point(414, 8);
             TextEditErosion.Name = "TextEditErosion";
             TextEditErosion.Size = new Size(239, 20);
             TextEditErosion.StyleController = layoutControl1;
-            TextEditErosion.TabIndex = 6;
+            TextEditErosion.TabIndex = 2;
             // 
             // TextEditRatedPower
             // 
-            TextEditRatedPower.Location = new Point(414, 32);
+            TextEditRatedPower.Location = new Point(117, 56);
             TextEditRatedPower.Name = "TextEditRatedPower";
-            TextEditRatedPower.Size = new Size(239, 20);
+            TextEditRatedPower.Size = new Size(184, 20);
             TextEditRatedPower.StyleController = layoutControl1;
-            TextEditRatedPower.TabIndex = 4;
+            TextEditRatedPower.TabIndex = 5;
             // 
             // TextEditRatedeffciency
             // 
-            TextEditRatedeffciency.Location = new Point(414, 8);
+            TextEditRatedeffciency.Location = new Point(414, 56);
             TextEditRatedeffciency.Name = "TextEditRatedeffciency";
             TextEditRatedeffciency.Size = new Size(239, 20);
             TextEditRatedeffciency.StyleController = layoutControl1;
-            TextEditRatedeffciency.TabIndex = 2;
+            TextEditRatedeffciency.TabIndex = 6;
             // 
             // TextEditD2
             // 
-            TextEditD2.Location = new Point(414, 80);
+            TextEditD2.Location = new Point(414, 32);
             TextEditD2.Name = "TextEditD2";
             TextEditD2.Size = new Size(239, 20);
             TextEditD2.StyleController = layoutControl1;
-            TextEditD2.TabIndex = 8;
+            TextEditD2.TabIndex = 4;
             // 
             // TextEditTagName
             // 
@@ -190,11 +190,11 @@
             // 
             // TextEditRatedHead
             // 
-            TextEditRatedHead.Location = new Point(117, 80);
+            TextEditRatedHead.Location = new Point(414, 80);
             TextEditRatedHead.Name = "TextEditRatedHead";
-            TextEditRatedHead.Size = new Size(184, 20);
+            TextEditRatedHead.Size = new Size(239, 20);
             TextEditRatedHead.StyleController = layoutControl1;
-            TextEditRatedHead.TabIndex = 7;
+            TextEditRatedHead.TabIndex = 8;
             // 
             // TextEditRatedFlow
             // 
@@ -206,11 +206,11 @@
             // 
             // TextEditRatedSpeed
             // 
-            TextEditRatedSpeed.Location = new Point(117, 56);
+            TextEditRatedSpeed.Location = new Point(117, 80);
             TextEditRatedSpeed.Name = "TextEditRatedSpeed";
             TextEditRatedSpeed.Size = new Size(184, 20);
             TextEditRatedSpeed.StyleController = layoutControl1;
-            TextEditRatedSpeed.TabIndex = 5;
+            TextEditRatedSpeed.TabIndex = 7;
             // 
             // Root
             // 
@@ -218,7 +218,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, layoutControlItem2, layoutControlItem3, layoutControlItem4, layoutControlItem5, emptySpaceItem1, layoutControlItem8, layoutControlItem7, layoutControlItem6, layoutControlItem9, layoutControlItem10, layoutControlItem11, layoutControlItem12 });
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem4, layoutControlItem5, emptySpaceItem1, layoutControlItem8, layoutControlItem6, layoutControlItem11, layoutControlItem10, layoutControlItem9, layoutControlItem12, layoutControlItem7 });
             Root.Name = "Root";
             Root.Padding = new DevExpress.XtraLayout.Utils.Padding(6, 6, 6, 6);
             Root.Size = new Size(661, 443);
@@ -238,7 +238,7 @@
             // 
             layoutControlItem2.AllowHtmlStringInCaption = true;
             layoutControlItem2.Control = TextEditRatedSpeed;
-            layoutControlItem2.Location = new Point(0, 48);
+            layoutControlItem2.Location = new Point(0, 72);
             layoutControlItem2.Name = "layoutControlItem2";
             layoutControlItem2.Size = new Size(297, 24);
             layoutControlItem2.Text = "<color=red>*</color>棰濆畾杞��(r/min):";
@@ -293,9 +293,9 @@
             // 
             layoutControlItem7.AllowHtmlStringInCaption = true;
             layoutControlItem7.Control = TextEditRatedHead;
-            layoutControlItem7.Location = new Point(0, 72);
+            layoutControlItem7.Location = new Point(297, 72);
             layoutControlItem7.Name = "layoutControlItem7";
-            layoutControlItem7.Size = new Size(297, 24);
+            layoutControlItem7.Size = new Size(352, 24);
             layoutControlItem7.Text = "<color=red>*</color>棰濆畾鎵▼(m):";
             layoutControlItem7.TextSize = new Size(97, 14);
             // 
@@ -312,7 +312,7 @@
             // 
             layoutControlItem9.AllowHtmlStringInCaption = true;
             layoutControlItem9.Control = TextEditRatedeffciency;
-            layoutControlItem9.Location = new Point(297, 0);
+            layoutControlItem9.Location = new Point(297, 48);
             layoutControlItem9.Name = "layoutControlItem9";
             layoutControlItem9.Size = new Size(352, 24);
             layoutControlItem9.Text = "<color=red>*</color>棰濆畾鏁堢巼(%):";
@@ -322,16 +322,16 @@
             // 
             layoutControlItem10.AllowHtmlStringInCaption = true;
             layoutControlItem10.Control = TextEditRatedPower;
-            layoutControlItem10.Location = new Point(297, 24);
+            layoutControlItem10.Location = new Point(0, 48);
             layoutControlItem10.Name = "layoutControlItem10";
-            layoutControlItem10.Size = new Size(352, 24);
+            layoutControlItem10.Size = new Size(297, 24);
             layoutControlItem10.Text = "<color=red>*</color>棰濆畾鍔熺巼(KW):";
             layoutControlItem10.TextSize = new Size(97, 14);
             // 
             // layoutControlItem11
             // 
             layoutControlItem11.Control = TextEditErosion;
-            layoutControlItem11.Location = new Point(297, 48);
+            layoutControlItem11.Location = new Point(297, 0);
             layoutControlItem11.Name = "layoutControlItem11";
             layoutControlItem11.Size = new Size(352, 24);
             layoutControlItem11.Text = "姘旇殌(m):";
@@ -340,7 +340,7 @@
             // layoutControlItem12
             // 
             layoutControlItem12.Control = TextEditD2;
-            layoutControlItem12.Location = new Point(297, 72);
+            layoutControlItem12.Location = new Point(297, 24);
             layoutControlItem12.Name = "layoutControlItem12";
             layoutControlItem12.Size = new Size(352, 24);
             layoutControlItem12.Text = "鍙惰疆澶栧緞(mm):";
@@ -359,33 +359,33 @@
             Name = "EditPumpProductMainDlg";
             StartPosition = FormStartPosition.CenterScreen;
             Text = "缂栬緫鍨嬪彿";
-            ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
+            ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)TextEditName.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)DescriptionTextEdit.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditErosion.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedPower.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedeffciency.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditD2.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditTagName.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedHead.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedFlow.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)TextEditRatedSpeed.Properties).EndInit();
-            ((System.ComponentModel.ISupportInitialize)Root).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).EndInit();
-            ((System.ComponentModel.ISupportInitialize)emptySpaceItem1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem8).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem7).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem9).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem10).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem11).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem12).EndInit();
-            ((System.ComponentModel.ISupportInitialize)dxErrorProvider1).EndInit();
+            ((ISupportInitialize)TextEditName.Properties).EndInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).EndInit();
+            ((ISupportInitialize)TextEditErosion.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedPower.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedeffciency.Properties).EndInit();
+            ((ISupportInitialize)TextEditD2.Properties).EndInit();
+            ((ISupportInitialize)TextEditTagName.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedHead.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedFlow.Properties).EndInit();
+            ((ISupportInitialize)TextEditRatedSpeed.Properties).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ((ISupportInitialize)layoutControlItem5).EndInit();
+            ((ISupportInitialize)emptySpaceItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem8).EndInit();
+            ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem6).EndInit();
+            ((ISupportInitialize)layoutControlItem9).EndInit();
+            ((ISupportInitialize)layoutControlItem10).EndInit();
+            ((ISupportInitialize)layoutControlItem11).EndInit();
+            ((ISupportInitialize)layoutControlItem12).EndInit();
+            ((ISupportInitialize)dxErrorProvider1).EndInit();
             ResumeLayout(false);
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/04-PumpMain/EditPumpProductMainDlg.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/01-pump/PumpProductMainPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.Designer.cs
index ff728ac..5291e44 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.Designer.cs
@@ -28,8 +28,8 @@
         /// </summary>
         private void InitializeComponent()
         {
-            components = new System.ComponentModel.Container();
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PumpProductMainPage));
+            components = new Container();
+            ComponentResourceManager resources = new ComponentResourceManager(typeof(PumpProductMainPage));
             ribbonControl1 = new DevExpress.XtraBars.Ribbon.RibbonControl();
             BtnAdd = new DevExpress.XtraBars.BarButtonItem();
             BtnEdit = new DevExpress.XtraBars.BarButtonItem();
@@ -64,20 +64,20 @@
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             popupPump = new DevExpress.XtraBars.PopupMenu(components);
             svgImage32 = new DevExpress.Utils.SvgImageCollection(components);
-            ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
+            ((ISupportInitialize)ribbonControl1).BeginInit();
+            ((ISupportInitialize)dockManager1).BeginInit();
             dockPanel1.SuspendLayout();
             dockPanel1_Container.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)gridControl1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)currentViewModelBindingSource).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)gridView1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
+            ((ISupportInitialize)gridControl1).BeginInit();
+            ((ISupportInitialize)currentViewModelBindingSource).BeginInit();
+            ((ISupportInitialize)gridView1).BeginInit();
+            ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             sidePanel1.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)popupPump).BeginInit();
-            ((System.ComponentModel.ISupportInitialize)svgImage32).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)popupPump).BeginInit();
+            ((ISupportInitialize)svgImage32).BeginInit();
             SuspendLayout();
             // 
             // ribbonControl1
@@ -94,7 +94,7 @@
             ribbonControl1.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.False;
             ribbonControl1.ShowPageHeadersInFormCaption = DevExpress.Utils.DefaultBoolean.True;
             ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.ShowOnMultiplePages;
-            ribbonControl1.Size = new Size(752, 77);
+            ribbonControl1.Size = new Size(682, 77);
             ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
             // 
             // BtnAdd
@@ -144,6 +144,7 @@
             BarBtnPumpinformation.Id = 23;
             BarBtnPumpinformation.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("BarBtnPumpinformation.ImageOptions.SvgImage");
             BarBtnPumpinformation.Name = "BarBtnPumpinformation";
+            BarBtnPumpinformation.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
             BarBtnPumpinformation.ItemClick += BarBtnPumpinformation_ItemClick;
             // 
             // BarBtnEidtPumpProp
@@ -196,7 +197,7 @@
             dockPanel1.Name = "dockPanel1";
             dockPanel1.Options.ShowAutoHideButton = false;
             dockPanel1.OriginalSize = new Size(233, 200);
-            dockPanel1.Size = new Size(163, 526);
+            dockPanel1.Size = new Size(233, 526);
             dockPanel1.Text = "姘存车绯诲垪";
             // 
             // dockPanel1_Container
@@ -204,7 +205,7 @@
             dockPanel1_Container.Controls.Add(AssetsPumpSeriesTreeListCtrl1);
             dockPanel1_Container.Location = new Point(3, 26);
             dockPanel1_Container.Name = "dockPanel1_Container";
-            dockPanel1_Container.Size = new Size(156, 497);
+            dockPanel1_Container.Size = new Size(226, 497);
             dockPanel1_Container.TabIndex = 0;
             // 
             // AssetsPumpSeriesTreeListCtrl1
@@ -215,7 +216,7 @@
             AssetsPumpSeriesTreeListCtrl1.Location = new Point(0, 0);
             AssetsPumpSeriesTreeListCtrl1.Margin = new Padding(4, 5, 4, 5);
             AssetsPumpSeriesTreeListCtrl1.Name = "AssetsPumpSeriesTreeListCtrl1";
-            AssetsPumpSeriesTreeListCtrl1.Size = new Size(156, 497);
+            AssetsPumpSeriesTreeListCtrl1.Size = new Size(226, 497);
             AssetsPumpSeriesTreeListCtrl1.TabIndex = 0;
             // 
             // gridControl1
@@ -226,7 +227,7 @@
             gridControl1.MainView = gridView1;
             gridControl1.MenuManager = ribbonControl1;
             gridControl1.Name = "gridControl1";
-            gridControl1.Size = new Size(752, 449);
+            gridControl1.Size = new Size(682, 449);
             gridControl1.TabIndex = 0;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
@@ -357,10 +358,10 @@
             // 
             layoutControl1.Controls.Add(sidePanel1);
             layoutControl1.Dock = DockStyle.Fill;
-            layoutControl1.Location = new Point(163, 0);
+            layoutControl1.Location = new Point(233, 0);
             layoutControl1.Name = "layoutControl1";
             layoutControl1.Root = Root;
-            layoutControl1.Size = new Size(752, 526);
+            layoutControl1.Size = new Size(682, 526);
             layoutControl1.TabIndex = 6;
             layoutControl1.Text = "layoutControl1";
             // 
@@ -370,7 +371,7 @@
             sidePanel1.Controls.Add(ribbonControl1);
             sidePanel1.Location = new Point(0, 0);
             sidePanel1.Name = "sidePanel1";
-            sidePanel1.Size = new Size(752, 526);
+            sidePanel1.Size = new Size(682, 526);
             sidePanel1.TabIndex = 3;
             sidePanel1.Text = "sidePanel1";
             // 
@@ -381,7 +382,7 @@
             Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1 });
             Root.Name = "Root";
             Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            Root.Size = new Size(752, 526);
+            Root.Size = new Size(682, 526);
             Root.TextVisible = false;
             // 
             // layoutControlItem1
@@ -390,7 +391,7 @@
             layoutControlItem1.Location = new Point(0, 0);
             layoutControlItem1.Name = "layoutControlItem1";
             layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
-            layoutControlItem1.Size = new Size(752, 526);
+            layoutControlItem1.Size = new Size(682, 526);
             layoutControlItem1.TextSize = new Size(0, 0);
             layoutControlItem1.TextVisible = false;
             // 
@@ -415,24 +416,24 @@
             AutoScaleMode = AutoScaleMode.Font;
             Controls.Add(layoutControl1);
             Controls.Add(dockPanel1);
-            Margin = new Padding(2, 2, 2, 2);
+            Margin = new Padding(2);
             Name = "PumpProductMainPage";
             Size = new Size(915, 526);
-            ((System.ComponentModel.ISupportInitialize)ribbonControl1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)dockManager1).EndInit();
+            ((ISupportInitialize)ribbonControl1).EndInit();
+            ((ISupportInitialize)dockManager1).EndInit();
             dockPanel1.ResumeLayout(false);
             dockPanel1_Container.ResumeLayout(false);
-            ((System.ComponentModel.ISupportInitialize)gridControl1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)currentViewModelBindingSource).EndInit();
-            ((System.ComponentModel.ISupportInitialize)gridView1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
+            ((ISupportInitialize)gridControl1).EndInit();
+            ((ISupportInitialize)currentViewModelBindingSource).EndInit();
+            ((ISupportInitialize)gridView1).EndInit();
+            ((ISupportInitialize)layoutControl1).EndInit();
             layoutControl1.ResumeLayout(false);
             sidePanel1.ResumeLayout(false);
             sidePanel1.PerformLayout();
-            ((System.ComponentModel.ISupportInitialize)Root).EndInit();
-            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
-            ((System.ComponentModel.ISupportInitialize)popupPump).EndInit();
-            ((System.ComponentModel.ISupportInitialize)svgImage32).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)popupPump).EndInit();
+            ((ISupportInitialize)svgImage32).EndInit();
             ResumeLayout(false);
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs
index 110d144..b972f88 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs
@@ -242,7 +242,7 @@
         {
             //var model = this.gridView1.GetCurrentViewModel(_allBindingList);
             //var dlg = new SelXhsPumpMainPhartDlg();
-            //dlg.SetBandingData(model.ID);
+            //dlg.SetBandingData(model.UserID);
             //dlg.ShowDialog();
         }
     }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.resx
index 78f9783..eee9838 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.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/02-adapting/AdaptingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/02-adapting/AdaptingViewModel.cs
index a68894a..a5cf76e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/02-adapting/AdaptingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/02-adapting/AdaptingViewModel.cs
@@ -45,7 +45,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.Designer.cs
index 45b5773..a45625a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.Designer.cs
@@ -46,7 +46,7 @@
             layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             panelControl1 = new DevExpress.XtraEditors.PanelControl();
-            universalChartViewCtrl1 = new UniversalChartViewCtrl();
+            valveChartViewCtrl1 = new ValveChartViewCtrl();
             ((ISupportInitialize)ribbonControl1).BeginInit();
             sidePanel1.SuspendLayout();
             ((ISupportInitialize)layoutControl1).BeginInit();
@@ -204,21 +204,21 @@
             // panelControl1
             // 
             panelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
-            panelControl1.Controls.Add(universalChartViewCtrl1);
+            panelControl1.Controls.Add(valveChartViewCtrl1);
             panelControl1.Dock = DockStyle.Fill;
             panelControl1.Location = new Point(187, 101);
             panelControl1.Name = "panelControl1";
             panelControl1.Size = new Size(838, 499);
             panelControl1.TabIndex = 2;
             // 
-            // universalChartViewCtrl1
+            // valveChartViewCtrl1
             // 
-            universalChartViewCtrl1.Dock = DockStyle.Fill;
-            universalChartViewCtrl1.Location = new Point(0, 0);
-            universalChartViewCtrl1.Margin = new Padding(2, 2, 2, 2);
-            universalChartViewCtrl1.Name = "universalChartViewCtrl1";
-            universalChartViewCtrl1.Size = new Size(838, 499);
-            universalChartViewCtrl1.TabIndex = 0;
+            valveChartViewCtrl1.Dock = DockStyle.Fill;
+            valveChartViewCtrl1.Location = new Point(0, 0);
+            valveChartViewCtrl1.Margin = new Padding(2, 2, 2, 2);
+            valveChartViewCtrl1.Name = "valveChartViewCtrl1";
+            valveChartViewCtrl1.Size = new Size(838, 499);
+            valveChartViewCtrl1.TabIndex = 0;
             // 
             // AssetsValveCurveMgrPage
             // 
@@ -263,6 +263,6 @@
         private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraEditors.PanelControl panelControl1;
-        private UniversalChartViewCtrl universalChartViewCtrl1;
+        private ValveChartViewCtrl valveChartViewCtrl1;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.cs
index 5466c47..915ff87 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/AssetsValveCurveMgrPage.cs
@@ -116,7 +116,7 @@
             var dlg = new EditAssetsValveCurveDlg();
             dlg.ReloadDataEvent += (rhs) =>
             {
-                this.universalChartViewCtrl1.SetBindingData(rhs);
+                this.valveChartViewCtrl1.SetBindingData(rhs);
             };
             dlg.SetBindingData(vmo);
             dlg.ShowDialog();
@@ -142,7 +142,7 @@
                 return;
             }
             _allBindingList.Remove(vm);
-            this.universalChartViewCtrl1.ClearBindingData();
+            this.valveChartViewCtrl1.ClearBindingData();
             this.phartDiagramRelationListCtrl1.SetBindingData(_allBindingList);
             TipFormHelper.ShowSucceed("鍒犻櫎鎴愬姛锛�");
         }
@@ -214,11 +214,11 @@
         {
             if (relation == null)
             {
-                this.universalChartViewCtrl1.SetBindingData(null);
+                this.valveChartViewCtrl1.SetBindingData(null);
                 return;
             }
             var vmo = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.GetByID(relation.DiagramID);
-            this.universalChartViewCtrl1.SetBindingData(vmo);
+            this.valveChartViewCtrl1.SetBindingData(vmo);
         }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.Designer.cs
index 26ce7ee..74fcffe 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.Designer.cs
@@ -34,7 +34,7 @@
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
-            universalChartEditCtrl1 = new UniversalChartEditCtrl();
+            valveChartEditCtrl1 = new ValveChartEditCtrl();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)panelControl1).BeginInit();
@@ -69,7 +69,7 @@
             // 
             // panelControl1
             // 
-            panelControl1.Controls.Add(universalChartEditCtrl1);
+            panelControl1.Controls.Add(valveChartEditCtrl1);
             panelControl1.Location = new Point(12, 12);
             panelControl1.Name = "panelControl1";
             panelControl1.Size = new Size(874, 498);
@@ -102,14 +102,14 @@
             layoutControlItem2.TextSize = new Size(0, 0);
             layoutControlItem2.TextVisible = false;
             // 
-            // universalChartEditCtrl1
+            // valveChartEditCtrl1
             // 
-            universalChartEditCtrl1.Dock = DockStyle.Fill;
-            universalChartEditCtrl1.Location = new Point(2, 2);
-            universalChartEditCtrl1.Margin = new Padding(2, 2, 2, 2);
-            universalChartEditCtrl1.Name = "universalChartEditCtrl1";
-            universalChartEditCtrl1.Size = new Size(870, 494);
-            universalChartEditCtrl1.TabIndex = 0;
+            valveChartEditCtrl1.Dock = DockStyle.Fill;
+            valveChartEditCtrl1.Location = new Point(2, 2);
+            valveChartEditCtrl1.Margin = new Padding(2, 2, 2, 2);
+            valveChartEditCtrl1.Name = "valveChartEditCtrl1";
+            valveChartEditCtrl1.Size = new Size(870, 494);
+            valveChartEditCtrl1.TabIndex = 0;
             // 
             // EditAssetsValveCurveDlg
             // 
@@ -117,7 +117,7 @@
             AutoScaleMode = AutoScaleMode.Font;
             ClientSize = new Size(898, 552);
             Controls.Add(layoutControl1);
-            Name = "EditAssetsValveCurveQLDlg";
+            Name = "EditAssetsValveCurveDlg";
             StartPosition = FormStartPosition.CenterParent;
             Text = "缂栬緫鏇茬嚎";
             ((ISupportInitialize)layoutControl1).EndInit();
@@ -138,6 +138,6 @@
         private DevExpress.XtraLayout.LayoutControlGroup Root;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
-        private UniversalChartEditCtrl universalChartEditCtrl1;
+        private ValveChartEditCtrl valveChartEditCtrl1;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.cs
index 863d239..8ac3f60 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.cs
@@ -30,7 +30,7 @@
                 return;
             }
             _vmo = vmo;
-            this.universalChartEditCtrl1.SetBindingData(vmo);
+            this.valveChartEditCtrl1.SetBindingData(vmo);
         }
 
         //纭畾
@@ -40,7 +40,7 @@
             {
                 return;
             }
-            var diagram = this.universalChartEditCtrl1.Get();
+            var diagram = this.valveChartEditCtrl1.Get();
             var bol = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Update(diagram);
             if (!bol)
             {
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.resx
index af32865..8b2ff64 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/EditAssetsValveCurveDlg.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.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.Designer.cs
index 8af3e6c..5c0a791 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.Designer.cs
@@ -36,7 +36,6 @@
             btnEditExcel = new DevExpress.XtraEditors.ButtonEdit();
             generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             panelControl1 = new DevExpress.XtraEditors.PanelControl();
-            universalChartExcelImportCtrl1 = new UniversalChartExcelImportCtrl();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -46,6 +45,7 @@
             emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
+            valveChartExcelImportCtrl1 = new ValveChartExcelImportCtrl();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtImportance.Properties).BeginInit();
@@ -137,20 +137,11 @@
             // 
             // panelControl1
             // 
-            panelControl1.Controls.Add(universalChartExcelImportCtrl1);
+            panelControl1.Controls.Add(valveChartExcelImportCtrl1);
             panelControl1.Location = new Point(12, 38);
             panelControl1.Name = "panelControl1";
             panelControl1.Size = new Size(1038, 465);
             panelControl1.TabIndex = 4;
-            // 
-            // universalChartExcelImportCtrl1
-            // 
-            universalChartExcelImportCtrl1.Dock = DockStyle.Fill;
-            universalChartExcelImportCtrl1.Location = new Point(2, 2);
-            universalChartExcelImportCtrl1.Margin = new Padding(2, 2, 2, 2);
-            universalChartExcelImportCtrl1.Name = "universalChartExcelImportCtrl1";
-            universalChartExcelImportCtrl1.Size = new Size(1034, 461);
-            universalChartExcelImportCtrl1.TabIndex = 0;
             // 
             // Root
             // 
@@ -242,13 +233,22 @@
             // 
             dxErrorProvider1.ContainerControl = this;
             // 
+            // valveChartExcelImportCtrl1
+            // 
+            valveChartExcelImportCtrl1.Dock = DockStyle.Fill;
+            valveChartExcelImportCtrl1.Location = new Point(2, 2);
+            valveChartExcelImportCtrl1.Margin = new Padding(2, 2, 2, 2);
+            valveChartExcelImportCtrl1.Name = "valveChartExcelImportCtrl1";
+            valveChartExcelImportCtrl1.Size = new Size(1034, 461);
+            valveChartExcelImportCtrl1.TabIndex = 0;
+            // 
             // ImportAssetsValveCurveByExcelDlg
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
             AutoScaleMode = AutoScaleMode.Font;
             ClientSize = new Size(1062, 545);
             Controls.Add(layoutControl1);
-            Name = "ImportAssetsValveCurveQLByExcelDlg";
+            Name = "ImportAssetsValveCurveByExcelDlg";
             StartPosition = FormStartPosition.CenterParent;
             Text = "閫氳繃Excel瀵煎叆";
             ((ISupportInitialize)layoutControl1).EndInit();
@@ -287,7 +287,7 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
         private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
-        private UniversalChartExcelImportCtrl universalChartExcelImportCtrl1;
         private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
+        private ValveChartExcelImportCtrl valveChartExcelImportCtrl1;
     }
 }
\ No newline at end of file
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 97af346..940fcff 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
@@ -65,7 +65,7 @@
             {
                 return;
             }
-            var diagram = this.universalChartExcelImportCtrl1.Get();
+            var diagram = this.valveChartExcelImportCtrl1.Get();
             var diagramId = await BLLFactory<Yw.BLL.PhartDiagramExtensions>.Instance.Insert(diagram);
             if (diagramId < 1)
             {
@@ -97,7 +97,7 @@
             {
                 var fileName = dlg.FileName;
                 this.btnEditExcel.EditValue = fileName;
-                this.universalChartExcelImportCtrl1.SetBindingData(fileName, _curveType);
+                this.valveChartExcelImportCtrl1.SetBindingData(fileName, _curveType);
             }
         }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.resx b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.resx
index d438392..43b467c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/03-valve/04-curve/ImportAssetsValveCurveByExcelDlg.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/09-Manufacturer/ManufacurerViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-Manufacturer/ManufacurerViewModel.cs
index 9897a21..06acac1 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-Manufacturer/ManufacurerViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-Manufacturer/ManufacurerViewModel.cs
@@ -35,7 +35,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-manufacturer/ManufacturerMainPage.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-manufacturer/ManufacturerMainPage.cs
index 05784f8..9e13eac 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-manufacturer/ManufacturerMainPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/09-manufacturer/ManufacturerMainPage.cs
@@ -147,7 +147,7 @@
                     dlg.SetBindingData(vm.TagName);
                     dlg.ReloadDataEvent += (tagName) =>
                     {
-                        var result = _bll.UpdateTagName(vm.ID, tagName);
+                        var result = _bll.UpdateTagName(vm.UserID, tagName);
                         if (result)
                         {
                             vm.TagName = tagName;
@@ -173,7 +173,7 @@
                dlg.SetBindingData(vm.SortCode);
                dlg.ReloadDataEvent += (sortCode) =>
                {
-                   var result = _bll.UpdateSortCode(vm.ID, sortCode);
+                   var result = _bll.UpdateSortCode(vm.UserID, sortCode);
                    if (result)
                    {
                        vm.SortCode = sortCode;
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/02-main/PackageViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/02-main/PackageViewModel.cs
index 2a568d6..939984e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/02-main/PackageViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/02-main/PackageViewModel.cs
@@ -34,7 +34,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/03-equipment/EquipmentViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/03-equipment/EquipmentViewModel.cs
index ed8257d..bd7c48e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/03-equipment/EquipmentViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/03-equipment/EquipmentViewModel.cs
@@ -38,7 +38,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/CurrentPackagePartMainViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/CurrentPackagePartMainViewModel.cs
index a4e14b4..bb3a765 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/CurrentPackagePartMainViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/CurrentPackagePartMainViewModel.cs
@@ -27,7 +27,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/EditPackagePartPropDlg.cs b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/EditPackagePartPropDlg.cs
index 87f5af7..694c9d1 100644
--- a/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/EditPackagePartPropDlg.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Assets.Core/12-package/EditPackagePartPropDlg.cs
@@ -130,7 +130,7 @@
             {
                 if (_allPropList != null)
                 {
-                    // 鏌ユ壘 _allPropList 涓槸鍚﹀瓨鍦ㄤ笌 item.ID 鍖归厤鐨勯」
+                    // 鏌ユ壘 _allPropList 涓槸鍚﹀瓨鍦ㄤ笌 item.UserID 鍖归厤鐨勯」
                     var prop = _allPropList.FirstOrDefault(x => x.PropID == item.ID);
                     // 濡傛灉鎵惧埌鍖归厤鐨勯」锛屽垯鏇存柊鍏� PropValue
                     if (prop != null)
@@ -294,11 +294,11 @@
                              {
                                  list.Add(new Yw.Vmo.SysPropMappingSetterVmo
                                  {
-                                     PropID = prop.ID,
+                                     PropID = prop.UserID,
                                      UnitName = prop.UnitName,
                                      IsNull = prop.IsNull,
                                      DefaultValue = prop.DefaultValue,
-                                     ChoiceIds = prop.ChoiceList.Select(x => x.ID).ToList(),
+                                     ChoiceIds = prop.ChoiceList.Select(x => x.UserID).ToList(),
                                  });
                              }
                          }
@@ -306,7 +306,7 @@
                      list.Add(new Yw.Vmo.SysPropMappingSetterVmo { PropID = id, UnitName = rhs.UnitName, IsNull = rhs.IsNull });
                      await _sysPropMapping.SetByCatalogID(_series.CatalogID, list);
                      var model = await bll.GetByID(id);
-                     var partMain = new ExchangerPropChoiceViewModel() { PropGroupName = groupName, PropName = model.Name, ID = model.ID, Value = propValue, KeyWorldType = "Prop" };
+                     var partMain = new ExchangerPropChoiceViewModel() { PropGroupName = groupName, PropName = model.Name, UserID = model.UserID, Value = propValue, KeyWorldType = "Prop" };
                      _propList.Add(partMain);
                      this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
                      return true;
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/AuthHelper.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/AuthHelper.cs
new file mode 100644
index 0000000..6ccc97c
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/AuthHelper.cs
@@ -0,0 +1,365 @@
+锘縰sing DevExpress.XtraEditors;
+using System.Collections.Generic;
+
+namespace HStation.WinFrmUI
+{
+    public class AuthHelper
+    {
+        #region 鍥哄畾鍙傛暟
+
+        #region 搴旂敤璁$畻
+
+        public const string Calcu_Apply_Mgr = "calcu_apply_mgr";//搴旂敤璁$畻
+        public const string Calcu_PressureLoss_Mgr = "calcu_pressureloss_mgr";//鍘嬪姏璁$畻鎹熷け
+        public const string Calcu_GunsRange_Mgr = "calcu_gunsrange_mgr";//鏋偖灏勭▼鍙嶅姏
+        public const string Calcu_SuplyingCapacity_Mgr = "calcu_suplyingcapacity_mgr";//鍗曡溅渚涙按鑳藉姏
+        public const string Calcu_WaterPower_Mgr = "calcu_waterpower_mgr";//渚涙按鍔涢噺
+        public const string Calcu_FirePower_Mgr = "calcu_firepower_mgr";//鐏伀鍙嶅姏
+
+        #endregion 搴旂敤璁$畻
+
+        #region 渚涙按鑳藉姏璁$畻
+
+        public const string Calcu_Water_Mgr = "calcu_water_mgr";//渚涙按鑳藉姏璁$畻
+
+        #endregion 渚涙按鑳藉姏璁$畻
+
+        #region 鍦板浘淇℃伅鏌ヨ
+
+        public const string MapInfo_View = "mapinfo_view";//鍦板浘淇℃伅鏌ョ湅
+
+        #endregion 鍦板浘淇℃伅鏌ヨ
+
+        #region 缁勭粐淇℃伅鏌ヨ
+
+        public const string OrganizeInfo_View = "organizeinfo_view";
+
+        #endregion 缁勭粐淇℃伅鏌ヨ
+
+        #region 娑堥槻婕旂粌
+
+        public const string FireSketch_Mgr = "firesketch_mgr";
+
+        #endregion 娑堥槻婕旂粌
+
+        #region 瀹㈡埛
+
+        public const string Corp_Mgr = "corp_mgr";
+
+        #endregion 瀹㈡埛
+
+        #region 缁勭粐鍏崇郴
+
+        public const string Organize_Mgr = "organize_mgr";
+
+        #endregion 缁勭粐鍏崇郴
+
+        #region 鍩虹鏁版嵁
+
+        public const string CombustibleProperty_Mgr = "combustibleproperty_mgr";// 鐕冪儳鐗╃被鍨嬬鐞�
+        public const string FireGunProperty_Mgr = "firegunproperty_mgr";//娑堥槻鏋偖瑙勬牸
+        public const string WaterBandProperty_Mgr = "waterbandproperty_mgr";//姘村甫瑙勬牸
+
+        #endregion 鍩虹鏁版嵁
+
+        #region 娑堥槻杞�
+
+        public const string FireCar_Total_Mgr = "firecar_total_mgr";//娑堥槻杞︾患鍚堢鐞�
+        public const string FireCar_Catalog_Mgr = "firecar_catalog_mgr";//娑堥槻杞︾被鍒鐞�
+        public const string FireCar_Type_Mgr = "firecar_type_mgr";//娑堥槻杞︾被鍨嬬鐞�
+        public const string FireCar_Template_Mgr = "firecar_template_mgr";//娑堥槻杞︽ā鏉跨鐞�
+        public const string FireCar_Mgr = "firecar_mgr";//娑堥槻杞︾鐞�;
+
+        public const string FirePump_Template_Mgr = "firepump_template_mgr";//娑堥槻娉垫ā鏉跨鐞�
+
+        public const string FireCarList_Mgr = "firecarlist_mgr"; //娑堥槻杞﹀垪琛�
+
+        #endregion 娑堥槻杞�
+
+        #region 娑堥槻鍣ㄦ潗
+
+        public const string Equipment_Total_Mgr = "equipment_total_mgr";//娑堥槻鍣ㄦ潗缁煎悎绠$悊
+        public const string Equipment_Catalog_Mgr = "equipment_catalog_mgr";//娑堥槻鍣ㄦ潗绫诲埆绠$悊
+        public const string Equipment_Type_Mgr = "equipment_type_mgr";//娑堥槻鍣ㄦ潗绫诲瀷绠$悊
+
+        #endregion 娑堥槻鍣ㄦ潗
+
+        #region 鐗堟湰
+
+        public const string DataStructVersion_Mgr = "datastructversion_mgr";
+        public const string DataStructVersionComparison_View = "datastructversioncomparison_view";
+        public const string DataVersion_Mgr = "dataversion_mgr";
+        public const string CorpDataVersion_Mgr = "corpdataversion_mgr";
+
+        #endregion 鐗堟湰
+
+        #region 鍦板浘淇℃伅
+
+        public const string Building_Mgr = "building_mgr";//寤虹瓚鐗╃鐞�
+        public const string FireHydrant_Mgr = "firehydrant_mgr";//娑堢伀鏍撶鐞�
+
+        public const string WaterSource_Mgr = "watersource_mgr";//姘存簮绠$悊
+        public const string FirePool_Mgr = "firepool_mgr";//娑堥槻姘存睜
+        public const string Natural_Lake_Mgr = "naturallake_mgr";//鑷劧婀栨硦
+
+        #endregion 鍦板浘淇℃伅
+
+        #region 娉佃溅娴嬭瘯
+
+        public const string Pump_Test_Mgr = "pump_test_mgr";//娉佃溅娴嬭瘯
+
+        #endregion 娉佃溅娴嬭瘯
+
+        #region 娑堢伀鏍撴祴璇�
+
+        public const string FireHydrant_Test_Mgr = "firehydrant_test_mgr";//娑堢伀鏍撴祴璇�
+
+        #endregion 娑堢伀鏍撴祴璇�
+
+        #region 瑁呯疆娴嬭瘯
+
+        public const string FireGun_Test_Mgr = "firegun_test_mgr";//娑堥槻鏋祴璇�
+        public const string WaterBand_Test_Mgr = "waterband_test_mgr";//姘村甫娴嬭瘯
+        public const string FireMonitor_Test_Mgr = "firemonitor_test_mgr";//娑堥槻鐐祴璇�
+
+        #endregion 瑁呯疆娴嬭瘯
+
+        #region 渚涙按鑳藉姏璁$畻
+
+        public const string Calc_Ability_Mgr = "calc_ability_mgr";//渚涙按鑳藉姏璁$畻
+
+        #endregion 渚涙按鑳藉姏璁$畻
+
+        #region 鏇茬嚎绠$悊
+
+        public const string Curve_Mgr = "curve_mgr";//鏇茬嚎绠$悊
+
+        #endregion 鏇茬嚎绠$悊
+
+        #region 骞虫澘绠$悊
+
+        public const string Tablet_Mgr = "tablet_mgr";
+
+        #endregion 骞虫澘绠$悊
+
+        #region 鏉冮檺
+
+        public const string Auth_Total_Mgr = "auth_total_mgr";//鏉冮檺绠$悊
+        public const string Menu_Mgr = "menu_mgr";//鑿滃崟绠$悊
+        public const string Role_Mgr = "role_mgr";//瑙掕壊绠$悊
+        public const string User_Mgr = "user_mgr";//鐢ㄦ埛绠$悊
+        public const string User_Role_Mgr = "user_role_mgr";//鐢ㄦ埛瑙掕壊绠$悊
+        public const string Role_Auth_Mgr = "role_auth_mgr";//瑙掕壊鏉冮檺绠$悊
+
+        #endregion 鏉冮檺
+
+        #region 甯姪
+
+        public const string Helpdocument_mgr = "helpdocument_mgr";//甯姪鏂囨。
+
+        #endregion 甯姪
+
+        #region 鍧愭爣鍙傛暟璁$畻
+
+        public const string CalcuPara4_Mgr = "calcupara4_mgr";//鍦ㄧ嚎鏂囨。
+        public const string CalcuPara7_Mgr = "calcupara7_mgr";//Word鏂囨。
+
+        #endregion 鍧愭爣鍙傛暟璁$畻
+
+        #region 绠$綉宸ョ▼
+
+        public const string PipeLineProject_Mgr = "pipeline_project_mgr";//绠$綉宸ョ▼
+
+        #endregion 绠$綉宸ョ▼
+
+        #region 娑堢伀鏍撴紨缁�
+
+        public const string FireHydrantSketch_Mgr = "firehydrantsketch_mgr";//娑堢伀鏍撴紨缁�
+
+        #endregion 娑堢伀鏍撴紨缁�
+
+        #region 鍥虹Щ缁撳悎
+
+        public const string FixationShift_Mgr = "fixationshift_mgr";//鍥虹Щ缁撳悎绠$悊
+
+        public const string FixationShiftAnaly_Mgr = "fixationshiftanaly_mgr";//鍥虹Щ缁撳悎鍒嗘瀽
+
+        #endregion 鍥虹Щ缁撳悎
+
+        #region 娑堥槻鎬诲眬
+
+        public const string Tide_Mgr = "tide_mgr";//鍥虹Щ缁撳悎绠$悊
+
+        #endregion 娑堥槻鎬诲眬
+
+        #endregion 鍥哄畾鍙傛暟
+
+        #region 鍥哄畾鍙傛暟绋嬪簭闆嗗瓧鍏�
+
+        private static Dictionary<string, ControlAssemblyInfo> _dict_assembly = new Dictionary<string, ControlAssemblyInfo>()
+        {
+            //搴旂敤璁$畻
+            { Calcu_PressureLoss_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuPressureLossPage")},//鍘嬪姏璁$畻鎹熷け
+            { Calcu_GunsRange_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuGunRangeReactionPage")},//鏋偖灏勭▼鍙嶅姏
+            { Calcu_SuplyingCapacity_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuSingleCarWaterSupplyPage")},//鍗曡溅渚涙按鑳藉姏
+            { Calcu_WaterPower_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuWaterSupplyPage")},//渚涙按鍔涢噺
+            { Calcu_FirePower_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuFireFightingForcePage")},//鐏伀鍔涢噺
+
+            //渚涙按鑳藉姏璁$畻
+            { Calcu_Water_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireCarPumpAbilityPage")},
+
+            //缁勭粐淇℃伅鏌ヨ
+            { OrganizeInfo_View, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.OrganizeListInfoMgrPage") },
+
+            //鍦板浘淇℃伅鏌ヨ
+            { MapInfo_View,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.ViewFixedPage")},
+
+             //娑堥槻婕旂粌
+            { FireSketch_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireSketchMgrPage") },
+
+            //瀹㈡埛绠$悊
+            { Corp_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CorprationMgrPage")},
+            //缁勭粐绠$悊
+            { Organize_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.OrganizeMgrPage")},
+            //骞虫澘绠$悊
+            { Tablet_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.TabletInfoMgrPage") },
+
+            //鍩虹鏁版嵁
+            { CombustibleProperty_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CombustiblePropertyMgrPage")},//鐕冪儳鐗╃鐞�
+            { FireGunProperty_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireGunPropertyMgrPage")},//鐕冪儳鐗╃鐞�
+            { WaterBandProperty_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.WaterBandPropertyMgrPage")},//鐕冪儳鐗╃鐞�
+
+            { FireCar_Catalog_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireCarCatalogMgrPage")},//娑堥槻杞︾被鍒鐞�
+            { FireCar_Type_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireCarTypeMgrPage")},//娑堥槻杞︾被鍨嬬鐞�
+            { FireCar_Template_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireCarTemplateMgrPage")},//娑堥槻杞︽ā鏉跨鐞�
+            { FireCar_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireCarMgrPage")},//娑堥槻杞︾被鍨嬬鐞�
+            { FirePump_Template_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FirePumpTemplateMgrPage")},//娑堥槻娉垫ā鏉跨鐞�
+            { FireCarList_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FireCarListMgrPage")},//娑堥槻杞︽ā鏉跨鐞�
+
+            { Equipment_Catalog_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.EquipmentCatalogMgrPage")},//娑堥槻鍣ㄦ潗绫诲埆绠$悊
+            { Equipment_Type_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.EquipmentTypeMgrPage")},//娑堥槻鍣ㄦ潗绫诲瀷绠$悊
+
+            { Building_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.BuildingMgrPage")},//寤虹瓚鐗╃鐞�
+            { FireHydrant_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireHydrantMgrPage") },//娑堢伀鏍�
+
+            { FirePool_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FirePoolMgrPage") },//浜哄伐姘存簮
+            { Natural_Lake_Mgr , new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.NaturalLakeMgrPage") },//澶╃劧姘存簮
+
+            { Pump_Test_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireCarTestRecordMgrPage") },//娉佃溅娴嬭瘯
+
+             { FireHydrant_Test_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireHydrantTestRecordMgrPage") },//娑堥槻鏍撴祴璇曡褰�
+             { FireGun_Test_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireGunTestRecordMgrPage") },//娑堥槻鏋祴璇曡褰�
+             { WaterBand_Test_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.WaterBandTestRecordMgrPage") },//姘村甫娴嬭瘯璁板綍
+             { FireMonitor_Test_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireMonitorTestRecordMgrPage") },//娑堥槻鐐祴璇曡褰�
+
+            { Calc_Ability_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.FireCarPumpAbilityPage") },//渚涙按鑳藉姏璁$畻
+
+            { Curve_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.CurveMgrPage") },//鏇茬嚎绠$悊
+
+            { DataStructVersion_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.DataStructVersionMgrPage") },//鏁版嵁缁撴瀯鐗堟湰
+            { DataStructVersionComparison_View, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.DataStructVersionComparisonViewPage") },//鏁版嵁缁撴瀯鐗堟湰姣斿缁撴灉
+            { DataVersion_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.DataVersionMgrPage") },//鍩虹鏁版嵁鐗堟湰
+            { CorpDataVersion_Mgr, new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll", "MFire.WinFrmUI.Data.CorpDataVersionMgrPage") },//鍩虹鏁版嵁鐗堟湰
+
+            #region 鏉冮檺绠$悊
+
+            { User_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Auth.dll","MFire.WinFrmUI.Auth.UserMgrPage")},//鐢ㄦ埛绠$悊
+            { Menu_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Auth.dll","MFire.WinFrmUI.Auth.MenuMgrPage")},//鑿滃崟绠$悊
+            { Role_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Auth.dll","MFire.WinFrmUI.Auth.RoleMgrPage")},//瑙掕壊绠$悊
+            { User_Role_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Auth.dll","MFire.WinFrmUI.Auth.User_RoleMgrPage")},//瑙掕壊鐢ㄦ埛绠$悊
+            { Role_Auth_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Auth.dll","MFire.WinFrmUI.Auth.RolePageAuthMgrPage")},//瑙掕壊鏉冮檺绠$悊
+
+	        #endregion 鏉冮檺绠$悊
+
+            #region 甯姪鏂囨。
+
+            { Helpdocument_mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.OnlineBrowserPage")},//鍦ㄧ嚎鏂囨。
+             #endregion 甯姪鏂囨。
+
+            #region 鍧愭爣杞崲
+
+            { CalcuPara4_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuPara4Page")},//鍘嬪姏璁$畻鎹熷け
+            { CalcuPara7_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.CalcuPara7Page")},//鏋偖灏勭▼鍙嶅姏
+            #endregion 鍧愭爣杞崲
+
+            #region 绠$綉椤圭洰
+
+              { PipeLineProject_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.PipeLineProjectMgrPage")},//绠$綉椤圭洰
+            #endregion 绠$綉椤圭洰
+
+            #region 娑堢伀鏍撴紨缁�
+
+            { FireHydrantSketch_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.ManageFireHydrantSketchPage")},//娑堢伀鏍撴紨缁�
+            #endregion 娑堢伀鏍撴紨缁�
+
+            #region 鍥虹Щ缁撳悎
+
+            { FixationShift_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FixationShiftMgrPage")},//鍥虹Щ缁撳悎绠$悊
+            { FixationShiftAnaly_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.FixationShiftAnalyMgrPage")},//鍥虹Щ缁撳悎鍒嗘瀽
+            #endregion 鍥虹Щ缁撳悎
+
+            { Tide_Mgr,new ControlAssemblyInfo("MFire.WinFrmUI.Data.dll","MFire.WinFrmUI.Data.TideMgrPage")},//浠婃棩娼睈
+        };
+
+        #endregion 鍥哄畾鍙傛暟绋嬪簭闆嗗瓧鍏�
+
+        /// <summary>
+        /// 鑾峰彇绋嬪簭闆嗕俊鎭�
+        /// </summary>
+        public static ControlAssemblyInfo GetAssemblyInfo(string code)
+        {
+            if (string.IsNullOrEmpty(code))
+                return default;
+            if (_dict_assembly.ContainsKey(code))
+                return _dict_assembly[code];
+            return default;
+        }
+
+        #region 楠岃瘉绠$悊鍛樻潈闄�
+
+        /// <summary>
+        /// 楠岃瘉绠$悊鍛樻潈闄�
+        /// </summary>
+        /// <returns></returns>
+        public static bool VerifyAdminAuth()
+        {
+            var user = GlobalParas._GlobalParas.UserID;
+            if (user == null)
+                return default;
+            return false;
+        }
+
+        /// <summary>
+        ///  楠岃瘉绠$悊鍛樻潈闄� 鑻ユ棤鍒欐彁绀�
+        /// </summary>
+        public static bool VerifyAdminAuth(string msg)
+        {
+            var result = VerifyAdminAuth();
+            if (!result)
+            {
+                XtraMessageBox.Show(msg);
+            }
+            return result;
+        }
+
+        #endregion 楠岃瘉绠$悊鍛樻潈闄�
+
+        #region 鏉冮檺鏍�
+
+        /// <summary>
+        /// 鏉冮檺鏍戝垪琛�
+        /// </summary>
+        public static List<Yw.Dto.MenuAuthorityTreeDto> PageAuthHaveTreeList { get; set; }
+
+        /// <summary>
+        /// 鑾峰彇鏍规潈闄愯彍鍗�
+        /// </summary>
+        public static Yw.Dto.MenuAuthorityTreeDto GetRootPageAuth(string code)
+        {
+            //  return PageAuthHaveTreeList?.Find(x => x.Code == code);
+            return null;
+        }
+
+        #endregion 鏉冮檺鏍�
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/ControlAssemblyInfo.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/ControlAssemblyInfo.cs
new file mode 100644
index 0000000..23c4fa7
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/ControlAssemblyInfo.cs
@@ -0,0 +1,33 @@
+锘縩amespace HStation.WinFrmUI
+{
+    /// <summary>
+    /// 鎺т欢绋嬪簭闆嗕俊鎭�
+    /// </summary>
+    public class ControlAssemblyInfo
+    {
+        public ControlAssemblyInfo()
+        { }
+
+        public ControlAssemblyInfo(string dllFileName, string controlFullName)
+        {
+            this.DllFileName = dllFileName;
+            this.ControlFullName = controlFullName;
+        }
+
+        public ControlAssemblyInfo(ControlAssemblyInfo rhs)
+        {
+            this.DllFileName = rhs.DllFileName;
+            this.ControlFullName = rhs.ControlFullName;
+        }
+
+        /// <summary>
+        /// DLL 鏂囦欢鍚嶇О
+        /// </summary>
+        public string DllFileName { get; set; }
+
+        /// <summary>
+        /// 鎺т欢鍏ㄥ悕绉�
+        /// </summary>
+        public string ControlFullName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/PageAuthExtensions.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/PageAuthExtensions.cs
new file mode 100644
index 0000000..6bb3f20
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/00-core/PageAuthExtensions.cs
@@ -0,0 +1,10 @@
+锘縰sing DevExpress.XtraBars.Docking2010;
+using DevExpress.XtraEditors.ButtonPanel;
+using System.Collections.Generic;
+
+namespace HStation.WinFrmUI
+{
+    public static class PageAuthExtensions
+    {
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserAccountViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserAccountViewModel.cs
index cb90f9c..c11e6ac 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserAccountViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserAccountViewModel.cs
@@ -17,7 +17,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.Designer.cs
index 5a3cf5a..3dd8e1e 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.Designer.cs
@@ -33,34 +33,34 @@
         {
             components = new Container();
             ComponentResourceManager resources = new ComponentResourceManager(typeof(UserMgrPage));
+            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions4 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions6 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject21 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject22 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject23 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject24 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions7 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject25 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject26 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject27 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject28 = new DevExpress.Utils.SerializableAppearanceObject();
             DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions1 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            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();
-            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions2 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
-            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions3 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions3 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject9 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject10 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject11 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject12 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions4 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject13 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject14 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject15 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject16 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions5 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject17 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject18 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject19 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject20 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions5 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions8 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject29 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject30 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject31 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject32 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions9 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject33 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject34 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject35 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject36 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions10 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject37 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject38 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject39 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject40 = new DevExpress.Utils.SerializableAppearanceObject();
             ribbonControl1 = new DevExpress.XtraBars.Ribbon.RibbonControl();
             barBtnAdd = new DevExpress.XtraBars.BarButtonItem();
             barBtnEdit = new DevExpress.XtraBars.BarButtonItem();
@@ -296,8 +296,8 @@
             flyoutPanel2.Location = new Point(642, 191);
             flyoutPanel2.Name = "flyoutPanel2";
             flyoutPanel2.Options.AnchorType = DevExpress.Utils.Win.PopupToolWindowAnchor.Right;
-            buttonImageOptions1.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("buttonImageOptions1.SvgImage");
-            flyoutPanel2.OptionsButtonPanel.Buttons.AddRange(new DevExpress.XtraEditors.ButtonPanel.IBaseButton[] { new DevExpress.Utils.PeekFormButton("鍏抽棴", true, buttonImageOptions1, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, null, true, false, true, null, -1, false) });
+            buttonImageOptions4.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("buttonImageOptions4.SvgImage");
+            flyoutPanel2.OptionsButtonPanel.Buttons.AddRange(new DevExpress.XtraEditors.ButtonPanel.IBaseButton[] { new DevExpress.Utils.PeekFormButton("鍏抽棴", true, buttonImageOptions4, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, null, true, false, true, null, -1, false) });
             flyoutPanel2.OptionsButtonPanel.ShowButtonPanel = true;
             flyoutPanel2.OwnerControl = panelControl1;
             flyoutPanel2.Padding = new Padding(0, 30, 0, 0);
@@ -341,9 +341,9 @@
             // repositoryItemButtonEdit4
             // 
             repositoryItemButtonEdit4.AutoHeight = false;
-            editorButtonImageOptions1.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions1.SvgImage");
-            editorButtonImageOptions1.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit4.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, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions6.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions6.SvgImage");
+            editorButtonImageOptions6.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit4.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions6, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject21, serializableAppearanceObject22, serializableAppearanceObject23, serializableAppearanceObject24, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit4.Name = "repositoryItemButtonEdit4";
             repositoryItemButtonEdit4.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
@@ -358,9 +358,9 @@
             // repositoryItemButtonEdit5
             // 
             repositoryItemButtonEdit5.AutoHeight = false;
-            editorButtonImageOptions2.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions2.SvgImage");
-            editorButtonImageOptions2.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit5.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { 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, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions7.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions7.SvgImage");
+            editorButtonImageOptions7.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit5.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions7, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject25, serializableAppearanceObject26, serializableAppearanceObject27, serializableAppearanceObject28, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit5.Name = "repositoryItemButtonEdit5";
             repositoryItemButtonEdit5.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
@@ -392,9 +392,9 @@
             flyoutPanel1.Name = "flyoutPanel1";
             flyoutPanel1.Options.AnchorType = DevExpress.Utils.Win.PopupToolWindowAnchor.Right;
             flyoutPanel1.Options.Location = new Point(200, 200);
-            buttonImageOptions2.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("buttonImageOptions2.SvgImage");
-            buttonImageOptions3.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("buttonImageOptions3.SvgImage");
-            flyoutPanel1.OptionsButtonPanel.Buttons.AddRange(new DevExpress.XtraEditors.ButtonPanel.IBaseButton[] { new DevExpress.Utils.PeekFormButton("淇濆瓨", true, buttonImageOptions2, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, null, true, false, true, null, -1, false), new DevExpress.Utils.PeekFormButton("鍏抽棴", true, buttonImageOptions3, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, null, true, false, true, null, -1, false) });
+            buttonImageOptions1.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("buttonImageOptions1.SvgImage");
+            buttonImageOptions5.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("buttonImageOptions5.SvgImage");
+            flyoutPanel1.OptionsButtonPanel.Buttons.AddRange(new DevExpress.XtraEditors.ButtonPanel.IBaseButton[] { new DevExpress.Utils.PeekFormButton("淇濆瓨", true, buttonImageOptions1, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, null, true, false, true, null, -1, false), new DevExpress.Utils.PeekFormButton("鍏抽棴", true, buttonImageOptions5, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, null, true, false, true, null, -1, false) });
             flyoutPanel1.OptionsButtonPanel.ShowButtonPanel = true;
             flyoutPanel1.OwnerControl = panelControl1;
             flyoutPanel1.Padding = new Padding(0, 30, 0, 0);
@@ -522,9 +522,9 @@
             // repositoryItemButtonEdit3
             // 
             repositoryItemButtonEdit3.AutoHeight = false;
-            editorButtonImageOptions3.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions3.SvgImage");
-            editorButtonImageOptions3.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit3.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions3, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject9, serializableAppearanceObject10, serializableAppearanceObject11, serializableAppearanceObject12, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions8.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions8.SvgImage");
+            editorButtonImageOptions8.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit3.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions8, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject29, serializableAppearanceObject30, serializableAppearanceObject31, serializableAppearanceObject32, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit3.Name = "repositoryItemButtonEdit3";
             repositoryItemButtonEdit3.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
@@ -542,9 +542,9 @@
             // repositoryItemButtonEdit1
             // 
             repositoryItemButtonEdit1.AutoHeight = false;
-            editorButtonImageOptions4.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions4.SvgImage");
-            editorButtonImageOptions4.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions4, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject13, serializableAppearanceObject14, serializableAppearanceObject15, serializableAppearanceObject16, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions9.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions9.SvgImage");
+            editorButtonImageOptions9.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions9, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject33, serializableAppearanceObject34, serializableAppearanceObject35, serializableAppearanceObject36, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit1.Name = "repositoryItemButtonEdit1";
             repositoryItemButtonEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
@@ -602,9 +602,9 @@
             // repositoryItemButtonEdit2
             // 
             repositoryItemButtonEdit2.AutoHeight = false;
-            editorButtonImageOptions5.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions5.SvgImage");
-            editorButtonImageOptions5.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit2.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions5, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject17, serializableAppearanceObject18, serializableAppearanceObject19, serializableAppearanceObject20, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions10.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions10.SvgImage");
+            editorButtonImageOptions10.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit2.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions10, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject37, serializableAppearanceObject38, serializableAppearanceObject39, serializableAppearanceObject40, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit2.Name = "repositoryItemButtonEdit2";
             repositoryItemButtonEdit2.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs
index e61555d..de80bcf 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.cs
@@ -507,7 +507,7 @@
                     XtraMessageBox.Show("閲嶇疆澶辫触锛�");
                     return;
                 }
-                // var model = bll.GetByID(row.ID);
+                // var model = bll.GetByID(row.UserID);
                 // row.Reset(model);
                 this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle);
                 XtraMessageBox.Show("閲嶇疆鎴愬姛锛�");
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.resx b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.resx
index c7efffd..26db5d8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/03-user/UserMgrPage.resx
@@ -351,7 +351,7 @@
   <metadata name="userAccountViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>698, 17</value>
   </metadata>
-  <data name="editorButtonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="editorButtonImageOptions6.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -370,7 +370,7 @@
         LDEuOCw0LDR2MkgxMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="editorButtonImageOptions2.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="editorButtonImageOptions7.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -390,7 +390,7 @@
         c3ZnPgs=
 </value>
   </data>
-  <data name="buttonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="buttonImageOptions4.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -417,7 +417,7 @@
   <metadata name="userRoleHaveViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>414, 17</value>
   </metadata>
-  <data name="buttonImageOptions2.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="buttonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -439,7 +439,7 @@
         MzAsNyAgICIgY2xhc3M9IkdyZWVuIiAvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="buttonImageOptions3.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="buttonImageOptions5.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -469,7 +469,7 @@
   <metadata name="behaviorManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>248, 17</value>
   </metadata>
-  <data name="editorButtonImageOptions3.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="editorButtonImageOptions8.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -490,7 +490,7 @@
         MkMyMiwxNy4xLDIxLjEsMTgsMjAsMTh6IiBjbGFzcz0iUmVkIiAvPg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="editorButtonImageOptions4.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="editorButtonImageOptions9.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -511,7 +511,7 @@
         PC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="editorButtonImageOptions5.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="editorButtonImageOptions10.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.Designer.cs
new file mode 100644
index 0000000..5a1aa4d
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.Designer.cs
@@ -0,0 +1,79 @@
+锘縩amespace HStation.WinFrmUI 
+{
+    partial class XtraUserControl1
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            gridControl1 = new DevExpress.XtraGrid.GridControl();
+            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            dataNavigator1 = new DevExpress.XtraEditors.DataNavigator();
+            ((System.ComponentModel.ISupportInitialize)gridControl1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)gridView1).BeginInit();
+            SuspendLayout();
+            // 
+            // gridControl1
+            // 
+            gridControl1.Location = new Point(98, 114);
+            gridControl1.MainView = gridView1;
+            gridControl1.Name = "gridControl1";
+            gridControl1.Size = new Size(400, 200);
+            gridControl1.TabIndex = 0;
+            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
+            // 
+            // gridView1
+            // 
+            gridView1.GridControl = gridControl1;
+            gridView1.Name = "gridView1";
+            // 
+            // dataNavigator1
+            // 
+            dataNavigator1.Location = new Point(54, 354);
+            dataNavigator1.Name = "dataNavigator1";
+            dataNavigator1.Size = new Size(492, 34);
+            dataNavigator1.TabIndex = 1;
+            dataNavigator1.Text = "dataNavigator1";
+            // 
+            // XtraUserControl1
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(dataNavigator1);
+            Controls.Add(gridControl1);
+            Name = "XtraUserControl1";
+            Size = new Size(579, 420);
+            ((System.ComponentModel.ISupportInitialize)gridControl1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)gridView1).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraGrid.GridControl gridControl1;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private DevExpress.XtraEditors.DataNavigator dataNavigator1;
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.cs b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.cs
new file mode 100644
index 0000000..7386eaa
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.cs
@@ -0,0 +1,21 @@
+锘縰sing DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HStation.WinFrmUI
+{
+    public partial class XtraUserControl1 : DevExpress.XtraEditors.XtraUserControl
+    {
+        public XtraUserControl1()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.resx b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/05-user-log/XtraUserControl1.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/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj
index 45efbfd..f9a38b1 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj
@@ -40,7 +40,7 @@
   <ItemGroup>
     <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
     <PackageReference Include="Microsoft.QualityTools.Testing.Fakes" Version="17.5.0-beta.23060.1" />
-    <PackageReference Include="Yw.BLL.Auth.Core" Version="3.3.6" />
+    <PackageReference Include="Yw.BLL.Auth.Core" Version="3.3.7" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj.user b/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj.user
index 5b412f8..fdb037c 100644
--- a/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj.user
+++ b/WinFrmUI/HStation.WinFrmUI.Auth.Core/HStation.WinFrmUI.Auth.Core.csproj.user
@@ -56,5 +56,8 @@
     <Compile Update="04-role-projcet-menu\RoleProjectMenuPage.cs">
       <SubType>UserControl</SubType>
     </Compile>
+    <Compile Update="05-user-log\XtraUserControl1.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysCatalogManage/00-ViewModel/SysTypeTreeListViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysCatalogManage/00-ViewModel/SysTypeTreeListViewModel.cs
index 19a6452..4a7af7d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysCatalogManage/00-ViewModel/SysTypeTreeListViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/01-SysCatalogManage/00-ViewModel/SysTypeTreeListViewModel.cs
@@ -30,7 +30,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SelectCorprationListCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SelectCorprationListCtrl.cs
index 37ffc0d..a3417ab 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SelectCorprationListCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SelectCorprationListCtrl.cs
@@ -34,7 +34,7 @@
             }
 
             /// <summary>
-            /// ID
+            /// UserID
             /// </summary>
             public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SysTypeTreeListLookUpEdit.cs b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SysTypeTreeListLookUpEdit.cs
index 86f06a4..7f1aae2 100644
--- a/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SysTypeTreeListLookUpEdit.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Basic.Core/02-SysPropManage/SysTypeTreeListLookUpEdit.cs
@@ -37,7 +37,7 @@
             }
 
             /// <summary>
-            /// ID
+            /// UserID
             /// </summary>
             public long ID { get; set; }
 
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 7587344..4238978 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"
@@ -21,12 +21,16 @@
             _GlobalParas.LoginName = rhs.User.Name;
             _GlobalParas.ProjectID = rhs.Software.Project.ID;
             _GlobalParas.ProductID = rhs.Software.Project.Product.ID;
+            _GlobalParas.UserID = rhs.User.ID;
+            _GlobalParas.SoftwareID = rhs.Software.ID;
         }
+
+        public long SoftwareID { get; set; }
 
         /// <summary>
         /// 鐢ㄦ埛鏍囪瘑
         /// </summary>
-        public long ID { get; set; }
+        public long UserID { get; set; }
 
         /// <summary>
         /// 瀹㈡埛鏍囪瘑
diff --git a/WinFrmUI/HStation.WinFrmUI.Hydro.Core/00-core/HydroQ3dTransferHelper.cs b/WinFrmUI/HStation.WinFrmUI.Hydro.Core/00-core/HydroQ3dTransferHelper.cs
index 149baa2..d8e4599 100644
--- a/WinFrmUI/HStation.WinFrmUI.Hydro.Core/00-core/HydroQ3dTransferHelper.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Hydro.Core/00-core/HydroQ3dTransferHelper.cs
@@ -26,7 +26,7 @@
                 foreach (var junction in info.Junctions)
                 {
                     //var junctionModel = new HyView.JunctionViewModel();
-                    //junctionModel.ID = junction.Code;
+                    //junctionModel.UserID = junction.Code;
                     //junctionModel.Name = junction.Name;
                     //junctionModel.X = (float)junction.Position3d.X;
                     //junctionModel.Y = (float)junction.Position3d.Y;
@@ -48,7 +48,7 @@
                 foreach (var reservoir in info.Reservoirs)
                 {
                     //var reservoirModel = new HyView.ReservoirViewModel();
-                    //reservoirModel.ID = reservoir.Code;
+                    //reservoirModel.UserID = reservoir.Code;
                     //reservoirModel.Name = reservoir.Name;
                     //reservoirModel.X = (float)reservoir.Position3d.X;
                     //reservoirModel.Y = (float)reservoir.Position3d.Y;
@@ -67,7 +67,7 @@
                 foreach (var tank in info.Tanks)
                 {
                     //var tankModel = new HyView.TankViewModel();
-                    //tankModel.ID = tank.Code;
+                    //tankModel.UserID = tank.Code;
                     //tankModel.Name = tank.Name;
                     //tankModel.X = (float)tank.Position3d.X;
                     //tankModel.Y = (float)tank.Position3d.Y;
@@ -91,11 +91,11 @@
                 foreach (var pipe in info.Pipes)
                 {
                     //var pipeModel = new HyView.PipeViewModel();
-                    //pipeModel.ID = pipe.Code;
+                    //pipeModel.UserID = pipe.Code;
                     //pipeModel.Name = pipe.Name;
                     //// pipeModel.Status = StatusType.OPEN;
-                    //pipeModel.StartNode = netWork.Nodes.Find(x => x.ID == pipe.StartCode);
-                    //pipeModel.EndNode = netWork.Nodes.Find(x => x.ID == pipe.EndCode);
+                    //pipeModel.StartNode = netWork.Nodes.Find(x => x.UserID == pipe.StartCode);
+                    //pipeModel.EndNode = netWork.Nodes.Find(x => x.UserID == pipe.EndCode);
                     //pipeModel.Diameter = (float)pipe.Diameter;
                     //pipeModel.Length = (float)pipe.Length;
                     //pipeModel.Roughness = (float)pipe.Roughness;
@@ -112,11 +112,11 @@
                 foreach (var pump in info.Pumps)
                 {
                     //var pumpModel = new HyView.PumpViewModel();
-                    //pumpModel.ID = pump.Code;
+                    //pumpModel.UserID = pump.Code;
                     //pumpModel.Name = pump.Name;
                     ////pumpModel.Status = StatusType.OPEN;
-                    //pumpModel.StartNode = netWork.Nodes.Find(x => x.ID == pump.StartCode);
-                    //pumpModel.EndNode = netWork.Nodes.Find(x => x.ID == pump.EndCode);
+                    //pumpModel.StartNode = netWork.Nodes.Find(x => x.UserID == pump.StartCode);
+                    //pumpModel.EndNode = netWork.Nodes.Find(x => x.UserID == pump.EndCode);
                     //pumpModel.HeadCurve = pump.CurveQH;
 
 
@@ -131,11 +131,11 @@
                 foreach (var valve in info.Valves)
                 {
                     //var valveModel = new HyView.ValveViewModel();
-                    //valveModel.ID = valve.Code;
+                    //valveModel.UserID = valve.Code;
                     //valveModel.Name = valve.Name;
                     ////valveModel.Status = StatusType.OPEN;
-                    //valveModel.StartNode = netWork.Nodes.Find(x => x.ID == valve.StartCode);
-                    //valveModel.EndNode = netWork.Nodes.Find(x => x.ID == valve.EndCode);
+                    //valveModel.StartNode = netWork.Nodes.Find(x => x.UserID == valve.StartCode);
+                    //valveModel.EndNode = netWork.Nodes.Find(x => x.UserID == valve.EndCode);
                     //valveModel.Diameter = (float)valve.Diameter;
                     //valveModel.Type = valve.ValveType;
                     //valveModel.Setting = valve.ValveSetting;
diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/01-view/ValveChartViewCtrl.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/01-view/ValveChartViewCtrl.cs
index ad58f52..d33c7ea 100644
--- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/01-view/ValveChartViewCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/03-valve/01-view/ValveChartViewCtrl.cs
@@ -10,10 +10,9 @@
 
         /// <summary>
         /// 缁戝畾鏁版嵁
-        /// </summary> 
+        /// </summary>
         public void SetBindingData(Yw.Vmo.PhartDiagramExGraphListVmo vmo)
         {
-
         }
 
         /// <summary>
@@ -21,23 +20,19 @@
         /// </summary>
         public void ClearBindingData()
         {
-
         }
 
         //鏌ヨ绾�
         private void barCekLineVisible_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-
         }
 
         /// <summary>
         /// 鑾峰彇
-        /// </summary> 
+        /// </summary>
         public Yw.Vmo.PhartDiagramExGraphListVmo Get()
         {
             return new();
         }
-
-
     }
-}
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/01-list/PhartDiagramRelationListItemViewModel.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/01-list/PhartDiagramRelationListItemViewModel.cs
index 918da57..0e80862 100644
--- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/01-list/PhartDiagramRelationListItemViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/01-list/PhartDiagramRelationListItemViewModel.cs
@@ -26,7 +26,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/03-grid/PhartDiagramRelationGridItemViewModel.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/03-grid/PhartDiagramRelationGridItemViewModel.cs
index fb96ac6..eb557e1 100644
--- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/03-grid/PhartDiagramRelationGridItemViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/relation/03-grid/PhartDiagramRelationGridItemViewModel.cs
@@ -27,7 +27,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [Display(Name = "ID")]
         public long ID { get; set; }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs
index 6a36a1d..cd4a18b 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/00-core/HomeXhsProjectPage.cs
@@ -97,7 +97,7 @@
                 if (!IsExistPage(guid, true))
                 {
                     // var page = new XhsSchemeMultiMgrPage();
-                    // await page.SetMatching(obj.ID);
+                    // await page.SetMatching(obj.UserID);
 
                     var page = new XhsProjectSimulationMgrPage();
                     await page.SetBindingData(PrjID);
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs
index 42a7470..9a776bc 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/01-project/HomeXhsProjectTreeViewModel.cs
@@ -33,7 +33,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         public long ID { get; set; }
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/01-info/cloud/SelectXhsProjectTransferFileViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/01-info/cloud/SelectXhsProjectTransferFileViewModel.cs
index 359cdef..f7073c7 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/01-info/cloud/SelectXhsProjectTransferFileViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/01-info/cloud/SelectXhsProjectTransferFileViewModel.cs
@@ -29,7 +29,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         public long ID { get; set; }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrViewModel.cs
index cc4ace8..ea729b0 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrViewModel.cs
@@ -62,7 +62,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [Display(Name = "ID")]
         public long ID { get; set; }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ElbowMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ElbowMatchingViewModel.cs
index 31c3759..da212ca 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ElbowMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ElbowMatchingViewModel.cs
@@ -6,7 +6,7 @@
     public class ElbowMatchingViewModel
     {
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         [Browsable(false)]
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/FourlinkMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/FourlinkMatchingViewModel.cs
index 0508c48..5536ec6 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/FourlinkMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/FourlinkMatchingViewModel.cs
@@ -6,7 +6,7 @@
     public class FourlinkMatchingViewModel
     {
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         [Browsable(false)]
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PipeMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PipeMatchingViewModel.cs
index 020782b..deeea20 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PipeMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PipeMatchingViewModel.cs
@@ -7,7 +7,7 @@
     {
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         [Browsable(false)]
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PumpMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PumpMatchingViewModel.cs
index 7239a92..1f71cbb 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PumpMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/PumpMatchingViewModel.cs
@@ -51,7 +51,7 @@
         }
 
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         [Browsable(false)]
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ThreelinkMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ThreelinkMatchingViewModel.cs
index 6784fb8..6d2a667 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ThreelinkMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ThreelinkMatchingViewModel.cs
@@ -6,7 +6,7 @@
     public class ThreelinkMatchingViewModel
     {
         /// <summary>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         [Browsable(false)]
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ValveMatchingViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ValveMatchingViewModel.cs
index 23bd103..b81213d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ValveMatchingViewModel.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/07-matching/01-viewmodel/ValveMatchingViewModel.cs
@@ -40,7 +40,7 @@
         }
 
         /// <summaryd>
-        /// ID
+        /// UserID
         /// </summary>
         [DisplayName("ID")]
         [Browsable(false)]
diff --git a/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterUtensil/WaterUtensilMgr.cs b/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterUtensil/WaterUtensilMgr.cs
index 48c734a..4aba262 100644
--- a/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterUtensil/WaterUtensilMgr.cs
+++ b/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterUtensil/WaterUtensilMgr.cs
@@ -177,7 +177,7 @@
                dlg.SetBindingData(vm.TagName);
                dlg.ReloadDataEvent += (tagName) =>
                {
-                   var result = _bll.UpdateTagName(vm.ID, tagName);
+                   var result = _bll.UpdateTagName(vm.UserID, tagName);
                    if (result)
                    {
                        vm.TagName = tagName;
@@ -203,7 +203,7 @@
                  dlg.SetBindingData(vm.SortCode);
                  dlg.ReloadDataEvent += (sortCode) =>
                  {
-                     var result = _bll.UpdateSortCode(vm.ID, sortCode);
+                     var result = _bll.UpdateSortCode(vm.UserID, sortCode);
                      if (result)
                      {
                          vm.SortCode = sortCode;
@@ -229,7 +229,7 @@
               dlg.SetBindingData(vm.UseStatus);
               dlg.ReloadDataEvent += (useStatus) =>
               {
-                  var result = _bll.UpdateUseStatus(vm.ID, (int)useStatus);
+                  var result = _bll.UpdateUseStatus(vm.UserID, (int)useStatus);
                   if (result)
                   {
                       vm.UseStatus = useStatus;
diff --git a/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterWE/WaterEquivalentMgr.cs b/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterWE/WaterEquivalentMgr.cs
index 1301a3e..9f16436 100644
--- a/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterWE/WaterEquivalentMgr.cs
+++ b/WinFrmUI/PBS.WinFrmUI.WE.Core/WaterWE/WaterEquivalentMgr.cs
@@ -168,7 +168,7 @@
                }
                if (MessageBoxHelper.IsClickOk($"纭鍒犻櫎鏁版嵁琛�?"))
                    return;
-               if (_bllWaterEquivalent.DeleteByID(vm.ID, out string msg))
+               if (_bllWaterEquivalent.DeleteByID(vm.UserID, out string msg))
                {
                    MessageBoxHelper.ShowSuccess("鍒犻櫎鎴愬姛!");
                    _allBindingList.Remove(vm);

--
Gitblit v1.9.3