From 1d35b151e33d8919d578e3db321067b881eac1d5 Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期四, 20 六月 2024 18:24:33 +0800
Subject: [PATCH] 新增增加界面以及修改界面

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.resx                      |  123 ++
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/Properties/DataSources/ProjectViewModel.datasource |   10 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/MainForm.resx            |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageFunctionItem.cs      |    0 
 HStation.WebApi.Xhs.Core/Startup.cs                                                       |   17 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx                 |   19 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/DocumentPage.cs          |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.cs                   |   60 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.bak           |   19 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.bak                 |   14 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageDataSync.cs          |    0 
 HStation.BLL.Xhs.Core/03-localclient/XhsProject.cs                                        |   53 
 HStation.Dto.Xhs.Core/01-project/XhsProjectStdDto.cs                                      |   16 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.resx                     |  123 ++
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/提示弹窗/MessageBoxHelper.cs                 |   91 ++
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/MainForm.cs              |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageTitle.cs             |    0 
 HStation.Application.Xhs.Core/01-project/XhsProject_StdController.cs                      |    7 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.designer.cs              |  417 +++++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.user          |    7 
 HStation.Dto.Xhs.Core/01-project/AddXhsProjectInput.cs                                    |   35 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj                     |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.cs                       |   70 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/SurfaceGuid.cs           |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/ProjectViewModel.cs                     |   23 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/ePageDataOperation.cs    |    0 
 Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj                        |    2 
 HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user                               |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.Designer.cs          |   90 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageMenu.cs              |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/ObjectType.cs            |    0 
 Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj.bak                    |   44 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj               |   12 
 Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx                                          |   36 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/DocumentPage.resx        |    0 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx.bak             |  192 ++++
 HStation.Dto.Xhs.Core/01-project/XhsProjectDto.cs                                         |   49 
 HStation.Entry.Xhs.Core/Properties/PublishProfiles/FolderProfile.pubxml.user              |    4 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.designer.cs               |  417 +++++++++
 Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx.bak                                      |  532 ++++++++++++
 HStation.Service.Xhs.Core/02-model/XhsProject.cs                                          |   50 
 WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.cs                        |   67 +
 42 files changed, 2,475 insertions(+), 128 deletions(-)

diff --git a/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx b/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx
index 0df58ac..0ba83d2 100644
--- a/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx
+++ b/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx
@@ -132,8 +132,8 @@
         FbPZ3BDAZcKYMnkN0q+zEAc8WkYrvR++GQAAAABJRU5ErkJggg==
 </value>
   </data>
-  <assembly alias="DevExpress.Data.v22.2" name="DevExpress.Data.v22.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
-  <data name="nbMapOverview.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="nbMapOverview.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -149,7 +149,7 @@
         OFY0LjhsOCw4VjI3LjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="nbSystemConfig.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="nbSystemConfig.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -173,7 +173,7 @@
         LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="nbSystemAuthority.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="nbSystemAuthority.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -194,7 +194,7 @@
         Y2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="nbMinimize.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="nbMinimize.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -211,7 +211,7 @@
         MTcuNSwyNy41LDE4LDI3LDE4eiIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="nbClose.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="nbClose.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -235,7 +235,7 @@
   <metadata name="popSystemConfig.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>325, 17</value>
   </metadata>
-  <data name="barBtnSupplier.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnSupplier.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -258,7 +258,7 @@
         IE0yNiwxNGgtMnYyaDJWMTR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="barBtnBuildingType.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnBuildingType.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -280,7 +280,7 @@
         eiBNMjgsMjZIMTh2LTRoMTBWMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="barBtnBuilding.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnBuilding.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -300,7 +300,7 @@
         M1YxNHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barBtnFacilities.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnFacilities.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -318,7 +318,7 @@
         IGNsYXNzPSJZZWxsb3ciIC8+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="barBtnSystemType.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnSystemType.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -351,7 +351,7 @@
         IiAvPg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="barBtnPart.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnPart.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -367,7 +367,7 @@
         OFY0LjhsOCw4VjI3LjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barBtnWaterEquivalent.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnWaterEquivalent.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -409,7 +409,7 @@
         c3ZnPgs=
 </value>
   </data>
-  <data name="barButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -431,7 +431,7 @@
   <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>190, 17</value>
   </metadata>
-  <data name="barBtnUser.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnUser.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -459,7 +459,7 @@
         Ljh6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="barBtnAuthority.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnAuthority.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -477,7 +477,7 @@
         MTJ6IiBjbGFzcz0iWWVsbG93IiAvPg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="barBtnSystemLog.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnSystemLog.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -505,7 +505,7 @@
         MTEuNiwxNC40eiIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="barBtnCorp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="barBtnCorp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
diff --git a/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx.bak b/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx.bak
new file mode 100644
index 0000000..0df58ac
--- /dev/null
+++ b/Desktop/HStation.DeskTop.Xhs.Main/GuideMain.resx.bak
@@ -0,0 +1,532 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="documentManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="nbMain.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+        vAAADrwBlbxySQAAAS9JREFUOE+VUz1rAkEQ3cLf4T/QCEoa0xgJoqUpxDraBZEDLf3olNTKNQd6rXBw
+        IIEjICkuafw/KVJk5G12VvfWXPTB4+bj5t3M3K74D5PJlJR5HeI4loX5fIHAYrFEo9E4XSwMQ3JdVxMx
+        FmBWKtXzImvfN4r/EgDL5TtTJAgCWiyWFwuAzebjUSRZiG5USqP6ULNEZCI5t+d5MnH/+k0Z/4fEmgg2
+        Ymj9VKDT6ZL19d3nnp4/fotP+fT+RS/uyhCwdsHIbsxiEDGVPg/HcWgwGMqXbre2AGLIRVFETPga9XpD
+        tgUh+EkBxLbRmzEuYhr4jbncjRRRIYFdgMq19qXCR3AXEOr1+voF2HwnuJiPuoVWq623DJ9tkMfDwcMz
+        FbPZ3BDAZcKYMnkN0q+zEAc8WkYrvR++GQAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <assembly alias="DevExpress.Data.v22.2" name="DevExpress.Data.v22.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="nbMapOverview.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABMCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        R3JlZW57ZmlsbDojMDM5QzIzO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbHVle2ZpbGw6IzEx
+        NzdENzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxnIGlkPSJNYXAiPg0KICAgIDxw
+        YXRoIGQ9Ik0yMCwxMGwtOC04bC04LDh2MjBsOC04bDgsOGw4LThWMkwyMCwxMHogTTIwLDI3LjJsLTgt
+        OFY0LjhsOCw4VjI3LjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="nbSystemConfig.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w
+        LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu
+        NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3
+        LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww
+        LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww
+        LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz
+        LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x
+        NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y
+        LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="nbSystemAuthority.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAACUDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9Ik1lbnUiPg0KICAgIDxwYXRoIGQ9Ik0yLDEwVjNj
+        MC0wLjUsMC41LTEsMS0xaDI2YzAuNSwwLDEsMC41LDEsMXY3SDJ6IE05LDEyYy0xLjcsMC0zLDEuMy0z
+        LDNzMS4zLDMsMywzczMtMS4zLDMtM1MxMC43LDEyLDksMTJ6ICAgIE05LDIwYy0xLjcsMC0zLDEuMy0z
+        LDNzMS4zLDMsMywzczMtMS4zLDMtM1MxMC43LDIwLDksMjB6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8
+        cGF0aCBkPSJNMzAsMTB2MTljMCwwLjUtMC41LDEtMSwxSDNjLTAuNSwwLTEtMC41LTEtMVYxMGgydjE4
+        aDI0VjEwSDMweiBNMjQsMTRIMTR2MmgxMFYxNHogTTI0LDIySDE0djJoMTBWMjJ6IiBjbGFzcz0iQmxh
+        Y2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="nbMinimize.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFICAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlJlbW92ZSI+DQogICAgPHBhdGggZD0iTTI3LDE4SDVj
+        LTAuNiwwLTEtMC41LTEtMXYtMmMwLTAuNiwwLjQtMSwxLTFoMjJjMC41LDAsMSwwLjQsMSwxdjJDMjgs
+        MTcuNSwyNy41LDE4LDI3LDE4eiIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="nbClose.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAD0DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
+        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVsZXRlIj4N
+        CiAgICA8Zz4NCiAgICAgIDxwYXRoIGQ9Ik0xOC44LDE2bDYuOS02LjljMC40LTAuNCwwLjQtMSwwLTEu
+        NGwtMS40LTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxNiwxMy4yTDkuMSw2LjNjLTAuNC0wLjQtMS0w
+        LjQtMS40LDAgICAgTDYuMyw3LjdjLTAuNCwwLjQtMC40LDEsMCwxLjRsNi45LDYuOWwtNi45LDYuOWMt
+        MC40LDAuNC0wLjQsMSwwLDEuNGwxLjQsMS40YzAuNCwwLjQsMSwwLjQsMS40LDBsNi45LTYuOWw2Ljks
+        Ni45ICAgIGMwLjQsMC40LDEsMC40LDEuNCwwbDEuNC0xLjRjMC40LTAuNCwwLjQtMSwwLTEuNEwxOC44
+        LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <metadata name="popSystemConfig.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>325, 17</value>
+  </metadata>
+  <data name="barBtnSupplier.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALsDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLlJlZHtmaWxsOiNEMTFD
+        MUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7Zmls
+        bDojNzI3MjcyO30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuNzU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iRmF4Ij4NCiAgICA8cGF0aCBkPSJNMTgsOGgtMlYyaDEwdjZoLTJWNGgtNlY4eiBN
+        OCwyNlY4YzAtMS4xLTAuOS0yLTItMkgyQzAuOSw2LDAsNi45LDAsOHYxOGMwLDEuMSwwLjksMiwyLDJo
+        NCAgIEM3LjEsMjgsOCwyNy4xLDgsMjZ6IE0zMiw4djE4YzAsMS4xLTAuOSwyLTIsMkgxMmMtMS4xLDAt
+        Mi0wLjktMi0yVjhjMC0xLjEsMC45LTIsMi0yaDJ2M2MwLDAuNiwwLjQsMSwxLDFoMTJjMC42LDAsMS0w
+        LjQsMS0xVjZoMiAgIEMzMS4xLDYsMzIsNi45LDMyLDh6IE0xOCwyMmgtMnYyaDJWMjJ6IE0xOCwxOGgt
+        MnYyaDJWMTh6IE0xOCwxNGgtMnYyaDJWMTR6IE0yMiwyMmgtMnYyaDJWMjJ6IE0yMiwxOGgtMnYyaDJW
+        MTh6IE0yMiwxNGgtMnYyaDIgICBWMTR6IE0yNiwyMmgtMnYyaDJWMjJ6IE0yNiwxOGgtMnYyaDJWMTh6
+        IE0yNiwxNGgtMnYyaDJWMTR6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnBuildingType.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIIDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
+        QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
+        MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iSXRlbVR5cGVT
+        dGFuZGFyZCI+DQogICAgPGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iMiIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICAgIDxwYXRoIGQ9Ik0xMCw0Yy0zLjMsMC02LDIuNy02LDZzMi43LDYsNiw2czYtMi43LDYtNlMx
+        My4zLDQsMTAsNHogTTEwLDE0Yy0yLjIsMC00LTEuOC00LTRjMC0yLjIsMS44LTQsNC00ICAgczQsMS44
+        LDQsNEMxNCwxMi4yLDEyLjIsMTQsMTAsMTR6IE0xMCwxOGMtMy4zLDAtNiwyLjctNiw2czIuNyw2LDYs
+        NnM2LTIuNyw2LTZTMTMuMywxOCwxMCwxOHogTTEwLDI4Yy0yLjIsMC00LTEuOC00LTQgICBjMC0yLjIs
+        MS44LTQsNC00czQsMS44LDQsNEMxNCwyNi4yLDEyLjIsMjgsMTAsMjh6IE0yOCwxMkgxOFY4aDEwVjEy
+        eiBNMjgsMjZIMTh2LTRoMTBWMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="barBtnBuilding.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPoCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        R3JlZW57ZmlsbDojMDM5QzIzO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbHVle2ZpbGw6IzEx
+        NzdENzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxnIGlkPSJIb3RlbF8xXyI+DQog
+        ICAgPHBhdGggZD0iTTI3LDZoLTVWM2MwLTAuNS0wLjQtMS0xLTFIMTFjLTAuNiwwLTEsMC41LTEsMXYz
+        SDVDNC40LDYsNCw2LjUsNCw3djIyYzAsMC41LDAuNCwxLDEsMWg5di04aDR2OGg5ICAgYzAuNiwwLDEt
+        MC41LDEtMVY3QzI4LDYuNSwyNy42LDYsMjcsNnogTTEyLDI2SDh2LTRoNFYyNnogTTEyLDIwSDh2LTRo
+        NFYyMHogTTEyLDE0SDh2LTRoM2gxVjE0eiBNMTgsMjBoLTR2LTRoNFYyMHogTTE4LDE0aC00di00ICAg
+        aDRWMTR6IE0yNCwyNmgtNHYtNGg0VjI2eiBNMjQsMjBoLTR2LTRoNFYyMHogTTI0LDE0aC00di00aDFo
+        M1YxNHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnFacilities.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHUCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MTYgMTYiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGQkFGMUE7fQoJ
+        LkJsYWNre2ZpbGw6IzczNzM3Mzt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0wLDF2MTRoMTZWMUgweiBN
+        MTUsMTRIMVYyaDE0VjE0eiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8cGF0aCBkPSJNOCw0QzYuMyw0LDUs
+        NC43LDUsNS41djVDNSwxMS4zLDYuMywxMiw4LDEyczMtMC43LDMtMS41di01QzExLDQuNyw5LjcsNCw4
+        LDR6IE04LjEsNkw4LjEsNiAgQzguMSw2LDgsNiw4LjEsNkM4LDYsOCw2LDguMSw2QzYuOSw2LDYsNS44
+        LDYsNS41UzYuOSw1LDgsNWwwLDBsMCwwbDAsMGMxLjIsMCwyLDAuMiwyLDAuNVM5LjIsNiw4LjEsNnoi
+        IGNsYXNzPSJZZWxsb3ciIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnSystemType.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPMFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
+        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
+        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+        Pg0KICA8ZyBpZD0iVmlld1NldHRpbmdzXzFfIj4NCiAgICA8cGF0aCBkPSJNMzIsOVY3bC0yLjUtMC42
+        QzI5LjQsNiwyOS4yLDUuNiwyOSw1LjJsMS41LTIuMWwtMS42LTEuNkwyNi44LDNjLTAuNC0wLjItMC44
+        LTAuNC0xLjItMC41TDI1LDBoLTIgICBsLTAuNiwyLjVDMjIsMi42LDIxLjYsMi44LDIxLjIsM2wtMi0x
+        LjVsLTEuNywxLjdsMS41LDJjLTAuMiwwLjQtMC40LDAuOC0wLjUsMS4yTDE2LDd2MmwyLjUsMC42YzAu
+        MSwwLjQsMC4zLDAuOCwwLjUsMS4yICAgbC0xLjUsMi4xbDEuNiwxLjZsMi4xLTEuNWMwLjQsMC4yLDAu
+        OCwwLjQsMS4yLDAuNUwyMywxNmgybDAuNi0yLjVjMC40LTAuMSwwLjgtMC4zLDEuMi0wLjVsMi4xLDEu
+        NWwxLjYtMS42TDI5LDEwLjggICBjMC4yLTAuNCwwLjQtMC44LDAuNS0xLjJMMzIsOXogTTI0LDEwYy0x
+        LjEsMC0yLTAuOS0yLTJjMC0xLjEsMC45LTIsMi0yczIsMC45LDIsMkMyNiw5LjEsMjUuMSwxMCwyNCwx
+        MHogTTE4LDIxICAgYzAtMC4zLDAtMC42LTAuMS0wLjhsMi4xLTEuOGwtMC44LTEuOWwtMi43LDAuMmMt
+        MC4zLTAuNC0wLjctMC44LTEuMi0xLjJsMC4yLTIuN0wxMy42LDEybC0xLjgsMi4xQzExLjYsMTQsMTEu
+        MywxNCwxMSwxNCAgIHMtMC42LDAtMC44LDAuMUw4LjQsMTJsLTEuOSwwLjhsMC4yLDIuN2MtMC40LDAu
+        My0wLjgsMC43LTEuMiwxLjJsLTIuNy0wLjJMMiwxOC40bDIuMSwxLjhDNCwyMC40LDQsMjAuNyw0LDIx
+        czAsMC42LDAuMSwwLjggICBMMiwyMy42bDAuOCwxLjlsMi43LTAuMmMwLjMsMC40LDAuNywwLjgsMS4y
+        LDEuMmwtMC4yLDIuN0w4LjQsMzBsMS44LTIuMWMwLjMsMCwwLjUsMC4xLDAuOCwwLjFzMC42LDAsMC44
+        LTAuMWwxLjgsMi4xbDEuOS0wLjggICBsLTAuMi0yLjdjMC40LTAuMywwLjgtMC43LDEuMi0xLjJsMi43
+        LDAuMmwwLjgtMS45bC0yLjEtMS44QzE4LDIxLjYsMTgsMjEuMywxOCwyMXogTTExLDI0Yy0xLjcsMC0z
+        LTEuMy0zLTNzMS4zLTMsMy0zczMsMS4zLDMsMyAgIFMxMi43LDI0LDExLDI0eiIgY2xhc3M9IkJsYWNr
+        IiAvPg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnPart.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABMCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        R3JlZW57ZmlsbDojMDM5QzIzO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbHVle2ZpbGw6IzEx
+        NzdENzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxnIGlkPSJNYXAiPg0KICAgIDxw
+        YXRoIGQ9Ik0yMCwxMGwtOC04bC04LDh2MjBsOC04bDgsOGw4LThWMkwyMCwxMHogTTIwLDI3LjJsLTgt
+        OFY0LjhsOCw4VjI3LjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnWaterEquivalent.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAP8HAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5C
+        bGFja3tmaWxsOiM3MjcyNzI7fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLlJlZHtmaWxsOiNEMTFD
+        MUM7fQo8L3N0eWxlPg0KICA8ZyBpZD0iV2F0ZXIiPg0KICAgIDxwYXRoIGQ9Ik0yNCwyMmMtMC42LDAt
+        MC44LTAuMi0xLjMtMC43QzIyLjIsMjAuNywyMS40LDIwLDIwLDIwcy0yLjIsMC43LTIuNywxLjNDMTYu
+        OCwyMS44LDE2LjYsMjIsMTYsMjIgICBzLTAuOC0wLjItMS4zLTAuN0MxNC4yLDIwLjcsMTMuNCwyMCwx
+        MiwyMHMtMi4yLDAuNy0yLjcsMS4zQzguOCwyMS44LDguNiwyMiw4LDIycy0wLjgtMC4yLTEuMy0wLjdD
+        Ni4yLDIwLjcsNS40LDIwLDQsMjB2MiAgIGMwLjYsMCwwLjgsMC4yLDEuMywwLjdDNS44LDIzLjMsNi42
+        LDI0LDgsMjRzMi4yLTAuNywyLjctMS4zYzAuNS0wLjUsMC43LTAuNywxLjMtMC43czAuOCwwLjIsMS4z
+        LDAuN2MwLjUsMC41LDEuMywxLjMsMi43LDEuMyAgIHMyLjItMC43LDIuNy0xLjNjMC41LTAuNSwwLjct
+        MC43LDEuMy0wLjdzMC44LDAuMiwxLjMsMC43YzAuNSwwLjUsMS4zLDEuMywyLjcsMS4zczIuMi0wLjcs
+        Mi43LTEuM2MwLjUtMC41LDAuNy0wLjcsMS4zLTAuN3YtMiAgIGMtMS40LDAtMi4yLDAuNy0yLjcsMS4z
+        QzI0LjgsMjEuOCwyNC42LDIyLDI0LDIyeiIgY2xhc3M9IkJsdWUiIC8+DQogICAgPHBhdGggZD0iTTI0
+        LDE2Yy0wLjYsMC0wLjgtMC4yLTEuMy0wLjdDMjIuMiwxNC43LDIxLjQsMTQsMjAsMTRzLTIuMiwwLjct
+        Mi43LDEuM0MxNi44LDE1LjgsMTYuNiwxNiwxNiwxNiAgIHMtMC44LTAuMi0xLjMtMC43QzE0LjIsMTQu
+        NywxMy40LDE0LDEyLDE0cy0yLjIsMC43LTIuNywxLjNDOC44LDE1LjgsOC42LDE2LDgsMTZzLTAuOC0w
+        LjItMS4zLTAuN0M2LjIsMTQuNyw1LjQsMTQsNCwxNHYyICAgYzAuNiwwLDAuOCwwLjIsMS4zLDAuN0M1
+        LjgsMTcuMyw2LjYsMTgsOCwxOHMyLjItMC43LDIuNy0xLjNjMC41LTAuNSwwLjctMC43LDEuMy0wLjdz
+        MC44LDAuMiwxLjMsMC43YzAuNSwwLjUsMS4zLDEuMywyLjcsMS4zICAgczIuMi0wLjcsMi43LTEuM2Mw
+        LjUtMC41LDAuNy0wLjcsMS4zLTAuN3MwLjgsMC4yLDEuMywwLjdjMC41LDAuNSwxLjMsMS4zLDIuNywx
+        LjNzMi4yLTAuNywyLjctMS4zYzAuNS0wLjUsMC43LTAuNywxLjMtMC43di0yICAgYy0xLjQsMC0yLjIs
+        MC43LTIuNywxLjNDMjQuOCwxNS44LDI0LjYsMTYsMjQsMTZ6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8
+        cGF0aCBkPSJNMjUuMyw5LjNDMjQuOCw5LjgsMjQuNiwxMCwyNCwxMHMtMC44LTAuMi0xLjMtMC43QzIy
+        LjIsOC43LDIxLjQsOCwyMCw4cy0yLjIsMC43LTIuNywxLjMgICBDMTYuOCw5LjgsMTYuNiwxMCwxNiwx
+        MHMtMC44LTAuMi0xLjMtMC43QzE0LjIsOC43LDEzLjQsOCwxMiw4UzkuOCw4LjcsOS4zLDkuM0M4Ljgs
+        OS44LDguNiwxMCw4LDEwUzcuMiw5LjgsNi43LDkuMyAgIEM2LjIsOC43LDUuNCw4LDQsOHYyYzAuNiww
+        LDAuOCwwLjIsMS4zLDAuN0M1LjgsMTEuMyw2LjYsMTIsOCwxMnMyLjItMC43LDIuNy0xLjNjMC41LTAu
+        NSwwLjctMC43LDEuMy0wLjdzMC44LDAuMiwxLjMsMC43ICAgYzAuNSwwLjUsMS4zLDEuMywyLjcsMS4z
+        czIuMi0wLjcsMi43LTEuM2MwLjUtMC41LDAuNy0wLjcsMS4zLTAuN3MwLjgsMC4yLDEuMywwLjdjMC41
+        LDAuNSwxLjMsMS4zLDIuNywxLjNzMi4yLTAuNywyLjctMS4zICAgYzAuNS0wLjUsMC43LTAuNywxLjMt
+        MC43VjhDMjYuNiw4LDI1LjgsOC43LDI1LjMsOS4zeiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwv
+        c3ZnPgs=
+</value>
+  </data>
+  <data name="barButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKkCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuR3JlZW57ZmlsbDojMDM5
+        QzIzO30KCS5CbHVle2ZpbGw6IzExNzdENzt9Cjwvc3R5bGU+DQogIDxnIGlkPSJQYWNrYWdlIj4NCiAg
+        ICA8cGF0aCBkPSJNMjUsOGgtM3Y0aC0yVjhoLTh2NGgtMlY4SDdDNi41LDgsNiw4LjUsNiw5djIwYzAs
+        MC41LDAuNSwxLDEsMWgxOGMwLjUsMCwxLTAuNSwxLTFWOUMyNiw4LjUsMjUuNSw4LDI1LDh6ICAgIiBj
+        bGFzcz0iWWVsbG93IiAvPg0KICAgIDxwYXRoIGQ9Ik0xNiw0YzIuMiwwLDQsMS44LDQsNGgyYzAtMy4z
+        LTIuNy02LTYtNnMtNiwyLjctNiw2aDJDMTIsNS44LDEzLjgsNCwxNiw0eiIgY2xhc3M9IlllbGxvdyIg
+        Lz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <metadata name="barManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>190, 17</value>
+  </metadata>
+  <data name="barBtnUser.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+        aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+        c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+        O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+        ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+        c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBZGRyZXNzXzFfIj4N
+        CiAgICA8ZyBjbGFzcz0ic3QxIj4NCiAgICAgIDxwYXRoIGQ9Ik0yNiwxMkgxNnYtMmgxMFYxMnogTTI2
+        LDE0SDE2djJoMTBWMTR6IE0yNiwxOEgxNnYyaDEwVjE4eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwv
+        Zz4NCiAgICA8cGF0aCBkPSJNMjksNEgxQzAuNCw0LDAsNC41LDAsNXYyMGMwLDAuNSwwLjQsMSwxLDFo
+        MjhjMC42LDAsMS0wLjUsMS0xVjVDMzAsNC41LDI5LjYsNCwyOSw0eiBNMjgsMjRIMlY2aDI2VjI0eiIg
+        Y2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwYXRoIGQ9Ik05LDhjMS43LDAsMywxLjMsMywzcy0xLjMsMy0z
+        LDNzLTMtMS4zLTMtM1M3LjMsOCw5LDh6IE0xMi4yLDE0LjhjLTAuOSwwLjctMiwxLjItMy4yLDEuMnMt
+        Mi4zLTAuNS0zLjItMS4yICAgQzQsMTYuNSw0LDIyLDQsMjJoMTBDMTQsMjIsMTQsMTYuNSwxMi4yLDE0
+        Ljh6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barBtnAuthority.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIECAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+        UmVke2ZpbGw6I0QxMUMxQzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuR3JlZW57ZmlsbDojMDM5
+        QzIzO30KPC9zdHlsZT4NCiAgPGcgaWQ9IktleSI+DQogICAgPHBhdGggZD0iTTIwLDRjLTQuNCwwLTgs
+        My42LTgsOGMwLDEuMiwwLjMsMi4zLDAuNywzLjNMNCwyNHY0aDR2LTJoMnYtMmgybDQuNy00LjdjMSww
+        LjUsMi4xLDAuNywzLjMsMC43ICAgYzQuNCwwLDgtMy42LDgtOFMyNC40LDQsMjAsNHogTTIyLDEyYy0x
+        LjEsMC0yLTAuOS0yLTJjMC0xLjEsMC45LTIsMi0yczIsMC45LDIsMkMyNCwxMS4xLDIzLjEsMTIsMjIs
+        MTJ6IiBjbGFzcz0iWWVsbG93IiAvPg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnSystemLog.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANYEAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTG9naWNhbCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KPC9z
+        dHlsZT4NCiAgPHBhdGggZD0iTTUsNGgyM1YzYzAtMC42LTAuNC0xLTEtMUg1QzMuMywyLDIsMy4zLDIs
+        NXYyMmMwLDEuNywxLjMsMywzLDNoMjJjMC42LDAsMS0wLjQsMS0xVjZINUM0LjQsNiw0LDUuNiw0LDUg
+        IEM0LDQuNCw0LjQsNCw1LDR6IE0xNiwyNGgtMnYtMmgyVjI0eiBNMTEuNiwxNC40YzAuMi0wLjUsMC40
+        LTAuOSwwLjctMS4zYzAuMy0wLjQsMC43LTAuNiwxLjEtMC44YzAuNC0wLjIsMC45LTAuMywxLjUtMC4z
+        ICBjMC43LDAsMS4zLDAuMSwxLjgsMC4zYzAuNSwwLjIsMC45LDAuNSwxLjIsMC44YzAuMywwLjMsMC41
+        LDAuNywwLjYsMWMwLjEsMC40LDAuMiwwLjcsMC4yLDFjMCwwLjQsMCwwLjctMC4xLDEgIGMtMC4xLDAu
+        My0wLjIsMC41LTAuMywwLjhjLTAuMSwwLjItMC4zLDAuNC0wLjQsMC42Yy0wLjIsMC4yLTAuMywwLjMt
+        MC41LDAuNGMtMC4yLDAuMS0wLjMsMC4zLTAuNSwwLjRjLTAuMiwwLjEtMC4zLDAuMy0wLjQsMC40ICBj
+        LTAuMSwwLjEtMC4zLDAuMy0wLjQsMC41Yy0wLjEsMC4yLTAuMiwwLjQtMC4yLDAuNnYwLjZoLTJ2LTAu
+        N2MwLTAuNCwwLjEtMC43LDAuMS0wLjljMC4xLTAuMywwLjItMC41LDAuMy0wLjcgIGMwLjEtMC4yLDAu
+        My0wLjQsMC40LTAuNWMwLjEtMC4xLDAuMy0wLjMsMC40LTAuNHMwLjMtMC4zLDAuNC0wLjRjMC4xLTAu
+        MSwwLjItMC4yLDAuMy0wLjRjMC4xLTAuMSwwLjItMC4zLDAuMi0wLjUgIGMwLjEtMC4yLDAuMS0wLjQs
+        MC4xLTAuNmMwLTAuNS0wLjEtMC45LTAuMy0xLjFjLTAuMi0wLjItMC41LTAuNC0wLjktMC40Yy0wLjMs
+        MC0wLjUsMC4xLTAuNywwLjJjLTAuMiwwLjEtMC40LDAuMy0wLjUsMC41ICBjLTAuMSwwLjItMC4yLDAu
+        NC0wLjMsMC43Yy0wLjEsMC4yLTAuMSwwLjUtMC4xLDAuOGgtMi4yQzExLjQsMTUuNCwxMS40LDE0Ljks
+        MTEuNiwxNC40eiIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="barBtnCorp.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABsDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWJvdXQiPg0KICAgIDxwYXRoIGQ9
+        Ik0xNiwyQzguMywyLDIsOC4zLDIsMTZzNi4zLDE0LDE0LDE0czE0LTYuMywxNC0xNFMyMy43LDIsMTYs
+        MnogTTE2LDZjMS4xLDAsMiwwLjksMiwycy0wLjksMi0yLDJzLTItMC45LTItMiAgIFMxNC45LDYsMTYs
+        NnogTTIwLDI0aC04di0yaDJ2LThoLTJ2LTJoMmg0djEwaDJWMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
+        PC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <metadata name="popSystemAuthority.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>483, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj b/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj
index e918e19..4c0d401 100644
--- a/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj
+++ b/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj
@@ -8,7 +8,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="DevExpress.Win.Design" Version="22.2.4" />
+    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
     <PackageReference Include="Yw.BLL.Auth.Core" Version="3.0.3" />
   </ItemGroup>
 
diff --git a/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj.bak b/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj.bak
new file mode 100644
index 0000000..e918e19
--- /dev/null
+++ b/Desktop/HStation.DeskTop.Xhs.Main/HStation.Desktop.Xhs.Main.csproj.bak
@@ -0,0 +1,44 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>WinExe</OutputType>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <UseWindowsForms>true</UseWindowsForms>
+    <RootNamespace>HStation.DeskTop</RootNamespace>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="22.2.4" />
+    <PackageReference Include="Yw.BLL.Auth.Core" Version="3.0.3" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\WinFrmUI\HStation.WinFrmUI.Xhs.Core\HStation.WinFrmUI.Xhs.Core.csproj" />
+    <ProjectReference Include="..\..\WinFrmUI\HStation.WinFrmUI.Xhs.Project\HStation.WinFrmUI.Xhs.Project.csproj" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Compile Update="Close\CloseWarningCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="Close\CloseWarningForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="GuideMain.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Update="Properties\Settings.Designer.cs">
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <None Update="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+
+</Project>
\ No newline at end of file
diff --git a/HStation.Application.Xhs.Core/01-project/XhsProject_StdController.cs b/HStation.Application.Xhs.Core/01-project/XhsProject_StdController.cs
index 5fc7649..5a432e8 100644
--- a/HStation.Application.Xhs.Core/01-project/XhsProject_StdController.cs
+++ b/HStation.Application.Xhs.Core/01-project/XhsProject_StdController.cs
@@ -7,7 +7,6 @@
     [ApiDescriptionSettings("Xhs", Name = "椤圭洰(Std)", Order = 99000)]
     public class XhsProject_StdController : IDynamicApiController
     {
-
         /// <summary>
         /// 鑾峰彇鎵�鏈�
         /// </summary>
@@ -27,11 +26,5 @@
             }, Yw.Service.ConfigHelper.CacheLevel1);
             return vm_list;
         }
-
-
-
-
-
-
     }
 }
\ No newline at end of file
diff --git a/HStation.BLL.Xhs.Core/03-localclient/XhsProject.cs b/HStation.BLL.Xhs.Core/03-localclient/XhsProject.cs
index 7c061b4..66f156e 100644
--- a/HStation.BLL.Xhs.Core/03-localclient/XhsProject.cs
+++ b/HStation.BLL.Xhs.Core/03-localclient/XhsProject.cs
@@ -9,12 +9,11 @@
     {
         private readonly HStation.Service.XhsProject _service = new();
 
-
         #region Query
 
         /// <summary>
         /// 鑾峰彇鎵�鏈�
-        /// </summary> 
+        /// </summary>
         public async Task<List<XhsProjectDto>> GetAll()
         {
             return await Task.Factory.StartNew(() =>
@@ -26,8 +25,8 @@
         }
 
         /// <summary>
-        /// 閫氳繃 ID 鑾峰彇 
-        /// </summary> 
+        /// 閫氳繃 ID 鑾峰彇
+        /// </summary>
         public async Task<XhsProjectDto> GetByID(long ID)
         {
             return await Task.Factory.StartNew(() =>
@@ -39,7 +38,7 @@
 
         /// <summary>
         /// 閫氳繃 Ids 鑾峰彇
-        /// </summary>  
+        /// </summary>
         public async Task<List<XhsProjectDto>> GetByIds(List<long> Ids)
         {
             return await Task.Factory.StartNew(() =>
@@ -50,13 +49,13 @@
             });
         }
 
-        #endregion
+        #endregion Query
 
         #region Insert
 
         /// <summary>
         /// 鎻掑叆涓�鏉�
-        /// </summary> 
+        /// </summary>
         public async Task<long> Insert(AddXhsProjectInput input)
         {
             return await Task.Factory.StartNew(() =>
@@ -70,7 +69,7 @@
 
         /// <summary>
         /// 鎵归噺鎻掑叆
-        /// </summary> 
+        /// </summary>
         public async Task<bool> Inserts(List<AddXhsProjectInput> inputList)
         {
             return await Task.Factory.StartNew(() =>
@@ -87,7 +86,7 @@
 
         /// <summary>
         /// 澶ф壒閲忔彃鍏�
-        /// </summary>  
+        /// </summary>
         public async Task<bool> BulkInserts(List<AddXhsProjectInput> list)
         {
             return await Task.Factory.StartNew(() =>
@@ -96,13 +95,13 @@
             });
         }
 
-        #endregion
+        #endregion Insert
 
         #region Update
 
         /// <summary>
         /// 鏇存柊涓�鏉�
-        /// </summary> 
+        /// </summary>
         public async Task<bool> Update(UpdateXhsProjectInput input)
         {
             return await Task.Factory.StartNew(() =>
@@ -122,7 +121,7 @@
 
         /// <summary>
         /// 鎵归噺鏇存柊
-        /// </summary> 
+        /// </summary>
         public async Task<bool> Updates(List<UpdateXhsProjectInput> inputList)
         {
             return await Task.Factory.StartNew(() =>
@@ -139,7 +138,7 @@
 
         /// <summary>
         /// 澶ф壒閲忔洿鏂�
-        /// </summary> 
+        /// </summary>
         public async Task<bool> BulkUpdates(List<UpdateXhsProjectInput> list)
         {
             return await Task.Factory.StartNew(() =>
@@ -150,7 +149,7 @@
 
         /// <summary>
         /// 鏇存柊缂栫爜
-        /// </summary> 
+        /// </summary>
         public async Task<bool> UpdateCode(long ID, string Code)
         {
             return await Task.Factory.StartNew(() =>
@@ -161,7 +160,7 @@
 
         /// <summary>
         /// 鏇存柊鎺掑簭鐮�
-        /// </summary> 
+        /// </summary>
         public async Task<bool> UpdateSortCode(long ID, int SortCode)
         {
             return await Task.Factory.StartNew(() =>
@@ -173,7 +172,7 @@
 
         /// <summary>
         /// 鏇存柊鎺掑簭
-        /// </summary> 
+        /// </summary>
         public async Task<bool> UpdateSorter(List<UpdateSortCodeInput> inputList)
         {
             return await Task.Factory.StartNew(() =>
@@ -185,7 +184,7 @@
         }
 
         /// <summary>
-        /// 鏇存柊 Paras 
+        /// 鏇存柊 Paras
         /// </summary>
         public async Task<bool> UpdateParas(long ID, Dictionary<string, string> Paras)
         {
@@ -197,7 +196,7 @@
         }
 
         /// <summary>
-        /// 鏇存柊 Flags 
+        /// 鏇存柊 Flags
         /// </summary>
         public async Task<bool> UpdateFlags(long ID, List<string> Flags)
         {
@@ -209,7 +208,7 @@
         }
 
         /// <summary>
-        /// 鏇存柊 TagName 
+        /// 鏇存柊 TagName
         /// </summary>
         public async Task<bool> UpdateTagName(long ID, string TagName)
         {
@@ -221,7 +220,7 @@
         }
 
         /// <summary>
-        /// 鏇存柊 UseStatus 
+        /// 鏇存柊 UseStatus
         /// </summary>
         public async Task<bool> UpdateUseStatus(long ID, int UseStatus)
         {
@@ -232,13 +231,15 @@
             });
         }
 
-        #endregion 
+        #endregion Update
+
+
 
         #region Delete
 
         /// <summary>
         /// 閫氳繃 ID 鍒犻櫎
-        /// </summary> 
+        /// </summary>
         public async Task<bool> DeleteByID(long ID)
         {
             return await Task.Factory.StartNew(() =>
@@ -254,7 +255,7 @@
 
         /// <summary>
         /// 閫氳繃 Ids 鍒犻櫎
-        /// </summary> 
+        /// </summary>
         public async Task<bool> DeleteByIds(List<long> Ids)
         {
             return await Task.Factory.StartNew(() =>
@@ -266,7 +267,7 @@
         /// <summary>
         /// 鍒犻櫎鍏ㄩ儴
         /// </summary>
-        /// <returns></returns> 
+        /// <returns></returns>
         public async Task<bool> DeleteAll()
         {
             return await Task.Factory.StartNew(() =>
@@ -275,8 +276,6 @@
             });
         }
 
-
-
-        #endregion
+        #endregion Delete
     }
 }
\ No newline at end of file
diff --git a/HStation.Dto.Xhs.Core/01-project/AddXhsProjectInput.cs b/HStation.Dto.Xhs.Core/01-project/AddXhsProjectInput.cs
index 1801511..c57ae10 100644
--- a/HStation.Dto.Xhs.Core/01-project/AddXhsProjectInput.cs
+++ b/HStation.Dto.Xhs.Core/01-project/AddXhsProjectInput.cs
@@ -1,15 +1,13 @@
 锘縩amespace HStation.Dto
 {
-    /// <summary>
-    /// 
-    /// </summary>
     public class AddXhsProjectInput
     {
+        [Required]
+        public string GID { get; set; }
 
         /// <summary>
         /// 鍚嶇О
         /// </summary>
-        [Required]
         public string Name { get; set; }
 
         /// <summary>
@@ -28,8 +26,33 @@
         public string TagName { get; set; }
 
         /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public long CreateUserID { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public int Version { get; set; }
+
+        /// <summary>
+        /// 椤圭洰鍦板潃(缁忓害,缁村害)
+        /// </summary>
+        public string MapPosition { get; set; }
+
+        /// <summary>
+        /// 椤圭洰鐨勫鎴峰悕绉�
+        /// </summary>
+        public string CustomerName { get; set; }
+
+        /// <summary>
         /// 璇存槑
-        /// </summary>	
+        /// </summary>
         public string Description { get; set; }
     }
-}
+}
\ No newline at end of file
diff --git a/HStation.Dto.Xhs.Core/01-project/XhsProjectDto.cs b/HStation.Dto.Xhs.Core/01-project/XhsProjectDto.cs
index 8d53687..bb9c7b8 100644
--- a/HStation.Dto.Xhs.Core/01-project/XhsProjectDto.cs
+++ b/HStation.Dto.Xhs.Core/01-project/XhsProjectDto.cs
@@ -1,20 +1,22 @@
 锘縩amespace HStation.Dto
 {
     /// <summary>
-    /// 
+    ///
     /// </summary>
     public class XhsProjectDto
     {
         /// <summary>
-        /// 
+        ///
         /// </summary>
-        public XhsProjectDto() { }
+        public XhsProjectDto()
+        { }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public XhsProjectDto(HStation.Model.XhsProject rhs)
         {
+            this.GID = rhs.GID;
             this.ID = rhs.ID;
             this.Name = rhs.Name;
             this.Paras = rhs.Paras;
@@ -23,7 +25,16 @@
             this.UseStatus = rhs.UseStatus;
             this.SortCode = rhs.SortCode;
             this.Description = rhs.Description;
+            this.CreateTime = rhs.CreateTime;
+            this.CreateUserID = rhs.CreateUserID;
+            this.Version = rhs.Version;
+            this.MapPosition = rhs.MapPosition;
         }
+
+        /// <summary>
+        /// GUID 鐢ㄤ簬鍗囩骇
+        /// </summary>
+        public string GID { get; set; }
 
         /// <summary>
         /// id
@@ -57,13 +68,37 @@
 
         /// <summary>
         /// 鎺掑簭鐮�
-        /// </summary>	
+        /// </summary>
         public int SortCode { get; set; }
 
         /// <summary>
         /// 璇存槑
-        /// </summary>	
+        /// </summary>
         public string Description { get; set; }
 
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public long CreateUserID { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public int Version { get; set; }
+
+        /// <summary>
+        /// 椤圭洰鍦板潃(缁忓害,缁村害)
+        /// </summary>
+        public string MapPosition { get; set; }
+
+        /// <summary>
+        /// 椤圭洰鐨勫鎴峰悕绉�
+        /// </summary>
+        public string CustomerName { get; set; }
     }
-}
+}
\ No newline at end of file
diff --git a/HStation.Dto.Xhs.Core/01-project/XhsProjectStdDto.cs b/HStation.Dto.Xhs.Core/01-project/XhsProjectStdDto.cs
index b587a12..91ed862 100644
--- a/HStation.Dto.Xhs.Core/01-project/XhsProjectStdDto.cs
+++ b/HStation.Dto.Xhs.Core/01-project/XhsProjectStdDto.cs
@@ -1,17 +1,18 @@
 锘縩amespace HStation.Dto
 {
     /// <summary>
-    /// 
+    ///
     /// </summary>
     public class XhsProjectStdDto
     {
         /// <summary>
-        /// 
+        ///
         /// </summary>
-        public XhsProjectStdDto() { }
+        public XhsProjectStdDto()
+        { }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public XhsProjectStdDto(Model.XhsProject rhs)
         {
@@ -57,13 +58,12 @@
 
         /// <summary>
         /// 鎺掑簭鐮�
-        /// </summary>	
+        /// </summary>
         public int SortCode { get; set; }
 
         /// <summary>
         /// 璇存槑
-        /// </summary>	
+        /// </summary>
         public string Description { get; set; }
-
     }
-}
+}
\ No newline at end of file
diff --git a/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user b/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user
index 213fddc..5fefc8d 100644
--- a/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user
+++ b/HStation.Entry.Xhs.Core/HStation.Entry.Xhs.Core.csproj.user
@@ -1,6 +1,6 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <NameOfLastUsedPublishProfile>D:\WorkData\git\HStation\XHS\HStation.Entry.Xhs.Core\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
+    <NameOfLastUsedPublishProfile>D:\WorkData\HStation\XHS.V1.0\HStation.Entry.Xhs.Core\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/HStation.Entry.Xhs.Core/Properties/PublishProfiles/FolderProfile.pubxml.user b/HStation.Entry.Xhs.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
index 00396d7..b17022e 100644
--- a/HStation.Entry.Xhs.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/HStation.Entry.Xhs.Core/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -4,8 +4,8 @@
 -->
 <Project>
   <PropertyGroup>
-    <_PublishTargetUrl>D:\WorkData\git\HStation\XHS\HStation.Entry.Xhs.Core\bin\Release\net6.0\publish\</_PublishTargetUrl>
-    <History>True|2024-06-18T01:13:21.8960491Z;True|2024-06-12T18:55:43.2697624+08:00;True|2024-06-12T18:54:42.2191664+08:00;True|2024-06-12T18:37:39.2735086+08:00;True|2024-06-12T18:32:59.2340941+08:00;True|2024-06-12T18:18:57.9018714+08:00;True|2024-06-12T18:13:13.4471521+08:00;True|2024-06-12T18:11:38.4803257+08:00;True|2024-06-12T18:10:00.3753638+08:00;True|2024-06-12T18:03:08.9521607+08:00;True|2024-06-12T17:59:46.2755740+08:00;True|2024-06-12T17:58:01.8017051+08:00;True|2024-06-12T17:56:20.6946001+08:00;True|2024-06-12T17:32:53.8291604+08:00;True|2024-06-12T17:32:38.6492118+08:00;False|2024-06-12T17:32:17.0260105+08:00;True|2024-06-12T17:08:59.9367775+08:00;True|2024-06-12T16:32:42.3320305+08:00;True|2024-06-07T13:34:17.3014803+08:00;True|2024-06-07T13:20:33.5124438+08:00;True|2024-06-07T10:24:47.0351087+08:00;True|2024-06-05T17:04:55.4017239+08:00;True|2024-06-05T16:05:35.1432805+08:00;True|2024-06-05T15:18:06.1797165+08:00;True|2024-06-05T13:53:59.9366676+08:00;True|2024-06-05T13:43:45.7009774+08:00;True|2024-06-05T13:38:18.1415782+08:00;True|2024-06-05T12:14:05.4745826+08:00;True|2024-06-05T12:10:02.8443283+08:00;True|2024-06-02T18:41:28.5233205+08:00;True|2024-06-02T18:21:27.5679625+08:00;True|2024-06-02T17:34:02.6234679+08:00;True|2024-06-02T16:58:23.9422671+08:00;True|2024-06-02T16:16:43.6949096+08:00;True|2024-06-02T14:44:06.8963915+08:00;True|2024-06-02T11:10:51.5587482+08:00;True|2024-06-01T11:30:39.5033584+08:00;True|2024-05-30T16:29:38.0730664+08:00;True|2024-05-30T15:16:14.5429969+08:00;True|2024-05-29T17:31:27.5349115+08:00;True|2024-05-29T16:49:44.3085849+08:00;True|2024-05-29T10:46:15.3071701+08:00;True|2024-05-28T16:21:22.2987178+08:00;True|2024-05-28T11:55:02.0680294+08:00;True|2024-05-24T09:27:50.0479340+08:00;True|2024-05-23T14:16:32.3824342+08:00;True|2024-05-23T10:51:43.4383910+08:00;True|2024-05-22T11:19:10.1709647+08:00;True|2024-05-22T11:12:47.8835237+08:00;True|2024-05-22T10:43:34.7720709+08:00;True|2024-05-21T17:25:46.9831973+08:00;True|2024-05-21T12:11:55.2774332+08:00;True|2024-05-13T10:32:18.9951394+08:00;True|2024-05-09T09:53:09.1673089+08:00;True|2024-05-08T17:18:58.3017566+08:00;True|2024-05-08T11:15:08.3734126+08:00;True|2024-05-07T10:59:04.2016283+08:00;True|2024-05-07T10:58:56.6254107+08:00;True|2024-05-07T10:56:03.7274034+08:00;True|2024-05-07T10:55:53.5496684+08:00;True|2024-05-07T10:55:41.1246352+08:00;True|2024-05-07T09:57:18.3908307+08:00;True|2024-05-06T18:17:15.0427456+08:00;True|2024-05-06T17:38:00.0855585+08:00;True|2024-05-06T14:04:15.4665470+08:00;True|2024-05-06T09:38:06.9447096+08:00;False|2024-05-06T09:37:21.4257032+08:00;True|2024-04-30T10:27:11.6268274+08:00;True|2024-04-29T17:32:47.8657162+08:00;True|2024-04-29T17:26:03.4222331+08:00;True|2024-04-29T15:01:02.7501034+08:00;True|2024-04-29T14:40:23.2902896+08:00;True|2024-04-29T14:15:48.2534191+08:00;True|2024-04-29T13:50:31.8486861+08:00;True|2024-04-29T13:50:13.0369014+08:00;True|2024-04-29T11:57:41.6418088+08:00;True|2024-04-28T16:09:30.7968764+08:00;True|2024-04-28T09:35:40.6700676+08:00;True|2024-04-28T09:35:15.2841524+08:00;True|2024-04-26T15:21:07.2254684+08:00;True|2024-04-26T14:32:01.8070422+08:00;True|2024-04-25T10:44:33.7676650+08:00;True|2024-04-17T13:45:22.6768684+08:00;True|2024-04-16T17:47:19.0227884+08:00;True|2024-04-16T09:57:22.1921072+08:00;True|2024-04-15T11:05:36.4066643+08:00;True|2024-04-11T17:34:38.8235829+08:00;True|2024-04-11T16:35:57.9302909+08:00;True|2024-04-10T18:02:19.9441944+08:00;True|2024-04-10T17:21:38.1350878+08:00;True|2024-04-10T16:35:04.6259912+08:00;True|2024-04-10T15:56:11.9687705+08:00;True|2024-04-10T15:53:05.4535113+08:00;True|2024-04-10T15:42:04.0253207+08:00;True|2024-03-16T10:03:30.3957572+08:00;True|2024-03-16T08:57:52.2573896+08:00;True|2024-03-15T10:38:10.1556165+08:00;True|2024-03-15T09:14:50.1931225+08:00;True|2024-03-14T15:27:17.7054789+08:00;True|2024-03-14T15:26:48.6972785+08:00;</History>
+    <_PublishTargetUrl>D:\WorkData\HStation\XHS.V1.0\HStation.Entry.Xhs.Core\bin\Release\net6.0\publish\</_PublishTargetUrl>
+    <History>True|2024-06-20T04:16:07.3854116Z;True|2024-06-18T09:13:21.8960491+08:00;True|2024-06-12T18:55:43.2697624+08:00;True|2024-06-12T18:54:42.2191664+08:00;True|2024-06-12T18:37:39.2735086+08:00;True|2024-06-12T18:32:59.2340941+08:00;True|2024-06-12T18:18:57.9018714+08:00;True|2024-06-12T18:13:13.4471521+08:00;True|2024-06-12T18:11:38.4803257+08:00;True|2024-06-12T18:10:00.3753638+08:00;True|2024-06-12T18:03:08.9521607+08:00;True|2024-06-12T17:59:46.2755740+08:00;True|2024-06-12T17:58:01.8017051+08:00;True|2024-06-12T17:56:20.6946001+08:00;True|2024-06-12T17:32:53.8291604+08:00;True|2024-06-12T17:32:38.6492118+08:00;False|2024-06-12T17:32:17.0260105+08:00;True|2024-06-12T17:08:59.9367775+08:00;True|2024-06-12T16:32:42.3320305+08:00;True|2024-06-07T13:34:17.3014803+08:00;True|2024-06-07T13:20:33.5124438+08:00;True|2024-06-07T10:24:47.0351087+08:00;True|2024-06-05T17:04:55.4017239+08:00;True|2024-06-05T16:05:35.1432805+08:00;True|2024-06-05T15:18:06.1797165+08:00;True|2024-06-05T13:53:59.9366676+08:00;True|2024-06-05T13:43:45.7009774+08:00;True|2024-06-05T13:38:18.1415782+08:00;True|2024-06-05T12:14:05.4745826+08:00;True|2024-06-05T12:10:02.8443283+08:00;True|2024-06-02T18:41:28.5233205+08:00;True|2024-06-02T18:21:27.5679625+08:00;True|2024-06-02T17:34:02.6234679+08:00;True|2024-06-02T16:58:23.9422671+08:00;True|2024-06-02T16:16:43.6949096+08:00;True|2024-06-02T14:44:06.8963915+08:00;True|2024-06-02T11:10:51.5587482+08:00;True|2024-06-01T11:30:39.5033584+08:00;True|2024-05-30T16:29:38.0730664+08:00;True|2024-05-30T15:16:14.5429969+08:00;True|2024-05-29T17:31:27.5349115+08:00;True|2024-05-29T16:49:44.3085849+08:00;True|2024-05-29T10:46:15.3071701+08:00;True|2024-05-28T16:21:22.2987178+08:00;True|2024-05-28T11:55:02.0680294+08:00;True|2024-05-24T09:27:50.0479340+08:00;True|2024-05-23T14:16:32.3824342+08:00;True|2024-05-23T10:51:43.4383910+08:00;True|2024-05-22T11:19:10.1709647+08:00;True|2024-05-22T11:12:47.8835237+08:00;True|2024-05-22T10:43:34.7720709+08:00;True|2024-05-21T17:25:46.9831973+08:00;True|2024-05-21T12:11:55.2774332+08:00;True|2024-05-13T10:32:18.9951394+08:00;True|2024-05-09T09:53:09.1673089+08:00;True|2024-05-08T17:18:58.3017566+08:00;True|2024-05-08T11:15:08.3734126+08:00;True|2024-05-07T10:59:04.2016283+08:00;True|2024-05-07T10:58:56.6254107+08:00;True|2024-05-07T10:56:03.7274034+08:00;True|2024-05-07T10:55:53.5496684+08:00;True|2024-05-07T10:55:41.1246352+08:00;True|2024-05-07T09:57:18.3908307+08:00;True|2024-05-06T18:17:15.0427456+08:00;True|2024-05-06T17:38:00.0855585+08:00;True|2024-05-06T14:04:15.4665470+08:00;True|2024-05-06T09:38:06.9447096+08:00;False|2024-05-06T09:37:21.4257032+08:00;True|2024-04-30T10:27:11.6268274+08:00;True|2024-04-29T17:32:47.8657162+08:00;True|2024-04-29T17:26:03.4222331+08:00;True|2024-04-29T15:01:02.7501034+08:00;True|2024-04-29T14:40:23.2902896+08:00;True|2024-04-29T14:15:48.2534191+08:00;True|2024-04-29T13:50:31.8486861+08:00;True|2024-04-29T13:50:13.0369014+08:00;True|2024-04-29T11:57:41.6418088+08:00;True|2024-04-28T16:09:30.7968764+08:00;True|2024-04-28T09:35:40.6700676+08:00;True|2024-04-28T09:35:15.2841524+08:00;True|2024-04-26T15:21:07.2254684+08:00;True|2024-04-26T14:32:01.8070422+08:00;True|2024-04-25T10:44:33.7676650+08:00;True|2024-04-17T13:45:22.6768684+08:00;True|2024-04-16T17:47:19.0227884+08:00;True|2024-04-16T09:57:22.1921072+08:00;True|2024-04-15T11:05:36.4066643+08:00;True|2024-04-11T17:34:38.8235829+08:00;True|2024-04-11T16:35:57.9302909+08:00;True|2024-04-10T18:02:19.9441944+08:00;True|2024-04-10T17:21:38.1350878+08:00;True|2024-04-10T16:35:04.6259912+08:00;True|2024-04-10T15:56:11.9687705+08:00;True|2024-04-10T15:53:05.4535113+08:00;True|2024-04-10T15:42:04.0253207+08:00;True|2024-03-16T10:03:30.3957572+08:00;True|2024-03-16T08:57:52.2573896+08:00;True|2024-03-15T10:38:10.1556165+08:00;True|2024-03-15T09:14:50.1931225+08:00;True|2024-03-14T15:27:17.7054789+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/HStation.Service.Xhs.Core/02-model/XhsProject.cs b/HStation.Service.Xhs.Core/02-model/XhsProject.cs
index 106b796..69a0f0e 100644
--- a/HStation.Service.Xhs.Core/02-model/XhsProject.cs
+++ b/HStation.Service.Xhs.Core/02-model/XhsProject.cs
@@ -4,20 +4,22 @@
 {
     /// <summary>
     /// 涓氬姟绔�
-    /// </summary>	
+    /// </summary>
     [SysType("xhs-project")]
     public partial class XhsProject : BaseModel, IParas, IFlags, ITagName, ISorter, IUseStatus, System.ICloneable
     {
         /// <summary>
-        /// 
+        ///
         /// </summary>
-        public XhsProject() { }
+        public XhsProject()
+        { }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public XhsProject(XhsProject rhs) : base(rhs)
         {
+            this.GID = rhs.GID;
             this.Name = rhs.Name;
             this.Paras = rhs.Paras == null ? null : new Dictionary<string, string>(rhs.Paras);
             this.Flags = rhs.Flags?.ToList();
@@ -28,11 +30,11 @@
         }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public void Reset(XhsProject rhs)
         {
-            this.ID = rhs.ID;
+             this.ID = rhs.ID;
             this.Name = rhs.Name;
             this.Paras = rhs.Paras == null ? null : new Dictionary<string, string>(rhs.Paras);
             this.Flags = rhs.Flags?.ToList();
@@ -43,8 +45,14 @@
         }
 
         /// <summary>
+        /// GUID 鐢ㄤ簬鍗囩骇
+        /// </summary>
+        public string GID { get; set; }
+
+
+        /// <summary>
         /// 鍚嶇О
-        /// </summary>	
+        /// </summary>
         public string Name { get; set; }
 
         /// <summary>
@@ -77,9 +85,33 @@
         /// </summary>
         public string Description { get; set; }
 
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public long CreateUserID { get; set; }
 
         /// <summary>
-        /// 
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+
+        /// <summary>
+        /// 鐗堟湰
+        /// </summary>
+        public int Version { get; set; }
+
+        /// <summary>
+        /// 椤圭洰鍦板潃(缁忓害,缁村害)
+        /// </summary>
+        public string MapPosition { get; set; }
+
+        /// <summary>
+        /// 椤圭洰鐨勫鎴峰悕绉�
+        /// </summary>
+        public string CustomerName { get; set; }
+
+        /// <summary>
+        ///
         /// </summary>
         public XhsProject Clone()
         {
@@ -90,7 +122,5 @@
         {
             return Clone();
         }
-
     }
-
 }
\ No newline at end of file
diff --git a/HStation.WebApi.Xhs.Core/Startup.cs b/HStation.WebApi.Xhs.Core/Startup.cs
index 951a0c5..ee01818 100644
--- a/HStation.WebApi.Xhs.Core/Startup.cs
+++ b/HStation.WebApi.Xhs.Core/Startup.cs
@@ -19,13 +19,13 @@
 namespace HStation.WebApi
 {
     /// <summary>
-    /// 
+    ///
     /// </summary>
     [AppStartup(10)]
     public class Startup : AppStartup
     {
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public void ConfigureServices(IServiceCollection services)
         {
@@ -40,7 +40,7 @@
                 options.MaxRequestBodySize = int.MaxValue;
             });
 
-            services.AddJwt<JwtHandler>(enableGlobalAuthorize: true);
+            //     services.AddJwt<JwtHandler>(enableGlobalAuthorize: true);
 
             //// 鎷︽埅鍣�
             services.AddMvcFilter<AuthorizationFilter>();
@@ -64,7 +64,6 @@
                 c.UseInlineDefinitionsForEnums();
             }).AddMiniProfiler();
 
-
             services.AddJsonOptions(options =>
             {
                 //杩斿洖灞炴�уぇ灏忓啓闂
@@ -85,7 +84,7 @@
         }
 
         /// <summary>
-        /// 
+        ///
         /// </summary>
         public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
         {
@@ -124,7 +123,7 @@
                 }
             });
 
-            #endregion
+            #endregion 寮�鏀� data 鏂囦欢澶癸紙鍙互閫氳繃url璁块棶鏂囦欢锛�
 
             // Serilog璇锋眰鏃ュ織涓棿浠�---蹇呴』鍦� UseStaticFiles 鍜� UseRouting 涔嬮棿
             //app.UseSerilogRequestLogging();
@@ -157,12 +156,6 @@
                     name: "default",
                     pattern: "{controller=Home}/{action=Index}/{id?}");
             });
-
-
         }
-
-
-
-
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
index 6faf494..d3bc7a8 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -8,7 +8,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="DevExpress.Win.Design" Version="22.2.4" />
+    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
   </ItemGroup>
 
 </Project>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.bak b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.bak
new file mode 100644
index 0000000..6faf494
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.bak
@@ -0,0 +1,14 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <Nullable>enable</Nullable>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="22.2.4" />
+  </ItemGroup>
+
+</Project>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.cs
new file mode 100644
index 0000000..efb1ed0
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.cs
@@ -0,0 +1,67 @@
+锘縰sing DevExpress.XtraEditors;
+using HStation.Dto;
+using HStation.WinFrmUI;
+using System;
+
+namespace ISupply.WinFrmUI
+{
+    public partial class AddProjectDlg : DevExpress.XtraEditors.XtraForm
+    {
+        public AddProjectDlg()
+        {
+            InitializeComponent();
+        }
+
+        public event Func<AddXhsProjectInput, Task<bool>> ReloadEvent;
+
+        private AddXhsProjectInput _AddXhsProjectInput = null;
+
+        //楠岃瘉
+        private bool Valid()
+        {
+            this.dxErrorProvider1.ClearErrors();
+            if (string.IsNullOrEmpty(this.NameTextEdit.Text.Trim()))
+            {
+                this.dxErrorProvider1.SetError(this.NameTextEdit, "蹇呭~椤�");
+                return false;
+            }
+
+            var tagName = this.ModleTextEdit.Text.Trim();
+            if (string.IsNullOrEmpty(tagName))
+            {
+                this.dxErrorProvider1.SetError(this.ModleTextEdit, "閲嶅");
+                return false;
+            }
+
+            return true;
+        }
+
+        //纭畾
+        private async void btnOk_Click(object sender, EventArgs e)
+        {
+            if (!Valid())
+                return;
+            _AddXhsProjectInput = new AddXhsProjectInput();
+            _AddXhsProjectInput.Name = this.NameTextEdit.Text.Trim();
+            _AddXhsProjectInput.CustomerName = this.CustomerNameTextEdit.Text.Trim();
+            _AddXhsProjectInput.CreateTime = DateTime.Now;
+            _AddXhsProjectInput.GID = new Guid().ToString();
+            _AddXhsProjectInput.Description = this.DescriptionTextEdit.Text.Trim();
+            if (await this.ReloadEvent.Invoke(_AddXhsProjectInput))
+            {
+                MessageBoxHelper.ShowSuccess("娣诲姞鎴愬姛!");
+            }
+            else
+            {
+                MessageBoxHelper.ShowError("娣诲姞澶辫触!");
+            }
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+
+        //鍒濆鍖�
+        private void AddProjectDlg_Load(object sender, EventArgs e)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.designer.cs
new file mode 100644
index 0000000..06245f4
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.designer.cs
@@ -0,0 +1,417 @@
+锘縰sing DevExpress.Utils;
+using DevExpress.XtraEditors;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace ISupply.WinFrmUI
+{
+    partial class AddProjectDlg
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new Container();
+            dataLayoutControl1 = new DevExpress.XtraDataLayout.DataLayoutControl();
+            webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
+            btnOk = new SimpleButton();
+            btnCancel = new SimpleButton();
+            NameTextEdit = new TextEdit();
+            DescriptionTextEdit = new MemoEdit();
+            ModleTextEdit = new TextEdit();
+            CustomerNameTextEdit = new TextEdit();
+            Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
+            ItemForName = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+            tabbedControlGroup1 = new DevExpress.XtraLayout.TabbedControlGroup();
+            layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlGroup3 = new DevExpress.XtraLayout.LayoutControlGroup();
+            ItemForDescription = new DevExpress.XtraLayout.LayoutControlItem();
+            ItemForConstructionYear = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+            ItemForTagName = new DevExpress.XtraLayout.LayoutControlItem();
+            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
+            BtnFileChoice = new ButtonEdit();
+            TagName = new TextEdit();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((ISupportInitialize)dataLayoutControl1).BeginInit();
+            dataLayoutControl1.SuspendLayout();
+            ((ISupportInitialize)webView21).BeginInit();
+            ((ISupportInitialize)NameTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)ModleTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)CustomerNameTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlGroup1).BeginInit();
+            ((ISupportInitialize)ItemForName).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
+            ((ISupportInitialize)emptySpaceItem1).BeginInit();
+            ((ISupportInitialize)tabbedControlGroup1).BeginInit();
+            ((ISupportInitialize)layoutControlGroup2).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlGroup3).BeginInit();
+            ((ISupportInitialize)ItemForDescription).BeginInit();
+            ((ISupportInitialize)ItemForConstructionYear).BeginInit();
+            ((ISupportInitialize)layoutControlItem5).BeginInit();
+            ((ISupportInitialize)ItemForTagName).BeginInit();
+            ((ISupportInitialize)dxErrorProvider1).BeginInit();
+            ((ISupportInitialize)BtnFileChoice.Properties).BeginInit();
+            ((ISupportInitialize)TagName.Properties).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            SuspendLayout();
+            // 
+            // dataLayoutControl1
+            // 
+            dataLayoutControl1.Controls.Add(webView21);
+            dataLayoutControl1.Controls.Add(btnOk);
+            dataLayoutControl1.Controls.Add(btnCancel);
+            dataLayoutControl1.Controls.Add(NameTextEdit);
+            dataLayoutControl1.Controls.Add(DescriptionTextEdit);
+            dataLayoutControl1.Controls.Add(ModleTextEdit);
+            dataLayoutControl1.Controls.Add(CustomerNameTextEdit);
+            dataLayoutControl1.Controls.Add(BtnFileChoice);
+            dataLayoutControl1.Controls.Add(TagName);
+            dataLayoutControl1.Dock = DockStyle.Fill;
+            dataLayoutControl1.Location = new Point(0, 0);
+            dataLayoutControl1.Name = "dataLayoutControl1";
+            dataLayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(640, 239, 978, 700);
+            dataLayoutControl1.Root = Root;
+            dataLayoutControl1.Size = new Size(709, 440);
+            dataLayoutControl1.TabIndex = 0;
+            dataLayoutControl1.Text = "dataLayoutControl1";
+            // 
+            // webView21
+            // 
+            webView21.AllowExternalDrop = true;
+            webView21.CreationProperties = null;
+            webView21.DefaultBackgroundColor = Color.White;
+            webView21.Location = new Point(24, 120);
+            webView21.Name = "webView21";
+            webView21.Size = new Size(661, 273);
+            webView21.TabIndex = 15;
+            webView21.ZoomFactor = 1D;
+            // 
+            // btnOk
+            // 
+            btnOk.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
+            btnOk.Appearance.Options.UseBackColor = true;
+            btnOk.Location = new Point(503, 409);
+            btnOk.Name = "btnOk";
+            btnOk.Size = new Size(95, 19);
+            btnOk.StyleController = dataLayoutControl1;
+            btnOk.TabIndex = 7;
+            btnOk.Text = "纭畾";
+            btnOk.Click += btnOk_Click;
+            // 
+            // btnCancel
+            // 
+            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
+            btnCancel.Appearance.Options.UseBackColor = true;
+            btnCancel.DialogResult = DialogResult.Cancel;
+            btnCancel.Location = new Point(602, 409);
+            btnCancel.Name = "btnCancel";
+            btnCancel.Size = new Size(95, 19);
+            btnCancel.StyleController = dataLayoutControl1;
+            btnCancel.TabIndex = 8;
+            btnCancel.Text = "鍙栨秷";
+            // 
+            // NameTextEdit
+            // 
+            NameTextEdit.Location = new Point(76, 12);
+            NameTextEdit.Name = "NameTextEdit";
+            NameTextEdit.Size = new Size(276, 20);
+            NameTextEdit.StyleController = dataLayoutControl1;
+            NameTextEdit.TabIndex = 0;
+            // 
+            // DescriptionTextEdit
+            // 
+            DescriptionTextEdit.Location = new Point(22, 118);
+            DescriptionTextEdit.Name = "DescriptionTextEdit";
+            DescriptionTextEdit.Size = new Size(665, 277);
+            DescriptionTextEdit.StyleController = dataLayoutControl1;
+            DescriptionTextEdit.TabIndex = 6;
+            // 
+            // ModleTextEdit
+            // 
+            ModleTextEdit.Location = new Point(76, 60);
+            ModleTextEdit.Name = "ModleTextEdit";
+            ModleTextEdit.Size = new Size(621, 20);
+            ModleTextEdit.StyleController = dataLayoutControl1;
+            ModleTextEdit.TabIndex = 4;
+            // 
+            // CustomerNameTextEdit
+            // 
+            CustomerNameTextEdit.Location = new Point(420, 12);
+            CustomerNameTextEdit.Margin = new Padding(2);
+            CustomerNameTextEdit.Name = "CustomerNameTextEdit";
+            CustomerNameTextEdit.Size = new Size(277, 20);
+            CustomerNameTextEdit.StyleController = dataLayoutControl1;
+            CustomerNameTextEdit.TabIndex = 14;
+            // 
+            // Root
+            // 
+            Root.AppearanceItemCaption.Options.UseTextOptions = true;
+            Root.AppearanceItemCaption.TextOptions.HAlignment = HorzAlignment.Far;
+            Root.EnableIndentsWithoutBorders = DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1 });
+            Root.Name = "Root";
+            Root.Size = new Size(709, 440);
+            Root.TextVisible = false;
+            // 
+            // layoutControlGroup1
+            // 
+            layoutControlGroup1.AllowDrawBackground = false;
+            layoutControlGroup1.GroupBordersVisible = false;
+            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { ItemForName, layoutControlItem1, layoutControlItem2, emptySpaceItem1, tabbedControlGroup1, ItemForConstructionYear, layoutControlItem5, ItemForTagName, layoutControlItem4 });
+            layoutControlGroup1.Location = new Point(0, 0);
+            layoutControlGroup1.Name = "autoGeneratedGroup0";
+            layoutControlGroup1.Size = new Size(689, 420);
+            // 
+            // ItemForName
+            // 
+            ItemForName.AllowHtmlStringInCaption = true;
+            ItemForName.Control = NameTextEdit;
+            ItemForName.Location = new Point(0, 0);
+            ItemForName.Name = "ItemForName";
+            ItemForName.Size = new Size(344, 24);
+            ItemForName.Text = "<color=red>*</color>鍚嶇О:";
+            ItemForName.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.Control = btnCancel;
+            layoutControlItem1.Location = new Point(590, 397);
+            layoutControlItem1.MaxSize = new Size(99, 23);
+            layoutControlItem1.MinSize = new Size(99, 23);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Size = new Size(99, 23);
+            layoutControlItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem1.TextSize = new Size(0, 0);
+            layoutControlItem1.TextVisible = false;
+            // 
+            // layoutControlItem2
+            // 
+            layoutControlItem2.Control = btnOk;
+            layoutControlItem2.Location = new Point(491, 397);
+            layoutControlItem2.MaxSize = new Size(99, 23);
+            layoutControlItem2.MinSize = new Size(99, 23);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.Size = new Size(99, 23);
+            layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem2.TextSize = new Size(0, 0);
+            layoutControlItem2.TextVisible = false;
+            // 
+            // emptySpaceItem1
+            // 
+            emptySpaceItem1.AllowHotTrack = false;
+            emptySpaceItem1.Location = new Point(0, 397);
+            emptySpaceItem1.Name = "emptySpaceItem1";
+            emptySpaceItem1.Size = new Size(491, 23);
+            emptySpaceItem1.TextSize = new Size(0, 0);
+            // 
+            // tabbedControlGroup1
+            // 
+            tabbedControlGroup1.AppearanceTabPage.Header.Options.UseTextOptions = true;
+            tabbedControlGroup1.AppearanceTabPage.Header.TextOptions.HAlignment = HorzAlignment.Center;
+            tabbedControlGroup1.HeaderAutoFill = DefaultBoolean.True;
+            tabbedControlGroup1.Location = new Point(0, 72);
+            tabbedControlGroup1.Name = "tabbedControlGroup1";
+            tabbedControlGroup1.SelectedTabPage = layoutControlGroup2;
+            tabbedControlGroup1.Size = new Size(689, 325);
+            tabbedControlGroup1.TabPages.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup2, layoutControlGroup3 });
+            // 
+            // layoutControlGroup2
+            // 
+            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem3 });
+            layoutControlGroup2.Location = new Point(0, 0);
+            layoutControlGroup2.Name = "layoutControlGroup2";
+            layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup2.Size = new Size(665, 277);
+            layoutControlGroup2.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup2.Text = "鍦板浘鍧愭爣";
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = webView21;
+            layoutControlItem3.Location = new Point(0, 0);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(665, 277);
+            layoutControlItem3.TextSize = new Size(0, 0);
+            layoutControlItem3.TextVisible = false;
+            // 
+            // layoutControlGroup3
+            // 
+            layoutControlGroup3.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { ItemForDescription });
+            layoutControlGroup3.Location = new Point(0, 0);
+            layoutControlGroup3.Name = "layoutControlGroup3";
+            layoutControlGroup3.Size = new Size(665, 277);
+            layoutControlGroup3.Text = "璇存槑";
+            // 
+            // ItemForDescription
+            // 
+            ItemForDescription.Control = DescriptionTextEdit;
+            ItemForDescription.Location = new Point(0, 0);
+            ItemForDescription.Name = "ItemForDescription";
+            ItemForDescription.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            ItemForDescription.Size = new Size(665, 277);
+            ItemForDescription.Text = "璇存槑:";
+            ItemForDescription.TextSize = new Size(0, 0);
+            ItemForDescription.TextVisible = false;
+            // 
+            // ItemForConstructionYear
+            // 
+            ItemForConstructionYear.Control = BtnFileChoice;
+            ItemForConstructionYear.Location = new Point(0, 24);
+            ItemForConstructionYear.Name = "ItemForConstructionYear";
+            ItemForConstructionYear.Size = new Size(344, 24);
+            ItemForConstructionYear.Text = "閫夋嫨鏂囦欢:";
+            ItemForConstructionYear.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = CustomerNameTextEdit;
+            layoutControlItem5.Location = new Point(344, 0);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.Size = new Size(345, 24);
+            layoutControlItem5.Text = "瀹㈡埛鍚嶇О:";
+            layoutControlItem5.TextSize = new Size(52, 14);
+            // 
+            // ItemForTagName
+            // 
+            ItemForTagName.AppearanceItemCaption.Options.UseTextOptions = true;
+            ItemForTagName.AppearanceItemCaption.TextOptions.HAlignment = HorzAlignment.Far;
+            ItemForTagName.Control = ModleTextEdit;
+            ItemForTagName.Location = new Point(0, 48);
+            ItemForTagName.Name = "ItemForTagName";
+            ItemForTagName.Size = new Size(689, 24);
+            ItemForTagName.Text = "涓夌淮妯″瀷:";
+            ItemForTagName.TextSize = new Size(52, 14);
+            // 
+            // dxErrorProvider1
+            // 
+            dxErrorProvider1.ContainerControl = this;
+            // 
+            // BtnFileChoice
+            // 
+            BtnFileChoice.Location = new Point(76, 36);
+            BtnFileChoice.Margin = new Padding(2);
+            BtnFileChoice.Name = "BtnFileChoice";
+            BtnFileChoice.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton() });
+            BtnFileChoice.Size = new Size(276, 20);
+            BtnFileChoice.StyleController = dataLayoutControl1;
+            BtnFileChoice.TabIndex = 11;
+            // 
+            // TagName
+            // 
+            TagName.Location = new Point(420, 36);
+            TagName.Name = "TagName";
+            TagName.Size = new Size(277, 20);
+            TagName.StyleController = dataLayoutControl1;
+            TagName.TabIndex = 16;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = TagName;
+            layoutControlItem4.Location = new Point(344, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(345, 24);
+            layoutControlItem4.Text = "鏍囩:";
+            layoutControlItem4.TextSize = new Size(52, 14);
+            // 
+            // AddProjectDlg
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(709, 440);
+            Controls.Add(dataLayoutControl1);
+            Name = "AddProjectDlg";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "娣诲姞";
+            Load += AddProjectDlg_Load;
+            ((ISupportInitialize)dataLayoutControl1).EndInit();
+            dataLayoutControl1.ResumeLayout(false);
+            ((ISupportInitialize)webView21).EndInit();
+            ((ISupportInitialize)NameTextEdit.Properties).EndInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).EndInit();
+            ((ISupportInitialize)ModleTextEdit.Properties).EndInit();
+            ((ISupportInitialize)CustomerNameTextEdit.Properties).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlGroup1).EndInit();
+            ((ISupportInitialize)ItemForName).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
+            ((ISupportInitialize)emptySpaceItem1).EndInit();
+            ((ISupportInitialize)tabbedControlGroup1).EndInit();
+            ((ISupportInitialize)layoutControlGroup2).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlGroup3).EndInit();
+            ((ISupportInitialize)ItemForDescription).EndInit();
+            ((ISupportInitialize)ItemForConstructionYear).EndInit();
+            ((ISupportInitialize)layoutControlItem5).EndInit();
+            ((ISupportInitialize)ItemForTagName).EndInit();
+            ((ISupportInitialize)dxErrorProvider1).EndInit();
+            ((ISupportInitialize)BtnFileChoice.Properties).EndInit();
+            ((ISupportInitialize)TagName.Properties).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraDataLayout.DataLayoutControl dataLayoutControl1;
+        private SimpleButton btnOk;
+        private SimpleButton btnCancel;
+        private TextEdit NameTextEdit;
+        private MemoEdit DescriptionTextEdit;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForName;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForDescription;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
+        private TextEdit ModleTextEdit;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForTagName;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForConstructionYear;
+        private TextEdit CustomerNameTextEdit;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup3;
+        private DevExpress.XtraLayout.TabbedControlGroup tabbedControlGroup1;
+        private Microsoft.Web.WebView2.WinForms.WebView2 webView21;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private ButtonEdit BtnFileChoice;
+        private TextEdit TagName;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.resx
new file mode 100644
index 0000000..d438392
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/AddProjectDlg.resx
@@ -0,0 +1,123 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.cs
new file mode 100644
index 0000000..4c7ef0d
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.cs
@@ -0,0 +1,70 @@
+锘縰sing DevExpress.XtraEditors;
+using HStation.Dto;
+using HStation.WinFrmUI;
+using HStation.WinFrmUI.Xhs.Project;
+using System;
+
+namespace ISupply.WinFrmUI
+{
+    public partial class EditProjectDlg : DevExpress.XtraEditors.XtraForm
+    {
+        public EditProjectDlg()
+        {
+            InitializeComponent();
+        }
+
+        private EditProjectDlg _AddXhsProjectInput = null;
+
+        public void SetBindingData(ProjectViewModel projectViewModel)
+        {
+        }
+
+        //楠岃瘉
+        private bool Valid()
+        {
+            this.dxErrorProvider1.ClearErrors();
+            if (string.IsNullOrEmpty(this.NameTextEdit.Text.Trim()))
+            {
+                this.dxErrorProvider1.SetError(this.NameTextEdit, "蹇呭~椤�");
+                return false;
+            }
+
+            var tagName = this.ModleTextEdit.Text.Trim();
+            if (string.IsNullOrEmpty(tagName))
+            {
+                this.dxErrorProvider1.SetError(this.ModleTextEdit, "閲嶅");
+                return false;
+            }
+
+            return true;
+        }
+
+        //纭畾
+        private async void btnOk_Click(object sender, EventArgs e)
+        {
+            if (!Valid())
+                return;
+            _AddXhsProjectInput = new AddXhsProjectInput();
+            _AddXhsProjectInput.Name = this.NameTextEdit.Text.Trim();
+            _AddXhsProjectInput.CustomerName = this.CustomerNameTextEdit.Text.Trim();
+            _AddXhsProjectInput.CreateTime = DateTime.Now;
+            _AddXhsProjectInput.GID = new Guid().ToString();
+            _AddXhsProjectInput.Description = this.DescriptionTextEdit.Text.Trim();
+            if (await this.ReloadEvent.Invoke(_AddXhsProjectInput))
+            {
+                MessageBoxHelper.ShowSuccess("娣诲姞鎴愬姛!");
+            }
+            else
+            {
+                MessageBoxHelper.ShowError("娣诲姞澶辫触!");
+            }
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+
+        //鍒濆鍖�
+        private void AddProjectDlg_Load(object sender, EventArgs e)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.designer.cs
new file mode 100644
index 0000000..aa416d1
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.designer.cs
@@ -0,0 +1,417 @@
+锘縰sing DevExpress.Utils;
+using DevExpress.XtraEditors;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace ISupply.WinFrmUI
+{
+    partial class EditProjectDlg
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            components = new Container();
+            dataLayoutControl1 = new DevExpress.XtraDataLayout.DataLayoutControl();
+            webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
+            btnOk = new SimpleButton();
+            btnCancel = new SimpleButton();
+            NameTextEdit = new TextEdit();
+            DescriptionTextEdit = new MemoEdit();
+            ModleTextEdit = new TextEdit();
+            CustomerNameTextEdit = new TextEdit();
+            Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
+            ItemForName = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+            tabbedControlGroup1 = new DevExpress.XtraLayout.TabbedControlGroup();
+            layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlGroup3 = new DevExpress.XtraLayout.LayoutControlGroup();
+            ItemForDescription = new DevExpress.XtraLayout.LayoutControlItem();
+            ItemForConstructionYear = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+            ItemForTagName = new DevExpress.XtraLayout.LayoutControlItem();
+            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
+            BtnFileChoice = new ButtonEdit();
+            TagName = new TextEdit();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((ISupportInitialize)dataLayoutControl1).BeginInit();
+            dataLayoutControl1.SuspendLayout();
+            ((ISupportInitialize)webView21).BeginInit();
+            ((ISupportInitialize)NameTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)ModleTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)CustomerNameTextEdit.Properties).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlGroup1).BeginInit();
+            ((ISupportInitialize)ItemForName).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
+            ((ISupportInitialize)emptySpaceItem1).BeginInit();
+            ((ISupportInitialize)tabbedControlGroup1).BeginInit();
+            ((ISupportInitialize)layoutControlGroup2).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlGroup3).BeginInit();
+            ((ISupportInitialize)ItemForDescription).BeginInit();
+            ((ISupportInitialize)ItemForConstructionYear).BeginInit();
+            ((ISupportInitialize)layoutControlItem5).BeginInit();
+            ((ISupportInitialize)ItemForTagName).BeginInit();
+            ((ISupportInitialize)dxErrorProvider1).BeginInit();
+            ((ISupportInitialize)BtnFileChoice.Properties).BeginInit();
+            ((ISupportInitialize)TagName.Properties).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            SuspendLayout();
+            // 
+            // dataLayoutControl1
+            // 
+            dataLayoutControl1.Controls.Add(webView21);
+            dataLayoutControl1.Controls.Add(btnOk);
+            dataLayoutControl1.Controls.Add(btnCancel);
+            dataLayoutControl1.Controls.Add(NameTextEdit);
+            dataLayoutControl1.Controls.Add(DescriptionTextEdit);
+            dataLayoutControl1.Controls.Add(ModleTextEdit);
+            dataLayoutControl1.Controls.Add(CustomerNameTextEdit);
+            dataLayoutControl1.Controls.Add(BtnFileChoice);
+            dataLayoutControl1.Controls.Add(TagName);
+            dataLayoutControl1.Dock = DockStyle.Fill;
+            dataLayoutControl1.Location = new Point(0, 0);
+            dataLayoutControl1.Name = "dataLayoutControl1";
+            dataLayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(640, 239, 978, 700);
+            dataLayoutControl1.Root = Root;
+            dataLayoutControl1.Size = new Size(709, 440);
+            dataLayoutControl1.TabIndex = 0;
+            dataLayoutControl1.Text = "dataLayoutControl1";
+            // 
+            // webView21
+            // 
+            webView21.AllowExternalDrop = true;
+            webView21.CreationProperties = null;
+            webView21.DefaultBackgroundColor = Color.White;
+            webView21.Location = new Point(24, 120);
+            webView21.Name = "webView21";
+            webView21.Size = new Size(661, 273);
+            webView21.TabIndex = 15;
+            webView21.ZoomFactor = 1D;
+            // 
+            // btnOk
+            // 
+            btnOk.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
+            btnOk.Appearance.Options.UseBackColor = true;
+            btnOk.Location = new Point(503, 409);
+            btnOk.Name = "btnOk";
+            btnOk.Size = new Size(95, 19);
+            btnOk.StyleController = dataLayoutControl1;
+            btnOk.TabIndex = 7;
+            btnOk.Text = "纭畾";
+            btnOk.Click += btnOk_Click;
+            // 
+            // btnCancel
+            // 
+            btnCancel.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Warning;
+            btnCancel.Appearance.Options.UseBackColor = true;
+            btnCancel.DialogResult = DialogResult.Cancel;
+            btnCancel.Location = new Point(602, 409);
+            btnCancel.Name = "btnCancel";
+            btnCancel.Size = new Size(95, 19);
+            btnCancel.StyleController = dataLayoutControl1;
+            btnCancel.TabIndex = 8;
+            btnCancel.Text = "鍙栨秷";
+            // 
+            // NameTextEdit
+            // 
+            NameTextEdit.Location = new Point(76, 12);
+            NameTextEdit.Name = "NameTextEdit";
+            NameTextEdit.Size = new Size(276, 20);
+            NameTextEdit.StyleController = dataLayoutControl1;
+            NameTextEdit.TabIndex = 0;
+            // 
+            // DescriptionTextEdit
+            // 
+            DescriptionTextEdit.Location = new Point(22, 118);
+            DescriptionTextEdit.Name = "DescriptionTextEdit";
+            DescriptionTextEdit.Size = new Size(665, 277);
+            DescriptionTextEdit.StyleController = dataLayoutControl1;
+            DescriptionTextEdit.TabIndex = 6;
+            // 
+            // ModleTextEdit
+            // 
+            ModleTextEdit.Location = new Point(76, 60);
+            ModleTextEdit.Name = "ModleTextEdit";
+            ModleTextEdit.Size = new Size(621, 20);
+            ModleTextEdit.StyleController = dataLayoutControl1;
+            ModleTextEdit.TabIndex = 4;
+            // 
+            // CustomerNameTextEdit
+            // 
+            CustomerNameTextEdit.Location = new Point(420, 12);
+            CustomerNameTextEdit.Margin = new Padding(2);
+            CustomerNameTextEdit.Name = "CustomerNameTextEdit";
+            CustomerNameTextEdit.Size = new Size(277, 20);
+            CustomerNameTextEdit.StyleController = dataLayoutControl1;
+            CustomerNameTextEdit.TabIndex = 14;
+            // 
+            // Root
+            // 
+            Root.AppearanceItemCaption.Options.UseTextOptions = true;
+            Root.AppearanceItemCaption.TextOptions.HAlignment = HorzAlignment.Far;
+            Root.EnableIndentsWithoutBorders = DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1 });
+            Root.Name = "Root";
+            Root.Size = new Size(709, 440);
+            Root.TextVisible = false;
+            // 
+            // layoutControlGroup1
+            // 
+            layoutControlGroup1.AllowDrawBackground = false;
+            layoutControlGroup1.GroupBordersVisible = false;
+            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { ItemForName, layoutControlItem1, layoutControlItem2, emptySpaceItem1, tabbedControlGroup1, ItemForConstructionYear, layoutControlItem5, ItemForTagName, layoutControlItem4 });
+            layoutControlGroup1.Location = new Point(0, 0);
+            layoutControlGroup1.Name = "autoGeneratedGroup0";
+            layoutControlGroup1.Size = new Size(689, 420);
+            // 
+            // ItemForName
+            // 
+            ItemForName.AllowHtmlStringInCaption = true;
+            ItemForName.Control = NameTextEdit;
+            ItemForName.Location = new Point(0, 0);
+            ItemForName.Name = "ItemForName";
+            ItemForName.Size = new Size(344, 24);
+            ItemForName.Text = "<color=red>*</color>鍚嶇О:";
+            ItemForName.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.Control = btnCancel;
+            layoutControlItem1.Location = new Point(590, 397);
+            layoutControlItem1.MaxSize = new Size(99, 23);
+            layoutControlItem1.MinSize = new Size(99, 23);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Size = new Size(99, 23);
+            layoutControlItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem1.TextSize = new Size(0, 0);
+            layoutControlItem1.TextVisible = false;
+            // 
+            // layoutControlItem2
+            // 
+            layoutControlItem2.Control = btnOk;
+            layoutControlItem2.Location = new Point(491, 397);
+            layoutControlItem2.MaxSize = new Size(99, 23);
+            layoutControlItem2.MinSize = new Size(99, 23);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.Size = new Size(99, 23);
+            layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            layoutControlItem2.TextSize = new Size(0, 0);
+            layoutControlItem2.TextVisible = false;
+            // 
+            // emptySpaceItem1
+            // 
+            emptySpaceItem1.AllowHotTrack = false;
+            emptySpaceItem1.Location = new Point(0, 397);
+            emptySpaceItem1.Name = "emptySpaceItem1";
+            emptySpaceItem1.Size = new Size(491, 23);
+            emptySpaceItem1.TextSize = new Size(0, 0);
+            // 
+            // tabbedControlGroup1
+            // 
+            tabbedControlGroup1.AppearanceTabPage.Header.Options.UseTextOptions = true;
+            tabbedControlGroup1.AppearanceTabPage.Header.TextOptions.HAlignment = HorzAlignment.Center;
+            tabbedControlGroup1.HeaderAutoFill = DefaultBoolean.True;
+            tabbedControlGroup1.Location = new Point(0, 72);
+            tabbedControlGroup1.Name = "tabbedControlGroup1";
+            tabbedControlGroup1.SelectedTabPage = layoutControlGroup2;
+            tabbedControlGroup1.Size = new Size(689, 325);
+            tabbedControlGroup1.TabPages.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup2, layoutControlGroup3 });
+            // 
+            // layoutControlGroup2
+            // 
+            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem3 });
+            layoutControlGroup2.Location = new Point(0, 0);
+            layoutControlGroup2.Name = "layoutControlGroup2";
+            layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup2.Size = new Size(665, 277);
+            layoutControlGroup2.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            layoutControlGroup2.Text = "鍦板浘鍧愭爣";
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = webView21;
+            layoutControlItem3.Location = new Point(0, 0);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(665, 277);
+            layoutControlItem3.TextSize = new Size(0, 0);
+            layoutControlItem3.TextVisible = false;
+            // 
+            // layoutControlGroup3
+            // 
+            layoutControlGroup3.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { ItemForDescription });
+            layoutControlGroup3.Location = new Point(0, 0);
+            layoutControlGroup3.Name = "layoutControlGroup3";
+            layoutControlGroup3.Size = new Size(665, 277);
+            layoutControlGroup3.Text = "璇存槑";
+            // 
+            // ItemForDescription
+            // 
+            ItemForDescription.Control = DescriptionTextEdit;
+            ItemForDescription.Location = new Point(0, 0);
+            ItemForDescription.Name = "ItemForDescription";
+            ItemForDescription.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            ItemForDescription.Size = new Size(665, 277);
+            ItemForDescription.Text = "璇存槑:";
+            ItemForDescription.TextSize = new Size(0, 0);
+            ItemForDescription.TextVisible = false;
+            // 
+            // ItemForConstructionYear
+            // 
+            ItemForConstructionYear.Control = BtnFileChoice;
+            ItemForConstructionYear.Location = new Point(0, 24);
+            ItemForConstructionYear.Name = "ItemForConstructionYear";
+            ItemForConstructionYear.Size = new Size(344, 24);
+            ItemForConstructionYear.Text = "閫夋嫨鏂囦欢:";
+            ItemForConstructionYear.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = CustomerNameTextEdit;
+            layoutControlItem5.Location = new Point(344, 0);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.Size = new Size(345, 24);
+            layoutControlItem5.Text = "瀹㈡埛鍚嶇О:";
+            layoutControlItem5.TextSize = new Size(52, 14);
+            // 
+            // ItemForTagName
+            // 
+            ItemForTagName.AppearanceItemCaption.Options.UseTextOptions = true;
+            ItemForTagName.AppearanceItemCaption.TextOptions.HAlignment = HorzAlignment.Far;
+            ItemForTagName.Control = ModleTextEdit;
+            ItemForTagName.Location = new Point(0, 48);
+            ItemForTagName.Name = "ItemForTagName";
+            ItemForTagName.Size = new Size(689, 24);
+            ItemForTagName.Text = "涓夌淮妯″瀷:";
+            ItemForTagName.TextSize = new Size(52, 14);
+            // 
+            // dxErrorProvider1
+            // 
+            dxErrorProvider1.ContainerControl = this;
+            // 
+            // BtnFileChoice
+            // 
+            BtnFileChoice.Location = new Point(76, 36);
+            BtnFileChoice.Margin = new Padding(2);
+            BtnFileChoice.Name = "BtnFileChoice";
+            BtnFileChoice.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton() });
+            BtnFileChoice.Size = new Size(276, 20);
+            BtnFileChoice.StyleController = dataLayoutControl1;
+            BtnFileChoice.TabIndex = 11;
+            // 
+            // TagName
+            // 
+            TagName.Location = new Point(420, 36);
+            TagName.Name = "TagName";
+            TagName.Size = new Size(277, 20);
+            TagName.StyleController = dataLayoutControl1;
+            TagName.TabIndex = 16;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = TagName;
+            layoutControlItem4.Location = new Point(344, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(345, 24);
+            layoutControlItem4.Text = "鏍囩:";
+            layoutControlItem4.TextSize = new Size(52, 14);
+            // 
+            // AddProjectDlg
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            ClientSize = new Size(709, 440);
+            Controls.Add(dataLayoutControl1);
+            Name = "AddProjectDlg";
+            StartPosition = FormStartPosition.CenterParent;
+            Text = "娣诲姞";
+            Load += AddProjectDlg_Load;
+            ((ISupportInitialize)dataLayoutControl1).EndInit();
+            dataLayoutControl1.ResumeLayout(false);
+            ((ISupportInitialize)webView21).EndInit();
+            ((ISupportInitialize)NameTextEdit.Properties).EndInit();
+            ((ISupportInitialize)DescriptionTextEdit.Properties).EndInit();
+            ((ISupportInitialize)ModleTextEdit.Properties).EndInit();
+            ((ISupportInitialize)CustomerNameTextEdit.Properties).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlGroup1).EndInit();
+            ((ISupportInitialize)ItemForName).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
+            ((ISupportInitialize)emptySpaceItem1).EndInit();
+            ((ISupportInitialize)tabbedControlGroup1).EndInit();
+            ((ISupportInitialize)layoutControlGroup2).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlGroup3).EndInit();
+            ((ISupportInitialize)ItemForDescription).EndInit();
+            ((ISupportInitialize)ItemForConstructionYear).EndInit();
+            ((ISupportInitialize)layoutControlItem5).EndInit();
+            ((ISupportInitialize)ItemForTagName).EndInit();
+            ((ISupportInitialize)dxErrorProvider1).EndInit();
+            ((ISupportInitialize)BtnFileChoice.Properties).EndInit();
+            ((ISupportInitialize)TagName.Properties).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraDataLayout.DataLayoutControl dataLayoutControl1;
+        private SimpleButton btnOk;
+        private SimpleButton btnCancel;
+        private TextEdit NameTextEdit;
+        private MemoEdit DescriptionTextEdit;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForName;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForDescription;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
+        private TextEdit ModleTextEdit;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForTagName;
+        private DevExpress.XtraLayout.LayoutControlItem ItemForConstructionYear;
+        private TextEdit CustomerNameTextEdit;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup3;
+        private DevExpress.XtraLayout.TabbedControlGroup tabbedControlGroup1;
+        private Microsoft.Web.WebView2.WinForms.WebView2 webView21;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private ButtonEdit BtnFileChoice;
+        private TextEdit TagName;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.resx
new file mode 100644
index 0000000..d438392
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/EditProjectDlg.resx
@@ -0,0 +1,123 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/ProjectViewModel.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/ProjectViewModel.cs
new file mode 100644
index 0000000..42a134c
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/ProjectViewModel.cs
@@ -0,0 +1,23 @@
+锘縰sing HStation.Dto;
+
+namespace HStation.WinFrmUI.Xhs.Project
+{
+    public class ProjectViewModel : XhsProjectDto
+    {
+        public ProjectViewModel(XhsProjectDto rhs)
+        {
+            this.ID = rhs.ID;
+            this.Name = rhs.Name;
+            this.Paras = rhs.Paras;
+            this.Flags = rhs.Flags;
+            this.TagName = rhs.TagName;
+            this.UseStatus = rhs.UseStatus;
+            this.SortCode = rhs.SortCode;
+            this.Description = rhs.Description;
+            this.CreateTime = rhs.CreateTime;
+            this.CreateUserID = rhs.CreateUserID;
+            this.Version = rhs.Version;
+            this.MapPosition = rhs.MapPosition;
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.Designer.cs
index fd31308..ee1fe49 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.Designer.cs
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(XhsProjectListPage));
             ribbonControl1 = new DevExpress.XtraBars.Ribbon.RibbonControl();
             BtnAdd = new DevExpress.XtraBars.BarButtonItem();
@@ -36,9 +37,18 @@
             ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
             ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
             gridControl1 = new DevExpress.XtraGrid.GridControl();
+            projectViewModelBindingSource = new BindingSource(components);
             gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            colName = new DevExpress.XtraGrid.Columns.GridColumn();
+            colParas = new DevExpress.XtraGrid.Columns.GridColumn();
+            colTagName = new DevExpress.XtraGrid.Columns.GridColumn();
+            colUseStatus = new DevExpress.XtraGrid.Columns.GridColumn();
+            colSortCode = new DevExpress.XtraGrid.Columns.GridColumn();
+            colDescription = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCustomerName = new DevExpress.XtraGrid.Columns.GridColumn();
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).BeginInit();
             ((System.ComponentModel.ISupportInitialize)gridControl1).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)projectViewModelBindingSource).BeginInit();
             ((System.ComponentModel.ISupportInitialize)gridView1).BeginInit();
             SuspendLayout();
             // 
@@ -47,7 +57,7 @@
             ribbonControl1.DrawGroupsBorderMode = DevExpress.Utils.DefaultBoolean.False;
             ribbonControl1.ExpandCollapseItem.Id = 0;
             ribbonControl1.ItemPanelStyle = DevExpress.XtraBars.Ribbon.RibbonItemPanelStyle.Classic;
-            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, ribbonControl1.SearchEditItem, BtnAdd, BtnEdit, BtnDelete });
+            ribbonControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbonControl1.ExpandCollapseItem, BtnAdd, BtnEdit, BtnDelete });
             ribbonControl1.Location = new Point(0, 0);
             ribbonControl1.MaxItemId = 4;
             ribbonControl1.Name = "ribbonControl1";
@@ -56,7 +66,7 @@
             ribbonControl1.ShowExpandCollapseButton = DevExpress.Utils.DefaultBoolean.False;
             ribbonControl1.ShowPageHeadersInFormCaption = DevExpress.Utils.DefaultBoolean.True;
             ribbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide;
-            ribbonControl1.Size = new Size(1317, 104);
+            ribbonControl1.Size = new Size(1317, 77);
             ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;
             // 
             // BtnAdd
@@ -73,6 +83,7 @@
             BtnEdit.Id = 2;
             BtnEdit.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("BtnEdit.ImageOptions.SvgImage");
             BtnEdit.Name = "BtnEdit";
+            BtnEdit.ItemClick += BtnEdit_ItemClick;
             // 
             // BtnDelete
             // 
@@ -97,20 +108,82 @@
             // 
             // gridControl1
             // 
+            gridControl1.DataSource = projectViewModelBindingSource;
             gridControl1.Dock = DockStyle.Fill;
-            gridControl1.Location = new Point(0, 104);
+            gridControl1.Location = new Point(0, 77);
             gridControl1.MainView = gridView1;
             gridControl1.MenuManager = ribbonControl1;
             gridControl1.Name = "gridControl1";
-            gridControl1.Size = new Size(1317, 540);
+            gridControl1.Size = new Size(1317, 567);
             gridControl1.TabIndex = 1;
             gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
             // 
+            // projectViewModelBindingSource
+            // 
+            projectViewModelBindingSource.DataSource = typeof(Xhs.Project.ProjectViewModel);
+            // 
             // gridView1
             // 
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colParas, colTagName, colUseStatus, colSortCode, colDescription, colCustomerName });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.OptionsView.ShowGroupPanel = false;
+            // 
+            // colName
+            // 
+            colName.Caption = "鍚嶇О";
+            colName.FieldName = "Name";
+            colName.Name = "colName";
+            colName.Visible = true;
+            colName.VisibleIndex = 0;
+            // 
+            // colParas
+            // 
+            colParas.Caption = "鍙傛暟";
+            colParas.FieldName = "Paras";
+            colParas.Name = "colParas";
+            colParas.Visible = true;
+            colParas.VisibleIndex = 1;
+            // 
+            // colTagName
+            // 
+            colTagName.Caption = "鏍囩";
+            colTagName.FieldName = "TagName";
+            colTagName.Name = "colTagName";
+            colTagName.Visible = true;
+            colTagName.VisibleIndex = 2;
+            // 
+            // colUseStatus
+            // 
+            colUseStatus.Caption = "浣跨敤鐘舵��";
+            colUseStatus.FieldName = "UseStatus";
+            colUseStatus.Name = "colUseStatus";
+            colUseStatus.Visible = true;
+            colUseStatus.VisibleIndex = 3;
+            // 
+            // colSortCode
+            // 
+            colSortCode.Caption = "鎺掑簭鐮�";
+            colSortCode.FieldName = "SortCode";
+            colSortCode.Name = "colSortCode";
+            colSortCode.Visible = true;
+            colSortCode.VisibleIndex = 4;
+            // 
+            // colDescription
+            // 
+            colDescription.Caption = "璇存槑";
+            colDescription.FieldName = "Description";
+            colDescription.Name = "colDescription";
+            colDescription.Visible = true;
+            colDescription.VisibleIndex = 5;
+            // 
+            // colCustomerName
+            // 
+            colCustomerName.Caption = "瀹㈡埛淇℃伅";
+            colCustomerName.FieldName = "CustomerName";
+            colCustomerName.Name = "colCustomerName";
+            colCustomerName.Visible = true;
+            colCustomerName.VisibleIndex = 6;
             // 
             // XhsProjectListPage
             // 
@@ -122,6 +195,7 @@
             Size = new Size(1317, 644);
             ((System.ComponentModel.ISupportInitialize)ribbonControl1).EndInit();
             ((System.ComponentModel.ISupportInitialize)gridControl1).EndInit();
+            ((System.ComponentModel.ISupportInitialize)projectViewModelBindingSource).EndInit();
             ((System.ComponentModel.ISupportInitialize)gridView1).EndInit();
             ResumeLayout(false);
             PerformLayout();
@@ -137,5 +211,13 @@
         private DevExpress.XtraBars.BarButtonItem BtnDelete;
         private DevExpress.XtraGrid.GridControl gridControl1;
         private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private BindingSource projectViewModelBindingSource;
+        private DevExpress.XtraGrid.Columns.GridColumn colName;
+        private DevExpress.XtraGrid.Columns.GridColumn colParas;
+        private DevExpress.XtraGrid.Columns.GridColumn colTagName;
+        private DevExpress.XtraGrid.Columns.GridColumn colUseStatus;
+        private DevExpress.XtraGrid.Columns.GridColumn colSortCode;
+        private DevExpress.XtraGrid.Columns.GridColumn colDescription;
+        private DevExpress.XtraGrid.Columns.GridColumn colCustomerName;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.cs
index cac618f..8cacf39 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.cs
@@ -1,4 +1,6 @@
 锘縰sing HStation.Dto;
+using HStation.WinFrmUI.Xhs.Project;
+using ISupply.WinFrmUI;
 
 namespace HStation.WinFrmUI
 {
@@ -7,26 +9,58 @@
         public XhsProjectListPage()
         {
             InitializeComponent();
-            this.PageTitle.Caption = "鏂板缓椤圭洰";
+            this.PageTitle.Caption = "椤圭洰绠$悊";
         }
 
-        private class CurrentViewModel
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        public override void InitialDataSource()
         {
-            private CurrentViewModel(CurrentViewModel currentViewModel)
-            {
-            }
-
-            private string ProjectName { get; set; }
-            private string ItemName { get; set; }
+            SetBindingData();
         }
 
+        private new BLL.XhsProject _bll = new BLL.XhsProject();
+
+        private List<ProjectViewModel> _allBindingList = new List<ProjectViewModel>();
+
+        private async void SetBindingData()
+        {
+            var alllist = await _bll.GetAll();
+            if (alllist != null)
+            {
+                foreach (var item in alllist)
+                {
+                    _allBindingList.Add(new ProjectViewModel(item));
+                }
+            }
+            this.projectViewModelBindingSource.DataSource = _allBindingList;
+            this.projectViewModelBindingSource.ResetBindings(false);
+        }
+
+        //娣诲姞
         private async void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
-            var service = new Service.XhsProject();
-            var bll = new BLL.XhsProject();
-            var b = await bll.GetAll();
-            var c = await bll.Insert(new AddXhsProjectInput { Name = "test2", TagName = "2", Paras = new Dictionary<string, string>() });
-            var a = service.Insert(new Model.XhsProject { Name = "test2", UseStatus = Yw.Model.eUseStatus.Enable, SortCode = 3 });
+            var dlg = new AddProjectDlg();
+            dlg.ReloadEvent += async (rhs) =>
+            {
+                var id = await _bll.Insert(rhs);
+                if (id > 0)
+                {
+                    var vmmodel = await _bll.GetByID(id);
+                    _allBindingList.Add(new ProjectViewModel(vmmodel));
+                    this.projectViewModelBindingSource.ResetBindings(false);
+                    return true;
+                }
+                return false;
+            };
+            dlg.ShowDialog();
+        }
+
+        //淇敼
+        private void BtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            //var dlg=new EditProjectDlg();
         }
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx
index 2b49cfb..d1164da 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx
@@ -18,7 +18,7 @@
     <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="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>
@@ -117,10 +117,10 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <assembly alias="DevExpress.Data.v22.2" name="DevExpress.Data.v22.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
-  <data name="BtnAdd.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="BtnAdd.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
         dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKcCAAAC77u/
         PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
@@ -137,9 +137,9 @@
         DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="BtnEdit.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="BtnEdit.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
         dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABwFAAAC77u/
         PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
@@ -166,9 +166,9 @@
         NHY0aDRMMTQsMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
 </value>
   </data>
-  <data name="BtnDelete.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="BtnDelete.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
         dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJIDAAAC77u/
         PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
@@ -189,4 +189,7 @@
         L2c+DQo8L3N2Zz4L
 </value>
   </data>
+  <metadata name="projectViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx.bak b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx.bak
new file mode 100644
index 0000000..2b49cfb
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/01-project/XhsProjectListPage.resx.bak
@@ -0,0 +1,192 @@
+锘�<?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>
+  <assembly alias="DevExpress.Data.v22.2" name="DevExpress.Data.v22.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="BtnAdd.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKcCAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
+        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkFkZCI+DQogICAgPHBhdGggZD0iTTI3LDE0aC05VjVj
+        MC0wLjUtMC41LTEtMS0xaC0yYy0wLjUsMC0xLDAuNS0xLDF2OUg1Yy0wLjUsMC0xLDAuNS0xLDF2MmMw
+        LDAuNSwwLjUsMSwxLDFoOXY5ICAgYzAsMC41LDAuNSwxLDEsMWgyYzAuNSwwLDEtMC41LDEtMXYtOWg5
+        YzAuNSwwLDEtMC41LDEtMXYtMkMyOCwxNC41LDI3LjUsMTQsMjcsMTR6IiBjbGFzcz0iR3JlZW4iIC8+
+        DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="BtnEdit.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABwFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iUmVuYW1lXzFfIj4NCiAgICA8
+        cGF0aCBkPSJNMi4xLDE2aDIuMmwwLjYtMi4zaDMuMkw4LjgsMTZIMTFMNy44LDZINS40TDIuMSwxNnog
+        TTYuNCw4LjdjMC4xLTAuMywwLjEtMC42LDAuMS0wLjloMC4xICAgYzAsMC4zLDAuMSwwLjYsMC4xLDAu
+        OWwxLDMuM0g1LjRMNi40LDguN3ogTTE3LjUsMTAuNmMwLjYtMC4yLDEuMS0wLjUsMS41LTAuOWMwLjQt
+        MC40LDAuNi0wLjksMC42LTEuNGMwLTAuNy0wLjMtMS4zLTAuOS0xLjcgICBDMTguMSw2LjIsMTcuMSw2
+        LDE1LjksNkgxMnY5LjlWMTZoNGMxLjIsMCwyLjItMC4yLDIuOS0wLjhDMTkuNywxNC42LDIwLDE0LDIw
+        LDEzYzAtMC42LTAuMi0xLjItMC43LTEuNiAgIEMxOC45LDExLDE4LjMsMTAuNywxNy41LDEwLjZ6IE0x
+        NC40LDcuN2gwLjljMS4xLDAsMS43LDAuNCwxLjcsMS4xYzAsMC40LTAuMSwwLjctMC40LDAuOUMxNi40
+        LDkuOSwxNiwxMCwxNS41LDEwaC0xLjFWNy43eiAgICBNMTcsMTMuOGMtMC4zLDAuMi0wLjgsMC40LTEu
+        MywwLjRoLTEuM3YtMi42aDEuM2MwLjUsMCwwLjksMC4xLDEuMywwLjNjMC4zLDAuMiwwLjUsMC42LDAu
+        NSwwLjlDMTcuNSwxMy4zLDE3LjQsMTMuNiwxNywxMy44eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxw
+        YXRoIGQ9Ik0yNywxOWwtOCw4bC00LTRsOC04TDI3LDE5eiBNMjgsMThsMS43LTEuN2MwLjQtMC40LDAu
+        NC0xLDAtMS4zTDI3LDEyLjNjLTAuNC0wLjQtMS0wLjQtMS4zLDBMMjQsMTRMMjgsMTh6ICAgIE0xNCwy
+        NHY0aDRMMTQsMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="BtnDelete.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v22.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIyLjIsIFZlcnNpb249MjIuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJIDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+        MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+        bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVsZXRlIj4NCiAgICA8cGF0aCBk
+        PSJNMTguOCwxNmw4LjktOC45YzAuNC0wLjQsMC40LTEsMC0xLjRsLTEuNC0xLjRjLTAuNC0wLjQtMS0w
+        LjQtMS40LDBMMTYsMTMuMkw3LjEsNC4zYy0wLjQtMC40LTEtMC40LTEuNCwwICAgTDQuMyw1LjdjLTAu
+        NCwwLjQtMC40LDEsMCwxLjRsOC45LDguOWwtOC45LDguOWMtMC40LDAuNC0wLjQsMSwwLDEuNGwxLjQs
+        MS40YzAuNCwwLjQsMSwwLjQsMS40LDBsOC45LTguOWw4LjksOC45ICAgYzAuNCwwLjQsMSwwLjQsMS40
+        LDBsMS40LTEuNGMwLjQtMC40LDAuNC0xLDAtMS40TDE4LjgsMTZ6IiBjbGFzcz0iUmVkIiAvPg0KICA8
+        L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/DocumentPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/DocumentPage.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/DocumentPage.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/DocumentPage.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/DocumentPage.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/DocumentPage.resx
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/DocumentPage.resx
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/DocumentPage.resx
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/MainForm.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/MainForm.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/MainForm.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/MainForm.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/MainForm.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/MainForm.resx
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/MainForm.resx
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/MainForm.resx
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/ObjectType.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/ObjectType.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/ObjectType.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/ObjectType.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageDataSync.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageDataSync.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageDataSync.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageDataSync.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageFunctionItem.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageFunctionItem.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageFunctionItem.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageFunctionItem.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageMenu.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageMenu.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageMenu.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageMenu.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageTitle.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageTitle.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/PageTitle.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/PageTitle.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/SurfaceGuid.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/SurfaceGuid.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/SurfaceGuid.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/SurfaceGuid.cs
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/ePageDataOperation.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/ePageDataOperation.cs
similarity index 100%
rename from WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-DocumentPage/ePageDataOperation.cs
rename to WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/02-DocumentPage/ePageDataOperation.cs
diff --git "a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/\346\217\220\347\244\272\345\274\271\347\252\227/MessageBoxHelper.cs" "b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/\346\217\220\347\244\272\345\274\271\347\252\227/MessageBoxHelper.cs"
new file mode 100644
index 0000000..52e00f9
--- /dev/null
+++ "b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/02-UICore/\346\217\220\347\244\272\345\274\271\347\252\227/MessageBoxHelper.cs"
@@ -0,0 +1,91 @@
+锘縰sing DevExpress.XtraEditors;
+
+namespace HStation.WinFrmUI
+{
+    public class MessageBoxHelper
+    {
+        /// <summary>
+        /// 閿欒淇℃伅寮圭獥
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static DialogResult ShowError(string message, string caption = "閿欒", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1)
+        {
+            return XtraMessageBox.Show(message, caption, buttons, MessageBoxIcon.Error);
+        }
+
+        /// <summary>
+        /// 鎴愬姛淇℃伅寮圭獥
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static DialogResult ShowSuccess(string message, string caption = "鎴愬姛", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1)
+        {
+            return XtraMessageBox.Show(message, caption, buttons, MessageBoxIcon.Information, defaultButton);
+        }
+
+        /// <summary>
+        /// 涓嶆樉绀烘寜閽脊绐�(鍙樉绀烘枃瀛�)
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static DialogResult ShowMessage(string message, string caption = "鎴愬姛")
+        {
+            return XtraMessageBox.Show(message, caption);
+        }
+
+        /// <summary>
+        /// 璀﹀憡淇℃伅寮圭獥
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static DialogResult ShowWarning(string message, string caption = "璀﹀憡", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1)
+        {
+            return XtraMessageBox.Show(message, caption, buttons, MessageBoxIcon.Warning, defaultButton);
+        }
+
+        /// <summary>
+        /// 鏅�氫俊鎭脊绐�
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static DialogResult ShowInfo(string message, string caption = "鎻愮ず", MessageBoxButtons buttons = MessageBoxButtons.OK, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1)
+        {
+            return XtraMessageBox.Show(message, caption, buttons, MessageBoxIcon.Information, defaultButton);
+        }
+
+        /// <summary>
+        /// 寮圭獥鏄惁鐐瑰嚮纭畾
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static bool IsClickOk(string message, string caption = "璇㈤棶", MessageBoxButtons buttons = MessageBoxButtons.OKCancel, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1)
+        {
+            return XtraMessageBox.Show(message, caption, buttons, MessageBoxIcon.Question) != DialogResult.OK;
+        }
+
+        /// <summary>
+        /// 寮圭獥鏄惁鐐瑰嚮鍙栨秷
+        /// </summary>
+        /// <param name="message"></param>鏄剧ず淇℃伅
+        /// <param name="caption"></param>宸︿笂瑙掓樉绀轰俊鎭�
+        /// <param name="buttons"></param>闇�瑕佹樉绀烘寜閽�
+        /// <returns></returns>
+        public static bool IsClickCancel(string message, string caption = "璇㈤棶", MessageBoxButtons buttons = MessageBoxButtons.OKCancel, MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1)
+        {
+            return XtraMessageBox.Show(message, caption, buttons, MessageBoxIcon.Question) != DialogResult.Cancel;
+        }
+    }
+}
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj
index a51fc35..260bfa4 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj
@@ -8,7 +8,17 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="DevExpress.Win.Design" Version="22.2.4" />
+    <Compile Remove="01-project\EditProjectDlg.cs" />
+    <Compile Remove="01-project\EditProjectDlg.designer.cs" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Remove="01-project\EditProjectDlg.resx" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="23.2.4" />
+    <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2535.41" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.bak b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.bak
new file mode 100644
index 0000000..9a28579
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.bak
@@ -0,0 +1,19 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0-windows</TargetFramework>
+    <Nullable>enable</Nullable>
+    <UseWindowsForms>true</UseWindowsForms>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="DevExpress.Win.Design" Version="22.2.4" />
+    <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.2535.41" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\HStation.BLL.Xhs.Core\HStation.BLL.Xhs.Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.user b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.user
index 0e1d7ff..8b0f779 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.user
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/HStation.WinFrmUI.Xhs.Project.csproj.user
@@ -2,13 +2,16 @@
 <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup />
   <ItemGroup>
+    <Compile Update="01-project\AddProjectDlg.cs">
+      <SubType>Form</SubType>
+    </Compile>
     <Compile Update="01-project\XhsProjectListPage.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="02-DocumentPage\DocumentPage.cs">
+    <Compile Update="02-UICore\02-DocumentPage\DocumentPage.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Update="02-DocumentPage\MainForm.cs">
+    <Compile Update="02-UICore\02-DocumentPage\MainForm.cs">
       <SubType>Form</SubType>
     </Compile>
   </ItemGroup>
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Project/Properties/DataSources/ProjectViewModel.datasource b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/Properties/DataSources/ProjectViewModel.datasource
new file mode 100644
index 0000000..614f2b4
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Project/Properties/DataSources/ProjectViewModel.datasource
@@ -0,0 +1,10 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="ProjectViewModel" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+  <TypeInfo>HStation.WinFrmUI.Xhs.Project.ProjectViewModel, HStation.WinFrmUI.Xhs.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>
\ No newline at end of file

--
Gitblit v1.9.3