From cc6751e088b8b97d792d9eae13ed3cbd33dbb1c5 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期三, 14 八月 2024 17:11:38 +0800
Subject: [PATCH] 方案,基础信息

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.cs            |   41 ++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.Designer.cs |   57 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.resx           |  120 ++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user                             |    9 
 Desktop/HStation.Desktop.Xhs.Core/Program.cs                                                           |    2 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.Designer.cs    |  276 +++++++++++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs                                 |    7 
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.resx        |  120 ++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs         |  125 ++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs                  |   20 +
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.Designer.cs   |   57 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.cs          |   57 +++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.resx          |  120 ++++++
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.cs             |   56 +++
 14 files changed, 1,060 insertions(+), 7 deletions(-)

diff --git a/Desktop/HStation.Desktop.Xhs.Core/Program.cs b/Desktop/HStation.Desktop.Xhs.Core/Program.cs
index c043ce3..fd646ba 100644
--- a/Desktop/HStation.Desktop.Xhs.Core/Program.cs
+++ b/Desktop/HStation.Desktop.Xhs.Core/Program.cs
@@ -63,7 +63,7 @@
 
                 // Yw.FileFolderZipHelper.Zip(@"C:\Users\ZKC\Desktop\循环水用例", @"C:\Users\ZKC\Desktop\循环水用例.ywrvt");
                 Yw.FileFolderZipHelper.Zip(@"C:\Users\Eventech\Desktop\循环水用例", @"C:\Users\Eventech\Desktop\循环水用例.ywrvt");
-                // Yw.FileFolderZipHelper.Zip(@"C:\Users\admin\Desktop\居家办公工作\循环水用例", @"C:\Users\admin\Desktop\居家办公工作\循环水用例.ywrvt");
+                //Yw.FileFolderZipHelper.Zip(@"C:\Users\admin\Desktop\居家办公工作\循环水用例", @"C:\Users\admin\Desktop\居家办公工作\循环水用例.ywrvt");
 
                 //var json = RevitTestHelper.GenerateJson();
 
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.Designer.cs
new file mode 100644
index 0000000..aaa9bb4
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.Designer.cs
@@ -0,0 +1,57 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsProjectBasicInfoBimfaceCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            bimfaceInterop3dContainer1 = new BimfaceInterop3dContainer();
+            SuspendLayout();
+            // 
+            // bimfaceInterop3dContainer1
+            // 
+            bimfaceInterop3dContainer1.Dock = DockStyle.Fill;
+            bimfaceInterop3dContainer1.Location = new Point(0, 0);
+            bimfaceInterop3dContainer1.Margin = new Padding(4, 2, 4, 2);
+            bimfaceInterop3dContainer1.Name = "bimfaceInterop3dContainer1";
+            bimfaceInterop3dContainer1.Size = new Size(784, 505);
+            bimfaceInterop3dContainer1.TabIndex = 1;
+            // 
+            // XhsProjectBasicInfoBimfaceCtrl
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(bimfaceInterop3dContainer1);
+            Name = "XhsProjectBasicInfoBimfaceCtrl";
+            Size = new Size(784, 505);
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private BimfaceInterop3dContainer bimfaceInterop3dContainer1;
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.cs
new file mode 100644
index 0000000..4befda6
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.cs
@@ -0,0 +1,57 @@
+锘縩amespace HStation.WinFrmUI
+{
+    public partial class XhsProjectBasicInfoBimfaceCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public XhsProjectBasicInfoBimfaceCtrl()
+        {
+            InitializeComponent();
+            this.bimfaceInterop3dContainer1.LoadCompletedEvent += BimfaceInterop3dContainer1_LoadCompletedEvent;
+        }
+
+
+
+        private long _projectId;//椤圭洰id
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public async void SetBindingData(long projectId)
+        {
+            _projectId = projectId;
+            await this.bimfaceInterop3dContainer1.InitialContainer();
+        }
+
+        /// <summary>
+        /// 椤甸潰鍔犺浇瀹屾垚鍚庤Е鍙�
+        /// </summary>
+        private async void BimfaceInterop3dContainer1_LoadCompletedEvent()
+        {
+            var projectSite = await new BLL.XhsProjectSiteStd().GetDefaultByProjectID(_projectId);
+            if (projectSite == null)
+            {
+                return;
+            }
+
+            var relation = await new Yw.BLL.BimfaceFileRelationStd()
+                .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, Yw.Bimface.Purpose.Simulation);
+            if (relation == null)
+            {
+                return;
+            }
+
+            var bimfaceFile = await new Yw.BLL.BimfaceFileStd().GetByID(relation.BimfaceFileID);
+            if (bimfaceFile == null)
+            {
+                return;
+            }
+
+            var viewToken = await BimfaceHelper.GetViewToken(bimfaceFile.BimfaceId);
+            if (string.IsNullOrEmpty(viewToken))
+            {
+                return;
+            }
+            await this.bimfaceInterop3dContainer1.LoadView(viewToken);
+
+        }
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoBimfaceCtrl.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.Designer.cs
new file mode 100644
index 0000000..cbad04e
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.Designer.cs
@@ -0,0 +1,57 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsProjectBasicInfoHydroCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            hydroParterListCtrl1 = new HydroParterListCtrl();
+            SuspendLayout();
+            // 
+            // hydroParterListCtrl1
+            // 
+            hydroParterListCtrl1.Dock = DockStyle.Fill;
+            hydroParterListCtrl1.HidePageWhenListIsNull = true;
+            hydroParterListCtrl1.Location = new Point(0, 0);
+            hydroParterListCtrl1.Name = "hydroParterListCtrl1";
+            hydroParterListCtrl1.Size = new Size(907, 586);
+            hydroParterListCtrl1.TabIndex = 0;
+            // 
+            // XhsProjectBasicInfoHydroCtrl
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(hydroParterListCtrl1);
+            Name = "XhsProjectBasicInfoHydroCtrl";
+            Size = new Size(907, 586);
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private HydroParterListCtrl hydroParterListCtrl1;
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.cs
new file mode 100644
index 0000000..a77c762
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.cs
@@ -0,0 +1,41 @@
+锘縰sing DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HStation.WinFrmUI
+{
+    public partial class XhsProjectBasicInfoHydroCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public XhsProjectBasicInfoHydroCtrl()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public async void SetBindingData(long projectId)
+        {
+            var projectSite = await new HStation.BLL.XhsProjectSiteStd().GetDefaultByProjectID(projectId);
+            if (projectSite == null)
+            {
+                return;
+            }
+            var hydroRelation = await new Yw.BLL.HydroModelRelation().GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation);
+            if (hydroRelation == null)
+            {
+                return;
+            }
+            var info = await new Yw.BLL.HydroModelInfo().GetByID(hydroRelation.ModelID);
+            this.hydroParterListCtrl1.SetBindingData(info);
+        }
+
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoHydroCtrl.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.Designer.cs
new file mode 100644
index 0000000..c8d0182
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.Designer.cs
@@ -0,0 +1,276 @@
+锘縩amespace HStation.WinFrmUI
+{
+    partial class XhsProjectBasicInfoViewCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            txtFlags = new DevExpress.XtraEditors.TextEdit();
+            txtDescription = new DevExpress.XtraEditors.MemoEdit();
+            txtTagNme = new DevExpress.XtraEditors.TextEdit();
+            txtAddress = new DevExpress.XtraEditors.TextEdit();
+            txtCustomer = new DevExpress.XtraEditors.TextEdit();
+            txtName = new DevExpress.XtraEditors.TextEdit();
+            txtNO = new DevExpress.XtraEditors.TextEdit();
+            Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((ISupportInitialize)layoutControl1).BeginInit();
+            layoutControl1.SuspendLayout();
+            ((ISupportInitialize)txtFlags.Properties).BeginInit();
+            ((ISupportInitialize)txtDescription.Properties).BeginInit();
+            ((ISupportInitialize)txtTagNme.Properties).BeginInit();
+            ((ISupportInitialize)txtAddress.Properties).BeginInit();
+            ((ISupportInitialize)txtCustomer.Properties).BeginInit();
+            ((ISupportInitialize)txtName.Properties).BeginInit();
+            ((ISupportInitialize)txtNO.Properties).BeginInit();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
+            ((ISupportInitialize)layoutControlItem4).BeginInit();
+            ((ISupportInitialize)layoutControlItem6).BeginInit();
+            ((ISupportInitialize)layoutControlItem7).BeginInit();
+            ((ISupportInitialize)layoutControlItem5).BeginInit();
+            SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            layoutControl1.Controls.Add(txtFlags);
+            layoutControl1.Controls.Add(txtDescription);
+            layoutControl1.Controls.Add(txtTagNme);
+            layoutControl1.Controls.Add(txtAddress);
+            layoutControl1.Controls.Add(txtCustomer);
+            layoutControl1.Controls.Add(txtName);
+            layoutControl1.Controls.Add(txtNO);
+            layoutControl1.Dock = DockStyle.Fill;
+            layoutControl1.Location = new Point(0, 0);
+            layoutControl1.Name = "layoutControl1";
+            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(1200, 175, 650, 400);
+            layoutControl1.OptionsView.IsReadOnly = DevExpress.Utils.DefaultBoolean.True;
+            layoutControl1.Root = Root;
+            layoutControl1.Size = new Size(788, 503);
+            layoutControl1.TabIndex = 1;
+            layoutControl1.Text = "layoutControl1";
+            // 
+            // txtFlags
+            // 
+            txtFlags.Location = new Point(60, 60);
+            txtFlags.Name = "txtFlags";
+            txtFlags.Properties.ReadOnly = true;
+            txtFlags.Properties.UseReadOnlyAppearance = false;
+            txtFlags.Size = new Size(332, 20);
+            txtFlags.StyleController = layoutControl1;
+            txtFlags.TabIndex = 9;
+            // 
+            // txtDescription
+            // 
+            txtDescription.Location = new Point(60, 84);
+            txtDescription.Name = "txtDescription";
+            txtDescription.Properties.ReadOnly = true;
+            txtDescription.Properties.UseReadOnlyAppearance = false;
+            txtDescription.Size = new Size(716, 407);
+            txtDescription.StyleController = layoutControl1;
+            txtDescription.TabIndex = 8;
+            // 
+            // txtTagNme
+            // 
+            txtTagNme.Location = new Point(444, 60);
+            txtTagNme.Name = "txtTagNme";
+            txtTagNme.Properties.ReadOnly = true;
+            txtTagNme.Properties.UseReadOnlyAppearance = false;
+            txtTagNme.Size = new Size(332, 20);
+            txtTagNme.StyleController = layoutControl1;
+            txtTagNme.TabIndex = 6;
+            // 
+            // txtAddress
+            // 
+            txtAddress.Location = new Point(444, 36);
+            txtAddress.Name = "txtAddress";
+            txtAddress.Properties.ReadOnly = true;
+            txtAddress.Properties.UseReadOnlyAppearance = false;
+            txtAddress.Size = new Size(332, 20);
+            txtAddress.StyleController = layoutControl1;
+            txtAddress.TabIndex = 4;
+            // 
+            // txtCustomer
+            // 
+            txtCustomer.Location = new Point(60, 36);
+            txtCustomer.Name = "txtCustomer";
+            txtCustomer.Properties.ReadOnly = true;
+            txtCustomer.Properties.UseReadOnlyAppearance = false;
+            txtCustomer.Size = new Size(332, 20);
+            txtCustomer.StyleController = layoutControl1;
+            txtCustomer.TabIndex = 3;
+            // 
+            // txtName
+            // 
+            txtName.Location = new Point(444, 12);
+            txtName.Name = "txtName";
+            txtName.Properties.ReadOnly = true;
+            txtName.Properties.UseReadOnlyAppearance = false;
+            txtName.Size = new Size(332, 20);
+            txtName.StyleController = layoutControl1;
+            txtName.TabIndex = 2;
+            // 
+            // txtNO
+            // 
+            txtNO.Location = new Point(60, 12);
+            txtNO.Name = "txtNO";
+            txtNO.Properties.ReadOnly = true;
+            txtNO.Properties.UseReadOnlyAppearance = false;
+            txtNO.Size = new Size(332, 20);
+            txtNO.StyleController = layoutControl1;
+            txtNO.TabIndex = 0;
+            // 
+            // Root
+            // 
+            Root.AppearanceItemCaption.Options.UseTextOptions = true;
+            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3, layoutControlItem4, layoutControlItem6, layoutControlItem7, layoutControlItem5 });
+            Root.Name = "Root";
+            Root.Size = new Size(788, 503);
+            Root.TextVisible = false;
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.Control = txtNO;
+            layoutControlItem1.Location = new Point(0, 0);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Size = new Size(384, 24);
+            layoutControlItem1.Text = "缂栧彿锛�";
+            layoutControlItem1.TextSize = new Size(36, 14);
+            // 
+            // layoutControlItem2
+            // 
+            layoutControlItem2.AllowHtmlStringInCaption = true;
+            layoutControlItem2.Control = txtName;
+            layoutControlItem2.Location = new Point(384, 0);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.Size = new Size(384, 24);
+            layoutControlItem2.Text = "鍚嶇О锛�";
+            layoutControlItem2.TextSize = new Size(36, 14);
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = txtCustomer;
+            layoutControlItem3.Location = new Point(0, 24);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.Size = new Size(384, 24);
+            layoutControlItem3.Text = "瀹㈡埛锛�";
+            layoutControlItem3.TextSize = new Size(36, 14);
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = txtAddress;
+            layoutControlItem4.Location = new Point(384, 24);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(384, 24);
+            layoutControlItem4.Text = "鍦板潃锛�";
+            layoutControlItem4.TextSize = new Size(36, 14);
+            // 
+            // layoutControlItem6
+            // 
+            layoutControlItem6.Control = txtTagNme;
+            layoutControlItem6.Location = new Point(384, 48);
+            layoutControlItem6.Name = "layoutControlItem6";
+            layoutControlItem6.Size = new Size(384, 24);
+            layoutControlItem6.Text = "鏍囧織锛�";
+            layoutControlItem6.TextSize = new Size(36, 14);
+            // 
+            // layoutControlItem7
+            // 
+            layoutControlItem7.Control = txtDescription;
+            layoutControlItem7.Location = new Point(0, 72);
+            layoutControlItem7.Name = "layoutControlItem7";
+            layoutControlItem7.Size = new Size(768, 411);
+            layoutControlItem7.Text = "璇存槑";
+            layoutControlItem7.TextSize = new Size(36, 14);
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = txtFlags;
+            layoutControlItem5.Location = new Point(0, 48);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.Size = new Size(384, 24);
+            layoutControlItem5.Text = "鏍囩锛�";
+            layoutControlItem5.TextSize = new Size(36, 14);
+            // 
+            // XhsProjectViewCtrl
+            // 
+            AutoScaleDimensions = new SizeF(7F, 14F);
+            AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(layoutControl1);
+            Name = "XhsProjectViewCtrl";
+            Size = new Size(788, 503);
+            ((ISupportInitialize)layoutControl1).EndInit();
+            layoutControl1.ResumeLayout(false);
+            ((ISupportInitialize)txtFlags.Properties).EndInit();
+            ((ISupportInitialize)txtDescription.Properties).EndInit();
+            ((ISupportInitialize)txtTagNme.Properties).EndInit();
+            ((ISupportInitialize)txtAddress.Properties).EndInit();
+            ((ISupportInitialize)txtCustomer.Properties).EndInit();
+            ((ISupportInitialize)txtName.Properties).EndInit();
+            ((ISupportInitialize)txtNO.Properties).EndInit();
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
+            ((ISupportInitialize)layoutControlItem4).EndInit();
+            ((ISupportInitialize)layoutControlItem6).EndInit();
+            ((ISupportInitialize)layoutControlItem7).EndInit();
+            ((ISupportInitialize)layoutControlItem5).EndInit();
+            ResumeLayout(false);
+        }
+
+        #endregion
+
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private DevExpress.XtraEditors.TextEdit txtFlags;
+        private DevExpress.XtraEditors.MemoEdit txtDescription;
+        private DevExpress.XtraEditors.TextEdit txtTagNme;
+        private DevExpress.XtraEditors.TextEdit txtAddress;
+        private DevExpress.XtraEditors.TextEdit txtCustomer;
+        private DevExpress.XtraEditors.TextEdit txtName;
+        private DevExpress.XtraEditors.TextEdit txtNO;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.cs
new file mode 100644
index 0000000..cbe1803
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.cs
@@ -0,0 +1,56 @@
+锘縰sing DevExpress.XtraEditors;
+using HStation.BLL;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HStation.WinFrmUI
+{
+    public partial class XhsProjectBasicInfoViewCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        public XhsProjectBasicInfoViewCtrl()
+        {
+            InitializeComponent();
+            this.layoutControl1.SetupLayoutControl();
+        }
+
+        private Lazy<HStation.BLL.XhsProject> _bll = new(() => new HStation.BLL.XhsProject());
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public async void SetBindingData(long projectId)
+        {
+            var project = await _bll.Value.GetByID(projectId);
+            this.txtName.EditValue = project.Name;
+            this.txtNO.EditValue = project.NO;
+            this.txtCustomer.EditValue = project.Customer;
+            this.txtAddress.EditValue = project.Address;
+            this.txtFlags.EditValue = Yw.Untity.FlagsHelper.ToString(project.Flags);
+            this.txtTagNme.EditValue = project.TagName;
+            this.txtDescription.EditValue = project.Description;
+
+        }
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public void SetBindingData(XhsProjectDto project)
+        {
+            this.txtName.EditValue = project.Name;
+            this.txtNO.EditValue = project.NO;
+            this.txtCustomer.EditValue = project.Customer;
+            this.txtAddress.EditValue = project.Address;
+            this.txtFlags.EditValue = Yw.Untity.FlagsHelper.ToString(project.Flags);
+            this.txtTagNme.EditValue = project.TagName;
+            this.txtDescription.EditValue = project.Description;
+        }
+
+    }
+}
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.resx b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsProjectBasicInfoViewCtrl.resx
@@ -0,0 +1,120 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!--
+    Microsoft ResX Schema 
+
+    Version 2.0
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
+    associated with the data types.
+
+    Example:
+
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+
+    There are any number of "resheader" rows that contain simple
+    name/value pairs.
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
+    mimetype set.
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
+    extensible. For a given mimetype the value must be set accordingly:
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
+    read any of the formats listed below.
+
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs
index 04d5ef5..eecaaf1 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.Designer.cs
@@ -28,17 +28,138 @@
         /// </summary>
         private void InitializeComponent()
         {
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition1 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.ColumnDefinition columnDefinition2 = new DevExpress.XtraLayout.ColumnDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition1 = new DevExpress.XtraLayout.RowDefinition();
+            DevExpress.XtraLayout.RowDefinition rowDefinition2 = new DevExpress.XtraLayout.RowDefinition();
+            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            xhsProjectBasicInfoBimfaceCtrl1 = new XhsProjectBasicInfoBimfaceCtrl();
+            xhsProjectBasicInfoViewCtrl1 = new XhsProjectBasicInfoViewCtrl();
+            Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            xhsProjectBasicInfoHydroCtrl1 = new XhsProjectBasicInfoHydroCtrl();
+            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+            ((ISupportInitialize)layoutControl1).BeginInit();
+            layoutControl1.SuspendLayout();
+            ((ISupportInitialize)Root).BeginInit();
+            ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)layoutControlItem2).BeginInit();
+            ((ISupportInitialize)layoutControlItem3).BeginInit();
             SuspendLayout();
+            // 
+            // layoutControl1
+            // 
+            layoutControl1.Controls.Add(xhsProjectBasicInfoHydroCtrl1);
+            layoutControl1.Controls.Add(xhsProjectBasicInfoBimfaceCtrl1);
+            layoutControl1.Controls.Add(xhsProjectBasicInfoViewCtrl1);
+            layoutControl1.Dock = DockStyle.Fill;
+            layoutControl1.Location = new Point(0, 0);
+            layoutControl1.Name = "layoutControl1";
+            layoutControl1.Root = Root;
+            layoutControl1.Size = new Size(951, 587);
+            layoutControl1.TabIndex = 0;
+            layoutControl1.Text = "layoutControl1";
+            // 
+            // xhsProjectBasicInfoBimfaceCtrl1
+            // 
+            xhsProjectBasicInfoBimfaceCtrl1.Location = new Point(477, 12);
+            xhsProjectBasicInfoBimfaceCtrl1.Name = "xhsProjectBasicInfoBimfaceCtrl1";
+            xhsProjectBasicInfoBimfaceCtrl1.Size = new Size(462, 279);
+            xhsProjectBasicInfoBimfaceCtrl1.TabIndex = 7;
+            // 
+            // xhsProjectBasicInfoViewCtrl1
+            // 
+            xhsProjectBasicInfoViewCtrl1.Location = new Point(12, 12);
+            xhsProjectBasicInfoViewCtrl1.Name = "xhsProjectBasicInfoViewCtrl1";
+            xhsProjectBasicInfoViewCtrl1.Size = new Size(461, 279);
+            xhsProjectBasicInfoViewCtrl1.TabIndex = 4;
+            // 
+            // Root
+            // 
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, layoutControlItem2, layoutControlItem3 });
+            Root.LayoutMode = DevExpress.XtraLayout.Utils.LayoutMode.Table;
+            Root.Name = "Root";
+            columnDefinition1.SizeType = SizeType.Percent;
+            columnDefinition1.Width = 100D;
+            columnDefinition2.SizeType = SizeType.Percent;
+            columnDefinition2.Width = 100D;
+            Root.OptionsTableLayoutGroup.ColumnDefinitions.AddRange(new DevExpress.XtraLayout.ColumnDefinition[] { columnDefinition1, columnDefinition2 });
+            rowDefinition1.Height = 100D;
+            rowDefinition1.SizeType = SizeType.Percent;
+            rowDefinition2.Height = 100D;
+            rowDefinition2.SizeType = SizeType.Percent;
+            Root.OptionsTableLayoutGroup.RowDefinitions.AddRange(new DevExpress.XtraLayout.RowDefinition[] { rowDefinition1, rowDefinition2 });
+            Root.Size = new Size(951, 587);
+            Root.TextVisible = false;
+            // 
+            // layoutControlItem1
+            // 
+            layoutControlItem1.Control = xhsProjectBasicInfoViewCtrl1;
+            layoutControlItem1.Location = new Point(0, 0);
+            layoutControlItem1.Name = "layoutControlItem1";
+            layoutControlItem1.Size = new Size(465, 283);
+            layoutControlItem1.TextSize = new Size(0, 0);
+            layoutControlItem1.TextVisible = false;
+            // 
+            // layoutControlItem2
+            // 
+            layoutControlItem2.Control = xhsProjectBasicInfoBimfaceCtrl1;
+            layoutControlItem2.Location = new Point(465, 0);
+            layoutControlItem2.Name = "layoutControlItem2";
+            layoutControlItem2.OptionsTableLayoutItem.ColumnIndex = 1;
+            layoutControlItem2.Size = new Size(466, 283);
+            layoutControlItem2.TextSize = new Size(0, 0);
+            layoutControlItem2.TextVisible = false;
+            // 
+            // xhsProjectBasicInfoHydroCtrl1
+            // 
+            xhsProjectBasicInfoHydroCtrl1.Location = new Point(12, 295);
+            xhsProjectBasicInfoHydroCtrl1.Name = "xhsProjectBasicInfoHydroCtrl1";
+            xhsProjectBasicInfoHydroCtrl1.Size = new Size(927, 280);
+            xhsProjectBasicInfoHydroCtrl1.TabIndex = 8;
+            // 
+            // layoutControlItem3
+            // 
+            layoutControlItem3.Control = xhsProjectBasicInfoHydroCtrl1;
+            layoutControlItem3.Location = new Point(0, 283);
+            layoutControlItem3.Name = "layoutControlItem3";
+            layoutControlItem3.OptionsTableLayoutItem.ColumnSpan = 2;
+            layoutControlItem3.OptionsTableLayoutItem.RowIndex = 1;
+            layoutControlItem3.Size = new Size(931, 284);
+            layoutControlItem3.TextSize = new Size(0, 0);
+            layoutControlItem3.TextVisible = false;
             // 
             // XhsSchemeBasicInfoPage
             // 
-            AutoScaleDimensions = new SizeF(10F, 22F);
+            Appearance.BackColor = SystemColors.Control;
+            Appearance.Options.UseBackColor = true;
+            AutoScaleDimensions = new SizeF(7F, 14F);
             AutoScaleMode = AutoScaleMode.Font;
+            Controls.Add(layoutControl1);
+            Margin = new Padding(2);
             Name = "XhsSchemeBasicInfoPage";
-            Size = new Size(1358, 923);
+            Size = new Size(951, 587);
+            ((ISupportInitialize)layoutControl1).EndInit();
+            layoutControl1.ResumeLayout(false);
+            ((ISupportInitialize)Root).EndInit();
+            ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)layoutControlItem2).EndInit();
+            ((ISupportInitialize)layoutControlItem3).EndInit();
             ResumeLayout(false);
         }
 
         #endregion
+
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private XhsProjectBasicInfoViewCtrl xhsProjectBasicInfoViewCtrl1;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private XhsProjectBasicInfoBimfaceCtrl xhsProjectBasicInfoBimfaceCtrl1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private XhsProjectBasicInfoHydroCtrl xhsProjectBasicInfoHydroCtrl1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs
index 66f1c52..8e8ac2d 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/01-basic-info/XhsSchemeBasicInfoPage.cs
@@ -4,7 +4,17 @@
     {
         public XhsSchemeBasicInfoPage()
         {
-            InitializeComponent(); 
+            InitializeComponent();
+        }
+
+        private long _projectId;//椤圭洰id
+
+        /// <summary>
+        /// 缁戝畾鏁版嵁
+        /// </summary>
+        public void SetBindingData(long projectId)
+        {
+            _projectId = projectId;
         }
 
 
@@ -14,6 +24,14 @@
         public override void InitialDataSource()
         {
             base.InitialDataSource();
+            this.xhsProjectBasicInfoViewCtrl1.SetBindingData(_projectId);
+            this.xhsProjectBasicInfoBimfaceCtrl1.SetBindingData(_projectId);
+            this.xhsProjectBasicInfoHydroCtrl1.SetBindingData(_projectId);
         }
+
+
+
+
+
     }
 }
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs
index 9d9a0b3..052c85a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs
@@ -73,7 +73,8 @@
                         if (!IsExistPage(guid, true))
                         {
                             var page = new XhsSchemeBasicInfoPage();
-                            page.PageTitle.Caption = e.Element.Text; 
+                            page.SetBindingData(_project.ID);
+                            page.PageTitle.Caption = e.Element.Text;
                             page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage;
                             page.PageTitle.SvgImageSize = svg_image_size;
                             CreatePage(page, guid);
@@ -109,7 +110,7 @@
                         if (!IsExistPage(guid, true))
                         {
                             var page = new XhsSchemeHydraulicSimulationPage();
-                            page.PageTitle.Caption = e.Element.Text; 
+                            page.PageTitle.Caption = e.Element.Text;
                             page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage;
                             page.PageTitle.SvgImageSize = svg_image_size;
                             CreatePage(page, guid);
@@ -118,7 +119,7 @@
                     break;
                 case "create_scheme":
                     {
-                        var dlg=new CreateSchemeDlg();  
+                        var dlg = new CreateSchemeDlg();
                         dlg.ShowDialog();
                     }
                     break;
diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
index 0a7af77..2f0f9dc 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -40,6 +40,15 @@
     <Compile Update="02-project\04-dlg\AddProjectDlg.cs">
       <SubType>Form</SubType>
     </Compile>
+    <Compile Update="03-scheme\01-basic-info\XhsProjectBasicInfoBimfaceCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-scheme\01-basic-info\XhsProjectBasicInfoHydroCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Update="03-scheme\01-basic-info\XhsProjectBasicInfoViewCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Update="03-scheme\01-basic-info\XhsSchemeBasicInfoPage.cs">
       <SubType>UserControl</SubType>
     </Compile>

--
Gitblit v1.9.3