From 978d57ea2e89b07508f01f800ee97b36f19adec2 Mon Sep 17 00:00:00 2001
From: lg <999544862qq.com>
Date: 星期二, 27 八月 2024 11:03:23 +0800
Subject: [PATCH] 前后端框架

---
 WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs                       |   15 
 WebApi/Gs.Toolbox/Gs.Toolbox.csproj                                                  |   16 
 WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs                        |    8 
 DevApp/Gs.DevApp/App.config                                                          |   21 
 DevApp/Gs.DevApp/Resources/show_32x32.png                                            |    0 
 DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png                                  |    0 
 DevApp/Gs.DevApp/Models/PageQueryModel.cs                                            |   63 
 DevApp/Gs.DevApp/ToolBox/LogHelper.cs                                                |   47 
 DevApp/Gs.DevApp/packages.config                                                     |    4 
 DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs                                          |  735 +++++
 DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx                                        |  123 
 WebApi/Gs.HostIIS/Program.cs                                                         |  102 
 WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs                                          |    7 
 DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx                                            |  120 
 DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs                              |  143 +
 DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs                                              |   27 
 WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs                                 |   16 
 DevApp/Gs.DevApp/ToolBox/Utility.cs                                                  |  131 
 DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png                                      |    0 
 DevApp/Gs.DevApp/Resources/convert_16x16.png                                         |    0 
 WebApi/GsMesSolution.sln                                                             |   43 
 WebApi/Gs.Demo/Gs.Demo.csproj                                                        |   15 
 DevApp/Gs.DevApp/DevFrm/FrmMain.resx                                                 |  801 +++++
 DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs                                            |   21 
 WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs                                        |   11 
 DevApp/Gs.DevApp/Resources/user_16x16.png                                            |    0 
 WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs                           |   12 
 DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png                       |    0 
 DevApp/Gs.DevApp/Resources/exportfile_16x16.png                                      |    0 
 DevApp/Gs.DevApp/Resources/area3d_32x32.png                                          |    0 
 WebApi/Gs.HostIIS/Gs.HostIIS.csproj                                                  |   18 
 DevApp/Gs.DevApp/Properties/Settings.Designer.cs                                     |   26 
 DevApp/Gs.DevApp/Resources/converttorange_16x16.png                                  |    0 
 WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin                            |    0 
 DevApp/Gs.DevApp/Resources/task_32x32.png                                            |    0 
 DevApp/Gs.DevApp/Resources/area3d_16x16.png                                          |    0 
 WebApi/Gs.Toolbox/ResponseResult.cs                                                  |  110 
 WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs                                |   44 
 WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs             |  114 
 WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs                         |   68 
 WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs                         |   16 
 DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png                                      |    0 
 DevApp/Gs.DevApp/Resources/converttorange_32x32.png                                  |    0 
 DevApp/Gs.DevApp/Resources/exportfile_32x32.png                                      |    0 
 DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs                                   |  140 +
 WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs                  |   16 
 DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png                                        |    0 
 DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs                                |  253 +
 WebApi/Gs.HostIIS/Properties/launchSettings.json                                     |   31 
 DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png                                        |    0 
 DevApp/Gs.DevApp/Resources/legendnone2_32x32.png                                     |    0 
 WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs                              |    6 
 DevApp/Gs.DevApp/Resources/checkbox2_16x16.png                                       |    0 
 DevApp/Gs.DevApp/ToolBox/Msg.cs                                                      |  100 
 WebApi/.vs/GsMesSolution/v17/.futdcache.v2                                           |    0 
 DevApp/Gs.DevApp/Properties/Resources.resx                                           |  238 +
 DevApp/Gs.DevApp/Resources/usergroup_32x32.png                                       |    0 
 WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs                             |   12 
 DevApp/Gs.DevApp/Resources/show_16x16.png                                            |    0 
 WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs                  |   78 
 DevApp/Gs.DevApp/Resources/apply_32x32.png                                           |    0 
 DevApp/Gs.DevApp/Resources/checkbox2_32x32.png                                       |    0 
 WebApi/Gs.Toolbox/AppSettingsHelper.cs                                               |   17 
 DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png                               |    0 
 DevApp/Gs.DevApp/Properties/Settings.settings                                        |    7 
 WebApi/Gs.HostIIS/appsettings.Development.json                                       |    8 
 WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs                              |    6 
 DevApp/Gs.DevApp/DevFrm/FrmLogin.resx                                                |  140 +
 DevApp/GsDevSolution.sln                                                             |   25 
 DevApp/Gs.DevApp/Resources/checkbox_32x32.png                                        |    0 
 DevApp/Gs.DevApp/DevFrm/User/Organization.cs                                         |   25 
 DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx                                     |  120 
 WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs                                  |    6 
 WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs                      |   12 
 DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs                                         |  247 +
 WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs                         |   77 
 DevApp/Gs.DevApp/Gs.DevApp.csproj                                                    |  194 +
 WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs                              |    6 
 DevApp/Gs.DevApp/Resources/convert_32x32.png                                         |    0 
 WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2                                |    0 
 DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs                                           |   88 
 WebApi/.vs/GsMesSolution/v17/DocumentLayout.json                                     |   31 
 WebApi/Gs.Demo/Modes/Student.cs                                                      |   56 
 DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png                       |    0 
 DevApp/Gs.DevApp/Properties/AssemblyInfo.cs                                          |   32 
 DevApp/Gs.DevApp/DevFrm/User/Organization.resx                                       |  120 
 WebApi/Gs.Demo/Service/Test/Test.cs                                                  |  194 +
 WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs                               |    8 
 DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs                                 |  295 ++
 DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png                                  |    0 
 WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs                              |   14 
 DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs                              |  105 
 DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs                                       |  172 +
 WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx |    0 
 DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs                                     |  208 +
 DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png                                 |    0 
 WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs              |  111 
 WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin                           |    0 
 WebApi/Gs.Toolbox/DbHelperSQL.cs                                                     |  666 ++++
 DevApp/Gs.DevApp/Program.cs                                                          |   30 
 WebApi/Gs.HostIIS/appsettings.json                                                   |   12 
 DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs                                  |  371 ++
 DevApp/Gs.DevApp/Properties/Resources.Designer.cs                                    |  453 +++
 DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png                                |    0 
 DevApp/Gs.DevApp/DevFrm/FrmMain.cs                                                   |  159 +
 DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png                    |    0 
 DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs                                          |   31 
 WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin                           |    0 
 DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx                                         |  120 
 DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png                    |    0 
 DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png                             |    0 
 DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png                                |    0 
 DevApp/Gs.DevApp/Models/ReturnModel.cs                                               |   47 
 DevApp/Gs.DevApp/Resources/colormixer_32x32.png                                      |    0 
 DevApp/Gs.DevApp/Resources/forcetesting_32x32.png                                    |    0 
 WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs                         |   36 
 DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png                       |    0 
 DevApp/Gs.DevApp/DevFrm/FrmLogin.cs                                                  |   61 
 DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs                                       |   20 
 DevApp/Gs.DevApp/Resources/forcetesting_16x16.png                                    |    0 
 WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs                                     |   18 
 WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs                          |    8 
 DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png                               |    0 
 DevApp/Gs.DevApp/Resources/download_32x32.png                                        |    0 
 WebApi/Gs.Toolbox/LogHelper.cs                                                       |   41 
 DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png                             |    0 
 WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs                                       |   31 
 127 files changed, 8,179 insertions(+), 0 deletions(-)

diff --git a/DevApp/Gs.DevApp/App.config b/DevApp/Gs.DevApp/App.config
new file mode 100644
index 0000000..ae4c49f
--- /dev/null
+++ b/DevApp/Gs.DevApp/App.config
@@ -0,0 +1,21 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+  <configSections>
+    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System">
+      <section name="DevExpress.LookAndFeel.Design.AppSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
+    </sectionGroup>
+  </configSections>
+  <applicationSettings>
+    <DevExpress.LookAndFeel.Design.AppSettings>
+      <setting name="DPIAwarenessMode" serializeAs="String">
+        <value>System</value>
+      </setting>
+      <setting name="RegisterBonusSkins" serializeAs="String">
+        <value>True</value>
+      </setting>
+    </DevExpress.LookAndFeel.Design.AppSettings>
+  </applicationSettings>
+  <startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
+  </startup>
+</configuration>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs b/DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs
new file mode 100644
index 0000000..855c6a1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmLogin.Designer.cs
@@ -0,0 +1,247 @@
+锘�
+namespace Gs.DevApp.DevFrm
+{
+    partial class FrmLogin
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin));
+            this.lbVersion = new System.Windows.Forms.Label();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.txtUser = new DevExpress.XtraEditors.TextEdit();
+            this.chkSaveLoginInfo = new DevExpress.XtraEditors.CheckEdit();
+            this.txtPwd = new DevExpress.XtraEditors.TextEdit();
+            this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
+            this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+            this.txtDataset = new DevExpress.XtraEditors.LookUpEdit();
+            this.btnLogin = new DevExpress.XtraEditors.SimpleButton();
+            this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+            this.lblLoadingInfo = new System.Windows.Forms.Label();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.txtUser.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.chkSaveLoginInfo.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtPwd.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDataset.Properties)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // lbVersion
+            // 
+            this.lbVersion.AutoSize = true;
+            this.lbVersion.BackColor = System.Drawing.Color.Transparent;
+            this.lbVersion.Font = new System.Drawing.Font("Tahoma", 9F);
+            this.lbVersion.ForeColor = System.Drawing.Color.White;
+            this.lbVersion.Location = new System.Drawing.Point(501, 33);
+            this.lbVersion.Name = "lbVersion";
+            this.lbVersion.Size = new System.Drawing.Size(100, 18);
+            this.lbVersion.TabIndex = 244;
+            this.lbVersion.Text = "V5.0 (姝e紡鐗�)";
+            // 
+            // panel1
+            // 
+            this.panel1.BackColor = System.Drawing.Color.Transparent;
+            this.panel1.Controls.Add(this.txtUser);
+            this.panel1.Controls.Add(this.chkSaveLoginInfo);
+            this.panel1.Controls.Add(this.txtPwd);
+            this.panel1.Controls.Add(this.btnCancel);
+            this.panel1.Controls.Add(this.labelControl3);
+            this.panel1.Controls.Add(this.txtDataset);
+            this.panel1.Controls.Add(this.btnLogin);
+            this.panel1.Controls.Add(this.labelControl2);
+            this.panel1.Controls.Add(this.labelControl1);
+            this.panel1.Location = new System.Drawing.Point(218, 187);
+            this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(392, 239);
+            this.panel1.TabIndex = 243;
+            // 
+            // txtUser
+            // 
+            this.txtUser.EditValue = "admin";
+            this.txtUser.Location = new System.Drawing.Point(102, 9);
+            this.txtUser.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtUser.Name = "txtUser";
+            this.txtUser.Properties.Appearance.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.txtUser.Properties.Appearance.Options.UseFont = true;
+            this.txtUser.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+            this.txtUser.Size = new System.Drawing.Size(154, 30);
+            this.txtUser.TabIndex = 21;
+            // 
+            // chkSaveLoginInfo
+            // 
+            this.chkSaveLoginInfo.Location = new System.Drawing.Point(99, 157);
+            this.chkSaveLoginInfo.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.chkSaveLoginInfo.Name = "chkSaveLoginInfo";
+            this.chkSaveLoginInfo.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+            this.chkSaveLoginInfo.Properties.Appearance.Options.UseForeColor = true;
+            this.chkSaveLoginInfo.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.UltraFlat;
+            this.chkSaveLoginInfo.Properties.Caption = "淇濆瓨鐧诲綍淇℃伅";
+            this.chkSaveLoginInfo.Size = new System.Drawing.Size(157, 26);
+            this.chkSaveLoginInfo.TabIndex = 17;
+            // 
+            // txtPwd
+            // 
+            this.txtPwd.EditValue = "csframework";
+            this.txtPwd.Location = new System.Drawing.Point(102, 48);
+            this.txtPwd.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtPwd.Name = "txtPwd";
+            this.txtPwd.Properties.Appearance.Font = new System.Drawing.Font("Tahoma", 10F);
+            this.txtPwd.Properties.Appearance.Options.UseFont = true;
+            this.txtPwd.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+            this.txtPwd.Properties.PasswordChar = '*';
+            this.txtPwd.Size = new System.Drawing.Size(154, 30);
+            this.txtPwd.TabIndex = 22;
+            // 
+            // btnCancel
+            // 
+            this.btnCancel.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+            this.btnCancel.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.btnCancel.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("btnCancel.ImageOptions.Image")));
+            this.btnCancel.Location = new System.Drawing.Point(191, 193);
+            this.btnCancel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.btnCancel.Name = "btnCancel";
+            this.btnCancel.Size = new System.Drawing.Size(87, 37);
+            this.btnCancel.TabIndex = 15;
+            this.btnCancel.Text = "鍙栨秷 (&C)";
+            // 
+            // labelControl3
+            // 
+            this.labelControl3.Appearance.ForeColor = System.Drawing.Color.White;
+            this.labelControl3.Appearance.Options.UseForeColor = true;
+            this.labelControl3.Appearance.Options.UseTextOptions = true;
+            this.labelControl3.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            this.labelControl3.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+            this.labelControl3.Location = new System.Drawing.Point(6, 89);
+            this.labelControl3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl3.Name = "labelControl3";
+            this.labelControl3.Size = new System.Drawing.Size(93, 18);
+            this.labelControl3.TabIndex = 233;
+            this.labelControl3.Text = "甯愬锛�";
+            // 
+            // txtDataset
+            // 
+            this.txtDataset.Location = new System.Drawing.Point(102, 86);
+            this.txtDataset.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtDataset.Name = "txtDataset";
+            this.txtDataset.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+            this.txtDataset.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtDataset.Properties.Columns.AddRange(new DevExpress.XtraEditors.Controls.LookUpColumnInfo[] {
+            new DevExpress.XtraEditors.Controls.LookUpColumnInfo("DataSetID", "甯愬缂栧彿", 100, DevExpress.Utils.FormatType.None, "", true, DevExpress.Utils.HorzAlignment.Default, DevExpress.Data.ColumnSortOrder.None, DevExpress.Utils.DefaultBoolean.Default),
+            new DevExpress.XtraEditors.Controls.LookUpColumnInfo("DataSetName", "甯愬鍚嶇О", 200, DevExpress.Utils.FormatType.None, "", true, DevExpress.Utils.HorzAlignment.Default, DevExpress.Data.ColumnSortOrder.None, DevExpress.Utils.DefaultBoolean.Default)});
+            this.txtDataset.Properties.NullText = "";
+            this.txtDataset.Properties.PopupWidth = 343;
+            this.txtDataset.Size = new System.Drawing.Size(154, 26);
+            this.txtDataset.TabIndex = 228;
+            // 
+            // btnLogin
+            // 
+            this.btnLogin.ButtonStyle = DevExpress.XtraEditors.Controls.BorderStyles.HotFlat;
+            this.btnLogin.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.btnLogin.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("btnLogin.ImageOptions.Image")));
+            this.btnLogin.Location = new System.Drawing.Point(101, 193);
+            this.btnLogin.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.btnLogin.Name = "btnLogin";
+            this.btnLogin.Size = new System.Drawing.Size(87, 37);
+            this.btnLogin.TabIndex = 14;
+            this.btnLogin.Text = "鐧诲綍 (&L)";
+            // 
+            // labelControl2
+            // 
+            this.labelControl2.Appearance.ForeColor = System.Drawing.Color.White;
+            this.labelControl2.Appearance.Options.UseForeColor = true;
+            this.labelControl2.Appearance.Options.UseTextOptions = true;
+            this.labelControl2.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            this.labelControl2.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+            this.labelControl2.Location = new System.Drawing.Point(6, 51);
+            this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl2.Name = "labelControl2";
+            this.labelControl2.Size = new System.Drawing.Size(93, 18);
+            this.labelControl2.TabIndex = 232;
+            this.labelControl2.Text = "瀵嗙爜锛�";
+            // 
+            // labelControl1
+            // 
+            this.labelControl1.Appearance.ForeColor = System.Drawing.Color.White;
+            this.labelControl1.Appearance.Options.UseForeColor = true;
+            this.labelControl1.Appearance.Options.UseTextOptions = true;
+            this.labelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            this.labelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+            this.labelControl1.Location = new System.Drawing.Point(6, 13);
+            this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl1.Name = "labelControl1";
+            this.labelControl1.Size = new System.Drawing.Size(93, 18);
+            this.labelControl1.TabIndex = 231;
+            this.labelControl1.Text = "鐧诲綍甯愬彿锛�";
+            // 
+            // lblLoadingInfo
+            // 
+            this.lblLoadingInfo.AutoSize = true;
+            this.lblLoadingInfo.BackColor = System.Drawing.Color.Transparent;
+            this.lblLoadingInfo.ForeColor = System.Drawing.Color.White;
+            this.lblLoadingInfo.Location = new System.Drawing.Point(215, 444);
+            this.lblLoadingInfo.Name = "lblLoadingInfo";
+            this.lblLoadingInfo.Size = new System.Drawing.Size(83, 18);
+            this.lblLoadingInfo.TabIndex = 242;
+            this.lblLoadingInfo.Text = "鍑嗗灏辩华...";
+            // 
+            // FrmLogin
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(824, 494);
+            this.Controls.Add(this.lbVersion);
+            this.Controls.Add(this.panel1);
+            this.Controls.Add(this.lblLoadingInfo);
+            this.Name = "FrmLogin";
+            this.Text = "FrmLogin";
+            this.panel1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.txtUser.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.chkSaveLoginInfo.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtPwd.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtDataset.Properties)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Label lbVersion;
+        private System.Windows.Forms.Panel panel1;
+        private DevExpress.XtraEditors.TextEdit txtUser;
+        private DevExpress.XtraEditors.CheckEdit chkSaveLoginInfo;
+        private DevExpress.XtraEditors.TextEdit txtPwd;
+        private DevExpress.XtraEditors.SimpleButton btnCancel;
+        private DevExpress.XtraEditors.LabelControl labelControl3;
+        private DevExpress.XtraEditors.LookUpEdit txtDataset;
+        private DevExpress.XtraEditors.SimpleButton btnLogin;
+        private DevExpress.XtraEditors.LabelControl labelControl2;
+        private DevExpress.XtraEditors.LabelControl labelControl1;
+        private System.Windows.Forms.Label lblLoadingInfo;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmLogin.cs b/DevApp/Gs.DevApp/DevFrm/FrmLogin.cs
new file mode 100644
index 0000000..15876de
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmLogin.cs
@@ -0,0 +1,61 @@
+锘縰sing DevExpress.XtraEditors;
+using Gs.DevApp.ToolBox;
+using Newtonsoft.Json;
+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 Gs.DevApp.DevFrm
+{
+    public partial class FrmLogin : DevExpress.XtraEditors.XtraForm
+    {
+        public FrmLogin()
+        {
+            InitializeComponent();
+            btnLogin.Click += BtnLogin_Click;
+            btnCancel.Click += BtnCancel_Click;
+        }
+
+        private void BtnCancel_Click(object sender, EventArgs e)
+        {
+            if (Msg.AskQuestion("纭畾瑕侀��鍑虹郴缁熷悧?"))
+            {
+                // frmMain1.IsClosing = true;
+                Application.Exit();
+            }
+        }
+
+        private void BtnLogin_Click(object sender, EventArgs e)
+        {
+            //int i = 199;
+            //ShowDialogForm sdf = new ShowDialogForm("鎻愮ず", "姝e湪鐧诲綍......", "璇疯�愬績绛夊�欙紝姝e湪楠岃瘉鎮ㄧ殑韬唤锛�", i);
+            //for (int j = 1; j < i; j++) 
+            //{ 
+            //    sdf.SetCaption("鎵ц杩涘害锛�" + j.ToString() + "/" + i.ToString() + "锛�"); 
+            //}
+            var _obj = new
+            {
+                accountPwd = txtUser.Text.Trim(),
+                accountNo = txtPwd.Text.Trim(),
+                orgGuid = Guid.NewGuid()
+            };
+            string json = JsonConvert.SerializeObject(_obj);
+            try
+            {
+                Utility.HttpPost("", "User/UserLogin", json);
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            //  sdf.Close();
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmLogin.resx b/DevApp/Gs.DevApp/DevFrm/FrmLogin.resx
new file mode 100644
index 0000000..2e477c9
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmLogin.resx
@@ -0,0 +1,140 @@
+锘�<?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="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnCancel.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABF0RVh0VGl0
+        bGUAQ2xvc2U7RXhpdDsFGf+FAAAArElEQVQ4T7XSOwoCQRCE4c0E8XEDQTMRA+/gTTykGBuYGm6olxBE
+        tP1LHGl1WoZVg2+DYrqYZrYys6/cPvVibk38teBUkkUFNcbYuGyFCXYuyxYcMYSyPlSi4fY9m+KMsECW
+        aEF5D2m4gzUeZ6MC8SXZYflU4K8taZ2nc1GBH+4i3eStJFdwwABpWNf268xwQVggW4zgd1aJnnbvsrBA
+        9JyvWfGPVOx3Bc1ZdQWpA3U147gCvgAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="btnLogin.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACB0RVh0VGl0
+        bGUATmV3O05ld0VtcGxveWVlO05ld1BlcnNvbjveWVScAAAA3ElEQVQ4T5WOPQ5BQRSF3wYsgohCJXRq
+        PRWJJaktgFLUOjsQ0egURKEgaj/NOEfuyJl5E4/iy8y5c7+Tyc6LruI0O+cKUbEVnUkhxhd4ycOcDUdL
+        cgVjULKcK1AxyCbwJBPLuYKiH/iCm+VkgZf0VJlcKJNUgRZ9sshkRpkEBRr8AmiCJ/Ay75z9XED64GQM
+        bPZGnSDYAsUjqFgmZXAAPWZ1goDHBngAfnsDqqAGtjbjW12duGBui9+YqhMXnKPlFCd14oJ9tJxip05c
+        0AFrcLdlhbMVaKsTFPyPy16LX4vunIH/egAAAABJRU5ErkJggg==
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs b/DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs
new file mode 100644
index 0000000..8134231
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmMain.Designer.cs
@@ -0,0 +1,735 @@
+锘�
+namespace Gs.DevApp.DevFrm
+{
+    partial class FrmMain
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
+            this.fluentDesignFormContainer1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer();
+            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+            this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
+            this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
+            this.tab = new DevExpress.XtraTab.XtraTabControl();
+            this.xtraTabPage11 = new DevExpress.XtraTab.XtraTabPage();
+            this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
+            this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
+            this.xtraTabPage3 = new DevExpress.XtraTab.XtraTabPage();
+            this.xtraTabPage4 = new DevExpress.XtraTab.XtraTabPage();
+            this.xtraTabPage5 = new DevExpress.XtraTab.XtraTabPage();
+            this.fluentDesignFormControl1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl();
+            this.barButtonItem1 = new DevExpress.XtraBars.BarButtonItem();
+            this.barCheckItem1 = new DevExpress.XtraBars.BarCheckItem();
+            this.barButtonItem2 = new DevExpress.XtraBars.BarButtonItem();
+            this.barButtonItem3 = new DevExpress.XtraBars.BarButtonItem();
+            this.barSubItem1 = new DevExpress.XtraBars.BarSubItem();
+            this.barButtonItem4 = new DevExpress.XtraBars.BarButtonItem();
+            this.barSubItem2 = new DevExpress.XtraBars.BarSubItem();
+            this.barAbout = new DevExpress.XtraBars.BarSubItem();
+            this.barUs = new DevExpress.XtraBars.BarButtonItem();
+            this.barHelp = new DevExpress.XtraBars.BarButtonItem();
+            this.barButtonItem7 = new DevExpress.XtraBars.BarButtonItem();
+            this.barHeaderItem1 = new DevExpress.XtraBars.BarHeaderItem();
+            this.barLargeButtonItem1 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barMdiChildrenListItem1 = new DevExpress.XtraBars.BarMdiChildrenListItem();
+            this.barButtonItem8 = new DevExpress.XtraBars.BarButtonItem();
+            this.barLinkContainerItem1 = new DevExpress.XtraBars.BarLinkContainerItem();
+            this.barDockingMenuItem1 = new DevExpress.XtraBars.BarDockingMenuItem();
+            this.barListItem1 = new DevExpress.XtraBars.BarListItem();
+            this.barListItem2 = new DevExpress.XtraBars.BarListItem();
+            this.barMy = new DevExpress.XtraBars.BarSubItem();
+            this.barExit = new DevExpress.XtraBars.BarButtonItem();
+            this.barPwd = new DevExpress.XtraBars.BarButtonItem();
+            this.barSubItem3 = new DevExpress.XtraBars.BarSubItem();
+            this.barToggleSwitchItem1 = new DevExpress.XtraBars.BarToggleSwitchItem();
+            this.barToolbarsListItem1 = new DevExpress.XtraBars.BarToolbarsListItem();
+            this.barMdiChildrenListItem2 = new DevExpress.XtraBars.BarMdiChildrenListItem();
+            this.barListItem3 = new DevExpress.XtraBars.BarListItem();
+            this.barHeaderItem2 = new DevExpress.XtraBars.BarHeaderItem();
+            this.barListItem4 = new DevExpress.XtraBars.BarListItem();
+            this.barButtonItem5 = new DevExpress.XtraBars.BarButtonItem();
+            this.fluentFormDefaultManager1 = new DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager(this.components);
+            this.accordionControlElement10 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement15 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement16 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement9 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement11 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement12 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement13 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement14 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement1 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement3 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement2 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement4 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement5 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement7 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement6 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.acrd = new DevExpress.XtraBars.Navigation.AccordionControl();
+            this.accordionControlElement8 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement17 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.accordionControlElement18 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.fluentDesignFormContainer1.SuspendLayout();
+            this.statusStrip1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.tab)).BeginInit();
+            this.tab.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.acrd)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // fluentDesignFormContainer1
+            // 
+            this.fluentDesignFormContainer1.Controls.Add(this.statusStrip1);
+            this.fluentDesignFormContainer1.Controls.Add(this.tab);
+            this.fluentDesignFormContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.fluentDesignFormContainer1.Location = new System.Drawing.Point(208, 39);
+            this.fluentDesignFormContainer1.Name = "fluentDesignFormContainer1";
+            this.fluentDesignFormContainer1.Size = new System.Drawing.Size(806, 727);
+            this.fluentDesignFormContainer1.TabIndex = 0;
+            // 
+            // statusStrip1
+            // 
+            this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
+            this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripStatusLabel1,
+            this.toolStripStatusLabel2});
+            this.statusStrip1.Location = new System.Drawing.Point(0, 701);
+            this.statusStrip1.Name = "statusStrip1";
+            this.statusStrip1.Size = new System.Drawing.Size(806, 26);
+            this.statusStrip1.TabIndex = 5;
+            this.statusStrip1.Text = "statusStrip1";
+            // 
+            // toolStripStatusLabel1
+            // 
+
+            this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
+            this.toolStripStatusLabel1.Size = new System.Drawing.Size(254, 20);
+            this.toolStripStatusLabel1.Text = "褰撳墠鐢ㄦ埛锛歛dmin锛堣秴绾х鐞嗗憳锛�";
+
+            // 
+            // toolStripStatusLabel2
+            // 
+
+            this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
+            this.toolStripStatusLabel2.Size = new System.Drawing.Size(194, 20);
+            this.toolStripStatusLabel2.Text = "鎶�鏈敮鎸侊細瀹佹尝骞挎繁绉戞妧";
+            // 
+            // tab
+            // 
+            this.tab.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InActiveTabPageHeader;
+            this.tab.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tab.Location = new System.Drawing.Point(0, 0);
+            this.tab.Name = "tab";
+            this.tab.SelectedTabPage = this.xtraTabPage11;
+            this.tab.Size = new System.Drawing.Size(806, 727);
+            this.tab.TabIndex = 4;
+            this.tab.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+            this.xtraTabPage1,
+            this.xtraTabPage2,
+            this.xtraTabPage3,
+            this.xtraTabPage4,
+            this.xtraTabPage5,
+            this.xtraTabPage11});
+            // 
+            // xtraTabPage11
+            // 
+            this.xtraTabPage11.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage11.ImageOptions.Image")));
+            this.xtraTabPage11.Name = "xtraTabPage11";
+            this.xtraTabPage11.Size = new System.Drawing.Size(804, 695);
+            this.xtraTabPage11.Text = "鍗曟嵁缂栧彿";
+            // 
+            // xtraTabPage1
+            // 
+            this.xtraTabPage1.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage1.ImageOptions.Image")));
+            this.xtraTabPage1.Name = "xtraTabPage1";
+            this.xtraTabPage1.ShowCloseButton = DevExpress.Utils.DefaultBoolean.True;
+            this.xtraTabPage1.Size = new System.Drawing.Size(804, 695);
+            this.xtraTabPage1.Text = "缁勭粐鏋舵瀯";
+            // 
+            // xtraTabPage2
+            // 
+            this.xtraTabPage2.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage2.ImageOptions.Image")));
+            this.xtraTabPage2.Name = "xtraTabPage2";
+            this.xtraTabPage2.ShowCloseButton = DevExpress.Utils.DefaultBoolean.True;
+            this.xtraTabPage2.Size = new System.Drawing.Size(804, 695);
+            this.xtraTabPage2.Text = "鐢ㄦ埛绠$悊";
+            // 
+            // xtraTabPage3
+            // 
+            this.xtraTabPage3.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage3.ImageOptions.Image")));
+            this.xtraTabPage3.Name = "xtraTabPage3";
+            this.xtraTabPage3.Size = new System.Drawing.Size(804, 695);
+            this.xtraTabPage3.Text = "瑙掕壊绠$悊";
+            // 
+            // xtraTabPage4
+            // 
+            this.xtraTabPage4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage4.ImageOptions.Image")));
+            this.xtraTabPage4.Name = "xtraTabPage4";
+            this.xtraTabPage4.Size = new System.Drawing.Size(804, 695);
+            this.xtraTabPage4.Text = "鍔熻兘鑿滃崟";
+            // 
+            // xtraTabPage5
+            // 
+            this.xtraTabPage5.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("xtraTabPage5.ImageOptions.Image")));
+            this.xtraTabPage5.Name = "xtraTabPage5";
+            this.xtraTabPage5.Size = new System.Drawing.Size(804, 695);
+            this.xtraTabPage5.Text = "鍏徃淇℃伅";
+            // 
+            // fluentDesignFormControl1
+            // 
+            this.fluentDesignFormControl1.FluentDesignForm = this;
+            this.fluentDesignFormControl1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+            this.barButtonItem1,
+            this.barCheckItem1,
+            this.barButtonItem2,
+            this.barButtonItem3,
+            this.barSubItem1,
+            this.barButtonItem4,
+            this.barSubItem2,
+            this.barAbout,
+            this.barUs,
+            this.barHelp,
+            this.barButtonItem7,
+            this.barHeaderItem1,
+            this.barLargeButtonItem1,
+            this.barMdiChildrenListItem1,
+            this.barButtonItem8,
+            this.barLinkContainerItem1,
+            this.barDockingMenuItem1,
+            this.barListItem1,
+            this.barListItem2,
+            this.barMy,
+            this.barSubItem3,
+            this.barToggleSwitchItem1,
+            this.barToolbarsListItem1,
+            this.barMdiChildrenListItem2,
+            this.barExit,
+            this.barPwd,
+            this.barListItem3,
+            this.barHeaderItem2,
+            this.barListItem4,
+            this.barButtonItem5});
+            this.fluentDesignFormControl1.Location = new System.Drawing.Point(0, 0);
+            this.fluentDesignFormControl1.Manager = this.fluentFormDefaultManager1;
+            this.fluentDesignFormControl1.Name = "fluentDesignFormControl1";
+            this.fluentDesignFormControl1.Size = new System.Drawing.Size(1014, 39);
+            this.fluentDesignFormControl1.TabIndex = 2;
+            this.fluentDesignFormControl1.TabStop = false;
+            this.fluentDesignFormControl1.TitleItemLinks.Add(this.barAbout);
+            this.fluentDesignFormControl1.TitleItemLinks.Add(this.barMy);
+            this.fluentDesignFormControl1.TitleItemLinks.Add(this.barButtonItem5);
+            this.fluentDesignFormControl1.TitleItemLinks.Add(this.barListItem3);
+            this.fluentDesignFormControl1.TitleItemLinks.Add(this.barHeaderItem2);
+            this.fluentDesignFormControl1.TitleItemLinks.Add(this.barListItem4);
+            // 
+            // barButtonItem1
+            // 
+            this.barButtonItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barButtonItem1.Caption = "barButtonItem1";
+            this.barButtonItem1.Id = 0;
+            this.barButtonItem1.Name = "barButtonItem1";
+            // 
+            // barCheckItem1
+            // 
+            this.barCheckItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barCheckItem1.Caption = "barCheckItem1";
+            this.barCheckItem1.Id = 1;
+            this.barCheckItem1.Name = "barCheckItem1";
+            // 
+            // barButtonItem2
+            // 
+            this.barButtonItem2.Caption = "barButtonItem2";
+            this.barButtonItem2.Id = 2;
+            this.barButtonItem2.Name = "barButtonItem2";
+            // 
+            // barButtonItem3
+            // 
+            this.barButtonItem3.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barButtonItem3.Caption = "barButtonItem3";
+            this.barButtonItem3.Id = 3;
+            this.barButtonItem3.Name = "barButtonItem3";
+            // 
+            // barSubItem1
+            // 
+            this.barSubItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barSubItem1.Caption = "barSubItem1";
+            this.barSubItem1.Id = 4;
+            this.barSubItem1.Name = "barSubItem1";
+            // 
+            // barButtonItem4
+            // 
+            this.barButtonItem4.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barButtonItem4.Caption = "鎴戠殑";
+            this.barButtonItem4.Id = 5;
+            this.barButtonItem4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barButtonItem4.ImageOptions.Image")));
+            this.barButtonItem4.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barButtonItem4.ImageOptions.LargeImage")));
+            this.barButtonItem4.Name = "barButtonItem4";
+            this.barButtonItem4.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+            // 
+            // barSubItem2
+            // 
+            this.barSubItem2.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barSubItem2.Caption = "鏇村";
+            this.barSubItem2.Id = 6;
+            this.barSubItem2.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("barSubItem2.ImageOptions.SvgImage")));
+            this.barSubItem2.Name = "barSubItem2";
+            // 
+            // barAbout
+            // 
+            this.barAbout.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barAbout.Caption = "鍦ㄧ嚎甯姪";
+            this.barAbout.Id = 7;
+            this.barAbout.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barAbout.ImageOptions.Image")));
+            this.barAbout.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barAbout.ImageOptions.LargeImage")));
+            this.barAbout.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+            new DevExpress.XtraBars.LinkPersistInfo(this.barUs),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barHelp)});
+            this.barAbout.Name = "barAbout";
+            this.barAbout.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+            // 
+            // barUs
+            // 
+            this.barUs.Caption = "鍏充簬绋嬪簭";
+            this.barUs.Id = 8;
+            this.barUs.Name = "barUs";
+            // 
+            // barHelp
+            // 
+            this.barHelp.Caption = "鍦ㄧ嚎甯姪";
+            this.barHelp.Id = 9;
+            this.barHelp.Name = "barHelp";
+            // 
+            // barButtonItem7
+            // 
+            this.barButtonItem7.Caption = "barButtonItem7";
+            this.barButtonItem7.Id = 10;
+            this.barButtonItem7.Name = "barButtonItem7";
+            // 
+            // barHeaderItem1
+            // 
+            this.barHeaderItem1.Caption = "Hi,闄嗗伐锛�";
+            this.barHeaderItem1.Id = 11;
+            this.barHeaderItem1.Name = "barHeaderItem1";
+            // 
+            // barLargeButtonItem1
+            // 
+            this.barLargeButtonItem1.Caption = "barLargeButtonItem1";
+            this.barLargeButtonItem1.Id = 12;
+            this.barLargeButtonItem1.Name = "barLargeButtonItem1";
+            // 
+            // barMdiChildrenListItem1
+            // 
+            this.barMdiChildrenListItem1.Caption = "barMdiChildrenListItem1";
+            this.barMdiChildrenListItem1.Id = 13;
+            this.barMdiChildrenListItem1.Name = "barMdiChildrenListItem1";
+            // 
+            // barButtonItem8
+            // 
+            this.barButtonItem8.Caption = "barButtonItem8";
+            this.barButtonItem8.Id = 14;
+            this.barButtonItem8.Name = "barButtonItem8";
+            // 
+            // barLinkContainerItem1
+            // 
+            this.barLinkContainerItem1.Caption = "barLinkContainerItem1";
+            this.barLinkContainerItem1.Id = 15;
+            this.barLinkContainerItem1.Name = "barLinkContainerItem1";
+            // 
+            // barDockingMenuItem1
+            // 
+            this.barDockingMenuItem1.Caption = "barDockingMenuItem1";
+            this.barDockingMenuItem1.Id = 16;
+            this.barDockingMenuItem1.Name = "barDockingMenuItem1";
+            // 
+            // barListItem1
+            // 
+            this.barListItem1.Caption = "barListItem1";
+            this.barListItem1.Id = 17;
+            this.barListItem1.Name = "barListItem1";
+            // 
+            // barListItem2
+            // 
+            this.barListItem2.Caption = "浣犲綋鍓嶅叡鏈�0鏉℃秷鎭湭澶勭悊";
+            this.barListItem2.Id = 18;
+            this.barListItem2.Name = "barListItem2";
+            // 
+            // barMy
+            // 
+            this.barMy.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barMy.Caption = "鎴戠殑";
+            this.barMy.Id = 20;
+            this.barMy.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barMy.ImageOptions.Image")));
+            this.barMy.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barMy.ImageOptions.LargeImage")));
+            this.barMy.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+            new DevExpress.XtraBars.LinkPersistInfo(this.barExit),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barPwd)});
+            this.barMy.Name = "barMy";
+            this.barMy.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+            // 
+            // barExit
+            // 
+            this.barExit.Caption = "閫�鍑虹郴缁�";
+            this.barExit.Id = 25;
+            this.barExit.Name = "barExit";
+            // 
+            // barPwd
+            // 
+            this.barPwd.Caption = "淇敼瀵嗙爜";
+            this.barPwd.Id = 26;
+            this.barPwd.Name = "barPwd";
+            // 
+            // barSubItem3
+            // 
+            this.barSubItem3.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barSubItem3.Caption = "barSubItem3";
+            this.barSubItem3.Id = 21;
+            this.barSubItem3.Name = "barSubItem3";
+            // 
+            // barToggleSwitchItem1
+            // 
+            this.barToggleSwitchItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barToggleSwitchItem1.Caption = "barToggleSwitchItem1";
+            this.barToggleSwitchItem1.Id = 22;
+            this.barToggleSwitchItem1.Name = "barToggleSwitchItem1";
+            // 
+            // barToolbarsListItem1
+            // 
+            this.barToolbarsListItem1.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barToolbarsListItem1.Caption = "barToolbarsListItem1";
+            this.barToolbarsListItem1.Id = 23;
+            this.barToolbarsListItem1.Name = "barToolbarsListItem1";
+            // 
+            // barMdiChildrenListItem2
+            // 
+            this.barMdiChildrenListItem2.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right;
+            this.barMdiChildrenListItem2.Caption = "barMdiChildrenListItem2";
+            this.barMdiChildrenListItem2.Id = 24;
+            this.barMdiChildrenListItem2.Name = "barMdiChildrenListItem2";
+            // 
+            // barListItem3
+            // 
+            this.barListItem3.Caption = "娆㈣繋浣跨敤EMS绯荤粺锛屼綘褰撳墠鍏辨湁";
+            this.barListItem3.Id = 28;
+            this.barListItem3.Name = "barListItem3";
+            // 
+            // barHeaderItem2
+            // 
+            this.barHeaderItem2.Caption = "10鏉�";
+            this.barHeaderItem2.Id = 29;
+            this.barHeaderItem2.Name = "barHeaderItem2";
+            // 
+            // barListItem4
+            // 
+            this.barListItem4.Caption = "淇℃伅鏈鐞�";
+            this.barListItem4.Id = 30;
+            this.barListItem4.Name = "barListItem4";
+            // 
+            // barButtonItem5
+            // 
+            this.barButtonItem5.Caption = "barButtonItem5";
+            this.barButtonItem5.Id = 31;
+            this.barButtonItem5.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("barButtonItem5.ImageOptions.Image")));
+            this.barButtonItem5.ImageOptions.LargeImage = ((System.Drawing.Image)(resources.GetObject("barButtonItem5.ImageOptions.LargeImage")));
+            this.barButtonItem5.Name = "barButtonItem5";
+            // 
+            // fluentFormDefaultManager1
+            // 
+            this.fluentFormDefaultManager1.DockingEnabled = false;
+            this.fluentFormDefaultManager1.Form = this;
+            this.fluentFormDefaultManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+            this.barButtonItem1,
+            this.barCheckItem1,
+            this.barButtonItem2,
+            this.barButtonItem3,
+            this.barSubItem1,
+            this.barButtonItem4,
+            this.barSubItem2,
+            this.barAbout,
+            this.barUs,
+            this.barHelp,
+            this.barButtonItem7,
+            this.barHeaderItem1,
+            this.barLargeButtonItem1,
+            this.barMdiChildrenListItem1,
+            this.barButtonItem8,
+            this.barLinkContainerItem1,
+            this.barDockingMenuItem1,
+            this.barListItem1,
+            this.barListItem2,
+            this.barMy,
+            this.barSubItem3,
+            this.barToggleSwitchItem1,
+            this.barToolbarsListItem1,
+            this.barMdiChildrenListItem2,
+            this.barExit,
+            this.barPwd,
+            this.barListItem3,
+            this.barHeaderItem2,
+            this.barListItem4,
+            this.barButtonItem5});
+            this.fluentFormDefaultManager1.MaxItemId = 32;
+            // 
+            // accordionControlElement10
+            // 
+            this.accordionControlElement10.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+            this.accordionControlElement15,
+            this.accordionControlElement16});
+            this.accordionControlElement10.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement10.ImageOptions.Image")));
+            this.accordionControlElement10.Name = "accordionControlElement10";
+            this.accordionControlElement10.Text = "浠撳簱绠$悊";
+            // 
+            // accordionControlElement15
+            // 
+            this.accordionControlElement15.Name = "accordionControlElement15";
+            this.accordionControlElement15.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement15.Text = "Element15";
+            // 
+            // accordionControlElement16
+            // 
+            this.accordionControlElement16.Name = "accordionControlElement16";
+            this.accordionControlElement16.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement16.Text = "Element16";
+            // 
+            // accordionControlElement9
+            // 
+            this.accordionControlElement9.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+            this.accordionControlElement11,
+            this.accordionControlElement12,
+            this.accordionControlElement13,
+            this.accordionControlElement14});
+            this.accordionControlElement9.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement9.ImageOptions.Image")));
+            this.accordionControlElement9.Name = "accordionControlElement9";
+            this.accordionControlElement9.Text = "缁煎悎鎶ヨ〃";
+            // 
+            // accordionControlElement11
+            // 
+            this.accordionControlElement11.Name = "accordionControlElement11";
+            this.accordionControlElement11.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement11.Text = "Element11";
+            // 
+            // accordionControlElement12
+            // 
+            this.accordionControlElement12.Name = "accordionControlElement12";
+            this.accordionControlElement12.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement12.Text = "Element12";
+            // 
+            // accordionControlElement13
+            // 
+            this.accordionControlElement13.Name = "accordionControlElement13";
+            this.accordionControlElement13.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement13.Text = "Element13";
+            // 
+            // accordionControlElement14
+            // 
+            this.accordionControlElement14.Name = "accordionControlElement14";
+            this.accordionControlElement14.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement14.Text = "Element14";
+            // 
+            // accordionControlElement1
+            // 
+            this.accordionControlElement1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+            this.accordionControlElement3,
+            this.accordionControlElement2,
+            this.accordionControlElement4,
+            this.accordionControlElement5,
+            this.accordionControlElement7,
+            this.accordionControlElement6});
+            this.accordionControlElement1.Expanded = true;
+            this.accordionControlElement1.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement1.ImageOptions.Image")));
+            this.accordionControlElement1.Name = "accordionControlElement1";
+            this.accordionControlElement1.Text = "绯荤粺绠$悊";
+            // 
+            // accordionControlElement3
+            // 
+            this.accordionControlElement3.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement3.ImageOptions.Image")));
+            this.accordionControlElement3.Name = "accordionControlElement3";
+            this.accordionControlElement3.Text = "缁勭粐鏋舵瀯";
+            // 
+            // accordionControlElement2
+            // 
+            this.accordionControlElement2.Appearance.Normal.Font = new System.Drawing.Font("Tahoma", 12F);
+            this.accordionControlElement2.Appearance.Normal.Options.UseFont = true;
+
+            this.accordionControlElement2.Name = "accordionControlElement2";
+            this.accordionControlElement2.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement2.Text = "鐢ㄦ埛绠$悊";
+            // 
+            // accordionControlElement4
+            // 
+            this.accordionControlElement4.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement4.ImageOptions.Image")));
+            this.accordionControlElement4.Name = "accordionControlElement4";
+            this.accordionControlElement4.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement4.Text = "瑙掕壊绠$悊";
+            // 
+            // accordionControlElement5
+            // 
+
+            this.accordionControlElement5.Name = "accordionControlElement5";
+            this.accordionControlElement5.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement5.Text = "鍔熻兘鑿滃崟";
+            // 
+            // accordionControlElement7
+            // 
+            this.accordionControlElement7.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement7.ImageOptions.Image")));
+            this.accordionControlElement7.Name = "accordionControlElement7";
+            this.accordionControlElement7.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement7.Text = "鍏徃淇℃伅";
+            // 
+            // accordionControlElement6
+            // 
+            this.accordionControlElement6.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement6.ImageOptions.Image")));
+            this.accordionControlElement6.Name = "accordionControlElement6";
+            this.accordionControlElement6.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+            this.accordionControlElement6.Text = "鍗曟嵁缂栧彿";
+            // 
+            // acrd
+            // 
+            this.acrd.Dock = System.Windows.Forms.DockStyle.Left;
+            this.acrd.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+            this.accordionControlElement1,
+            this.accordionControlElement9,
+            this.accordionControlElement10,
+            this.accordionControlElement8,
+            this.accordionControlElement17,
+            this.accordionControlElement18});
+            this.acrd.Location = new System.Drawing.Point(0, 39);
+            this.acrd.Name = "acrd";
+            this.acrd.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Touch;
+            this.acrd.Size = new System.Drawing.Size(208, 727);
+            this.acrd.TabIndex = 1;
+            this.acrd.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
+            // 
+            // accordionControlElement8
+            // 
+            this.accordionControlElement8.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement8.ImageOptions.Image")));
+            this.accordionControlElement8.Name = "accordionControlElement8";
+            this.accordionControlElement8.Text = "鍩虹鏁版嵁绠$悊";
+            // 
+            // accordionControlElement17
+            // 
+            this.accordionControlElement17.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement17.ImageOptions.Image")));
+            this.accordionControlElement17.Name = "accordionControlElement17";
+            this.accordionControlElement17.Text = "宸ュ崟绠$悊";
+            // 
+            // accordionControlElement18
+            // 
+            this.accordionControlElement18.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("accordionControlElement18.ImageOptions.Image")));
+            this.accordionControlElement18.Name = "accordionControlElement18";
+            this.accordionControlElement18.Text = "濮斿绠$悊";
+            // 
+            // FrmMain
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(1014, 766);
+            this.ControlContainer = this.fluentDesignFormContainer1;
+            this.Controls.Add(this.fluentDesignFormContainer1);
+            this.Controls.Add(this.acrd);
+            this.Controls.Add(this.fluentDesignFormControl1);
+            this.FluentDesignFormControl = this.fluentDesignFormControl1;
+            this.Name = "FrmMain";
+            this.NavigationControl = this.acrd;
+            this.Text = "骞挎繁绉戞妧-MES";
+            this.fluentDesignFormContainer1.ResumeLayout(false);
+            this.fluentDesignFormContainer1.PerformLayout();
+            this.statusStrip1.ResumeLayout(false);
+            this.statusStrip1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.tab)).EndInit();
+            this.tab.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.acrd)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer fluentDesignFormContainer1;
+        private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl fluentDesignFormControl1;
+        private DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager fluentFormDefaultManager1;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem1;
+        private DevExpress.XtraBars.BarCheckItem barCheckItem1;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem2;
+        private DevExpress.XtraTab.XtraTabControl tab;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage11;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage1;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage2;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage3;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage4;
+        private DevExpress.XtraTab.XtraTabPage xtraTabPage5;
+        private System.Windows.Forms.StatusStrip statusStrip1;
+        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
+        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
+        private DevExpress.XtraBars.Navigation.AccordionControl acrd;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement1;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement2;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement3;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement4;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement5;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement9;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement11;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement12;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement13;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement14;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement10;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement15;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement16;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem3;
+        private DevExpress.XtraBars.BarSubItem barSubItem1;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem4;
+        private DevExpress.XtraBars.BarSubItem barSubItem2;
+        private DevExpress.XtraBars.BarSubItem barAbout;
+        private DevExpress.XtraBars.BarButtonItem barUs;
+        private DevExpress.XtraBars.BarButtonItem barHelp;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem7;
+        private DevExpress.XtraBars.BarHeaderItem barHeaderItem1;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem1;
+        private DevExpress.XtraBars.BarMdiChildrenListItem barMdiChildrenListItem1;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem8;
+        private DevExpress.XtraBars.BarLinkContainerItem barLinkContainerItem1;
+        private DevExpress.XtraBars.BarDockingMenuItem barDockingMenuItem1;
+        private DevExpress.XtraBars.BarListItem barListItem1;
+        private DevExpress.XtraBars.BarListItem barListItem2;
+        private DevExpress.XtraBars.BarSubItem barMy;
+        private DevExpress.XtraBars.BarSubItem barSubItem3;
+        private DevExpress.XtraBars.BarToggleSwitchItem barToggleSwitchItem1;
+        private DevExpress.XtraBars.BarToolbarsListItem barToolbarsListItem1;
+        private DevExpress.XtraBars.BarMdiChildrenListItem barMdiChildrenListItem2;
+        private DevExpress.XtraBars.BarButtonItem barExit;
+        private DevExpress.XtraBars.BarButtonItem barPwd;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement7;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement8;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement17;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement18;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement6;
+        private DevExpress.XtraBars.BarListItem barListItem3;
+        private DevExpress.XtraBars.BarHeaderItem barHeaderItem2;
+        private DevExpress.XtraBars.BarListItem barListItem4;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem5;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmMain.cs b/DevApp/Gs.DevApp/DevFrm/FrmMain.cs
new file mode 100644
index 0000000..057f359
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmMain.cs
@@ -0,0 +1,159 @@
+锘縰sing DevExpress.XtraBars;
+using DevExpress.XtraBars.Navigation;
+using DevExpress.XtraTab;
+using GsDxApp.Properties;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Resources;
+using System.Text;
+using System.Windows.Forms;
+using Gs.DevApp.ToolBox;
+
+namespace Gs.DevApp.DevFrm
+{
+    public partial class FrmMain : DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm
+    {
+        private static Dictionary<string, XtraTabPage> TabPageDic = new Dictionary<string, XtraTabPage>();
+        //private StatusStrip statusStrip;
+        //private ToolStripStatusLabel statusLabel;
+        public FrmMain()
+        {
+            InitializeComponent();
+            getInit();
+        }
+
+        private void getInit()
+        {
+            string filePath = @"D:\GsMes\GsDXApp\GsDxApp\bin\Debug\menu.txt";
+            string _strJson = File.ReadAllText(filePath);
+            var _obj = new
+            {
+                rtnCode = 1,
+                rtnData = new { list = new[] { new { guid = "", name = "", pah= "", ico = "", list = new[] { new { guid = "", name = "", pah= "", ico = "" } } } } },
+                rtnMsg = ""
+            };
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
+            _obj = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(_strJson, _obj);
+            foreach (dynamic _dy in _obj.rtnData.list)
+            {
+                AccordionControlElement _grp = this.acrd.AddGroup();
+                _grp.ImageOptions.Image = Utility.GetImgFromResource(_dy.ico);
+                _grp.Name = Guid.NewGuid().ToString();
+                _grp.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
+                _grp.Text = _dy.name;
+                _grp.Click += _grp_Click;
+                foreach (dynamic _dy2 in _dy.list)
+                {
+                    AccordionControlElement _itm = this.acrd.AddItem();
+                    _itm.Name = Guid.NewGuid().ToString();
+                    _itm.ImageOptions.Image =Utility.GetImgFromResource(_dy2.ico);
+                    _itm.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
+                    _itm.Text = _dy2.name;
+                    _itm.Appearance.Normal.Font = new System.Drawing.Font("Tahoma", 10F);
+                    _itm.Tag = _dy2.pah;
+                    _itm.Click += _grp_Click;
+                    _grp.Elements.Add(_itm);
+                };
+            }
+        }
+
+        private void _grp_Click(object sender, EventArgs e)
+        {
+            AccordionControlElement _acd = (AccordionControlElement)sender;
+            if (_acd.Elements.Count > 0) return;
+            string tabPageName = _acd.Name + "_page";
+            string tabText = _acd.Text;
+            //string newFormName = "GsDxApp.test.ToolbarForm1";
+            string newFormName = _acd.Tag.ToString();
+            AddTabpage(tab, tabPageName, tabText, newFormName);
+        }
+
+        /// <summary>
+        /// 鏂板閫夐」鍗¢〉
+        /// </summary>
+        /// <param name="tabControl">閫夐」鍗℃帶浠�</param>
+        /// <param name="tabPageName">褰撴湡閫夐」鍗¢〉name鍚嶇О</param>
+        /// <param name="tabText">褰撳墠閫夐」鍗¢〉Text鏍囬</param>
+        /// <param name="newFormName">褰撳墠閫夐」鍗′腑鐨勬柊绐椾綋</param>
+        public void AddTabpage(XtraTabControl tabControl, string tabPageName, string tabText, string newFormName)
+        {
+            if (IsTabpageExsit(tabControl, tabPageName))
+            {
+                return;
+            }
+            XtraTabPage newPage = new XtraTabPage();
+            newPage.Name = tabPageName;
+            newPage.Text = tabText;
+            newPage.Tooltip = (tabText + ":" + tabPageName);
+            newPage.Controls.Add(AddNewForm(newFormName));
+            tabControl.TabPages.Add(newPage);
+            TabPageDic.Add(tabPageName, newPage);
+            tabControl.SelectedTabPage = newPage;
+        }
+
+        /// <summary>
+        /// 绉婚櫎閫夐」鍗¢〉
+        /// </summary>
+        /// <param name="tabControl"></param>
+        /// <param name="tabPageName"></param>
+        /// <param name="e"></param>
+        public void RemoveTabPage(XtraTabControl tabControl, EventArgs e)
+        {
+            DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs args = (DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs)e;
+            string name = args.Page.Tooltip;
+            foreach (XtraTabPage item in tabControl.TabPages)
+            {
+                if (item.Name == name)
+                {
+                    tabControl.TabPages.Remove(item);
+                    item.Dispose();
+                    TabPageDic.Remove(name);
+                    return;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇閫夐」鍗℃槸鍚﹀凡缁忓瓨鍦�
+        /// </summary>
+        /// <param name="tabControl">閫夐」鍗℃帶浠�</param>
+        /// <param name="tabPageName">閫夐」鍗″悕绉�</param>
+        /// <returns></returns>
+        private bool IsTabpageExsit(XtraTabControl tabControl, string tabPageName)
+        {
+            foreach (var item in TabPageDic)
+            {
+                if (item.Key == tabPageName)
+                {
+                    tabControl.SelectedTabPage = item.Value;
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 鍦ㄩ�夐」鍗′腑鐢熸垚绐椾綋
+        /// </summary>
+        /// <param name="form">绐椾綋鍚嶇О</param>
+        private Form AddNewForm(string formName)
+        {
+            Form newForm = (Form)Assembly.GetExecutingAssembly().CreateInstance(formName);
+            newForm.FormBorderStyle = FormBorderStyle.None;
+            newForm.TopLevel = false;
+            //newForm.Parent = ((XtraTabControl)sender).SelectedTabPage;
+            newForm.ControlBox = false;
+            newForm.Dock = DockStyle.Fill;
+            newForm.Visible = true;
+            return newForm;
+        }
+
+       
+    }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/FrmMain.resx b/DevApp/Gs.DevApp/DevFrm/FrmMain.resx
new file mode 100644
index 0000000..56f50f0
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/FrmMain.resx
@@ -0,0 +1,801 @@
+锘�<?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="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>284, 17</value>
+  </metadata>
+  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>284, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="xtraTabPage11.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACZ0RVh0VGl0
+        bGUATWVldGluZztWaWV3TWVldGluZztNZWV0aW5nVmlldztpMs/hAAABF0lEQVQ4T2NoaWn5TyoGAgYY
+        po4BMHDmzBkoC5WNDEDqfZt2MMAwigHYwNcfv//P2Hbtf3z//v/RPfvAbKBGXhQDYLbdLQxBwSBQNWc/
+        SAM6XgDEmC6AaQIBGDugZSc2A74DMXEGhHfuwWbAayAmzgvls7B6YSUQExeId559RPEGlG2E1QBc0Xj4
+        6vP/cX37wfjQlecgA8Ca4QaAFKNjmMbECQf+P3/3DcwHgRfvv4EMeADEAXADYACmEQTuPv/0P7B1F9jZ
+        +bOO/n/29uv/J2++/M+efgQsBsQ/gVgLpwEdq8/DFOLDC8EGoGMQiAGmOiwa0PEzeKZAxkAJEL6PpBAX
+        vo3PABcgPgvEP4AYXSNI7LRv0w4rAC4a3uu4QD2IAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="xtraTabPage1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAERlcGFydG1lbnQ7lyqdwQAAA2ZJ
+        REFUOE91km9Mk1cUh69zS+YnE/fHGQeIEdFhdZU6pFjbWjqBQoVSi7YzQLW2iC+MwguFqlQDCE4+KBZT
+        QLBoJUGMUDZxMeIG0sqsNUBiGgRaB8uymGxOZ6Yj9rdrsxG2bCd5zqd7nnN+ySUAiNeRRO6cSxR9c0Zk
+        +/qLhED3sbjApTKurSWfIzqVEx1683+EmvucRDTWWzY+PdKD509+xG8/3cKDnlxcrVg3fjxzpejfQ/MJ
+        tdu2bc6xL0vh6cxH38lEdB2Ow9VDH+ESEwmjZFkfIWQ5ZRVlBeVdytuUBXOCO62Jv8/cz8YvAS3+eKzB
+        y0dyzPQL8FXdWny+PWy2Ometq1Ef8+SkOurnIuny61kfv6OhgkWvJSGB58KnwvbSTbPui3r0VAlwkY2F
+        7QAPxrTIV302w7PJ4St49ngIv/qPw9PChzU3cka5ZnEGFSycy2KSRfWPDFzDdH8lHnYXoJmVoImNfT7S
+        XYLhjjw4awToKNuAy6XRsOvCoI9dcoMK3iSfFdeT3YW1xCiLYZsqcuBymHG9bgdY+RoM2ra9mr5Ho/lz
+        aTQ1Xgbk+OGWALcbYlDEf/8FFbxBHvqnSRZTrd7DHHu6V50Nk2pLsFQZH9yRnA5VZtKLtmJecMiuwxVL
+        AtoKuWhleChPjpjNi39PSgWE7C6oNVQ1ODDmm0Q22wy3ZxT9Q8MQqI6iscUOQ/IGzI/mrEnDQVH4AB1d
+        EBIcONQwSq+AbzKAzLzT+O7+GL513wUvrRxN5x0wandifrRazXrohStMcrmcpKSkEMJUnsH41Peoszmx
+        z9SEXQWnkaqtwVZFCRSaPBQVMrAkRKFCxQ+alHFBdmM4dqmUT2Uymbqrq4uQvWw9fBMB6MqbUdXmgblx
+        APsrO5BrKIbVaoXP50M1ZxU8Hg8GBwfBrvwQTqcTDMNAKpUaSLruyE1ZTjm2KA8jLr0CXBkLrmQfzGYz
+        /H4/JiYmcCQ6Al6vFy6XCwVhS9Hb24vOzk5kZGSMzv2Dv6H1llAoTLdYLJiamoIzX4d20Wa0JsTCumkd
+        TnCicCJJAofDAYVC8c/hvwQL+Xx+vMlkCm1vF8fDq9NgIEuOnu1b0bqZCyO9wm63IzU19T8Fr2uxVqt1
+        U+hmHs5+wkE9ZzWOro5ASfgH0C9dArFYTBHf/BPybEZrsHkQGgAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="xtraTabPage2.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAFVzZXI7UGVyc29uO0y2ImUAAAJ+
+        SURBVDhPdZJrSFNxGMb/c7nUTDMvNc2onG4aJBKSq22OYUtXCoolZFAiXanIpc7NSYMKI3W6WmalEnZF
+        zCK7QpiyfVgSJMQktDAMCi8l1KfKfDrv8TCs1gPP//zP+/6e58s5DAAzq0J5WzIXs+PrRMy6KXLPNePW
+        /m7bjvH2vRk9pWuDVjI/oix/2DeH8a5VS5hZGZb/8oYF4302jHXvg6veAKMyfDQtWlIgFomE6Jx8BeoV
+        Et4bopj4ekXe27EeIy5kM5QnM5zMXYXmknQ0bAyEPDwgW8jy8hXMU/BtS+6vrqPrYcqMRd1uNd71OvDJ
+        fQ7VGRGQBbEmgePlr4BZ1Etfd9lK8O2DG/h4Hz+GO/BzqBkdR7SIYcwhYLz8FigCWNFzZxU3HsZnjx2T
+        rjOY7jOjoTh1JoixdAHj5beAdFif2vt95AFmvE58ddVg8GIhDLLQu8Lap/8WxASLda1l+XBdOoCeE1mo
+        0sURlBvIHQvmfQm/BYnS2KJyc/XQZaMeD205qC+Ix660aBSX7vfqZbJCAeP1T8GhNas7b27RY/DNCF64
+        HqGxcjusO1VoddTimduDW3nbcJBjBPzPArVGU+512OHRqNFmtcIzMQ3raTtO1TkxMDmNFlMlPJkaEEPs
+        3wWSO4+fTAxcaUF/igL2pCRolUq8n5rCKGedSoUmhYLfEUMsZXwFUqk05wt3eXW1HZ2xy/E0IQFOsRgm
+        rZY33WlGO2KIpYyvIMdgcHJP7r8/i3sRS+BOSUa/XI62kEW86U4z2hFDEjJzBXHx8drG887JmiwdKkIW
+        zlqWRc+WRUXimGC604x2xBBLGV+BIO5PZXLOifNM7/5mxHJZsN86BZo6ADxq2AAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="xtraTabPage3.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAFVzZXI7l1sKAgAAAx1JREFUOE9V
+        k3lIU3EAx9/23tvzWHmkuZybTidtTNOpU0k0zw5Ls8PMowxbupXkUZa6LI8OzYIIsiSoxKwQUTPpWhaW
+        mIRLIomCggKDovpDEkuTvv3eyth+8Pnj+/ge8H78KAD/KQsQUUYFu14vYwfzpcz3HAn9JsOD3kpRlMDW
+        Z4ud2O0nUh2MkPzoOpyNu6f16DiQjhw/57n1/g51K+XsQlvvPHaiyJc921qYjN76HJzJ1sEQ7AnTmmW/
+        NwZwSFOIGm2989iJnTK2+1LxapTq/HC50ojxe+fx8EI5slXiL6m+bL+tdx47kevN1BYonH9Pfp7Ary/P
+        MPmyBcOXDaiI9pxM8aHbbL3z2IlAJ6G8TCedmfr2CdPvruPj46N40roDpVq3SZlYsJz8zAUEMYEjCAn2
+        BeS4NWXpRl8P9uLraAte9ZTiRkUiNvk7vyiI8G42JchHauKkP0rCPQYL1C5FxC+0BmtYvpBiCPKSmMDr
+        PQ16DLcfQX/DWtSu8kOuetHbK4Uxc5Y2A6bGmjB0Lg/1qcrZDVJOzwf5w8kFwmAjzQ2f9JLAlBSGM1mh
+        aExTI1/ji6pIH/DhuTdn0Ve3Dl1VSTCfSMGaxYyZDzNqoVBb7ST+ejN1NSx7jdi3Ih5Prx1GZ20uWV+K
+        mlipdfnXeBO6KhPRURqNb7cykeAqnOYLXLYzbHt7VBQsewrxKDkOLSEaFIdpYQgJRrnCG/vCF2HifgVm
+        LSb8HNqN6YFc9FWFImoBNcAX+JQwovfmrM14kpGKuyEq9GuU6FTLcE7hibKlbnjQvBkzlmp86M4jy1tI
+        WAt9mMtskBNl5AuUVSz3c8SwEwOxkbijVaNHrcB5pQTlKneYT2WS5WrcP56CjCUsEl2F0Imp5xpHqphk
+        RdaCSsbBWnAvPAi3Q1XoUClwQOMBc3MmZsZMMB9LwTYvBo1eLDIowSzJRBD4WxPwBR4baPZiNcPhIM1h
+        P2GXgIExyJUsH7Iup7vSyCIPkieSElwlGclUbzylcuTjf5s8CRpC+D8S8pXOyJRxiHWnB2kBlUy+RRNC
+        CRICy4dVjhT1B3hg45dPadMbAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="xtraTabPage4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAB10RVh0VGl0
+        bGUATGlzdDtMZXZlbDtNdWx0aTtOdW1iZXJW2eikAAACRUlEQVQ4T42TyU9aURSHzx8giggyCIIiMyKK
+        EpqaCq01osbSwWUXTbrssv9EbcW4q0PnNnaITZetiQFhT5p2x7JJ05UKMgv09Jwr8qBxIcnH4d33ft89
+        794LICKzRsQa9WzsQvDX2p+9vdSXARP9xFi9/jdaq9XiTLVabcLXfA/+/3Dos8mIO0ajENRq9fjNuw/R
+        O7lE3EHP5G30XL6F9rFZZIltbAasozNg8V5vCkT7O/39QkCzPOIZK5WTNniM71k8V2GIGQ41BaKLTwa9
+        EHzU6+ED09cnGL4UAXfgBpg9ITAPB8HsDsKgawoGnFfaBGeL2EpkW6sDV2ARXP5FcPoXwDkxT8yBwzcH
+        dt+sJHiv03GN/t7dTW1rtfgzGk3X6/V4uVzZLxRLbZRK5X1ai1WDNSAJKCQEhJj9rVqD/N7hpQfomJhH
+        x3gYHb4w0qyot/iRxX3mcUnwTq3hGvuxspJ+o1Ijwx3wbPl8IdFKkbqgDpa1plFJQAEheE1Brq+UKlEb
+        rNlo22y0bdaRadCavKAxEv0jkuClslcIvj9+kn6hUCHD188VSlGnI/cpfA0sHuZ0C3sNbklAAa4RfriV
+        X1+/pfjwcOuZ7LHgKJNNMrlcPkFnY1UInsmVRI9gq6sHNrsUoqPNTgXyyocW7uGQO4h0BnDQPYVm1xQq
+        dXYsFIr7QrBFAQ5RADZk3bDR2S0EGzK5OL7Z41zi8DCTPOPg4CjJ3ZycVJeFQISIdZkc1jtOYcHTDjkV
+        8TriufM4d7DBBf7iCP8Ak8pcwM8CzykAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="xtraTabPage5.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAADx0RVh0VGl0
+        bGUASW4gTGluZTtMaW5lO0FsaWduO1RleHQ7SW1hZ2U7TGF5b3V0O1NoYXBlO0NlbnRlcjtXcmFwz9xE
+        2QAAAmtJREFUOE9dkulPE0EYxjeamHgAlhKNf5zxg1hJSDAYOVogBCJylJYiCCaEIKDIR46IEQ1QQIMB
+        OYwfDB5RgwoFere0220fn3e2LuIkv51Ndt7fM/vOaAC0/vGtuYfj7yHw3eTpFvrGNhUPhCfCBnofb8A3
+        tLKoadoZqVWCPi7+f+QEPnJ8HM85ZEn38DtWame5xBT00Cqjh6L7whhhYjfxCfzeJYxswDBy8AyuiuC8
+        JRCjJAZCCQSCSZPDBPbI7oEQx29FArqRRcfAykmB59Gq2qYkeEfX4Rkhw2RoHZ1Da3DnaRtcQzqTxb3+
+        NyK4YAk6Bt4qQfwog3jSJJY0FNG4gUgig7BCR0rPorlnSQQFlqCVRmlQLKkjxkVRCgLDV/C99zK2W0oQ
+        iusIklBMx1E6iwavXwSFlqC5d1l1N8LCv2nfvJfwsdGOzUobDmNpHEbT2I+kuUsDTvecCIosQaPPrwSh
+        eEalSNqHejtWy21YvlaI/bBZHAinuMsMqtpfnhS4aDSyOQRZLEkqjUUBRQp7QiiFXRLhL1a2zIrgoiWo
+        an2lBA2+ZdR3LaGOs+Diu9O7iFri9HD2+FU/Kpqei8BmCW7ffYEML8jXXxF8+Ul2worPOxESxqcfYWzn
+        CUZ1lDc8E0GxJbjVNIMMz7eGKTVuP6o7iXsBVR2kfQF32udN2uZxwF6UuaZFYLcE5Y0z0CmQeyBHGOUp
+        yL9KU4M8gSB7csDkffZC+uKonTy5A4drYrasfho366bhqJuCwzWF0top3HBOmtRM4joprZ5QXK0YfU3B
+        8U3kOEXOkSJiy1Ocx/4PJfm5gJwGoP0BoGnqG2WwFi0AAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="accordionControlElement3.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAERlcGFydG1lbnQ7lyqdwQAAA2ZJ
+        REFUOE91km9Mk1cUh69zS+YnE/fHGQeIEdFhdZU6pFjbWjqBQoVSi7YzQLW2iC+MwguFqlQDCE4+KBZT
+        QLBoJUGMUDZxMeIG0sqsNUBiGgRaB8uymGxOZ6Yj9rdrsxG2bCd5zqd7nnN+ySUAiNeRRO6cSxR9c0Zk
+        +/qLhED3sbjApTKurSWfIzqVEx1683+EmvucRDTWWzY+PdKD509+xG8/3cKDnlxcrVg3fjxzpejfQ/MJ
+        tdu2bc6xL0vh6cxH38lEdB2Ow9VDH+ESEwmjZFkfIWQ5ZRVlBeVdytuUBXOCO62Jv8/cz8YvAS3+eKzB
+        y0dyzPQL8FXdWny+PWy2Ometq1Ef8+SkOurnIuny61kfv6OhgkWvJSGB58KnwvbSTbPui3r0VAlwkY2F
+        7QAPxrTIV302w7PJ4St49ngIv/qPw9PChzU3cka5ZnEGFSycy2KSRfWPDFzDdH8lHnYXoJmVoImNfT7S
+        XYLhjjw4awToKNuAy6XRsOvCoI9dcoMK3iSfFdeT3YW1xCiLYZsqcuBymHG9bgdY+RoM2ra9mr5Ho/lz
+        aTQ1Xgbk+OGWALcbYlDEf/8FFbxBHvqnSRZTrd7DHHu6V50Nk2pLsFQZH9yRnA5VZtKLtmJecMiuwxVL
+        AtoKuWhleChPjpjNi39PSgWE7C6oNVQ1ODDmm0Q22wy3ZxT9Q8MQqI6iscUOQ/IGzI/mrEnDQVH4AB1d
+        EBIcONQwSq+AbzKAzLzT+O7+GL513wUvrRxN5x0wandifrRazXrohStMcrmcpKSkEMJUnsH41Peoszmx
+        z9SEXQWnkaqtwVZFCRSaPBQVMrAkRKFCxQ+alHFBdmM4dqmUT2Uymbqrq4uQvWw9fBMB6MqbUdXmgblx
+        APsrO5BrKIbVaoXP50M1ZxU8Hg8GBwfBrvwQTqcTDMNAKpUaSLruyE1ZTjm2KA8jLr0CXBkLrmQfzGYz
+        /H4/JiYmcCQ6Al6vFy6XCwVhS9Hb24vOzk5kZGSMzv2Dv6H1llAoTLdYLJiamoIzX4d20Wa0JsTCumkd
+        TnCicCJJAofDAYVC8c/hvwQL+Xx+vMlkCm1vF8fDq9NgIEuOnu1b0bqZCyO9wm63IzU19T8Fr2uxVqt1
+        U+hmHs5+wkE9ZzWOro5ASfgH0C9dArFYTBHf/BPybEZrsHkQGgAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="accordionControlElement4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAFVzZXI7l1sKAgAAAx1JREFUOE9V
+        k3lIU3EAx9/23tvzWHmkuZybTidtTNOpU0k0zw5Ls8PMowxbupXkUZa6LI8OzYIIsiSoxKwQUTPpWhaW
+        mIRLIomCggKDovpDEkuTvv3eyth+8Pnj+/ge8H78KAD/KQsQUUYFu14vYwfzpcz3HAn9JsOD3kpRlMDW
+        Z4ud2O0nUh2MkPzoOpyNu6f16DiQjhw/57n1/g51K+XsQlvvPHaiyJc921qYjN76HJzJ1sEQ7AnTmmW/
+        NwZwSFOIGm2989iJnTK2+1LxapTq/HC50ojxe+fx8EI5slXiL6m+bL+tdx47kevN1BYonH9Pfp7Ary/P
+        MPmyBcOXDaiI9pxM8aHbbL3z2IlAJ6G8TCedmfr2CdPvruPj46N40roDpVq3SZlYsJz8zAUEMYEjCAn2
+        BeS4NWXpRl8P9uLraAte9ZTiRkUiNvk7vyiI8G42JchHauKkP0rCPQYL1C5FxC+0BmtYvpBiCPKSmMDr
+        PQ16DLcfQX/DWtSu8kOuetHbK4Uxc5Y2A6bGmjB0Lg/1qcrZDVJOzwf5w8kFwmAjzQ2f9JLAlBSGM1mh
+        aExTI1/ji6pIH/DhuTdn0Ve3Dl1VSTCfSMGaxYyZDzNqoVBb7ST+ejN1NSx7jdi3Ih5Prx1GZ20uWV+K
+        mlipdfnXeBO6KhPRURqNb7cykeAqnOYLXLYzbHt7VBQsewrxKDkOLSEaFIdpYQgJRrnCG/vCF2HifgVm
+        LSb8HNqN6YFc9FWFImoBNcAX+JQwovfmrM14kpGKuyEq9GuU6FTLcE7hibKlbnjQvBkzlmp86M4jy1tI
+        WAt9mMtskBNl5AuUVSz3c8SwEwOxkbijVaNHrcB5pQTlKneYT2WS5WrcP56CjCUsEl2F0Imp5xpHqphk
+        RdaCSsbBWnAvPAi3Q1XoUClwQOMBc3MmZsZMMB9LwTYvBo1eLDIowSzJRBD4WxPwBR4baPZiNcPhIM1h
+        P2GXgIExyJUsH7Iup7vSyCIPkieSElwlGclUbzylcuTjf5s8CRpC+D8S8pXOyJRxiHWnB2kBlUy+RRNC
+        CRICy4dVjhT1B3hg45dPadMbAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="accordionControlElement7.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAOdEVYdFRpdGxlAENvbnRhY3Q7EcdpAQAAAoFJREFU
+        OE+lk1tIk2EYx4dUdi7NDlcS0vnkRRd1EV2WZGGSpBZEi7Lm8rDmygamyCipqemyEelSZrPQorRlHoaH
+        kC6KsCDwKujCDrPp1Lnv27fpv+d5t6QLL4oGP/bxwf/3PM/7vJ8KwH8x58t/4fcviphHLCCiiUXEEmIp
+        sZxYScQQq4jVxJrIO86ooozWrl6j1YXCmm4Y7nRCX9WB/Mp25JlfQnvzBTRlrcgyPcPZ0qdQlzzBqaJm
+        pOXff0/ZWBbM53BoekYQZEIzCASnISshSIEQpuQQfFIQk/4gxqcUjPkCyCxs4v7jWbCw8G63CA9/HoK9
+        KAPXDsejzaKj8DT8f4b9Crw+EkwqSDc4WJDAgsUGS6eo6nJUw6I9gFun96LkaAL8keqW5jeoaBpAmb0f
+        pXU98EzISNM3smADC5YV0Mws6Gu5h0r1bvRWZaDLqofPHxDVJ7g6V6bWPRMB/CRBqs7Ogk0sWKGraJ+d
+        +8ugCx1V2fg00A6fzK0ruF7fh+JaF4zWThRUOzEyLiMlr4EFW1gQm2t2QqFwz+sPsD104e3HYdgaXejq
+        HRSHFp47XHnEK8M9JuFITj0LtrEgjlclk+B8Tjn2H9TDVN0v/s9dNIvw1ZpXuHTbidzyNrhJ8J0EydoH
+        LNjBgrWaG62QaGVZJEjcc2YWFvCJi7mpbbdXorCMb6MSDmXXsWAXC9ZlmZ6LlU3RzOFDU8L7pvBo5NC4
+        9R9UmcNfPRKSNEKwkwUxJwy179TF4Rt20vgYmVce4fhlB47RqlLz7UjJbRAzJ2ttVNmGpAt12JduGqKs
+        uEh8n+OI9QTvdSOxmeAT3kpsJ3hWrsYtJ0aeORw95xf290D1Cy/MeLbWSgQFAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="accordionControlElement6.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAZdEVYdFRpdGxlAFRhYmxlO0Zvcm1hdDtDbGVhcjsa
+        l9UaAAAC70lEQVQ4T32Ta0hTYRjHj5aZN0rpQ/ohCikiCcJIMutL4SWpvqwvQpJaauI1SwxMIec93aZr
+        LhXdvJe2mJfZJurcJs47ZmZe+lBhTI3NuWZLv/x736OJkPTC75znPc/z/OA857wMWfsIDv/hwC7ofj/B
+        DgBDYWIEak1smRaxpVrECLSI5mtwn9ePe8VqRBEin/eBW9oNrkCJbL4SWcUdGiraEdBi1fwqlPMmllLF
+        /Ha89YzXOQeLdROW9S2eFnWSLubgjuBuQS9bWD+xjPrxJaRUj5F4iY0pyVWjMJltMJp/s6L0XDkVOO0I
+        wrgqFMtnkVQxisTKESRWjCDh5TASxMOI36aqSY+OnmnMfl6Bsn+GCpx3BJxMBbrmTKgdN6B2bAlxIj0b
+        15G4dsyAGOEg1qwb6Ncv4JusBTPxEWi75l9IJOwwmVvp7eiaNUJKiqkgumyQbaR7SlHrB1h/bWBQKMZi
+        eQFsQ+/wkZuOZn/fPCJwYEJTZXj2agpR/IFd6BDJ0yG/ZQrSVh0WGuvwRZANq+o1fnZKsa5qxnhuJoQ+
+        pwuY2LQGmC0b+GGyYYUgkurY+6plk7y7GroSPhbyM7Aml2CtRQwzYX1Cg/ccDmQB/mCiHtaS4g0sbwuE
+        Ei1MZG9dt6GvtQufMh/B2CiCUcKDsaYElqEejAaFQHEpAIXe3jwm7IFIG55Yg/CEGtxJqEaOQAGZYgJZ
+        4l5kv5mGvr0by8IcrLzIgVnbheGrwZD5XkCGp5eQzMCFwF7cCR7bHA9NllY/aZhE5aABogED1E1ymFRy
+        6K8EocnnHOLdPcpJnSvBnv2WuyHLKTj1Lfia7yhRL7I0ThqQlFQNycmziHBxrSA1brQ5zMGR2UvgeOxy
+        moCT2Ya87q+QjCzCN7IZZ25X4LyXbxXJH6LNAxeDmBt25BzuIbAnuHn6pQh9OGKculmKE4HFOOr3mDYf
+        pvnrdvZMMPmHAgn/CNx94v5KnAh0NkcIdDbOBPsQkqKNW9gxfwBLDEo6BCio3AAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="accordionControlElement1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <data name="accordionControlElement9.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+        AABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="accordionControlElement10.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <data name="accordionControlElement8.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+        gbjDA968SgAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="accordionControlElement17.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <data name="accordionControlElement18.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <data name="barButtonItem4.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAFVzZXI7UGVyc29uO0y2ImUAAAJ+
+        SURBVDhPdZJrSFNxGMb/c7nUTDMvNc2onG4aJBKSq22OYUtXCoolZFAiXanIpc7NSYMKI3W6WmalEnZF
+        zCK7QpiyfVgSJMQktDAMCi8l1KfKfDrv8TCs1gPP//zP+/6e58s5DAAzq0J5WzIXs+PrRMy6KXLPNePW
+        /m7bjvH2vRk9pWuDVjI/oix/2DeH8a5VS5hZGZb/8oYF4302jHXvg6veAKMyfDQtWlIgFomE6Jx8BeoV
+        Et4bopj4ekXe27EeIy5kM5QnM5zMXYXmknQ0bAyEPDwgW8jy8hXMU/BtS+6vrqPrYcqMRd1uNd71OvDJ
+        fQ7VGRGQBbEmgePlr4BZ1Etfd9lK8O2DG/h4Hz+GO/BzqBkdR7SIYcwhYLz8FigCWNFzZxU3HsZnjx2T
+        rjOY7jOjoTh1JoixdAHj5beAdFif2vt95AFmvE58ddVg8GIhDLLQu8Lap/8WxASLda1l+XBdOoCeE1mo
+        0sURlBvIHQvmfQm/BYnS2KJyc/XQZaMeD205qC+Ix660aBSX7vfqZbJCAeP1T8GhNas7b27RY/DNCF64
+        HqGxcjusO1VoddTimduDW3nbcJBjBPzPArVGU+512OHRqNFmtcIzMQ3raTtO1TkxMDmNFlMlPJkaEEPs
+        3wWSO4+fTAxcaUF/igL2pCRolUq8n5rCKGedSoUmhYLfEUMsZXwFUqk05wt3eXW1HZ2xy/E0IQFOsRgm
+        rZY33WlGO2KIpYyvIMdgcHJP7r8/i3sRS+BOSUa/XI62kEW86U4z2hFDEjJzBXHx8drG887JmiwdKkIW
+        zlqWRc+WRUXimGC604x2xBBLGV+BIO5PZXLOifNM7/5mxHJZsN86BZo6ADxq2AAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="barButtonItem4.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+  <data name="barSubItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi44
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKIDAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iQ2xlYXJUYWJsZVN0eWxlIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6
+        bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNp
+        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTI4LDEwaC04
+        VjRoOFYxMHogTTI0LjYsMTQuOWMwLjYtMC42LDEuNC0wLjksMi4yLTAuOWMwLjQsMCwwLjgsMC4xLDEu
+        MiwwLjJWMTJoLTh2NmgxLjVMMjQuNiwxNC45eiBNMCwyNiAgIGg4di02SDBWMjZ6IE0xNC45LDI0LjZs
+        My4xLTMuMVYyMGgtOHY2aDQuMUMxNC4zLDI1LjUsMTQuNSwyNSwxNC45LDI0LjZ6IiBjbGFzcz0iQmxh
+        Y2siIC8+DQogIDwvZz4NCiAgPHBhdGggZD0iTTAsNGg4djZIMFY0eiBNMCwxOGg4di02SDBWMTh6IE0x
+        MCwxMGg4VjRoLThWMTB6IE0xMCwxOGg4di02aC04VjE4eiBNMTksMjMuM0wxNi4zLDI2ICBjLTAuNCww
+        LjQtMC40LDEuMiwwLDEuNmw0LDRjMC40LDAuNCwxLjIsMC40LDEuNiwwbDIuNy0yLjdMMTksMjMuM3oi
+        IGNsYXNzPSJCbHVlIiAvPg0KICA8cGF0aCBkPSJNMzEuNywyMC40bC00LTRjLTAuNC0wLjQtMS4yLTAu
+        NC0xLjYsMGwtNi4xLDYuMWw1LjYsNS42bDYuMS02LjFDMzIuMSwyMS41LDMyLjEsMjAuOCwzMS43LDIw
+        LjR6IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="barAbout.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAOdEVYdFRpdGxlAERldGFpbHM7NJb/TAAAAxBJREFU
+        OE9VkXlIk3Ecxl+bOadzzZzHDt3cZrrpNI95L102zUqXbUqXpGJmRdldYHSY5VGWGWgWFl3KKkzICAr/
+        8KA/ah1kohl2G4kGSdFl9PR7X1tsL3zgfXif53l/3++PAvAfQxCPSpFxjUkSTnesL/tLpNfM56E81nKK
+        opzsffY4iFQpNyQ9iP99rX4ONmaoUaCTY+5sl98qD+eDcg6LZ++14SCS/d0aVsZJUThPAb2MiygBG0Xz
+        wv4Ec1hQuDhV23ttOIh4Iad9VYIUmZpAVG0vxYPbTehq2oYEgeu4lEV12nttOIgob5cD8UK3P5/H3mNq
+        /D4m+xtx73wpdsR5TwawqAv2XhsOwos9I8A0V/zz66eP+DbShtGeSvQ2F2BrlOfkLCcq2t5rw1FQlOfB
+        XK11qLsDE9ZGPGsvw+XtqciRuz8l35IIKkIgQUBgE5yY4CWzkLxTzoSA3Zmqto7KYvRd3AdLeQaKktUI
+        1uSMSRPLx+T62t+S2J1vfcLWtPJEifOJ340O0g87ROCiqTUI7rUXq7E/S4uj5nByAxEIjV8HtakTYaut
+        KDk2imBzF2Rpp+EdWtDHFcbr6LCzVuwa2WKSTFjr8vDm2k7sWZqGTrL99MxiJhxZ8g6FNR/IYYHCw8NQ
+        mHogSqoBX248QxfMKk/xutS914DXlm0YasiCZX0cinUahCTvgibfivCiEajzB5iw0twLWfZdiPUt8FTm
+        DdIFkpOLfV73NxXiRfNyPDuSgCcVsbi6SQWlvhaaomEm3Ng+fQI67L+oE6IFFvCDcn/RBcpzOX4/Rlq3
+        YPB4OvqrE/H4UAw6tqoQkbKZmTl4xUMozH1Mgf+imxClX4dP4gl4yLL6pwuyfZmCgWodnlYl4FGFFnd2
+        q2FauIRZGD3zKctLpqD+yiD89JfhqSmDu2RBHV0g2KDln72wTIiWpUKcNQrRZPRDfaYPylICERltZBYm
+        IjOLDRby53omzPXPuMXxjdPQBfT9exNCCdH/iCHEEnRsXmAJL8Bwg69Y9oqvzJvykC4edBen1U+HKdZf
+        4c3590llwYcAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="barAbout.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <data name="barMy.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+        dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASdEVYdFRpdGxlAFVzZXI7UGVyc29uO0y2ImUAAAJ+
+        SURBVDhPdZJrSFNxGMb/c7nUTDMvNc2onG4aJBKSq22OYUtXCoolZFAiXanIpc7NSYMKI3W6WmalEnZF
+        zCK7QpiyfVgSJMQktDAMCi8l1KfKfDrv8TCs1gPP//zP+/6e58s5DAAzq0J5WzIXs+PrRMy6KXLPNePW
+        /m7bjvH2vRk9pWuDVjI/oix/2DeH8a5VS5hZGZb/8oYF4302jHXvg6veAKMyfDQtWlIgFomE6Jx8BeoV
+        Et4bopj4ekXe27EeIy5kM5QnM5zMXYXmknQ0bAyEPDwgW8jy8hXMU/BtS+6vrqPrYcqMRd1uNd71OvDJ
+        fQ7VGRGQBbEmgePlr4BZ1Etfd9lK8O2DG/h4Hz+GO/BzqBkdR7SIYcwhYLz8FigCWNFzZxU3HsZnjx2T
+        rjOY7jOjoTh1JoixdAHj5beAdFif2vt95AFmvE58ddVg8GIhDLLQu8Lap/8WxASLda1l+XBdOoCeE1mo
+        0sURlBvIHQvmfQm/BYnS2KJyc/XQZaMeD205qC+Ix660aBSX7vfqZbJCAeP1T8GhNas7b27RY/DNCF64
+        HqGxcjusO1VoddTimduDW3nbcJBjBPzPArVGU+512OHRqNFmtcIzMQ3raTtO1TkxMDmNFlMlPJkaEEPs
+        3wWSO4+fTAxcaUF/igL2pCRolUq8n5rCKGedSoUmhYLfEUMsZXwFUqk05wt3eXW1HZ2xy/E0IQFOsRgm
+        rZY33WlGO2KIpYyvIMdgcHJP7r8/i3sRS+BOSUa/XI62kEW86U4z2hFDEjJzBXHx8drG887JmiwdKkIW
+        zlqWRc+WRUXimGC604x2xBBLGV+BIO5PZXLOifNM7/5mxHJZsN86BZo6ADxq2AAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="barMy.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+  <data name="barButtonItem5.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABR0RVh0VGl0
+        bGUASW1hZ2U7SW1nO1NlbmSUgA8GAAACl0lEQVQ4T32QWU9TURRGG3wQHBPhtkCQMFR+j++mwIsMVhKM
+        GJApFYc4BI1RKoVSRZljQymIBVGomJgiSlQwBkQolUDowKV0uJ383OfSNhDRk6zc4Zxv7X22RKVS/UVf
+        Xp6+V56HHrkc3bk56MrORkdWFjoyM/E04ySeZGTgcXo6dGlp+n0FLBwIhqBLTYVfCGK0oBBefxCtUg4v
+        FfnY2hbAuwU8SknBvoIe+SkIQhg6WSp8/hC8viC2vSTgODHcQkEN8R9BLlUOoY0ELKyVSuH2BijIgSdB
+        LKxOSYaEVkKUAzG6c3LEym0yGTwU1FJlt4dV5rDp9osCB+9DczIJNF2W8ba+aWh7GR/wcXYVnTQ0n1hZ
+        Rq0HdlqnO7Pg0BkFnJt+2F0+qJmg5rYJtjUekchvCIEwwuEIzMVFYpjRyknRwu3cOUYztc6qNyWf0Euu
+        P5yAcWwWL17PIRSK0PQjoigG+2bymVkrJi3zeDu1xO59MDYvydUHE3QvAaaJ72jUjNHQAmLbDqcP2x56
+        p7tXNDyDptOMBesmahtfMUFiXKC6Pw4n78eijcfz4S+42NCH5V9OsLW4vIF8ZRPU7WZ8+2HH4soWqm6N
+        MkFSXFB/9w1NVMC7aRtGzAtYtrlwpbEfpwvvobyuHVMzSxgYmcMk7c9beVy6YWKCQ3FB9Z0xzC3Y0Tv4
+        GVueoNjNzxUnPn21EVbqxiX+Z/vvZ1ZxoWGYCQ7HBZU3R6HtscBFQbsrimPXexS2r+22oKx+iAmOxgUV
+        10zYcHqxTkNbd3ix5tj7jEP77Fxp9cBegaKsY/x83RCUdYNQ1g7iHFFaY6SDRpTQ4ZLLBhRXGVBUacDZ
+        yn4UlHeZ9wyRViJxhDj2D47vgn0nEQk7ApXkDxuzc6jTlOltAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="barButtonItem5.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+        I+mqZChHAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="fluentFormDefaultManager1.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/DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs b/DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs
new file mode 100644
index 0000000..7d49ded
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/Organization.Designer.cs
@@ -0,0 +1,253 @@
+锘�
+namespace Gs.DevApp.DevFrm.User
+{
+    partial class Organization
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�1");
+            System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�2");
+            System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�3");
+            System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("鍒嗗叕鍙�4");
+            System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("鏌愭煇鏈夐檺鍏徃", new System.Windows.Forms.TreeNode[] {
+            treeNode1,
+            treeNode2,
+            treeNode3,
+            treeNode4});
+            this.toolBarMenu1 = new Gs.DevApp.UserControl.ToolBarMenu();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.textEdit4 = new DevExpress.XtraEditors.TextEdit();
+            this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
+            this.textEdit3 = new DevExpress.XtraEditors.TextEdit();
+            this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+            this.textEdit2 = new DevExpress.XtraEditors.TextEdit();
+            this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+            this.textEdit1 = new DevExpress.XtraEditors.TextEdit();
+            this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+            this.treeView1 = new System.Windows.Forms.TreeView();
+            this.tabPage2 = new System.Windows.Forms.TabPage();
+            this.tabControl1.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            this.groupBox1.SuspendLayout();
+            this.panel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit4.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit3.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit2.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // toolBarMenu1
+            // 
+            this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+            this.toolBarMenu1.Name = "toolBarMenu1";
+            this.toolBarMenu1.Size = new System.Drawing.Size(917, 80);
+            this.toolBarMenu1.TabIndex = 0;
+            // 
+            // tabControl1
+            // 
+            this.tabControl1.Controls.Add(this.tabPage1);
+            this.tabControl1.Controls.Add(this.tabPage2);
+            this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tabControl1.Location = new System.Drawing.Point(0, 80);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(917, 564);
+            this.tabControl1.TabIndex = 2;
+            // 
+            // tabPage1
+            // 
+            this.tabPage1.Controls.Add(this.groupBox1);
+            this.tabPage1.Controls.Add(this.treeView1);
+            this.tabPage1.Location = new System.Drawing.Point(4, 27);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(909, 533);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "鏁版嵁鍒楄〃";
+            this.tabPage1.UseVisualStyleBackColor = true;
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.panel1);
+            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.groupBox1.Location = new System.Drawing.Point(210, 3);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(696, 527);
+            this.groupBox1.TabIndex = 2;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "鍩烘湰淇℃伅";
+            // 
+            // panel1
+            // 
+            this.panel1.Controls.Add(this.textEdit4);
+            this.panel1.Controls.Add(this.labelControl4);
+            this.panel1.Controls.Add(this.textEdit3);
+            this.panel1.Controls.Add(this.labelControl3);
+            this.panel1.Controls.Add(this.textEdit2);
+            this.panel1.Controls.Add(this.labelControl2);
+            this.panel1.Controls.Add(this.textEdit1);
+            this.panel1.Controls.Add(this.labelControl1);
+            this.panel1.Location = new System.Drawing.Point(28, 25);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(462, 307);
+            this.panel1.TabIndex = 0;
+            // 
+            // textEdit4
+            // 
+            this.textEdit4.Location = new System.Drawing.Point(133, 168);
+            this.textEdit4.Name = "textEdit4";
+            this.textEdit4.Size = new System.Drawing.Size(125, 24);
+            this.textEdit4.TabIndex = 7;
+            // 
+            // labelControl4
+            // 
+            this.labelControl4.Location = new System.Drawing.Point(26, 174);
+            this.labelControl4.Name = "labelControl4";
+            this.labelControl4.Size = new System.Drawing.Size(90, 18);
+            this.labelControl4.TabIndex = 6;
+            this.labelControl4.Text = "璐熻矗浜虹數璇濓細";
+            // 
+            // textEdit3
+            // 
+            this.textEdit3.Location = new System.Drawing.Point(133, 119);
+            this.textEdit3.Name = "textEdit3";
+            this.textEdit3.Size = new System.Drawing.Size(125, 24);
+            this.textEdit3.TabIndex = 5;
+            // 
+            // labelControl3
+            // 
+            this.labelControl3.Location = new System.Drawing.Point(26, 125);
+            this.labelControl3.Name = "labelControl3";
+            this.labelControl3.Size = new System.Drawing.Size(90, 18);
+            this.labelControl3.TabIndex = 4;
+            this.labelControl3.Text = "缁勭粐璐熻矗浜猴細";
+            // 
+            // textEdit2
+            // 
+            this.textEdit2.Location = new System.Drawing.Point(133, 74);
+            this.textEdit2.Name = "textEdit2";
+            this.textEdit2.Size = new System.Drawing.Size(125, 24);
+            this.textEdit2.TabIndex = 3;
+            // 
+            // labelControl2
+            // 
+            this.labelControl2.Location = new System.Drawing.Point(41, 80);
+            this.labelControl2.Name = "labelControl2";
+            this.labelControl2.Size = new System.Drawing.Size(75, 18);
+            this.labelControl2.TabIndex = 2;
+            this.labelControl2.Text = "缁勭粐鍚嶇О锛�";
+            // 
+            // textEdit1
+            // 
+            this.textEdit1.Location = new System.Drawing.Point(133, 26);
+            this.textEdit1.Name = "textEdit1";
+            this.textEdit1.Size = new System.Drawing.Size(125, 24);
+            this.textEdit1.TabIndex = 1;
+            // 
+            // labelControl1
+            // 
+            this.labelControl1.Location = new System.Drawing.Point(41, 32);
+            this.labelControl1.Name = "labelControl1";
+            this.labelControl1.Size = new System.Drawing.Size(75, 18);
+            this.labelControl1.TabIndex = 0;
+            this.labelControl1.Text = "缁勭粐缂栧彿锛�";
+            // 
+            // treeView1
+            // 
+            this.treeView1.Dock = System.Windows.Forms.DockStyle.Left;
+            this.treeView1.Location = new System.Drawing.Point(3, 3);
+            this.treeView1.Name = "treeView1";
+            treeNode1.Name = "鑺傜偣1";
+            treeNode1.Text = "鍒嗗叕鍙�1";
+            treeNode2.Name = "鑺傜偣2";
+            treeNode2.Text = "鍒嗗叕鍙�2";
+            treeNode3.Name = "鑺傜偣3";
+            treeNode3.Text = "鍒嗗叕鍙�3";
+            treeNode4.Name = "鑺傜偣4";
+            treeNode4.Text = "鍒嗗叕鍙�4";
+            treeNode5.Name = "鑺傜偣0";
+            treeNode5.Text = "鏌愭煇鏈夐檺鍏徃";
+            this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
+            treeNode5});
+            this.treeView1.Size = new System.Drawing.Size(207, 527);
+            this.treeView1.TabIndex = 1;
+            // 
+            // tabPage2
+            // 
+            this.tabPage2.Location = new System.Drawing.Point(4, 27);
+            this.tabPage2.Name = "tabPage2";
+            this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage2.Size = new System.Drawing.Size(990, 436);
+            this.tabPage2.TabIndex = 1;
+            this.tabPage2.Text = "鏁版嵁缂栬緫";
+            this.tabPage2.UseVisualStyleBackColor = true;
+            // 
+            // Organization
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(917, 644);
+            this.Controls.Add(this.tabControl1);
+            this.Controls.Add(this.toolBarMenu1);
+            this.Name = "Organization";
+            this.Text = "Organization";
+            this.tabControl1.ResumeLayout(false);
+            this.tabPage1.ResumeLayout(false);
+            this.groupBox1.ResumeLayout(false);
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit4.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit3.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit2.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private UserControl.ToolBarMenu toolBarMenu1;
+        private System.Windows.Forms.TabControl tabControl1;
+        private System.Windows.Forms.TabPage tabPage1;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Panel panel1;
+        private DevExpress.XtraEditors.TextEdit textEdit4;
+        private DevExpress.XtraEditors.LabelControl labelControl4;
+        private DevExpress.XtraEditors.TextEdit textEdit3;
+        private DevExpress.XtraEditors.LabelControl labelControl3;
+        private DevExpress.XtraEditors.TextEdit textEdit2;
+        private DevExpress.XtraEditors.LabelControl labelControl2;
+        private DevExpress.XtraEditors.TextEdit textEdit1;
+        private DevExpress.XtraEditors.LabelControl labelControl1;
+        private System.Windows.Forms.TreeView treeView1;
+        private System.Windows.Forms.TabPage tabPage2;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/Organization.cs b/DevApp/Gs.DevApp/DevFrm/User/Organization.cs
new file mode 100644
index 0000000..00f11c5
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/Organization.cs
@@ -0,0 +1,25 @@
+锘縰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 Gs.DevApp.DevFrm.User
+{
+    public partial class Organization : DevExpress.XtraEditors.XtraForm
+    {
+        public Organization()
+        {
+            InitializeComponent();
+            ImageList imageList = new ImageList();
+            imageList.Images.Add("icon1", Properties.Resources.usergroup_32x32);
+            imageList.Images.Add("icon2", Properties.Resources.user_16x16);
+            treeView1.ImageList = imageList;
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/Organization.resx b/DevApp/Gs.DevApp/DevFrm/User/Organization.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/Organization.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/DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs
new file mode 100644
index 0000000..cc91b2a
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.Designer.cs
@@ -0,0 +1,208 @@
+锘�
+namespace Gs.DevApp.DevFrm.User
+{
+    partial class SysMenu
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.toolBarMenu1 = new Gs.DevApp.UserControl.ToolBarMenu();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.tlMenu = new DevExpress.XtraTreeList.TreeList();
+            this.tlcModuleID = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+            this.tlcMenuName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+            this.tlcParentMenuName = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+            this.tlcMenuCaption = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+            this.tlcActions = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+            this.tlcMenuType = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+            this.tabControl1.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.tlMenu)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // toolBarMenu1
+            // 
+            this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+            this.toolBarMenu1.Name = "toolBarMenu1";
+            this.toolBarMenu1.Size = new System.Drawing.Size(769, 91);
+            this.toolBarMenu1.TabIndex = 0;
+            // 
+            // tabControl1
+            // 
+            this.tabControl1.Controls.Add(this.tabPage1);
+            this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tabControl1.Location = new System.Drawing.Point(0, 91);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(769, 332);
+            this.tabControl1.TabIndex = 4;
+            // 
+            // tabPage1
+            // 
+            this.tabPage1.Controls.Add(this.tlMenu);
+            this.tabPage1.Location = new System.Drawing.Point(4, 27);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(761, 301);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "鏁版嵁鍒楄〃";
+            this.tabPage1.UseVisualStyleBackColor = true;
+            // 
+            // tlMenu
+            // 
+            this.tlMenu.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
+            this.tlcModuleID,
+            this.tlcMenuName,
+            this.tlcParentMenuName,
+            this.tlcMenuCaption,
+            this.tlcActions,
+            this.tlcMenuType});
+            this.tlMenu.Cursor = System.Windows.Forms.Cursors.Default;
+            this.tlMenu.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tlMenu.Location = new System.Drawing.Point(3, 3);
+            this.tlMenu.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.tlMenu.MinWidth = 23;
+            this.tlMenu.Name = "tlMenu";
+            this.tlMenu.BeginUnboundLoad();
+            this.tlMenu.AppendNode(new object[] {
+            "5",
+            "1",
+            "5",
+            "2",
+            "5",
+            "5"}, -1);
+            this.tlMenu.AppendNode(new object[] {
+            "5",
+            "3",
+            "5",
+            "4",
+            "5",
+            "5"}, -1);
+            this.tlMenu.AppendNode(new object[] {
+            "5",
+            "4",
+            "5",
+            "5",
+            "5",
+            "5"}, -1);
+            this.tlMenu.EndUnboundLoad();
+            this.tlMenu.OptionsBehavior.Editable = false;
+            this.tlMenu.Size = new System.Drawing.Size(755, 295);
+            this.tlMenu.TabIndex = 2;
+            this.tlMenu.TreeLevelWidth = 21;
+            // 
+            // tlcModuleID
+            // 
+            this.tlcModuleID.Caption = "妯″潡缂栧彿";
+            this.tlcModuleID.FieldName = "ModuleID";
+            this.tlcModuleID.MinWidth = 23;
+            this.tlcModuleID.Name = "tlcModuleID";
+            this.tlcModuleID.Visible = true;
+            this.tlcModuleID.VisibleIndex = 5;
+            this.tlcModuleID.Width = 74;
+            // 
+            // tlcMenuName
+            // 
+            this.tlcMenuName.Caption = "鑿滃崟鍚嶇О";
+            this.tlcMenuName.FieldName = "MenuName";
+            this.tlcMenuName.MinWidth = 38;
+            this.tlcMenuName.Name = "tlcMenuName";
+            this.tlcMenuName.Visible = true;
+            this.tlcMenuName.VisibleIndex = 0;
+            this.tlcMenuName.Width = 219;
+            // 
+            // tlcParentMenuName
+            // 
+            this.tlcParentMenuName.Caption = "鐖剁骇";
+            this.tlcParentMenuName.FieldName = "ParentMenuName";
+            this.tlcParentMenuName.MinWidth = 23;
+            this.tlcParentMenuName.Name = "tlcParentMenuName";
+            this.tlcParentMenuName.Visible = true;
+            this.tlcParentMenuName.VisibleIndex = 4;
+            this.tlcParentMenuName.Width = 96;
+            // 
+            // tlcMenuCaption
+            // 
+            this.tlcMenuCaption.Caption = "鑿滃崟鏍囬";
+            this.tlcMenuCaption.FieldName = "MenuCaption";
+            this.tlcMenuCaption.MinWidth = 23;
+            this.tlcMenuCaption.Name = "tlcMenuCaption";
+            this.tlcMenuCaption.Visible = true;
+            this.tlcMenuCaption.VisibleIndex = 2;
+            this.tlcMenuCaption.Width = 96;
+            // 
+            // tlcActions
+            // 
+            this.tlcActions.Caption = "鏉冮檺";
+            this.tlcActions.FieldName = "Actions";
+            this.tlcActions.MinWidth = 23;
+            this.tlcActions.Name = "tlcActions";
+            this.tlcActions.Visible = true;
+            this.tlcActions.VisibleIndex = 3;
+            this.tlcActions.Width = 96;
+            // 
+            // tlcMenuType
+            // 
+            this.tlcMenuType.Caption = "绫诲瀷";
+            this.tlcMenuType.FieldName = "MenuType";
+            this.tlcMenuType.MinWidth = 23;
+            this.tlcMenuType.Name = "tlcMenuType";
+            this.tlcMenuType.Visible = true;
+            this.tlcMenuType.VisibleIndex = 1;
+            this.tlcMenuType.Width = 95;
+            // 
+            // SysMenu
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(769, 423);
+            this.Controls.Add(this.tabControl1);
+            this.Controls.Add(this.toolBarMenu1);
+            this.Name = "SysMenu";
+            this.Text = "SysMenu";
+            this.tabControl1.ResumeLayout(false);
+            this.tabPage1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.tlMenu)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private UserControl.ToolBarMenu toolBarMenu1;
+        private System.Windows.Forms.TabControl tabControl1;
+        private System.Windows.Forms.TabPage tabPage1;
+        private DevExpress.XtraTreeList.TreeList tlMenu;
+        private DevExpress.XtraTreeList.Columns.TreeListColumn tlcModuleID;
+        private DevExpress.XtraTreeList.Columns.TreeListColumn tlcMenuName;
+        private DevExpress.XtraTreeList.Columns.TreeListColumn tlcParentMenuName;
+        private DevExpress.XtraTreeList.Columns.TreeListColumn tlcMenuCaption;
+        private DevExpress.XtraTreeList.Columns.TreeListColumn tlcActions;
+        private DevExpress.XtraTreeList.Columns.TreeListColumn tlcMenuType;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs
new file mode 100644
index 0000000..c8ed5ff
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.cs
@@ -0,0 +1,27 @@
+锘縰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 Gs.DevApp.DevFrm.User
+{
+    public partial class SysMenu : DevExpress.XtraEditors.XtraForm
+    {
+        public SysMenu()
+        {
+            InitializeComponent();
+            this.toolBarMenu1.btnAddClick += ToolBarMenu1_btnAddClick;
+        }
+        private void ToolBarMenu1_btnAddClick(object sender, EventArgs e)
+        {
+            SysMenuAdd frm = new SysMenuAdd();
+            frm.ShowDialog();
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenu.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/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs
new file mode 100644
index 0000000..c65e661
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.Designer.cs
@@ -0,0 +1,371 @@
+锘�
+namespace Gs.DevApp.DevFrm.User
+{
+    partial class SysMenuAdd
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
+            this.txtStatus = new DevExpress.XtraEditors.ComboBoxEdit();
+            this.txtIdx = new System.Windows.Forms.NumericUpDown();
+            this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+            this.btnEsc = new DevExpress.XtraEditors.SimpleButton();
+            this.btnSave = new DevExpress.XtraEditors.SimpleButton();
+            this.labelControl12 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl10 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl9 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl8 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
+            this.txtFormNamespace = new DevExpress.XtraEditors.MemoEdit();
+            this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
+            this.txtMenuType = new DevExpress.XtraEditors.ComboBoxEdit();
+            this.txtMenuIco = new DevExpress.XtraEditors.TextEdit();
+            this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
+            this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+            this.txtMenuName = new DevExpress.XtraEditors.TextEdit();
+            this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.txtParentMenuName = new DevExpress.XtraEditors.TreeListLookUpEdit();
+            this.treeListLookUpEdit1TreeList = new DevExpress.XtraTreeList.TreeList();
+            ((System.ComponentModel.ISupportInitialize)(this.txtStatus.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtIdx)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtFormNamespace.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtMenuType.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtMenuIco.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtMenuName.Properties)).BeginInit();
+            this.panel1.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            this.tabControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.txtParentMenuName.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.treeListLookUpEdit1TreeList)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // labelControl7
+            // 
+            this.labelControl7.Location = new System.Drawing.Point(33, 273);
+            this.labelControl7.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl7.Name = "labelControl7";
+            this.labelControl7.Size = new System.Drawing.Size(75, 18);
+            this.labelControl7.TabIndex = 115;
+            this.labelControl7.Text = "鑿滃崟鐘舵�侊細";
+            // 
+            // txtStatus
+            // 
+            this.txtStatus.Location = new System.Drawing.Point(111, 269);
+            this.txtStatus.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtStatus.Name = "txtStatus";
+            this.txtStatus.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtStatus.Properties.Items.AddRange(new object[] {
+            "-璇烽�夋嫨-",
+            "姝e父",
+            "绂佺敤"});
+            this.txtStatus.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
+            this.txtStatus.Size = new System.Drawing.Size(297, 24);
+            this.txtStatus.TabIndex = 114;
+            // 
+            // txtIdx
+            // 
+            this.txtIdx.Location = new System.Drawing.Point(111, 236);
+            this.txtIdx.Name = "txtIdx";
+            this.txtIdx.Size = new System.Drawing.Size(120, 26);
+            this.txtIdx.TabIndex = 113;
+            // 
+            // labelControl1
+            // 
+            this.labelControl1.Location = new System.Drawing.Point(30, 244);
+            this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl1.Name = "labelControl1";
+            this.labelControl1.Size = new System.Drawing.Size(75, 18);
+            this.labelControl1.TabIndex = 112;
+            this.labelControl1.Text = "鑿滃崟鎺掑簭锛�";
+            // 
+            // btnEsc
+            // 
+            this.btnEsc.Location = new System.Drawing.Point(299, 342);
+            this.btnEsc.Name = "btnEsc";
+            this.btnEsc.Size = new System.Drawing.Size(94, 29);
+            this.btnEsc.TabIndex = 111;
+            this.btnEsc.Text = "鍙栨秷";
+            // 
+            // btnSave
+            // 
+            this.btnSave.Location = new System.Drawing.Point(129, 343);
+            this.btnSave.Name = "btnSave";
+            this.btnSave.Size = new System.Drawing.Size(94, 29);
+            this.btnSave.TabIndex = 110;
+            this.btnSave.Text = "淇濆瓨";
+            // 
+            // labelControl12
+            // 
+            this.labelControl12.Appearance.ForeColor = System.Drawing.Color.Red;
+            this.labelControl12.Appearance.Options.UseForeColor = true;
+            this.labelControl12.Location = new System.Drawing.Point(415, 121);
+            this.labelControl12.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl12.Name = "labelControl12";
+            this.labelControl12.Size = new System.Drawing.Size(8, 18);
+            this.labelControl12.TabIndex = 107;
+            this.labelControl12.Text = "*";
+            // 
+            // labelControl10
+            // 
+            this.labelControl10.Appearance.ForeColor = System.Drawing.Color.Red;
+            this.labelControl10.Appearance.Options.UseForeColor = true;
+            this.labelControl10.Location = new System.Drawing.Point(415, 92);
+            this.labelControl10.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl10.Name = "labelControl10";
+            this.labelControl10.Size = new System.Drawing.Size(8, 18);
+            this.labelControl10.TabIndex = 109;
+            this.labelControl10.Text = "*";
+            // 
+            // labelControl9
+            // 
+            this.labelControl9.Appearance.ForeColor = System.Drawing.Color.Red;
+            this.labelControl9.Appearance.Options.UseForeColor = true;
+            this.labelControl9.Location = new System.Drawing.Point(415, 57);
+            this.labelControl9.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl9.Name = "labelControl9";
+            this.labelControl9.Size = new System.Drawing.Size(8, 18);
+            this.labelControl9.TabIndex = 108;
+            this.labelControl9.Text = "*";
+            // 
+            // labelControl8
+            // 
+            this.labelControl8.Appearance.ForeColor = System.Drawing.Color.Red;
+            this.labelControl8.Appearance.Options.UseForeColor = true;
+            this.labelControl8.Location = new System.Drawing.Point(415, 14);
+            this.labelControl8.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl8.Name = "labelControl8";
+            this.labelControl8.Size = new System.Drawing.Size(8, 18);
+            this.labelControl8.TabIndex = 106;
+            this.labelControl8.Text = "*";
+            // 
+            // labelControl6
+            // 
+            this.labelControl6.Location = new System.Drawing.Point(33, 155);
+            this.labelControl6.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl6.Name = "labelControl6";
+            this.labelControl6.Size = new System.Drawing.Size(75, 18);
+            this.labelControl6.TabIndex = 103;
+            this.labelControl6.Text = "绐椾綋绫诲悕锛�";
+            // 
+            // txtFormNamespace
+            // 
+            this.txtFormNamespace.Location = new System.Drawing.Point(111, 152);
+            this.txtFormNamespace.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtFormNamespace.Name = "txtFormNamespace";
+            this.txtFormNamespace.Properties.ScrollBars = System.Windows.Forms.ScrollBars.None;
+            this.txtFormNamespace.Size = new System.Drawing.Size(297, 68);
+            this.txtFormNamespace.TabIndex = 102;
+            // 
+            // labelControl5
+            // 
+            this.labelControl5.Location = new System.Drawing.Point(33, 121);
+            this.labelControl5.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl5.Name = "labelControl5";
+            this.labelControl5.Size = new System.Drawing.Size(75, 18);
+            this.labelControl5.TabIndex = 101;
+            this.labelControl5.Text = "绐椾綋绫诲瀷锛�";
+            // 
+            // txtMenuType
+            // 
+            this.txtMenuType.Location = new System.Drawing.Point(111, 117);
+            this.txtMenuType.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtMenuType.Name = "txtMenuType";
+            this.txtMenuType.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtMenuType.Properties.Items.AddRange(new object[] {
+            "-璇烽�夋嫨-",
+            "绐椾綋绫诲瀷",
+            "鎸夐挳绫诲瀷"});
+            this.txtMenuType.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
+            this.txtMenuType.Size = new System.Drawing.Size(297, 24);
+            this.txtMenuType.TabIndex = 100;
+            // 
+            // txtMenuIco
+            // 
+            this.txtMenuIco.Location = new System.Drawing.Point(111, 83);
+            this.txtMenuIco.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtMenuIco.Name = "txtMenuIco";
+            this.txtMenuIco.Size = new System.Drawing.Size(297, 24);
+            this.txtMenuIco.TabIndex = 99;
+            // 
+            // labelControl4
+            // 
+            this.labelControl4.Location = new System.Drawing.Point(33, 87);
+            this.labelControl4.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl4.Name = "labelControl4";
+            this.labelControl4.Size = new System.Drawing.Size(75, 18);
+            this.labelControl4.TabIndex = 98;
+            this.labelControl4.Text = "鑿滃崟鍥炬爣锛�";
+            // 
+            // labelControl3
+            // 
+            this.labelControl3.Location = new System.Drawing.Point(33, 17);
+            this.labelControl3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl3.Name = "labelControl3";
+            this.labelControl3.Size = new System.Drawing.Size(75, 18);
+            this.labelControl3.TabIndex = 97;
+            this.labelControl3.Text = "鐖剁骇鑿滃崟锛�";
+            // 
+            // txtMenuName
+            // 
+            this.txtMenuName.Location = new System.Drawing.Point(111, 48);
+            this.txtMenuName.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.txtMenuName.Name = "txtMenuName";
+            this.txtMenuName.Size = new System.Drawing.Size(297, 24);
+            this.txtMenuName.TabIndex = 95;
+            // 
+            // labelControl2
+            // 
+            this.labelControl2.Location = new System.Drawing.Point(33, 52);
+            this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.labelControl2.Name = "labelControl2";
+            this.labelControl2.Size = new System.Drawing.Size(75, 18);
+            this.labelControl2.TabIndex = 94;
+            this.labelControl2.Text = "鑿滃崟鍚嶇О锛�";
+            // 
+            // panel1
+            // 
+            this.panel1.Controls.Add(this.txtParentMenuName);
+            this.panel1.Controls.Add(this.labelControl7);
+            this.panel1.Controls.Add(this.txtStatus);
+            this.panel1.Controls.Add(this.txtIdx);
+            this.panel1.Controls.Add(this.labelControl1);
+            this.panel1.Controls.Add(this.btnEsc);
+            this.panel1.Controls.Add(this.btnSave);
+            this.panel1.Controls.Add(this.labelControl12);
+            this.panel1.Controls.Add(this.labelControl10);
+            this.panel1.Controls.Add(this.labelControl9);
+            this.panel1.Controls.Add(this.labelControl8);
+            this.panel1.Controls.Add(this.labelControl6);
+            this.panel1.Controls.Add(this.txtFormNamespace);
+            this.panel1.Controls.Add(this.labelControl5);
+            this.panel1.Controls.Add(this.txtMenuType);
+            this.panel1.Controls.Add(this.txtMenuIco);
+            this.panel1.Controls.Add(this.labelControl4);
+            this.panel1.Controls.Add(this.labelControl3);
+            this.panel1.Controls.Add(this.txtMenuName);
+            this.panel1.Controls.Add(this.labelControl2);
+            this.panel1.Location = new System.Drawing.Point(57, 6);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(480, 425);
+            this.panel1.TabIndex = 0;
+            // 
+            // tabPage1
+            // 
+            this.tabPage1.Controls.Add(this.panel1);
+            this.tabPage1.Location = new System.Drawing.Point(4, 27);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(707, 484);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "tabPage1";
+            this.tabPage1.UseVisualStyleBackColor = true;
+            // 
+            // tabControl1
+            // 
+            this.tabControl1.Controls.Add(this.tabPage1);
+            this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.tabControl1.Location = new System.Drawing.Point(0, 0);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(715, 515);
+            this.tabControl1.TabIndex = 1;
+            // 
+            // txtParentMenuName
+            // 
+            this.txtParentMenuName.Location = new System.Drawing.Point(114, 11);
+            this.txtParentMenuName.Name = "txtParentMenuName";
+            this.txtParentMenuName.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtParentMenuName.Properties.TreeList = this.treeListLookUpEdit1TreeList;
+            this.txtParentMenuName.Size = new System.Drawing.Size(294, 24);
+            this.txtParentMenuName.TabIndex = 116;
+            // 
+            // treeListLookUpEdit1TreeList
+            // 
+            this.treeListLookUpEdit1TreeList.Location = new System.Drawing.Point(0, 0);
+            this.treeListLookUpEdit1TreeList.Name = "treeListLookUpEdit1TreeList";
+            this.treeListLookUpEdit1TreeList.OptionsView.ShowIndentAsRowStyle = true;
+            this.treeListLookUpEdit1TreeList.Size = new System.Drawing.Size(400, 200);
+            this.treeListLookUpEdit1TreeList.TabIndex = 0;
+            // 
+            // SysMenuAdd
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(715, 515);
+            this.Controls.Add(this.tabControl1);
+            this.Name = "SysMenuAdd";
+            this.Text = "SysMenuAdd";
+            ((System.ComponentModel.ISupportInitialize)(this.txtStatus.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtIdx)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtFormNamespace.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtMenuType.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtMenuIco.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.txtMenuName.Properties)).EndInit();
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            this.tabPage1.ResumeLayout(false);
+            this.tabControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.txtParentMenuName.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.treeListLookUpEdit1TreeList)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private DevExpress.XtraEditors.LabelControl labelControl7;
+        private DevExpress.XtraEditors.ComboBoxEdit txtStatus;
+        private System.Windows.Forms.NumericUpDown txtIdx;
+        private DevExpress.XtraEditors.LabelControl labelControl1;
+        private DevExpress.XtraEditors.SimpleButton btnEsc;
+        private DevExpress.XtraEditors.SimpleButton btnSave;
+        private DevExpress.XtraEditors.LabelControl labelControl12;
+        private DevExpress.XtraEditors.LabelControl labelControl10;
+        private DevExpress.XtraEditors.LabelControl labelControl9;
+        private DevExpress.XtraEditors.LabelControl labelControl8;
+        private DevExpress.XtraEditors.LabelControl labelControl6;
+        private DevExpress.XtraEditors.MemoEdit txtFormNamespace;
+        private DevExpress.XtraEditors.LabelControl labelControl5;
+        private DevExpress.XtraEditors.ComboBoxEdit txtMenuType;
+        private DevExpress.XtraEditors.TextEdit txtMenuIco;
+        private DevExpress.XtraEditors.LabelControl labelControl4;
+        private DevExpress.XtraEditors.LabelControl labelControl3;
+        private DevExpress.XtraEditors.TextEdit txtMenuName;
+        private DevExpress.XtraEditors.LabelControl labelControl2;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.TabPage tabPage1;
+        private System.Windows.Forms.TabControl tabControl1;
+        private DevExpress.XtraEditors.TreeListLookUpEdit txtParentMenuName;
+        private DevExpress.XtraTreeList.TreeList treeListLookUpEdit1TreeList;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs
new file mode 100644
index 0000000..278b0ae
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.cs
@@ -0,0 +1,88 @@
+锘縰sing DevExpress.XtraEditors;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Gs.DevApp.ToolBox;
+using Gs.DevApp.Models;
+using DevExpress.XtraTreeList.Nodes;
+namespace Gs.DevApp.DevFrm.User
+{
+    public partial class SysMenuAdd : DevExpress.XtraEditors.XtraForm
+    {
+        public SysMenuAdd()
+        {
+            InitializeComponent();
+            btnSave.Click += BtnSave_Click;
+            btnEsc.Click += BtnEsc_Click;
+            getTree();
+        }
+
+        private void BtnEsc_Click(object sender, EventArgs e)
+        {
+            this.Dispose();
+        }
+
+        private void BtnSave_Click(object sender, EventArgs e)
+        {
+            string _upGuid = "";
+            TreeListNode focusedNode = txtParentMenuName.Properties.TreeList.FocusedNode;
+            if (focusedNode != null)
+            {
+                _upGuid = focusedNode.GetValue("guid").ToString();
+            }
+            var _obj = new
+            {
+                guid = "",//涓诲缓
+                upGuid = _upGuid,//涓婄骇鐨勪富寤�
+                name = txtMenuName.Text.Trim(),//鍚嶇О
+                serialNumber = "",//缂栧彿
+                icon = txtMenuIco.Text,//鑿滃崟鍥炬爣
+                status = txtStatus.SelectedIndex,//鐘舵��
+                fromPath = txtFormNamespace.Text.Trim(),//绐椾綋璺緞
+                idx = int.Parse(txtIdx.Value.ToString()),//鎺掑簭
+                category = txtMenuType.SelectedIndex,//绫诲瀷
+            };
+            string json = JsonConvert.SerializeObject(_obj);
+            try
+            {
+                Utility.HttpPost("", "MenuAction/EditModel", json);
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
+        private void getTree()
+        {
+            Models.PageQueryModel pgq = new Models.PageQueryModel(1, 999999, "idx", "desc", "", "");
+            string json = JsonConvert.SerializeObject(pgq);
+            string strReturn = "";
+            try
+            {
+                
+                strReturn =Utility.HttpPost("", "MenuAction/GetListPage", json);
+                ReturnModel<PageListModel> dd = Utility.GetTableByJson(strReturn);
+                DataTable dt = dd.rtnData.list;
+                txtParentMenuName.Properties.DataSource = dt;
+                txtParentMenuName.Properties.DisplayMember = "name";
+                txtParentMenuName.Properties.DataSource = dt;
+                txtParentMenuName.Properties.DisplayMember = "name";
+                txtParentMenuName.Properties.TreeList.KeyFieldName = "guid";
+                txtParentMenuName.Properties.TreeList.ParentFieldName = "upGuid";
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/User/SysMenuAdd.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/DevApp/Gs.DevApp/Gs.DevApp.csproj b/DevApp/Gs.DevApp/Gs.DevApp.csproj
new file mode 100644
index 0000000..a712d43
--- /dev/null
+++ b/DevApp/Gs.DevApp/Gs.DevApp.csproj
@@ -0,0 +1,194 @@
+锘�<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A7EB5F78-699E-4514-8905-30842765E673}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Gs.DevApp</RootNamespace>
+    <AssemblyName>Gs.DevApp</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="DevExpress.BonusSkins.v19.2" />
+    <Reference Include="DevExpress.Data.v19.2" />
+    <Reference Include="DevExpress.Utils.v19.2" />
+    <Reference Include="DevExpress.Sparkline.v19.2.Core" />
+    <Reference Include="DevExpress.XtraBars.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="DevExpress.XtraEditors.v19.2" />
+    <Reference Include="DevExpress.Printing.v19.2.Core" />
+    <Reference Include="DevExpress.XtraLayout.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
+    <Reference Include="DevExpress.XtraTreeList.v19.2, Version=19.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
+    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DevFrm\FrmLogin.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DevFrm\FrmLogin.Designer.cs">
+      <DependentUpon>FrmLogin.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DevFrm\FrmMain.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DevFrm\FrmMain.Designer.cs">
+      <DependentUpon>FrmMain.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DevFrm\User\Organization.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DevFrm\User\Organization.Designer.cs">
+      <DependentUpon>Organization.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DevFrm\User\SysMenu.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DevFrm\User\SysMenu.Designer.cs">
+      <DependentUpon>SysMenu.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DevFrm\User\SysMenuAdd.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DevFrm\User\SysMenuAdd.Designer.cs">
+      <DependentUpon>SysMenuAdd.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Models\PageQueryModel.cs" />
+    <Compile Include="Models\ReturnModel.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="TestForm\FluentDesignForm1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="TestForm\FluentDesignForm1.Designer.cs">
+      <DependentUpon>FluentDesignForm1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="TestForm\ToolbarForm1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="TestForm\ToolbarForm1.Designer.cs">
+      <DependentUpon>ToolbarForm1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ToolBox\LogHelper.cs" />
+    <Compile Include="ToolBox\Msg.cs" />
+    <Compile Include="ToolBox\Utility.cs" />
+    <Compile Include="UserControl\ShowDialogForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="UserControl\ShowDialogForm.designer.cs">
+      <DependentUpon>ShowDialogForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="UserControl\ToolBarMenu.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="UserControl\ToolBarMenu.Designer.cs">
+      <DependentUpon>ToolBarMenu.cs</DependentUpon>
+    </Compile>
+    <EmbeddedResource Include="DevFrm\FrmLogin.resx">
+      <DependentUpon>FrmLogin.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DevFrm\FrmMain.resx">
+      <DependentUpon>FrmMain.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DevFrm\User\Organization.resx">
+      <DependentUpon>Organization.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DevFrm\User\SysMenu.resx">
+      <DependentUpon>SysMenu.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DevFrm\User\SysMenuAdd.resx">
+      <DependentUpon>SysMenuAdd.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <EmbeddedResource Include="UserControl\ShowDialogForm.resx">
+      <DependentUpon>ShowDialogForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="UserControl\ToolBarMenu.resx">
+      <DependentUpon>ToolBarMenu.cs</DependentUpon>
+    </EmbeddedResource>
+    <None Include="App.config" />
+    <None Include="packages.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\trackingchanges_allmarkup_32x32.png" />
+    <None Include="Resources\trackingchanges_allmarkup_16x16.png" />
+    <None Include="Resources\removegroupfooter_32x32.png" />
+    <None Include="Resources\removegroupfooter_16x16.png" />
+    <None Include="Resources\trackingchanges_trackchanges_32x32.png" />
+    <None Include="Resources\trackingchanges_trackchanges_16x16.png" />
+    <None Include="Resources\exportfile_32x32.png" />
+    <None Include="Resources\exportfile_16x16.png" />
+    <None Include="Resources\show_32x32.png" />
+    <None Include="Resources\show_16x16.png" />
+    <None Include="Resources\renamedatasource_32x32.png" />
+    <None Include="Resources\renamedatasource_16x16.png" />
+    <None Include="Resources\convert_32x32.png" />
+    <None Include="Resources\convert_16x16.png" />
+    <None Include="Resources\converttorange_32x32.png" />
+    <None Include="Resources\converttorange_16x16.png" />
+    <None Include="Resources\checkbox2_32x32.png" />
+    <None Include="Resources\checkbox2_16x16.png" />
+    <None Include="Resources\forcetesting_32x32.png" />
+    <None Include="Resources\forcetesting_16x16.png" />
+    <Content Include="Resources\user_16x16.png" />
+  </ItemGroup>
+  <ItemGroup />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/Models/PageQueryModel.cs b/DevApp/Gs.DevApp/Models/PageQueryModel.cs
new file mode 100644
index 0000000..49b6240
--- /dev/null
+++ b/DevApp/Gs.DevApp/Models/PageQueryModel.cs
@@ -0,0 +1,63 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.DevApp.Models
+{
+    /// <summary>
+    /// 鏌ヨ瀹炰綋
+    /// </summary>
+    public class PageQueryModel
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="_currentPage">褰撳墠椤�</param>
+        /// <param name="_everyPageSize">姣忛〉澶у皬</param>
+        /// <param name="_sortName">鎺掑簭鍚�</param>
+        /// <param name="_sortOrder">鎺掑簭鏂瑰紡</param>
+        /// <param name="_keyWord">鏌ヨ鍏抽敭瀛�</param>
+        /// <param name="_keyWhere">鏌ヨ琛ㄨ揪寮� and 寮�澶�</param>
+        public PageQueryModel(int _currentPage, int _everyPageSize, string _sortName, string _sortOrder, string _keyWord, string _keyWhere)
+        {
+            this.currentPage = _currentPage;
+            this.everyPageSize = _everyPageSize;
+            this.sortName = _sortName;
+            this.sortOrder = _sortOrder;
+            this.keyWord = _keyWord;
+            this.keyWhere = _keyWhere;
+        }
+
+        /// <summary>
+        /// 褰撳墠椤�
+        /// </summary>
+        public int currentPage { get; set; }
+
+        /// <summary>
+        /// 姣忛〉澶у皬
+        /// </summary>
+        public int everyPageSize { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍚�
+        /// </summary>
+        public string sortName { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鏂瑰紡
+        /// </summary>
+        public string sortOrder { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鍏抽敭瀛�
+        /// </summary>
+        public string keyWord { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ琛ㄨ揪寮�
+        /// </summary>
+        public string keyWhere { get; set; }
+    }
+}
diff --git a/DevApp/Gs.DevApp/Models/ReturnModel.cs b/DevApp/Gs.DevApp/Models/ReturnModel.cs
new file mode 100644
index 0000000..68babb5
--- /dev/null
+++ b/DevApp/Gs.DevApp/Models/ReturnModel.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.DevApp.Models
+{
+    public class ReturnModel<T>
+    {
+        /// <summary>
+        ///  Default = -100榛樿, Unauthorized = -101闈炴硶璋冪敤, Exception = -102绯荤粺浠g爜寮傚父, Success = 1鎴愬姛
+        /// </summary>
+        public string rtnCode { set; get; }
+        public T rtnData { set; get; }
+        public string rtnMsg { get; set; }
+    }
+    public class PageListModel
+    {
+
+        /// <summary>
+        /// 鍒楄〃
+        /// </summary>
+        public System.Data.DataTable list { get; set; }
+        /// <summary>
+        /// 鎬婚〉鏁�
+        /// </summary>
+        public int pages;
+        /// <summary>
+        /// 鎬昏褰曟暟
+        /// </summary>
+        public int total;
+        /// <summary>
+        /// 姣忛〉澶у皬
+        /// </summary>
+        public int everyPageSize;
+        /// <summary>
+        ///  鎵╁睍鐢紝鍗曟枃鏈紝姣斿閲戦鍚堣绛夊叾瀹冮」鐩�
+        /// </summary>
+        public string extendText;
+        /// <summary>
+        /// 鎵╁睍鐢紝鍒楄〃
+        /// </summary>
+        public List<dynamic> extendList;
+    }
+
+}
diff --git a/DevApp/Gs.DevApp/Program.cs b/DevApp/Gs.DevApp/Program.cs
new file mode 100644
index 0000000..1bce4da
--- /dev/null
+++ b/DevApp/Gs.DevApp/Program.cs
@@ -0,0 +1,30 @@
+锘縰sing DevExpress.LookAndFeel;
+using DevExpress.Skins;
+using DevExpress.UserSkins;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace Gs.DevApp
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            DevFrm.FrmLogin fmLogin = new DevFrm.FrmLogin();
+            fmLogin.ShowDialog();
+            if (fmLogin.DialogResult == DialogResult.OK)
+            {
+                //鍦ㄧ嚎绋嬩腑鎵撳紑涓荤獥浣�
+                Application.Run(new DevFrm.FrmMain());
+            }
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/Properties/AssemblyInfo.cs b/DevApp/Gs.DevApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..b7ad83c
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,32 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Gs.DevApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Gs.DevApp")]
+[assembly: AssemblyCopyright("Copyright 漏  2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9006f149-aa49-4b8e-ba69-386d945fa738")]
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DevApp/Gs.DevApp/Properties/Resources.Designer.cs b/DevApp/Gs.DevApp/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..56fc616
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Resources.Designer.cs
@@ -0,0 +1,453 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Gs.DevApp.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+    /// </summary>
+    // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+    // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+    // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+    // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   杩斿洖姝ょ被浣跨敤鐨勭紦瀛樼殑 ResourceManager 瀹炰緥銆�
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Gs.DevApp.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   閲嶅啓褰撳墠绾跨▼鐨� CurrentUICulture 灞炴�э紝瀵�
+        ///   浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵�鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍��
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap _3dcolumn_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("3dcolumn_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap _3dcolumn_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("3dcolumn_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap _3dcylinder_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("3dcylinder_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap _3dcylinder_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("3dcylinder_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap apply_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("apply_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap area3d_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("area3d_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap area3d_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("area3d_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap checkbox_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("checkbox_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap checkbox2_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("checkbox2_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap checkbox2_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("checkbox2_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap convert_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("convert_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap convert_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("convert_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap converttorange_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("converttorange_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap converttorange_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("converttorange_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap download_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("download_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap dropandhighlowlines_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("dropandhighlowlines_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap dropandhighlowlines_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("dropandhighlowlines_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap editingfillleft_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("editingfillleft_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap exportfile_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("exportfile_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap exportfile_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("exportfile_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap filledradarwithoutmarkers_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("filledradarwithoutmarkers_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap forcetesting_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("forcetesting_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap forcetesting_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("forcetesting_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap legendnone2_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("legendnone2_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap linktoprevious_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("linktoprevious_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap listmultilevel_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("listmultilevel_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap removegroupfooter_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("removegroupfooter_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap removegroupfooter_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("removegroupfooter_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap renamedatasource_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("renamedatasource_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap renamedatasource_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("renamedatasource_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap show_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("show_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap show_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("show_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap task_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("task_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap trackingchanges_allmarkup_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("trackingchanges_allmarkup_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap trackingchanges_allmarkup_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("trackingchanges_allmarkup_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap trackingchanges_trackchanges_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("trackingchanges_trackchanges_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap trackingchanges_trackchanges_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("trackingchanges_trackchanges_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap user_16x16 {
+            get {
+                object obj = ResourceManager.GetObject("user_16x16", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   鏌ユ壘 System.Drawing.Bitmap 绫诲瀷鐨勬湰鍦板寲璧勬簮銆�
+        /// </summary>
+        internal static System.Drawing.Bitmap usergroup_32x32 {
+            get {
+                object obj = ResourceManager.GetObject("usergroup_32x32", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/Properties/Resources.resx b/DevApp/Gs.DevApp/Properties/Resources.resx
new file mode 100644
index 0000000..9de4c57
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Resources.resx
@@ -0,0 +1,238 @@
+锘�<?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="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="convert_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\convert_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="converttorange_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\converttorange_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="area3d_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\area3d_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="checkbox2_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\checkbox2_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="3dcylinder_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dcylinder_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="area3d_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\area3d_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="trackingchanges_allmarkup_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\trackingchanges_allmarkup_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="renamedatasource_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\renamedatasource_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="apply_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\apply_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="usergroup_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\usergroup_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="task_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\task_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="3dcolumn_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dcolumn_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="dropandhighlowlines_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\dropandhighlowlines_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="forcetesting_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\forcetesting_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="exportfile_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\exportfile_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="filledradarwithoutmarkers_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\filledradarwithoutmarkers_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="converttorange_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\converttorange_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="3dcylinder_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dcylinder_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="legendnone2_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\legendnone2_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="renamedatasource_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\renamedatasource_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="trackingchanges_trackchanges_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\trackingchanges_trackchanges_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="checkbox_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\checkbox_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="editingfillleft_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\editingfillleft_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="user_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\user_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="show_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\show_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="linktoprevious_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\linktoprevious_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="download_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\download_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="trackingchanges_trackchanges_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\trackingchanges_trackchanges_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="exportfile_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\exportfile_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="removegroupfooter_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\removegroupfooter_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="convert_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\convert_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="show_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\show_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="removegroupfooter_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\removegroupfooter_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="trackingchanges_allmarkup_32x32" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\trackingchanges_allmarkup_32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="dropandhighlowlines_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\dropandhighlowlines_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="checkbox2_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\checkbox2_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="3dcolumn_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dcolumn_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="listmultilevel_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\listmultilevel_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="forcetesting_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\forcetesting_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/Properties/Settings.Designer.cs b/DevApp/Gs.DevApp/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..c646499
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+//     姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+//     杩愯鏃剁増鏈�:4.0.30319.42000
+//
+//     瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+//     閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace GsDxApp.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/Properties/Settings.settings b/DevApp/Gs.DevApp/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/DevApp/Gs.DevApp/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
diff --git a/DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png b/DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png
new file mode 100644
index 0000000..daf5d5b
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcolumn_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png b/DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png
new file mode 100644
index 0000000..86212c6
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcolumn_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png b/DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png
new file mode 100644
index 0000000..3c51ea7
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcylinder_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png b/DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png
new file mode 100644
index 0000000..5b5c9bc
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/3dcylinder_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/apply_32x32.png b/DevApp/Gs.DevApp/Resources/apply_32x32.png
new file mode 100644
index 0000000..af2cae4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/apply_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/area3d_16x16.png b/DevApp/Gs.DevApp/Resources/area3d_16x16.png
new file mode 100644
index 0000000..ebb0ee3
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/area3d_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/area3d_32x32.png b/DevApp/Gs.DevApp/Resources/area3d_32x32.png
new file mode 100644
index 0000000..411ce71
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/area3d_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/checkbox2_16x16.png b/DevApp/Gs.DevApp/Resources/checkbox2_16x16.png
new file mode 100644
index 0000000..3e4ab0e
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/checkbox2_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/checkbox2_32x32.png b/DevApp/Gs.DevApp/Resources/checkbox2_32x32.png
new file mode 100644
index 0000000..370f912
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/checkbox2_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/checkbox_32x32.png b/DevApp/Gs.DevApp/Resources/checkbox_32x32.png
new file mode 100644
index 0000000..a82728d
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/checkbox_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/colormixer_32x32.png b/DevApp/Gs.DevApp/Resources/colormixer_32x32.png
new file mode 100644
index 0000000..00f4edc
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/colormixer_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/convert_16x16.png b/DevApp/Gs.DevApp/Resources/convert_16x16.png
new file mode 100644
index 0000000..e696a02
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/convert_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/convert_32x32.png b/DevApp/Gs.DevApp/Resources/convert_32x32.png
new file mode 100644
index 0000000..89f9ff3
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/convert_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/converttorange_16x16.png b/DevApp/Gs.DevApp/Resources/converttorange_16x16.png
new file mode 100644
index 0000000..53b49a5
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/converttorange_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/converttorange_32x32.png b/DevApp/Gs.DevApp/Resources/converttorange_32x32.png
new file mode 100644
index 0000000..0b73409
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/converttorange_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/download_32x32.png b/DevApp/Gs.DevApp/Resources/download_32x32.png
new file mode 100644
index 0000000..54b6385
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/download_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png
new file mode 100644
index 0000000..797bdbd
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png
new file mode 100644
index 0000000..7bb80c2
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/dropandhighlowlines_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png b/DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png
new file mode 100644
index 0000000..c460489
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/editingfillleft_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/exportfile_16x16.png b/DevApp/Gs.DevApp/Resources/exportfile_16x16.png
new file mode 100644
index 0000000..618b391
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/exportfile_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/exportfile_32x32.png b/DevApp/Gs.DevApp/Resources/exportfile_32x32.png
new file mode 100644
index 0000000..41acb1e
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/exportfile_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png b/DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png
new file mode 100644
index 0000000..d653d86
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/filledradarwithoutmarkers_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/forcetesting_16x16.png b/DevApp/Gs.DevApp/Resources/forcetesting_16x16.png
new file mode 100644
index 0000000..be7712d
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/forcetesting_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/forcetesting_32x32.png b/DevApp/Gs.DevApp/Resources/forcetesting_32x32.png
new file mode 100644
index 0000000..eeca1e4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/forcetesting_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/legendnone2_32x32.png b/DevApp/Gs.DevApp/Resources/legendnone2_32x32.png
new file mode 100644
index 0000000..d75ad74
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/legendnone2_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png b/DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png
new file mode 100644
index 0000000..649e9ae
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/linktoprevious_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png b/DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png
new file mode 100644
index 0000000..f650d89
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/listmultilevel_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png b/DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png
new file mode 100644
index 0000000..a51c5f4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/removegroupfooter_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png b/DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png
new file mode 100644
index 0000000..d7ac0c4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/removegroupfooter_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png b/DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png
new file mode 100644
index 0000000..d0301ad
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/renamedatasource_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png b/DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png
new file mode 100644
index 0000000..16659b7
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/renamedatasource_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/show_16x16.png b/DevApp/Gs.DevApp/Resources/show_16x16.png
new file mode 100644
index 0000000..0c1ab27
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/show_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/show_32x32.png b/DevApp/Gs.DevApp/Resources/show_32x32.png
new file mode 100644
index 0000000..3635e38
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/show_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/task_32x32.png b/DevApp/Gs.DevApp/Resources/task_32x32.png
new file mode 100644
index 0000000..3fc5129
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/task_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png
new file mode 100644
index 0000000..0055ad4
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png
new file mode 100644
index 0000000..5f7c719
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_allmarkup_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png
new file mode 100644
index 0000000..064d382
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png
new file mode 100644
index 0000000..8f5ff70
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/trackingchanges_trackchanges_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/user_16x16.png b/DevApp/Gs.DevApp/Resources/user_16x16.png
new file mode 100644
index 0000000..a683dec
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/user_16x16.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/Resources/usergroup_32x32.png b/DevApp/Gs.DevApp/Resources/usergroup_32x32.png
new file mode 100644
index 0000000..d97c9df
--- /dev/null
+++ b/DevApp/Gs.DevApp/Resources/usergroup_32x32.png
Binary files differ
diff --git a/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs
new file mode 100644
index 0000000..cb226f6
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.Designer.cs
@@ -0,0 +1,105 @@
+锘�
+namespace Gs.DevApp.TestForm
+{
+    partial class FluentDesignForm1
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.fluentDesignFormContainer1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer();
+            this.accordionControl1 = new DevExpress.XtraBars.Navigation.AccordionControl();
+            this.fluentDesignFormControl1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl();
+            this.accordionControlElement1 = new DevExpress.XtraBars.Navigation.AccordionControlElement();
+            this.fluentFormDefaultManager1 = new DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager(this.components);
+            ((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // fluentDesignFormContainer1
+            // 
+            this.fluentDesignFormContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.fluentDesignFormContainer1.Location = new System.Drawing.Point(260, 46);
+            this.fluentDesignFormContainer1.Name = "fluentDesignFormContainer1";
+            this.fluentDesignFormContainer1.Size = new System.Drawing.Size(431, 427);
+            this.fluentDesignFormContainer1.TabIndex = 0;
+            // 
+            // accordionControl1
+            // 
+            this.accordionControl1.Dock = System.Windows.Forms.DockStyle.Left;
+            this.accordionControl1.Elements.AddRange(new DevExpress.XtraBars.Navigation.AccordionControlElement[] {
+            this.accordionControlElement1});
+            this.accordionControl1.Location = new System.Drawing.Point(0, 46);
+            this.accordionControl1.Name = "accordionControl1";
+            this.accordionControl1.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Touch;
+            this.accordionControl1.Size = new System.Drawing.Size(260, 427);
+            this.accordionControl1.TabIndex = 1;
+            this.accordionControl1.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
+            // 
+            // fluentDesignFormControl1
+            // 
+            this.fluentDesignFormControl1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.fluentDesignFormControl1.FluentDesignForm = this;
+            this.fluentDesignFormControl1.Location = new System.Drawing.Point(0, 0);
+            this.fluentDesignFormControl1.Manager = this.fluentFormDefaultManager1;
+            this.fluentDesignFormControl1.Name = "fluentDesignFormControl1";
+            this.fluentDesignFormControl1.Size = new System.Drawing.Size(691, 46);
+            this.fluentDesignFormControl1.TabIndex = 2;
+            this.fluentDesignFormControl1.TabStop = false;
+            // 
+            // accordionControlElement1
+            // 
+            this.accordionControlElement1.Name = "accordionControlElement1";
+            this.accordionControlElement1.Text = "Element1";
+            // 
+            // Form1
+            // 
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(691, 473);
+            this.ControlContainer = this.fluentDesignFormContainer1;
+            this.Controls.Add(this.fluentDesignFormContainer1);
+            this.Controls.Add(this.accordionControl1);
+            this.Controls.Add(this.fluentDesignFormControl1);
+            this.FluentDesignFormControl = this.fluentDesignFormControl1;
+            this.Name = "FluentDesignForm1";
+            this.NavigationControl = this.accordionControl1;
+            this.Text = "FluentDesignForm1";
+            ((System.ComponentModel.ISupportInitialize)(this.accordionControl1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentDesignFormControl1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.fluentFormDefaultManager1)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+        private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer fluentDesignFormContainer1;
+        private DevExpress.XtraBars.Navigation.AccordionControl accordionControl1;
+        private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl fluentDesignFormControl1;
+        private DevExpress.XtraBars.Navigation.AccordionControlElement accordionControlElement1;
+        private DevExpress.XtraBars.FluentDesignSystem.FluentFormDefaultManager fluentFormDefaultManager1;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs
new file mode 100644
index 0000000..9957245
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/FluentDesignForm1.cs
@@ -0,0 +1,20 @@
+锘縰sing DevExpress.XtraBars;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.TestForm
+{
+    public partial class FluentDesignForm1 : DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm
+    {
+        public FluentDesignForm1()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs
new file mode 100644
index 0000000..09e834f
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.Designer.cs
@@ -0,0 +1,140 @@
+锘�
+namespace Gs.DevApp.TestForm
+{
+    partial class ToolbarForm1
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+            this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+            this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+            this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+            this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+            this.bar1 = new DevExpress.XtraBars.Bar();
+            this.bar2 = new DevExpress.XtraBars.Bar();
+            this.bar3 = new DevExpress.XtraBars.Bar();
+            ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // barManager1
+            // 
+            this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+                    this.bar1,
+                    this.bar2,
+                    this.bar3});
+            this.barManager1.DockControls.Add(this.barDockControlTop);
+            this.barManager1.DockControls.Add(this.barDockControlBottom);
+            this.barManager1.DockControls.Add(this.barDockControlLeft);
+            this.barManager1.DockControls.Add(this.barDockControlRight);
+            this.barManager1.Form = this;
+            this.barManager1.MainMenu = this.bar2;
+            this.barManager1.MaxItemId = 0;
+            this.barManager1.StatusBar = this.bar3;
+            // 
+            // barDockControlTop
+            // 
+            this.barDockControlTop.CausesValidation = false;
+            this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+            this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
+            this.barDockControlTop.Size = new System.Drawing.Size(632, 51);
+            // 
+            // barDockControlBottom
+            // 
+            this.barDockControlBottom.CausesValidation = false;
+            this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.barDockControlBottom.Location = new System.Drawing.Point(0, 255);
+            this.barDockControlBottom.Size = new System.Drawing.Size(632, 23);
+            // 
+            // barDockControlLeft
+            // 
+            this.barDockControlLeft.CausesValidation = false;
+            this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+            this.barDockControlLeft.Location = new System.Drawing.Point(0, 51);
+            this.barDockControlLeft.Size = new System.Drawing.Size(0, 204);
+            // 
+            // barDockControlRight
+            // 
+            this.barDockControlRight.CausesValidation = false;
+            this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+            this.barDockControlRight.Location = new System.Drawing.Point(632, 51);
+            this.barDockControlRight.Size = new System.Drawing.Size(0, 204);
+            // 
+            // bar1
+            // 
+            this.bar1.BarName = "Tools";
+            this.bar1.DockCol = 0;
+            this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+            this.bar1.Text = "Tools";
+            // 
+            // bar2
+            // 
+            this.bar2.BarName = "Main menu";
+            this.bar2.DockCol = 0;
+            this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+            this.bar2.OptionsBar.MultiLine = true;
+            this.bar2.OptionsBar.UseWholeRow = true;
+            this.bar2.Text = "Main menu";
+            // 
+            // bar3
+            // 
+            this.bar3.BarName = "Status bar";
+            this.bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+            this.bar3.DockCol = 0;
+            this.bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+            this.bar3.OptionsBar.AllowQuickCustomization = false;
+            this.bar3.OptionsBar.DrawDragBorder = false;
+            this.bar3.OptionsBar.UseWholeRow = true;
+            this.bar3.Text = "Status bar";
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(632, 278);
+            this.Controls.Add(this.barDockControlLeft);
+            this.Controls.Add(this.barDockControlRight);
+            this.Controls.Add(this.barDockControlBottom);
+            this.Controls.Add(this.barDockControlTop);
+            this.Text = "ToolbarForm1";
+            ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private DevExpress.XtraBars.BarManager barManager1;
+        private DevExpress.XtraBars.Bar bar1;
+        private DevExpress.XtraBars.Bar bar2;
+        private DevExpress.XtraBars.Bar bar3;
+        private DevExpress.XtraBars.BarDockControl barDockControlTop;
+        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+        private DevExpress.XtraBars.BarDockControl barDockControlRight;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs
new file mode 100644
index 0000000..8ff9464
--- /dev/null
+++ b/DevApp/Gs.DevApp/TestForm/ToolbarForm1.cs
@@ -0,0 +1,21 @@
+锘縰sing DevExpress.XtraBars;
+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 Gs.DevApp.TestForm
+{
+    public partial class ToolbarForm1 : DevExpress.XtraEditors.XtraForm
+    {
+        public ToolbarForm1()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/ToolBox/LogHelper.cs b/DevApp/Gs.DevApp/ToolBox/LogHelper.cs
new file mode 100644
index 0000000..4378e51
--- /dev/null
+++ b/DevApp/Gs.DevApp/ToolBox/LogHelper.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.DevApp.ToolBox
+{
+    public class LogHelper
+    {
+        //鍒涘缓鏃ュ織鐩綍
+        private static string path = AppContext.BaseDirectory + System.Configuration.ConfigurationSettings.AppSettings.Get("LogPath").ToString();
+        /**
+         * 鍚戞棩蹇楁枃浠跺啓鍏ヨ皟璇曚俊鎭�
+         * @param className 绫诲悕
+         * @param content 鍐欏叆鍐呭
+         */
+        public static void Debug(string className, string content)
+        {
+            WriteLog("DEBUG", className, content);
+        }
+
+        /**
+        * 瀹為檯鐨勫啓鏃ュ織鎿嶄綔
+        * @param type 鏃ュ織璁板綍绫诲瀷
+        * @param className 绫诲悕
+        * @param content 鍐欏叆鍐呭
+        */
+        protected static void WriteLog(string type, string className, string content)
+        {
+            if (!Directory.Exists(path))//濡傛灉鏃ュ織鐩綍涓嶅瓨鍦ㄥ氨鍒涘缓
+            {
+                Directory.CreateDirectory(path);
+            }
+            string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//鑾峰彇褰撳墠绯荤粺鏃堕棿
+            string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//鐢ㄦ棩鏈熷鏃ュ織鏂囦欢鍛藉悕
+                                                                                        //鍒涘缓鎴栨墦寮�鏃ュ織鏂囦欢锛屽悜鏃ュ織鏂囦欢鏈熬杩藉姞璁板綍
+            StreamWriter mySw = File.AppendText(filename);
+            //鍚戞棩蹇楁枃浠跺啓鍏ュ唴瀹�
+            string write_content = time + " " + type + " " + className + ": " + content;
+            mySw.WriteLine(write_content);
+            //鍏抽棴鏃ュ織鏂囦欢
+            mySw.Close();
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/ToolBox/Msg.cs b/DevApp/Gs.DevApp/ToolBox/Msg.cs
new file mode 100644
index 0000000..9e8f0f7
--- /dev/null
+++ b/DevApp/Gs.DevApp/ToolBox/Msg.cs
@@ -0,0 +1,100 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.ToolBox
+{
+    /// <summary>
+    ///  绯荤粺娑堟伅鎻愮ず绐椾綋
+    /// </summary>
+    public class Msg
+    {
+        /// <summary>
+        ///  鎵撳紑瀵硅瘽妗�
+        /// </summary>
+        /// <param name="msg">鏈瀵硅瘽鍐呭</param>
+        /// <returns></returns>
+        public static bool AskQuestion(string msg)
+        {
+            DialogResult r;
+            r = MessageBox.Show(msg, "纭",
+                MessageBoxButtons.YesNo,
+                MessageBoxIcon.Question,
+                MessageBoxDefaultButton.Button2);
+            return r == DialogResult.Yes;
+        }
+
+        /// <summary>
+        ///  閿欒娑堟伅鎻愮ず妗�
+        /// </summary>
+        /// <param name="msg">閿欒娑堟伅鍐呭</param>
+        public static void ShowError(string msg)
+        {
+            MessageBox.Show(msg, "璀﹀憡",
+                MessageBoxButtons.OK,
+                MessageBoxIcon.Hand,
+                MessageBoxDefaultButton.Button1);
+        }
+
+        /// <summary>
+        ///  鏄剧ず绯荤粺寮傚父
+        /// </summary>
+        /// <param name="e">绯荤粺寮傚父</param>
+        public static void ShowException(Exception e)
+        {
+            var s = e.Message;
+            var innerMsg = string.Empty;
+
+            if (e.InnerException != null)
+            {
+                innerMsg = e.InnerException.Message;
+                s += "\n" + innerMsg;
+            }
+
+            Warning(s);
+        }
+
+        public static void ShowException(Exception ex, string customMessage)
+        {
+            //if (ex is CustomException)
+            //{
+            //    ShowException(ex);
+            //}
+            //else if (customMessage != "")
+            //{
+            //    Warning(customMessage);
+            //}
+            //else
+            //{
+            //    Warning(ex.Message);
+            //}
+        }
+
+        /// <summary>
+        ///  淇℃伅鎻愮ず妗�
+        /// </summary>
+        /// <param name="msg">鏈鏄剧ず鐨勬秷鎭�</param>
+        public static void ShowInformation(string msg)
+        {
+            MessageBox.Show(msg, "淇℃伅",
+                MessageBoxButtons.OK,
+                MessageBoxIcon.Asterisk,
+                MessageBoxDefaultButton.Button1);
+        }
+
+        /// <summary>
+        ///  璀﹀憡鎻愮ず妗�
+        /// </summary>
+        /// <param name="msg">璀﹀憡鍐呭</param>
+        public static void Warning(string msg)
+        {
+            MessageBox.Show(msg, "璀﹀憡",
+                MessageBoxButtons.OK,
+                MessageBoxIcon.Exclamation,
+                MessageBoxDefaultButton.Button1);
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/ToolBox/Utility.cs b/DevApp/Gs.DevApp/ToolBox/Utility.cs
new file mode 100644
index 0000000..c55e1e3
--- /dev/null
+++ b/DevApp/Gs.DevApp/ToolBox/Utility.cs
@@ -0,0 +1,131 @@
+锘縰sing Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Gs.DevApp.ToolBox;
+using System.Resources;
+using System.Drawing;
+using Newtonsoft.Json;
+using Gs.DevApp.Models;
+
+namespace Gs.DevApp.ToolBox
+{
+    /// <summary>
+    /// 閫氱敤绫�
+    /// </summary>
+    public class Utility
+    {
+        private static string WebApiUrl = System.Configuration.ConfigurationSettings.AppSettings.Get("WebApiUrl").ToString();
+
+        /// <summary>
+        /// httpPost璁块棶鏈嶅姟
+        /// </summary>
+        /// <param name="url">鏈嶅姟鍦板潃</param>
+        /// <param name="meth">鏂规硶鍚嶇О</param>
+        /// <param name="param">鍙傛暟</param>
+        /// <returns></returns>
+        public static string HttpPost(string url, string meth, string param)
+        {
+            if (string.IsNullOrEmpty(url))
+                url = WebApiUrl;
+            url += meth;
+            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
+            request.Method = "POST";
+            request.ContentType = "application/json";
+            request.Headers.Add("token", GetBasicAuthTicket());
+            request.Accept = "*/*";
+            request.Timeout = 15000;
+            request.AllowAutoRedirect = false;
+            StreamWriter requestStream = null;
+            WebResponse response = null;
+            string responseStr = null;
+            try
+            {
+                requestStream = new StreamWriter(request.GetRequestStream());
+                requestStream.Write(param);
+                requestStream.Close();
+                response = request.GetResponse();
+                if (response != null)
+                {
+                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
+                    responseStr = reader.ReadToEnd();
+                    //File.WriteAllText(Server.MapPath("~/") + @"\test.txt", responseStr); 
+                    reader.Close();
+                }
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+            finally
+            {
+                request = null;
+                requestStream = null;
+                response = null;
+            }
+            return responseStr;
+        }
+        /// <summary>
+        /// 鏍规嵁鍥剧墖鍚嶈鍙栬祫婧愭枃浠�,涓嶅甫鍚庣紑鍚�
+        /// </summary>
+        /// <param name="imageName"></param>
+        /// <returns></returns>
+        public static Image GetImgFromResource(string imageName)
+        {
+            // 鑾峰彇褰撳墠绋嬪簭闆�
+            Assembly assembly = Assembly.GetExecutingAssembly();
+            // 鍒涘缓璧勬簮绠$悊鍣ㄦ潵璁块棶璧勬簮
+            ResourceManager resourceManager = new ResourceManager("GsDxApp.Properties.Resources", assembly);
+            // 灏濊瘯鑾峰彇鍥剧墖璧勬簮
+            Image image = resourceManager.GetObject(imageName) as Image;
+            if (image != null)
+            {
+                return image;
+            }
+            else
+            {
+                return null;
+            }
+        }
+        /// <summary>
+        /// 璇诲彇token
+        /// </summary>
+        /// <returns></returns>
+        public static string GetBasicAuthTicket()
+        {
+            string token = Guid.NewGuid().ToString();
+            return token;
+        }
+        /// <summary>
+        /// 鏍囧噯json涓茶繑鍥� table锛�
+        /// </summary>
+        /// <param name="strReturn"></param>
+        /// <returns></returns>
+        public static ReturnModel<PageListModel> GetTableByJson(string strReturn)
+        {
+            ReturnModel<PageListModel> rto = new ReturnModel<PageListModel>();
+            JObject json = JObject.Parse(strReturn);
+            rto.rtnCode = json["rtnCode"].ToString();
+            rto.rtnMsg = json["rtnMsg"].ToString();
+            rto.rtnData = new PageListModel();
+            rto.rtnData.pages = int.Parse(json["rtnData"]["pages"].ToString());
+            rto.rtnData.total = int.Parse(json["rtnData"]["total"].ToString());
+            rto.rtnData.everyPageSize = int.Parse(json["rtnData"]["everyPageSize"].ToString());
+            JArray array = new JArray();
+            var d = json["rtnData"]["list"];
+            foreach (var a in d)
+            {
+                array.Add(a);
+            }
+            DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
+            rto.rtnData.list = dt;
+            return rto;
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs
new file mode 100644
index 0000000..6234de0
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.cs
@@ -0,0 +1,172 @@
+锘縰sing System.ComponentModel;
+
+namespace Gs.DevApp.UserControl
+{
+    public partial class ShowDialogForm : DevExpress.XtraEditors.XtraForm
+    {
+        #region Fields & Properties
+        /// <summary>
+        /// 鏍囬
+        /// </summary>
+        private string caption;
+
+        public string Caption
+        {
+            get { return caption; }
+            set { caption = value; }
+        }
+        /// <summary>
+        /// 娑堟伅
+        /// </summary>
+        private string message;
+
+        public string Message
+        {
+            get { return message; }
+            set { message = value; }
+        }
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        private string content;
+
+        public string Content
+        {
+            get { return content; }
+            set { content = value; }
+        }
+        /// <summary>
+        /// 杩涘害鏉℃渶灏忓��
+        /// </summary>
+        private int minProcess = 1;
+
+        public int MinProcess
+        {
+            get { return minProcess; }
+            set { minProcess = value; }
+        }
+        /// <summary>
+        /// 杩涘害鏉℃渶澶у��
+        /// </summary>
+        private int maxProcess = 100;
+
+        public int MaxProcess
+        {
+            get { return maxProcess; }
+            set { maxProcess = value; }
+        }
+        #endregion
+
+        #region Constructed Function
+        public ShowDialogForm()
+        {
+            InitializeComponent();
+        }
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        /// <param name="_caption">鎻愮ず</param>
+        public ShowDialogForm(string _caption)
+            : this(_caption, "", "", 100)
+        {
+        }
+
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        /// <param name="_caption"></param>
+        /// <param name="_message"></param>
+        public ShowDialogForm(string _caption,string _message) 
+            : this(_caption, _message, "",100)
+        {
+        }
+
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        /// <param name="_caption"></param>
+        /// <param name="_message"></param>
+        /// <param name="_content"></param>
+        public ShowDialogForm(string _caption, string _message,string _content)
+            : this(_caption, _message, _content, 100)
+        {
+        }
+        
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        /// <param name="_caption">鎻愮ず</param>
+        /// <param name="_message">娑堟伅鍐呭</param>
+        /// <param name="_content">璇︾粏鎻忚堪</param>
+        /// <param name="_maxProcess">杩涘害鏉℃渶澶у��</param>
+        public ShowDialogForm(string _caption, string _message,string _content,int _maxProcess)
+            : this()
+        {
+            this.Caption = "";
+            this.Message = "";
+            this.Content = "";
+
+            this.Caption = _caption == "" ? "鎻愮ず" : _caption;
+            this.Message = _message == "" ? "姝e湪鍔犺浇锛岃绋嶅悗......" : _message;
+            this.Content = _content;
+            this.maxProcess = _maxProcess > this.MinProcess ? _maxProcess : MinProcess;
+            
+            lblCaption.Text = this.Caption;
+            lblMessage.Text = this.Message;
+            lblContent.Text = this.Content;
+            progressShow.Properties.Minimum = MinProcess;
+            progressShow.Properties.Maximum = MaxProcess;
+            progressShow.Properties.Step = 1;
+            progressShow.PerformStep();
+
+            this.ShowInTaskbar = false;
+            this.TopMost = true;
+            this.Show();
+            this.Refresh();
+        }
+        #endregion
+
+        #region Methods
+        /// <summary>
+        /// 璁剧疆鎻愮ず
+        /// </summary>
+        /// <param name="newCaption"></param>
+        public void SetCaption(string newCaption)
+        {
+            this.Caption = newCaption;
+            lblCaption.Text = this.Caption;
+            progressShow.PerformStep();
+            this.Refresh();
+        }
+        /// <summary>
+        /// 璁剧疆娑堟伅
+        /// </summary>
+        /// <param name="newMessage"></param>
+        public void SetMessage(string newMessage)
+        {
+            this.Message = newMessage;
+            lblMessage.Text = this.Message;
+            progressShow.PerformStep();
+            this.Refresh();
+        }
+        /// <summary>
+        /// 璁剧疆鎻忚堪
+        /// </summary>
+        /// <param name="newContent"></param>
+        public void SetContent(string newContent)
+        {
+            this.Content = newContent;
+            lblContent.Text = this.Content;
+            progressShow.PerformStep();
+            this.Refresh();
+        }
+        #endregion
+
+        #region Events
+        protected override void OnClosing(CancelEventArgs e)
+        {
+            base.OnClosing(e);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs
new file mode 100644
index 0000000..f163c4c
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.designer.cs
@@ -0,0 +1,143 @@
+锘縩amespace Gs.DevApp.UserControl
+{
+    partial class ShowDialogForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
+            this.lblCaption = new DevExpress.XtraEditors.LabelControl();
+            this.lblMessage = new DevExpress.XtraEditors.LabelControl();
+            this.lblContent = new DevExpress.XtraEditors.LabelControl();
+            this.progressShow = new DevExpress.XtraEditors.ProgressBarControl();
+            this.panelControl2 = new DevExpress.XtraEditors.PanelControl();
+            ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
+            this.panelControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.progressShow.Properties)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.panelControl2)).BeginInit();
+            this.panelControl2.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // panelControl1
+            // 
+            this.panelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Style3D;
+            this.panelControl1.Controls.Add(this.lblCaption);
+            this.panelControl1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panelControl1.Location = new System.Drawing.Point(0, 0);
+            this.panelControl1.Name = "panelControl1";
+            this.panelControl1.Size = new System.Drawing.Size(436, 34);
+            this.panelControl1.TabIndex = 0;
+            // 
+            // lblCaption
+            // 
+            this.lblCaption.Location = new System.Drawing.Point(5, 9);
+            this.lblCaption.Name = "lblCaption";
+            this.lblCaption.Size = new System.Drawing.Size(41, 14);
+            this.lblCaption.TabIndex = 0;
+            this.lblCaption.Text = "Caption";
+            // 
+            // lblMessage
+            // 
+            this.lblMessage.Location = new System.Drawing.Point(24, 7);
+            this.lblMessage.Name = "lblMessage";
+            this.lblMessage.Size = new System.Drawing.Size(46, 14);
+            this.lblMessage.TabIndex = 2;
+            this.lblMessage.Text = "Message";
+            // 
+            // lblContent
+            // 
+            this.lblContent.Location = new System.Drawing.Point(24, 31);
+            this.lblContent.Name = "lblContent";
+            this.lblContent.Size = new System.Drawing.Size(45, 14);
+            this.lblContent.TabIndex = 3;
+            this.lblContent.Text = "Content";
+            // 
+            // progressShow
+            // 
+            this.progressShow.EditValue = 1;
+            this.progressShow.Location = new System.Drawing.Point(24, 59);
+            this.progressShow.Name = "progressShow";
+            this.progressShow.Properties.Appearance.BackColor = System.Drawing.Color.Transparent;
+            this.progressShow.Properties.Appearance.ForeColor = System.Drawing.Color.Black;
+            this.progressShow.Properties.EndColor = System.Drawing.Color.Empty;
+            this.progressShow.Properties.LookAndFeel.SkinName = "Blue";
+            this.progressShow.Properties.LookAndFeel.UseDefaultLookAndFeel = false;
+            this.progressShow.Properties.LookAndFeel.UseWindowsXPTheme = true;
+            this.progressShow.Properties.ReadOnly = true;
+            this.progressShow.Properties.ShowTitle = true;
+            this.progressShow.Properties.StartColor = System.Drawing.Color.Empty;
+            this.progressShow.Properties.Step = 1;
+            this.progressShow.Size = new System.Drawing.Size(400, 15);
+            this.progressShow.TabIndex = 4;
+            // 
+            // panelControl2
+            // 
+            this.panelControl2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.panelControl2.Controls.Add(this.lblContent);
+            this.panelControl2.Controls.Add(this.progressShow);
+            this.panelControl2.Controls.Add(this.lblMessage);
+            this.panelControl2.Location = new System.Drawing.Point(0, 38);
+            this.panelControl2.Name = "panelControl2";
+            this.panelControl2.Size = new System.Drawing.Size(436, 83);
+            this.panelControl2.TabIndex = 5;
+            // 
+            // ShowDialogForm
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(436, 124);
+            this.Controls.Add(this.panelControl2);
+            this.Controls.Add(this.panelControl1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "ShowDialogForm";
+            this.ShowIcon = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "ShowDialogForm";
+            ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
+            this.panelControl1.ResumeLayout(false);
+            this.panelControl1.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.progressShow.Properties)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.panelControl2)).EndInit();
+            this.panelControl2.ResumeLayout(false);
+            this.panelControl2.PerformLayout();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private DevExpress.XtraEditors.PanelControl panelControl1;
+        private DevExpress.XtraEditors.LabelControl lblCaption;
+        private DevExpress.XtraEditors.LabelControl lblMessage;
+        private DevExpress.XtraEditors.LabelControl lblContent;
+        private DevExpress.XtraEditors.ProgressBarControl progressShow;
+        private DevExpress.XtraEditors.PanelControl panelControl2;
+    }
+}
\ No newline at end of file
diff --git a/DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ShowDialogForm.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/DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs
new file mode 100644
index 0000000..ecb27c2
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.Designer.cs
@@ -0,0 +1,295 @@
+锘�
+namespace Gs.DevApp.UserControl
+{
+    partial class ToolBarMenu
+    {
+        /// <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()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.bar4 = new DevExpress.XtraBars.Bar();
+            this.bar1 = new DevExpress.XtraBars.Bar();
+            this.barButtonItem2 = new DevExpress.XtraBars.BarButtonItem();
+            this.barButtonItem1 = new DevExpress.XtraBars.BarButtonItem();
+            this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+            this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+            this.bar2 = new DevExpress.XtraBars.Bar();
+            this.btnAdd = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem2 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem3 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem4 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem5 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem6 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem7 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem8 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem9 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barLargeButtonItem10 = new DevExpress.XtraBars.BarLargeButtonItem();
+            this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+            this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+            this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+            this.bar3 = new DevExpress.XtraBars.Bar();
+            ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // bar4
+            // 
+            this.bar4.BarName = "Custom 5";
+            this.bar4.DockCol = 0;
+            this.bar4.DockRow = 2;
+            this.bar4.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+            this.bar4.Text = "Custom 5";
+            // 
+            // bar1
+            // 
+            this.bar1.BarName = "Tools";
+            this.bar1.DockCol = 0;
+            this.bar1.DockRow = 1;
+            this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+            this.bar1.Text = "Tools";
+            // 
+            // barButtonItem2
+            // 
+            this.barButtonItem2.Caption = "barButtonItem2";
+            this.barButtonItem2.Id = 11;
+            this.barButtonItem2.Name = "barButtonItem2";
+            // 
+            // barButtonItem1
+            // 
+            this.barButtonItem1.Id = 8;
+            this.barButtonItem1.Name = "barButtonItem1";
+            // 
+            // barDockControlLeft
+            // 
+            this.barDockControlLeft.CausesValidation = false;
+            this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+            this.barDockControlLeft.Location = new System.Drawing.Point(0, 71);
+            this.barDockControlLeft.Manager = this.barManager1;
+            this.barDockControlLeft.Size = new System.Drawing.Size(0, 79);
+            // 
+            // barManager1
+            // 
+            this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+            this.bar2});
+            this.barManager1.DockControls.Add(this.barDockControlTop);
+            this.barManager1.DockControls.Add(this.barDockControlBottom);
+            this.barManager1.DockControls.Add(this.barDockControlLeft);
+            this.barManager1.DockControls.Add(this.barDockControlRight);
+            this.barManager1.Form = this;
+            this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+            this.btnAdd,
+            this.barLargeButtonItem2,
+            this.barLargeButtonItem3,
+            this.barLargeButtonItem4,
+            this.barLargeButtonItem5,
+            this.barButtonItem1,
+            this.barLargeButtonItem6,
+            this.barLargeButtonItem7,
+            this.barButtonItem2,
+            this.barLargeButtonItem8,
+            this.barLargeButtonItem9,
+            this.barLargeButtonItem10});
+            this.barManager1.MainMenu = this.bar2;
+            this.barManager1.MaxItemId = 15;
+            // 
+            // bar2
+            // 
+            this.bar2.BarName = "Main menu";
+            this.bar2.DockCol = 0;
+            this.bar2.DockRow = 0;
+            this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+            this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+            new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.btnAdd, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+            new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem2, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+            new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem3, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+            new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem4, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+            new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.barLargeButtonItem5, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem6),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem7),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem8),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem9),
+            new DevExpress.XtraBars.LinkPersistInfo(this.barLargeButtonItem10)});
+            this.bar2.OptionsBar.MultiLine = true;
+            this.bar2.OptionsBar.UseWholeRow = true;
+            this.bar2.Text = "Main menu";
+            // 
+            // btnAdd
+            // 
+            this.btnAdd.Caption = "澧炲姞";
+            this.btnAdd.Id = 3;
+            this.btnAdd.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_allmarkup_16x16;
+            this.btnAdd.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.trackingchanges_allmarkup_32x32;
+            this.btnAdd.Name = "btnAdd";
+            // 
+            // barLargeButtonItem2
+            // 
+            this.barLargeButtonItem2.Caption = "鍒犻櫎";
+            this.barLargeButtonItem2.Id = 4;
+            this.barLargeButtonItem2.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.removegroupfooter_16x16;
+            this.barLargeButtonItem2.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.removegroupfooter_32x32;
+            this.barLargeButtonItem2.Name = "barLargeButtonItem2";
+            // 
+            // barLargeButtonItem3
+            // 
+            this.barLargeButtonItem3.Caption = "淇敼";
+            this.barLargeButtonItem3.Id = 5;
+            this.barLargeButtonItem3.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_trackchanges_16x16;
+            this.barLargeButtonItem3.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.trackingchanges_trackchanges_32x32;
+            this.barLargeButtonItem3.Name = "barLargeButtonItem3";
+            // 
+            // barLargeButtonItem4
+            // 
+            this.barLargeButtonItem4.Caption = "淇濆瓨";
+            this.barLargeButtonItem4.Id = 6;
+            this.barLargeButtonItem4.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.exportfile_16x16;
+            this.barLargeButtonItem4.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.exportfile_32x32;
+            this.barLargeButtonItem4.Name = "barLargeButtonItem4";
+            // 
+            // barLargeButtonItem5
+            // 
+            this.barLargeButtonItem5.Caption = "鏌ョ湅";
+            this.barLargeButtonItem5.Id = 7;
+            this.barLargeButtonItem5.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.show_16x16;
+            this.barLargeButtonItem5.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.show_32x32;
+            this.barLargeButtonItem5.Name = "barLargeButtonItem5";
+            // 
+            // barLargeButtonItem6
+            // 
+            this.barLargeButtonItem6.Caption = "鍙栨秷";
+            this.barLargeButtonItem6.Id = 9;
+            this.barLargeButtonItem6.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.renamedatasource_16x16;
+            this.barLargeButtonItem6.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.renamedatasource_32x32;
+            this.barLargeButtonItem6.Name = "barLargeButtonItem6";
+            // 
+            // barLargeButtonItem7
+            // 
+            this.barLargeButtonItem7.Caption = "鍒锋柊";
+            this.barLargeButtonItem7.Id = 10;
+            this.barLargeButtonItem7.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.convert_16x16;
+            this.barLargeButtonItem7.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.convert_32x32;
+            this.barLargeButtonItem7.Name = "barLargeButtonItem7";
+            // 
+            // barLargeButtonItem8
+            // 
+            this.barLargeButtonItem8.Caption = "瀵煎嚭";
+            this.barLargeButtonItem8.Description = "瀵煎嚭";
+            this.barLargeButtonItem8.Id = 12;
+            this.barLargeButtonItem8.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.converttorange_16x16;
+            this.barLargeButtonItem8.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.converttorange_32x32;
+            this.barLargeButtonItem8.Name = "barLargeButtonItem8";
+            // 
+            // barLargeButtonItem9
+            // 
+            this.barLargeButtonItem9.Caption = "瀹℃牳";
+            this.barLargeButtonItem9.Id = 13;
+            this.barLargeButtonItem9.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.checkbox2_16x16;
+            this.barLargeButtonItem9.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.checkbox2_32x32;
+            this.barLargeButtonItem9.Name = "barLargeButtonItem9";
+            // 
+            // barLargeButtonItem10
+            // 
+            this.barLargeButtonItem10.Caption = "鍙嶅鏍�";
+            this.barLargeButtonItem10.Id = 14;
+            this.barLargeButtonItem10.ImageOptions.Image = global::Gs.DevApp.Properties.Resources.forcetesting_16x16;
+            this.barLargeButtonItem10.ImageOptions.LargeImage = global::Gs.DevApp.Properties.Resources.forcetesting_32x32;
+            this.barLargeButtonItem10.Name = "barLargeButtonItem10";
+            // 
+            // barDockControlTop
+            // 
+            this.barDockControlTop.CausesValidation = false;
+            this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+            this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
+            this.barDockControlTop.Manager = this.barManager1;
+            this.barDockControlTop.Size = new System.Drawing.Size(926, 71);
+            // 
+            // barDockControlBottom
+            // 
+            this.barDockControlBottom.CausesValidation = false;
+            this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.barDockControlBottom.Location = new System.Drawing.Point(0, 150);
+            this.barDockControlBottom.Manager = this.barManager1;
+            this.barDockControlBottom.Size = new System.Drawing.Size(926, 0);
+            // 
+            // barDockControlRight
+            // 
+            this.barDockControlRight.CausesValidation = false;
+            this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+            this.barDockControlRight.Location = new System.Drawing.Point(926, 71);
+            this.barDockControlRight.Manager = this.barManager1;
+            this.barDockControlRight.Size = new System.Drawing.Size(0, 79);
+            // 
+            // bar3
+            // 
+            this.bar3.BarName = "Status bar";
+            this.bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+            this.bar3.DockCol = 0;
+            this.bar3.DockRow = 0;
+            this.bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+            this.bar3.OptionsBar.AllowQuickCustomization = false;
+            this.bar3.OptionsBar.DrawDragBorder = false;
+            this.bar3.OptionsBar.UseWholeRow = true;
+            this.bar3.Text = "Status bar";
+            // 
+            // ToolBarMenu
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.barDockControlLeft);
+            this.Controls.Add(this.barDockControlRight);
+            this.Controls.Add(this.barDockControlBottom);
+            this.Controls.Add(this.barDockControlTop);
+            this.Name = "ToolBarMenu";
+            this.Size = new System.Drawing.Size(926, 150);
+            ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private DevExpress.XtraBars.Bar bar4;
+        private DevExpress.XtraBars.Bar bar1;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem2;
+        private DevExpress.XtraBars.BarButtonItem barButtonItem1;
+        private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+        private DevExpress.XtraBars.BarManager barManager1;
+        private DevExpress.XtraBars.Bar bar2;
+        private DevExpress.XtraBars.BarLargeButtonItem btnAdd;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem2;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem3;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem4;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem5;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem6;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem7;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem8;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem9;
+        private DevExpress.XtraBars.BarLargeButtonItem barLargeButtonItem10;
+        private DevExpress.XtraBars.BarDockControl barDockControlTop;
+        private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+        private DevExpress.XtraBars.BarDockControl barDockControlRight;
+        private DevExpress.XtraBars.Bar bar3;
+    }
+}
diff --git a/DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs
new file mode 100644
index 0000000..e66ec0e
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.cs
@@ -0,0 +1,31 @@
+锘縰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 Gs.DevApp.UserControl
+{
+    public partial class ToolBarMenu : DevExpress.XtraEditors.XtraUserControl
+    {
+        public event EventHandler btnAddClick;
+        public ToolBarMenu()
+        {
+            InitializeComponent();
+            this.btnAdd.ItemClick += BtnAdd_ItemClick;
+        }
+
+        private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            if (btnAddClick != null)
+            {
+                btnAddClick(this, e);
+            }
+        }
+    }
+}
diff --git a/DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.resx
new file mode 100644
index 0000000..52e53df
--- /dev/null
+++ b/DevApp/Gs.DevApp/UserControl/ToolBarMenu.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="barManager1.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/DevApp/Gs.DevApp/packages.config b/DevApp/Gs.DevApp/packages.config
new file mode 100644
index 0000000..0b14af3
--- /dev/null
+++ b/DevApp/Gs.DevApp/packages.config
@@ -0,0 +1,4 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
+</packages>
\ No newline at end of file
diff --git a/DevApp/GsDevSolution.sln b/DevApp/GsDevSolution.sln
new file mode 100644
index 0000000..f1ce405
--- /dev/null
+++ b/DevApp/GsDevSolution.sln
@@ -0,0 +1,25 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.35130.168
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gs.DevApp", "Gs.DevApp\Gs.DevApp.csproj", "{A7EB5F78-699E-4514-8905-30842765E673}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A7EB5F78-699E-4514-8905-30842765E673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A7EB5F78-699E-4514-8905-30842765E673}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A7EB5F78-699E-4514-8905-30842765E673}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A7EB5F78-699E-4514-8905-30842765E673}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {5738078E-1FAB-4171-8506-F0DBE14817E4}
+	EndGlobalSection
+EndGlobal
diff --git a/WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2 b/WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2
new file mode 100644
index 0000000..9005824
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/DesignTimeBuild/.dtbcache.v2
Binary files differ
diff --git a/WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx b/WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx
new file mode 100644
index 0000000..9c00394
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/FileContentIndex/a3306c0b-3453-46b3-bcf4-6e38ab6b139e.vsidx
Binary files differ
diff --git a/WebApi/.vs/GsMesSolution/v17/.futdcache.v2 b/WebApi/.vs/GsMesSolution/v17/.futdcache.v2
new file mode 100644
index 0000000..448ddb6
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/v17/.futdcache.v2
Binary files differ
diff --git a/WebApi/.vs/GsMesSolution/v17/DocumentLayout.json b/WebApi/.vs/GsMesSolution/v17/DocumentLayout.json
new file mode 100644
index 0000000..27e8c9d
--- /dev/null
+++ b/WebApi/.vs/GsMesSolution/v17/DocumentLayout.json
@@ -0,0 +1,31 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "D:\\GsMesV2\\WebApi\\",
+  "Documents": [],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin b/WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin
new file mode 100644
index 0000000..6ecfca7
--- /dev/null
+++ b/WebApi/.vs/ProjectEvaluation/gsmessolution.metadata.v8.bin
Binary files differ
diff --git a/WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin b/WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin
new file mode 100644
index 0000000..e36debd
--- /dev/null
+++ b/WebApi/.vs/ProjectEvaluation/gsmessolution.projects.v8.bin
Binary files differ
diff --git a/WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin b/WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin
new file mode 100644
index 0000000..721572d
--- /dev/null
+++ b/WebApi/.vs/ProjectEvaluation/gsmessolution.strings.v8.bin
Binary files differ
diff --git a/WebApi/Gs.Demo/Gs.Demo.csproj b/WebApi/Gs.Demo/Gs.Demo.csproj
new file mode 100644
index 0000000..91033c6
--- /dev/null
+++ b/WebApi/Gs.Demo/Gs.Demo.csproj
@@ -0,0 +1,15 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+    <BaseOutputPath>D:\GsMes\Gs.HostIIS\bin</BaseOutputPath>
+    <GenerateDocumentationFile>True</GenerateDocumentationFile>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Gs.Toolbox\Gs.Toolbox.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.Demo/Modes/Student.cs b/WebApi/Gs.Demo/Modes/Student.cs
new file mode 100644
index 0000000..09c1092
--- /dev/null
+++ b/WebApi/Gs.Demo/Modes/Student.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gs.Demo.Modes
+{
+
+    /// <summary>
+    /// 瀛︾敓瀹炰綋
+    /// </summary>
+    public class Student
+    {
+
+        /// <summary>
+        /// guid
+        /// </summary>
+        public Guid? guid { get; set; }
+
+        /// <summary>
+        /// 濮撳悕
+        /// </summary>
+        public string name { get; set; }
+
+        /// <summary>
+        /// 骞撮緞
+        /// </summary>
+        public int age { get; set; }
+
+        /// <summary>
+        /// 鍦板潃
+        /// </summary>
+        public string address { get; set; }
+
+        /// <summary>
+        /// 濮撳埆
+        /// </summary>
+        public int sex { get; set; }
+
+        /// <summary>
+        /// 韬唤璇�
+        /// </summary>
+        public string card { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庣紪杈戞椂闂�
+        /// </summary>
+        public DateTime lastEdtTime { get; set; }
+
+        /// <summary>
+        /// 澧炲姞鏃堕棿
+        /// </summary>
+        public DateTime addTime { get; set; }
+    }
+}
diff --git a/WebApi/Gs.Demo/Service/Test/Test.cs b/WebApi/Gs.Demo/Service/Test/Test.cs
new file mode 100644
index 0000000..d2b6e46
--- /dev/null
+++ b/WebApi/Gs.Demo/Service/Test/Test.cs
@@ -0,0 +1,194 @@
+锘縰sing Gs.Demo.Modes;
+using Microsoft.AspNetCore.Mvc;
+using System.Text;
+using System.Data.SqlClient;
+using System.Data;
+using Gs.Toolbox;
+using Microsoft.AspNetCore.Authorization;
+
+namespace Gs.Demo.Service
+{
+    [ApiGroup(ApiGroupNames.Demo)]
+    public class Test : IRomteService
+    {
+        /// <summary>
+        /// 璇诲鐢熷彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<Student>> GetStudentListPage([FromBody] PageQuery model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = string.IsNullOrEmpty(model.sortName)? "a.lastEdtTime" : model.sortName;
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append("select * from ");
+            sbSql.Append("( ");
+            sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,* from gs_test a where 1=1" + model.keyWhere);
+            sbSql.Append(") as T ");
+            sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize + "");
+            sbSql.Append(" select count(1) as intTotal  from dbo.gs_test a where 1=1 " + model.keyWhere).ToString();
+            DataSet dset = new DataSet();
+            try
+            {
+                dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+            }
+            catch (Exception ex)
+            {
+                Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetStudentListPage error锛�" + ex.Message);
+                return ReturnDto<PageList<Student>>.QuickReturn(default(PageList<Student>), ReturnCode.Exception, "璇诲彇澶辫触");
+            }
+            PageList<Student> _pglist = new PageList<Student>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<Student>()
+            };
+            if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//鏈夋暟鎹�
+            {
+                int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize);
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                foreach (DataRow dr in dset.Tables[0].Rows)
+                {
+                    _pglist.list.Add(
+                        new Student()
+                        {
+                            guid = Guid.Parse(dr["guid"].ToString()),
+                            name = dr["name"].ToString(),
+                            age = int.Parse(dr["age"].ToString()),
+                            address = dr["address"].ToString(),
+                            sex = int.Parse(dr["sex"].ToString()),
+                            card = dr["card"].ToString(),
+                            lastEdtTime = DateTime.Parse(dr["lastEdtTime"].ToString()),
+                            addTime = DateTime.Parse(dr["addTime"].ToString()),
+                        }
+                    );
+                }
+            }
+            return ReturnDto<PageList<Student>>.QuickReturn(_pglist, ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        /// 鍒犻櫎瀛︾敓
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> DeleteModel([FromBody] Student model)
+        {
+            int rtnInt = (int)ReturnCode.Default;
+            try
+            {
+                rtnInt = DbHelperSQL.ExecuteSql("delete from dbo.gs_test where guid='" + model.guid.ToString() + "'");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "DeleteStudent error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛屽叡鍒犻櫎" + rtnInt.ToString() + "鏉℃暟鎹紒");
+            else
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
+        }
+
+        /// <summary>
+        /// 澧炲姞瀛︾敓
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> EditStudent([FromBody] Student model)
+        {
+            Guid? guid = model.guid;
+            string name = model.name;
+            int age = model.age;
+            string address = model.address;
+            int sex = model.sex;
+            string card = model.card;
+            int? rtnInt = (int)ReturnCode.Default;
+            StringBuilder strSql = new StringBuilder();
+            if (guid == null)
+            {
+                strSql.Append("update dbo.gs_test ");
+                strSql.Append("set name=@name,age=@age,address=@address,sex=@sex,card=@card,addTime=getdate(),lastEdtTime=getdate()");
+                strSql.Append(" where guid='" + guid + "'");
+            }
+            else
+            {
+                guid = Guid.NewGuid();
+                strSql.Append("insert into dbo.gs_test(");
+                strSql.Append(" guid,name,age,address,sex,card,addTime,lastEdtTime)");
+                strSql.Append(" values (");
+                strSql.Append("'" + guid + "',@id,@name,@age,@address,@sex,@card,getdate(),getdate())");
+            }
+            SqlParameter[] parameters = {
+             new SqlParameter("@name", name),
+             new SqlParameter("@age",age),
+             new SqlParameter("@address",address),
+             new SqlParameter("@sex",sex),
+             new SqlParameter("@card",card),
+        };
+            try
+            {
+                rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "EditStudent  error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "澧炲姞鎴愬姛锛�");
+            else
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "澧炲姞澶辫触锛岃閲嶈瘯锛�");
+        }
+
+        /// <summary>
+        /// 璇诲彇瀛︾敓
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.GET)]
+        [AllowAnonymous]
+        public ReturnDto<Student> GetStudent(
+            Guid guid
+            )
+        {
+            Student m = new Student();
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append("select top 1 * from dbo.gs_test  where 1=1 and guid='" + guid.ToString() + "' ");
+            try
+            {
+                DataSet dset = new DataSet();
+                dset = DbHelperSQL.Query(sbSql.ToString());
+                if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
+                {
+                    System.Data.DataRow dr = dset.Tables[0].Rows[0];
+                    m.guid = Guid.Parse(dr["guid"].ToString());
+                    m.name = dr["name"].ToString();
+                    m.age = int.Parse(dr["age"].ToString());
+                    m.address = dr["address"].ToString();
+                    m.sex = int.Parse(dr["sex"].ToString());
+                    m.card = dr["card"].ToString();
+                    m.lastEdtTime = DateTime.Parse(dr["lastEdtTime"].ToString());
+                    m.addTime = DateTime.Parse(dr["addTime"].ToString());
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+                }
+                else
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message);
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+        }
+    }
+}
diff --git a/WebApi/Gs.HostIIS/Gs.HostIIS.csproj b/WebApi/Gs.HostIIS/Gs.HostIIS.csproj
new file mode 100644
index 0000000..068f571
--- /dev/null
+++ b/WebApi/Gs.HostIIS/Gs.HostIIS.csproj
@@ -0,0 +1,18 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net8.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.8" />
+    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Gs.Toolbox\Gs.Toolbox.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.HostIIS/Program.cs b/WebApi/Gs.HostIIS/Program.cs
new file mode 100644
index 0000000..102eea5
--- /dev/null
+++ b/WebApi/Gs.HostIIS/Program.cs
@@ -0,0 +1,102 @@
+using Microsoft.OpenApi.Models;
+using System.Text.Encodings.Web;
+using System.Text.Unicode;
+using Gs.Toolbox;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json;
+
+var builder = WebApplication.CreateBuilder(args);
+builder.Services.AddControllers()
+    .AddJsonOptions(options =>
+    {
+        options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
+    }).AddMvcOptions((opt) =>
+    {
+        opt.Filters.Add<ApiAuthorizeAttribute>();
+    }).AddNewtonsoftJson(opt =>
+    {
+        opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+        // opt.SerializerSettings.ContractResolver = new DefaultContractResolver();
+        opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
+        opt.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+    });
+builder.Services.AddCustomConvention();
+builder.AddCustomInject();
+builder.Services.AddEndpointsApiExplorer();
+builder.Services.AddSwaggerGen(c =>
+{
+    c.SwaggerDoc("v1", new OpenApiInfo { Title = "GS-MES Api开发文档", Version = "v1" });
+    var xmlFiles = Directory.GetFiles(AppContext.BaseDirectory + Gs.Toolbox.AppSettingsHelper.getValueByKey("ServicesPath"), "*.xml");
+    foreach (var file in xmlFiles)
+    {
+        c.IncludeXmlComments(file, true);
+    }
+    //添加分组定义
+    typeof(ApiGroupNames).GetFields().Skip(1).ToList().ForEach(f =>
+    {
+        var info = f.GetCustomAttributes(typeof(GroupInfoAttribute), false).OfType<GroupInfoAttribute>().FirstOrDefault();
+        c.SwaggerDoc(f.Name, new OpenApiInfo
+        {
+            Title = info?.Title,
+            Version = info?.Version,
+            Description = info?.Description
+        });
+    });
+    c.SwaggerDoc("NoGroup", new OpenApiInfo
+    {
+        Title = "无分组"
+    });
+    c.DocInclusionPredicate((docName, apiDescription) =>
+    {
+        if (docName == "NoGroup")
+        {
+            return string.IsNullOrEmpty(apiDescription.GroupName);
+        }
+        else
+        {
+            return apiDescription.GroupName == docName;
+        }
+    });
+    //添加安全定义
+    c.AddSecurityDefinition("Token", new OpenApiSecurityScheme
+    {
+        Description = "请输入token,格式为:token 3fa85f64-5717-4562-b3fc-2c963f66afa6(注意中间必须有空格)",
+        Name = "token",
+        In = ParameterLocation.Header,
+        Type = SecuritySchemeType.ApiKey,
+        BearerFormat = "JWT",
+        Scheme = "Bearer"
+    });
+    //添加安全要求
+    c.AddSecurityRequirement(new OpenApiSecurityRequirement {
+        {
+            new OpenApiSecurityScheme{
+                Reference =new OpenApiReference{
+                    Type = ReferenceType.SecurityScheme,
+                    Id ="Token"
+                }
+            },new string[]{ }
+        }
+    });
+});
+builder.Services.AddSingleton(builder.Services);
+var app = builder.Build();
+app.AddCustomController();
+if (app.Environment.IsDevelopment())
+{
+    app.UseSwagger();
+    //添加分组定义
+    app.UseSwaggerUI(options =>
+    {
+        typeof(ApiGroupNames).GetFields().Skip(1).ToList().ForEach(f =>
+        {
+            var info = f.GetCustomAttributes(typeof(GroupInfoAttribute), false).OfType<GroupInfoAttribute>().FirstOrDefault();
+            options.SwaggerEndpoint($"/swagger/{f.Name}/swagger.json", info != null ? info.Title : f.Name);
+
+        });
+        options.SwaggerEndpoint("/swagger/NoGroup/swagger.json", "无分组");
+    });
+}
+app.UseAuthorization();
+app.MapControllers();
+app.Run();
\ No newline at end of file
diff --git a/WebApi/Gs.HostIIS/Properties/launchSettings.json b/WebApi/Gs.HostIIS/Properties/launchSettings.json
new file mode 100644
index 0000000..c6806d7
--- /dev/null
+++ b/WebApi/Gs.HostIIS/Properties/launchSettings.json
@@ -0,0 +1,31 @@
+锘縶
+  "$schema": "https://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:37005",
+      "sslPort": 0
+    }
+  },
+  "profiles": {
+    "Gs.HostIIS": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "launchUrl": "swagger",
+      "applicationUrl": "http://localhost:5263",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "launchUrl": "swagger",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs b/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
new file mode 100644
index 0000000..ddb13b5
--- /dev/null
+++ b/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
@@ -0,0 +1,31 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc.Authorization;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc;
+
+public class ApiAuthorizeAttribute : Attribute, IAuthorizationFilter
+{
+    public void OnAuthorization(AuthorizationFilterContext context)
+    {
+        string? token = context.HttpContext.Request.Headers["token"].FirstOrDefault()?.Split(' ').Last();
+        if (string.IsNullOrEmpty(token)) token = "";
+        if (HasAllowAnonymous(context) == false && token.Length < 5)
+        {
+            context.Result = new JsonResult(new { msg = "浣犳棤鏉冨仛杩欎簺", code = 401 })
+            {
+                StatusCode = StatusCodes.Status401Unauthorized
+            };
+        }
+    }
+
+    private static bool HasAllowAnonymous(AuthorizationFilterContext context)
+    {
+        var filters = context.Filters;
+        if (filters.OfType<IAllowAnonymousFilter>().Any())
+        {
+            return true;
+        }
+        var endpoint = context.HttpContext.GetEndpoint();
+        return endpoint?.Metadata?.GetMetadata<IAllowAnonymous>() != null;
+    }
+}
diff --git a/WebApi/Gs.HostIIS/appsettings.Development.json b/WebApi/Gs.HostIIS/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/WebApi/Gs.HostIIS/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  }
+}
diff --git a/WebApi/Gs.HostIIS/appsettings.json b/WebApi/Gs.HostIIS/appsettings.json
new file mode 100644
index 0000000..4d493c4
--- /dev/null
+++ b/WebApi/Gs.HostIIS/appsettings.json
@@ -0,0 +1,12 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "AllowedHosts": "*",
+  "ConnectionStrings": "Data Source=localhost;Initial Catalog=gs_Mes;User ID=sa;Password =admin110",
+  "ServicesPath": "Services",
+  "LogPath": "logs"
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs
new file mode 100644
index 0000000..973eb06
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/CustomDependenceAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Gs.Toolbox
+{
+    [AttributeUsage(AttributeTargets.Class,AllowMultiple = true)]
+    public class CustomDependenceAttribute : Attribute
+    {
+        public CustomDependenceAttribute(Type type)
+        {
+            this.DependType = type;
+        }
+        public Type DependType { get; set; }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs
new file mode 100644
index 0000000..67a2834
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/IModule.cs
@@ -0,0 +1,11 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Gs.Toolbox
+{
+    public interface IModule
+    {
+        void ConfigService(IServiceCollection service);
+        void ApplicationConfig(WebApplication application);
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs
new file mode 100644
index 0000000..f424e38
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/IScope.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+    public interface IScope
+    {
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs
new file mode 100644
index 0000000..4e7fc60
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ISingleton.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+    public interface ISingleton
+    {
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs
new file mode 100644
index 0000000..dad3165
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Inject/ITransient.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+    public interface ITransient
+    {
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs
new file mode 100644
index 0000000..b3e4ff0
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IBussinessService.cs
@@ -0,0 +1,8 @@
+锘縰sing Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public interface IBussinessService : IScope
+    {
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs
new file mode 100644
index 0000000..027f1d2
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Mvc/IRomteService.cs
@@ -0,0 +1,6 @@
+锘縩amespace Gs.Toolbox
+{
+    public interface IRomteService
+    {
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs b/WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs
new file mode 100644
index 0000000..9cfe58f
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Abstract/Repository/IRespository.cs
@@ -0,0 +1,8 @@
+锘縰sing Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public interface IRespository : IScope
+    {
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs
new file mode 100644
index 0000000..c10ef88
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Helper/TypeHelper.cs
@@ -0,0 +1,44 @@
+锘縩amespace Gs.Toolbox
+{
+    public static class TypeHelper
+    {
+        public static bool IsPrimitiveExtended(Type type, bool includeNullables = true, bool includeEnums = false)
+        {
+            if (IsPrimitiveExtendedInternal(type, includeEnums))
+            {
+                return true;
+            }
+
+            if (includeNullables && IsNullable(type) && type.GenericTypeArguments.Any())
+            {
+                return IsPrimitiveExtendedInternal(type.GenericTypeArguments[0], includeEnums);
+            }
+
+            return false;
+        }
+        public static bool IsNullable(Type type)
+        {
+            return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>);
+        }
+        private static bool IsPrimitiveExtendedInternal(Type type, bool includeEnums)
+        {
+            if (type.IsPrimitive)
+            {
+                return true;
+            }
+
+            if (includeEnums && type.IsEnum)
+            {
+                return true;
+            }
+
+            return type == typeof(string) ||
+                   type == typeof(decimal) ||
+                   type == typeof(DateTime) ||
+                   type == typeof(DateTimeOffset) ||
+                   type == typeof(TimeSpan) ||
+                   type == typeof(Guid);
+        }
+
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs
new file mode 100644
index 0000000..c04fdc4
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/ExposeAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Gs.Toolbox
+{
+    public class ExposeAttribute : Attribute
+    {
+        public ExposeAttribute(Type _type)
+        {
+            type = _type;
+        }
+        public Type type { get; set; }
+
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs
new file mode 100644
index 0000000..875a575
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeChecker.cs
@@ -0,0 +1,36 @@
+锘縩amespace Gs.Toolbox
+{
+    public static class InjectTypeChecker
+    {
+        private static InjectTypeContext context = new InjectTypeContext();
+        public static bool IsImplementInjectType(Type[] types)
+        {
+            foreach (var t in types)
+            {
+                if (context.types.Contains(t))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+        public static bool IsImplementInjectType(Type type)
+        {
+            return context.types.Contains(type);
+        }
+
+        public static bool IsImplementInjectType(Type[] types, out Type type)
+        {
+            type = null;
+            foreach (var t in types)
+            {
+                if (context.types.Contains(t))
+                {
+                    type = t;
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs
new file mode 100644
index 0000000..85593ba
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeContext.cs
@@ -0,0 +1,16 @@
+锘縰sing Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public class InjectTypeContext
+    {
+        public List<Type> types { get; }
+        public InjectTypeContext()
+        {
+            types = new List<Type>();
+            types.Add(typeof(ITransient));
+            types.Add(typeof(ISingleton));
+            types.Add(typeof(IScope));
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs
new file mode 100644
index 0000000..55e6c16
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Inject/InjectTypeManager.cs
@@ -0,0 +1,68 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public static class InjectTypeManager
+    {
+        public static void Inject(IServiceCollection service, Type interfaceType, Type implementType, Type injectType)
+        {
+            if (injectType.FullName.Equals(typeof(ISingleton).FullName))
+            {
+                AddISingleton(service, interfaceType, implementType);
+            }
+            if (injectType.FullName.Equals(typeof(IScope).FullName))
+            {
+                AddIScope(service, interfaceType, implementType);
+            }
+            if (injectType.FullName.Equals(typeof(ITransient).FullName))
+            {
+                AddITransient(service, interfaceType, implementType);
+            }
+
+        }
+        private static void AddISingleton(IServiceCollection service, Type interfaceType, Type implementType)
+        {
+            ImplementTypeThrowException(service, implementType);
+            if (interfaceType == null)
+            {
+                service.AddSingleton(implementType);
+                return;
+            }
+            service.AddSingleton(interfaceType, implementType);
+        }
+
+        private static void ImplementTypeThrowException(IServiceCollection service, Type implementType)
+        {
+            if (implementType == null)
+            {
+                throw new ArgumentNullException(nameof(implementType));
+            }
+            if (service == null)
+            {
+                throw new Exception("ServiceCollection is null,this fail is occur in coustom inject.");
+            }
+        }
+
+        private static void AddIScope(IServiceCollection service, Type interfaceType, Type implementType)
+        {
+            ImplementTypeThrowException(service, implementType);
+            if (interfaceType == null)
+            {
+                service.AddScoped(implementType);
+                return;
+            }
+            service.AddScoped(interfaceType, implementType);
+        }
+        private static void AddITransient(IServiceCollection service, Type interfaceType, Type implementType)
+        {
+            ImplementTypeThrowException(service, implementType);
+            if (interfaceType == null)
+            {
+                service.AddTransient(implementType);
+                return;
+            }
+            service.AddTransient(interfaceType, implementType);
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs
new file mode 100644
index 0000000..bcba014
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomApplicationModelConvention.cs
@@ -0,0 +1,114 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.ActionConstraints;
+using Microsoft.AspNetCore.Mvc.ApplicationModels;
+using Microsoft.AspNetCore.Mvc.ModelBinding;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public class CustomApplicationModelConvention : IApplicationModelConvention
+    {
+        public void Apply(ApplicationModel application)
+        {
+            foreach (var controller in application.Controllers)
+            {
+                if (controller.ControllerType.IsAssignableTo(typeof(IRomteService)))
+                {
+                    ConfigureApiExplorer(controller);
+                    ConfigureSelector(controller);
+                    ConfigureParameters(controller);
+                }
+            }
+        }
+        //鐩存帴鎶刟bp浠g爜
+        private void ConfigureParameters(ControllerModel controller)
+        {
+            foreach (var action in controller.Actions)
+            {
+                foreach (var prm in action.Parameters)
+                {
+                    if (prm.BindingInfo != null)
+                    {
+                        continue;
+                    }
+
+                    if (!TypeHelper.IsPrimitiveExtended(prm.ParameterInfo.ParameterType, includeEnums: true))
+                    {
+                        if (CanUseFormBodyBinding(action, prm))
+                        {
+                            prm.BindingInfo = BindingInfo.GetBindingInfo(new[] { new FromBodyAttribute() });
+                        }
+                    }
+                }
+            }
+        }
+        private bool CanUseFormBodyBinding(ActionModel action, ParameterModel parameter)
+        {
+            if (parameter.ParameterName == "id")
+            {
+                return false;
+            }
+
+            foreach (var selector in action.Selectors)
+            {
+                if (selector.ActionConstraints == null)
+                {
+                    continue;
+                }
+
+                foreach (var actionConstraint in selector.ActionConstraints)
+                {
+                    var httpMethodActionConstraint = actionConstraint as HttpMethodActionConstraint;
+                    if (httpMethodActionConstraint == null)
+                    {
+                        continue;
+                    }
+
+                    if (httpMethodActionConstraint.HttpMethods.All(hm => hm.IsIn("GET", "DELETE", "TRACE", "HEAD")))
+                    {
+                        return false;
+                    }
+                }
+            }
+            return true;
+        }
+
+        private void ConfigureSelector(ControllerModel controller)
+        {
+            //鍏堜笉浣跨敤鐗规�э紝鍋氫釜鏈�绠�鍗曠殑
+            var controllerName = controller.ControllerName;
+            //瀹為檯涓婅矾鐢卞嚟鍊熻繕鏄嚜宸卞~琛outeAttribute鐗规��
+            foreach (var action in controller.Actions)
+            {
+                action.Selectors.Clear();
+                var reqMethod = GetRequestMethod(action);
+                action.Selectors.Add(new SelectorModel
+                {
+                    AttributeRouteModel = new AttributeRouteModel(new RouteAttribute($"/{controllerName}/{action.ActionName}")),
+                    ActionConstraints = { new HttpMethodActionConstraint(new[] { reqMethod }) }
+                });
+            }
+        }
+
+        private string GetRequestMethod(ActionModel action)
+        {
+            var reqM = action.Attributes.OfType<RequestMethodAttribute>().ToList();
+            return reqM.Last()._method.ToString();
+        }
+
+        private void ConfigureApiExplorer(ControllerModel controller)
+        {
+            //灏嗚嚜鍔ㄥ彂鐜扮殑鎺у埗鍣ㄦ樉绀哄嚭鏉�
+            controller.ApiExplorer.IsVisible = true;
+            foreach (var action in controller.Actions)
+            {
+                ConfigureApiExplorer(action);
+            }
+        }
+
+        private void ConfigureApiExplorer(ActionModel action)
+        {
+            action.ApiExplorer.IsVisible = true;
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
new file mode 100644
index 0000000..19d5575
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
@@ -0,0 +1,111 @@
+锘縰sing Microsoft.AspNetCore.Mvc.ApplicationParts;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using System.Reflection;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    /// <summary>
+    /// 鐢ㄦ潵璇嗗埆鎺у埗鍣�
+    /// </summary>
+    public class CustomControllerFeatureProvider : IApplicationFeatureProvider<ControllerFeature>
+    {
+        public void PopulateFeature(IEnumerable<ApplicationPart> parts, ControllerFeature feature)
+        {
+            var assembly = Assembly.GetEntryAssembly();//鑾峰彇鍖呭惈搴旂敤绋嬪簭鍏ュ彛鐐圭殑绋嬪簭闆�
+            var assemblies = assembly.GetReferencedAssemblies();
+            assemblies.Append<AssemblyName>(assembly.GetName());
+            var list = assemblies.ToList();
+            for (var i = 0; i < assemblies.Length; i++)
+            {
+                if (assemblies[i].FullName.Contains("System") ||
+                    assemblies[i].FullName.Contains("Microsoft") ||
+                    assemblies[i].FullName.Contains("Swashbuckle"))
+                {
+                    list.Remove(assemblies[i]);
+                }
+            };
+            ////////////////lu鍔犱笂////////
+            string SearchPath = Gs.Toolbox.AppSettingsHelper.getValueByKey("ServicesPath");
+            var searchFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), SearchPath);
+            foreach (var file in Directory.EnumerateFiles(searchFolder, "*.dll", SearchOption.AllDirectories))
+            {
+                try
+                {
+                    var assemblyccccc = Assembly.LoadFrom(file);
+                    var exportedTypesccc = assemblyccccc.GetExportedTypes();
+                    //if (exportedTypes.Any(t => t.IsSubclassOf(typeof(ApiController))))
+                    //{
+                    //    Console.WriteLine("Started service " + assembly.FullName);
+                    //  builder.RegisterApiControllers(assembly).InstancePerRequest();
+                    // }
+                    list.Add(assemblyccccc.GetName());
+                }
+                catch (Exception ex)
+                {
+
+                }
+            }
+            ///////////////////////
+            AddController(feature, list.ToArray());
+        }
+
+        private void AddController(ControllerFeature feature, AssemblyName[] assemblies)
+        {
+            if (assemblies.Length == 0)
+            {
+                return;
+            }
+            assemblies.ToList().ForEach(assembly =>
+            {
+                if (assembly.FullName.Contains("System") ||
+                    assembly.FullName.Contains("Microsoft") ||
+                    assembly.FullName.Contains("Swashbuckle"))
+                {
+                    return;
+                }
+                //閫掑綊鑾峰彇controller
+                var assTemp = Assembly.Load(assembly);
+                assTemp.GetTypes().ToList().ForEach(type =>
+                {
+                    //濡傛灉瀹炵幇浜咺RomteService鍒欒涓烘槸涓�涓帶鍒跺櫒
+                    if (!IsController(type))
+                    {
+                        return;
+                    }
+                    feature.Controllers.Add(type.GetTypeInfo());
+                });
+                var a = assTemp.GetReferencedAssemblies();
+                AddController(feature, a);
+            });
+        }
+
+        public bool IsController(Type type)
+        {
+            if (!type.IsClass)
+            {
+                return false;
+            }
+
+            if (type.IsAbstract)
+            {
+                return false;
+            }
+            if (!type.IsPublic)
+            {
+                return false;
+            }
+
+            if (type.ContainsGenericParameters)
+            {
+                return false;
+            }
+
+            if (type.IsAssignableTo(typeof(IRomteService)))
+            {
+                return true;
+            }
+            return false;
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs
new file mode 100644
index 0000000..c1bcd5d
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethodAttribute.cs
@@ -0,0 +1,15 @@
+锘縩amespace Gs.Toolbox
+{
+    public class RequestMethodAttribute : Attribute
+    {
+        public RequestMethods _method;
+        public RequestMethodAttribute(RequestMethods method)
+        {
+            _method = method;
+        }
+        public RequestMethodAttribute()
+        {
+            _method = RequestMethods.GET;
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs
new file mode 100644
index 0000000..07d8ff4
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/RequestMethods.cs
@@ -0,0 +1,8 @@
+锘縩amespace Gs.Toolbox
+{
+    public enum RequestMethods
+    {
+        GET,
+        POST
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs b/WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs
new file mode 100644
index 0000000..a6fe1a1
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Entity/IEntity.cs
@@ -0,0 +1,7 @@
+锘縩amespace Gs.Toolbox
+{
+    internal interface IEntity<T>
+    {
+        T Id { get; set; }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs
new file mode 100644
index 0000000..9020601
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationBuilderExtension.cs
@@ -0,0 +1,78 @@
+锘縰sing System.Reflection;
+using Microsoft.AspNetCore.Builder;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public static class ApplicationBuilderExtension
+    {
+        public static void AddCustomInject(this WebApplicationBuilder builder)
+        {
+            builder.AddInterfaceInject();
+        }
+        private static List<AssemblyName> GetReferenceCustomAssembliesName(Assembly assembly)
+        {
+            var assembliesName = new List<AssemblyName>();
+            assembliesName.Add(assembly.GetName());
+            assembliesName.AddRange(assembly.GetReferencedAssemblies().ToList());
+            return assembliesName;
+        }
+
+
+        public static void AddInterfaceInject(this WebApplicationBuilder builder)
+        {
+            builder.AddInterfaceInject(Assembly.GetEntryAssembly());
+        }
+        public static void AddInterfaceInject(this WebApplicationBuilder builder, Assembly assembly)
+        {
+            //鏈�绠�鍗曠殑瀹炵幇灏辨槸瀹炵幇浜嗘帴鍙e氨娉ㄥ叆
+            AssemblyIsNullThrowException(assembly);
+            var CustomAssembliesName = GetReferenceCustomAssembliesName(assembly);
+            CustomAssembliesName.ForEach(a =>
+            {
+                var ass = Assembly.Load(a);
+                var type = typeof(object);
+                ass.GetTypes().ToList().ForEach(t =>
+                {
+                    if (t.IsClass && InjectTypeChecker.IsImplementInjectType(t.GetInterfaces(), out type))
+                    {
+                        InjectInContainer(builder, t, type);
+                    }
+                });
+            });
+        }
+
+        private static void InjectInContainer(WebApplicationBuilder builder, Type ImplementType, Type injectType)
+        {
+            var attr = ImplementType.GetCustomAttribute<ExposeAttribute>();
+            var firstInterface = ImplementType.GetInterfaces()[0];
+            var services = builder.Services;
+            //濡傛灉娌℃湁浣跨敤鏆撮湶灞炴�э紝绗竴涓帴鍙d负娉ㄥ叆鎺ュ彛锛岀洿鎺ユ敞鍏ュ疄鐜版敞鍏ユ帴鍙g被
+            if (attr == null && InjectTypeChecker.IsImplementInjectType(firstInterface))
+            {
+                InjectTypeManager.Inject(services, null, ImplementType, injectType);
+            }
+            //濡傛灉娌℃湁浣跨敤鏆撮湶灞炴�э紝骞朵笖绗竴涓帴鍙d笉涓烘敞鍏ユ帴鍙o紝鐩存帴浣跨敤绗竴涓帴鍙d綔涓哄澶栨帴鍙�
+            if (attr == null && !InjectTypeChecker.IsImplementInjectType(firstInterface))
+            {
+                InjectTypeManager.Inject(services, firstInterface, ImplementType, injectType);
+            }
+            //濡傛灉浣跨敤浜嗘毚闇插睘鎬э紝鐩存帴娉ㄥ叆灞炴�ч噷闈㈢殑绫诲瀷
+            if (attr != null)
+            {
+                // TODO 瀹归敊澶勭悊,姣斿璇村彧瀹炵幇浜嗕竴涓帴鍙o紝涓旀帴鍙d负娉ㄥ叆鎺ュ彛鎬庝箞鍔烇紵
+                // 鐗规�у啓浜嗗疄鐜扮被鍨嬫�庝箞鍔�
+                InjectTypeManager.Inject(services, attr.type, ImplementType, injectType);
+            }
+        }
+
+
+        private static void AssemblyIsNullThrowException(Assembly assembly)
+        {
+            if (assembly == null)
+            {
+                throw new ArgumentNullException(nameof(assembly));
+            }
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs
new file mode 100644
index 0000000..37e9727
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/ApplicationExtension.cs
@@ -0,0 +1,77 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Mvc.ApplicationParts;
+using Microsoft.Extensions.DependencyInjection;
+using Gs.Toolbox;
+
+
+namespace Gs.Toolbox
+{
+    public static class ApplicationExtension
+    {
+        public static void AddCustomController(this WebApplication app)
+        {
+            using (var serviceScope = app.Services.CreateScope())
+            {
+                var services = serviceScope.ServiceProvider;
+                var applicationPartManager = services.GetRequiredService<ApplicationPartManager>();
+                if (applicationPartManager == null)
+                {
+                    throw new Exception("鏈湪瀹瑰櫒涓壘鍒癆pplicationPartManager");
+                }
+                applicationPartManager.FeatureProviders.Add(new CustomControllerFeatureProvider());
+            }
+        }
+
+        public static void AddModule<T>(this WebApplication app) where T : IModule
+        {
+            var list = new List<Type>();
+            Rescuise(typeof(T), list);
+            //鍘婚噸锛岀劧鍚庡姞杞介厤缃�
+            var tempList = new List<Type>();
+            foreach (var t in list)
+            {
+                if (!tempList.Contains(t))
+                {
+                    tempList.Add(t);
+                }
+            }
+
+            using (var serviceScope = app.Services.CreateScope())
+            {
+                var services = serviceScope.ServiceProvider;
+                var serviceCollection = services.GetRequiredService<IServiceCollection>();
+                execModule(tempList, app, serviceCollection);
+            }
+        }
+
+        private static void execModule(List<Type> tempList, WebApplication app, IServiceCollection serviceCollection)
+        {
+            foreach (var module in tempList)
+            {
+                var mod = (IModule)Activator.CreateInstance(module);
+                mod.ConfigService(serviceCollection);
+            }
+            foreach (var module in tempList)
+            {
+                var mod = (IModule)Activator.CreateInstance(module);
+                mod.ApplicationConfig(app);
+            }
+        }
+
+        public static void Rescuise(Type type, List<Type> list)
+        {
+            var attr = type.GetCustomAttributes(false);
+            if (attr.Length == 0)
+            {
+                list.Add(type);
+                return;
+            }
+            foreach (var a in attr)
+            {
+                var temp = (CustomDependenceAttribute)a;
+                Rescuise(temp.DependType, list);
+            }
+            list.Add(type);
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs
new file mode 100644
index 0000000..088fae7
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/IServiceCollectionExtension.cs
@@ -0,0 +1,16 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Gs.Toolbox;
+
+namespace Gs.Toolbox
+{
+    public static class IServiceCollectionExtension
+    {
+        public static void AddCustomConvention(this IServiceCollection services)
+        {
+            services.AddMvc(options =>
+            {
+                options.Conventions.Add(new CustomApplicationModelConvention());
+            });
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs b/WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs
new file mode 100644
index 0000000..c639166
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Extensions/StringExtension.cs
@@ -0,0 +1,14 @@
+锘縩amespace Gs.Toolbox
+{
+    public static class StringExtension
+    {
+        public static bool IsIn(this string str, params string[] ps)
+        {
+            if (ps.Contains(str))
+            {
+                return true;
+            }
+            return false;
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs
new file mode 100644
index 0000000..2d7e6b0
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupAttribute.cs
@@ -0,0 +1,16 @@
+锘縰sing Microsoft.AspNetCore.Mvc.ApiExplorer;
+
+namespace Gs.Toolbox
+{
+    /// <summary>
+    /// swagger鍒嗙粍鐗规��
+    /// </summary>
+    public class ApiGroupAttribute : Attribute, IApiDescriptionGroupNameProvider
+    {
+        public ApiGroupAttribute(ApiGroupNames name)
+        {
+            GroupName = name.ToString();
+        }
+        public string GroupName { get; set; }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs
new file mode 100644
index 0000000..e2de4d6
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupInfoAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Gs.Toolbox
+{
+    /// <summary>
+    /// swagger妯″潡鏋氫妇娉ㄩ噴
+    /// </summary>
+    public class GroupInfoAttribute : Attribute
+    {
+        public string Title { get; set; }
+        public string Version { get; set; }
+        public string Description { get; set; }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
new file mode 100644
index 0000000..e547600
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
@@ -0,0 +1,18 @@
+锘縩amespace Gs.Toolbox
+{
+    /// <summary>
+    /// swagger鍒嗙粍鏋氫妇鍊�
+    /// </summary>
+    public enum ApiGroupNames
+    {
+        [GroupInfo(Title = "Demo妯″潡", Description = "Demo婕旂ず鐢�")]
+        Demo,
+        [GroupInfo(Title = "鐢ㄦ埛妯″潡", Description = "鐢ㄦ埛锛屾潈闄愶紝瑙掕壊锛岃彍鍗曠鐞嗐�侀儴闂ㄧ鐞�")]
+        Auth,
+        [GroupInfo(Title = "浠撳簱妯″潡", Description = "搴撳瓨锛岀洏鐐�")]
+        PerMission,
+        [GroupInfo(Title = "閲囪喘妯″潡", Description = "閲囪喘璁㈠崟")]
+        BillCode20,
+       
+    }
+}
diff --git a/WebApi/Gs.Toolbox/AppSettingsHelper.cs b/WebApi/Gs.Toolbox/AppSettingsHelper.cs
new file mode 100644
index 0000000..2980cf2
--- /dev/null
+++ b/WebApi/Gs.Toolbox/AppSettingsHelper.cs
@@ -0,0 +1,17 @@
+锘縰sing Microsoft.Extensions.Configuration;
+namespace Gs.Toolbox
+{
+    public static class AppSettingsHelper
+    {
+        public static string getValueByKey(string key)
+        {
+            // 鍒涘缓閰嶇疆鏋勫缓鍣�
+            var builder = new ConfigurationBuilder()
+                .SetBasePath(Directory.GetCurrentDirectory())
+                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
+            // 鏋勫缓閰嶇疆
+            IConfigurationRoot configuration = builder.Build();
+            return configuration[key];
+        }
+    }
+}
diff --git a/WebApi/Gs.Toolbox/DbHelperSQL.cs b/WebApi/Gs.Toolbox/DbHelperSQL.cs
new file mode 100644
index 0000000..dfaf602
--- /dev/null
+++ b/WebApi/Gs.Toolbox/DbHelperSQL.cs
@@ -0,0 +1,666 @@
+锘縰sing System.Collections;
+using System.Data;
+using System.Data.SqlClient;
+
+namespace Gs.Toolbox
+{
+    /// <summary>
+    /// 鏁版嵁璁块棶绫�
+    /// </summary>
+    public abstract class DbHelperSQL
+    {
+        //鏁版嵁搴撹繛鎺ュ瓧绗︿覆(web.config鏉ラ厤缃�)   
+        public static readonly string strConn = AppSettingsHelper.getValueByKey("ConnectionStrings");
+        public DbHelperSQL()
+        {
+
+        }
+        #region 鍏敤鏂规硶
+        /// <summary>
+        /// 鍙栧埌鏈�澶у瓧娈靛��
+        /// </summary>
+        /// <param name="FieldName"></param>
+        /// <param name="TableName"></param>
+        /// <returns></returns>
+        public static int GetMaxID(string FieldName, string TableName)
+        {
+            string strsql = "select max(" + FieldName + ") from " + TableName;
+            object obj = GetSingle(strsql);
+            if (obj == null)
+            {
+                return 0;
+            }
+            else
+            {
+                return int.Parse(obj.ToString());
+            }
+        }
+        /// <summary>
+        /// 鏄惁瀛樺湪鏌愭潯璁板綍
+        /// </summary>
+        /// <param name="strSql"></param>
+        /// <param name="cmdParms"></param>
+        /// <returns></returns>
+        public static bool Exists(string strSql, params SqlParameter[] cmdParms)
+        {
+            object obj = GetSingle(strSql, cmdParms);
+            int cmdresult;
+            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
+            {
+                cmdresult = 0;
+            }
+            else
+            {
+                cmdresult = int.Parse(obj.ToString());
+            }
+            if (cmdresult == 0)
+            {
+                return false;
+            }
+            else
+            {
+                return true;
+            }
+        }
+        #endregion
+
+        #region  鎵ц绠�鍗昐QL璇彞
+        /// <summary>   
+        /// 鎵цSQL璇彞锛岃繑鍥炲奖鍝嶇殑璁板綍鏁�   
+        /// </summary>   
+        /// <param name="SQLString">SQL璇彞</param>   
+        /// <returns>褰卞搷鐨勮褰曟暟</returns>   
+        public static int ExecuteSql(string SQLString)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
+                {
+                    try
+                    {
+                        connection.Open();
+                        int rows = cmd.ExecuteNonQuery();
+                        return rows;
+                    }
+                    catch (System.Data.SqlClient.SqlException E)
+                    {
+                        connection.Close();
+                        throw new Exception(E.Message);
+                    }
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�   
+        /// </summary>   
+        /// <param name="SQLStringList">澶氭潯SQL璇彞</param>        
+        public static void ExecuteSqlTran(ArrayList SQLStringList)
+        {
+            using (SqlConnection conn = new SqlConnection(strConn))
+            {
+                conn.Open();
+                SqlCommand cmd = new SqlCommand();
+                cmd.Connection = conn;
+                SqlTransaction tx = conn.BeginTransaction();
+                cmd.Transaction = tx;
+                try
+                {
+                    for (int n = 0; n < SQLStringList.Count; n++)
+                    {
+                        string strsql = SQLStringList[n].ToString();
+                        if (strsql.Trim().Length > 1)
+                        {
+                            cmd.CommandText = strsql;
+                            cmd.ExecuteNonQuery();
+                        }
+                    }
+                    tx.Commit();
+                }
+                catch (System.Data.SqlClient.SqlException E)
+                {
+                    tx.Rollback();
+                    throw new Exception(E.Message);
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц甯︿竴涓瓨鍌ㄨ繃绋嬪弬鏁扮殑鐨凷QL璇彞銆�   
+        /// </summary>   
+        /// <param name="SQLString">SQL璇彞</param>   
+        /// <param name="content">鍙傛暟鍐呭,姣斿涓�涓瓧娈垫槸鏍煎紡澶嶆潅鐨勬枃绔狅紝鏈夌壒娈婄鍙凤紝鍙互閫氳繃杩欎釜鏂瑰紡娣诲姞</param>   
+        /// <returns>褰卞搷鐨勮褰曟暟</returns>   
+        public static int ExecuteSql(string SQLString, string content)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                SqlCommand cmd = new SqlCommand(SQLString, connection);
+                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
+                myParameter.Value = content;
+                cmd.Parameters.Add(myParameter);
+                try
+                {
+                    connection.Open();
+                    int rows = cmd.ExecuteNonQuery();
+                    return rows;
+                }
+                catch (System.Data.SqlClient.SqlException E)
+                {
+                    throw new Exception(E.Message);
+                }
+                finally
+                {
+                    cmd.Dispose();
+                    connection.Close();
+                }
+            }
+        }
+        /// <summary>   
+        /// 鍚戞暟鎹簱閲屾彃鍏ュ浘鍍忔牸寮忕殑瀛楁(鍜屼笂闈㈡儏鍐电被浼肩殑鍙︿竴绉嶅疄渚�)   
+        /// </summary>   
+        /// <param name="strSQL">SQL璇彞</param>   
+        /// <param name="fs">鍥惧儚瀛楄妭,鏁版嵁搴撶殑瀛楁绫诲瀷涓篿mage鐨勬儏鍐�</param>   
+        /// <returns>褰卞搷鐨勮褰曟暟</returns>   
+        public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                SqlCommand cmd = new SqlCommand(strSQL, connection);
+                System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
+                myParameter.Value = fs;
+                cmd.Parameters.Add(myParameter);
+                try
+                {
+                    connection.Open();
+                    int rows = cmd.ExecuteNonQuery();
+                    return rows;
+                }
+                catch (System.Data.SqlClient.SqlException E)
+                {
+                    throw new Exception(E.Message);
+                }
+                finally
+                {
+                    cmd.Dispose();
+                    connection.Close();
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц涓�鏉¤绠楁煡璇㈢粨鏋滆鍙ワ紝杩斿洖鏌ヨ缁撴灉锛坥bject锛夈��   
+        /// </summary>   
+        /// <param name="SQLString">璁$畻鏌ヨ缁撴灉璇彞</param>   
+        /// <returns>鏌ヨ缁撴灉锛坥bject锛�</returns>   
+        public static object GetSingle(string SQLString)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
+                {
+                    try
+                    {
+                        connection.Open();
+                        object obj = cmd.ExecuteScalar();
+                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
+                        {
+                            return null;
+                        }
+                        else
+                        {
+                            return obj;
+                        }
+                    }
+                    catch (System.Data.SqlClient.SqlException e)
+                    {
+                        connection.Close();
+                        throw new Exception(e.Message);
+                    }
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц鏌ヨ璇彞锛岃繑鍥濻qlDataReader   
+        /// </summary>   
+        /// <param name="strSQL">鏌ヨ璇彞</param>   
+        /// <returns>SqlDataReader</returns>   
+        public static SqlDataReader ExecuteReader(string strSQL)
+        {
+            SqlConnection connection = new SqlConnection(strConn);
+            SqlCommand cmd = new SqlCommand(strSQL, connection);
+            try
+            {
+                connection.Open();
+                SqlDataReader myReader = cmd.ExecuteReader();
+                return myReader;
+            }
+            catch (System.Data.SqlClient.SqlException e)
+            {
+                throw new Exception(e.Message);
+            }
+
+        }
+        /// <summary>   
+        /// 鎵ц鏌ヨ璇彞锛岃繑鍥濪ataSet   
+        /// </summary>   
+        /// <param name="SQLString">鏌ヨ璇彞</param>   
+        /// <returns>DataSet</returns>   
+        public static DataSet Query(string SQLString)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                DataSet ds = new DataSet();
+                try
+                {
+                    connection.Open();
+                    SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
+                    command.Fill(ds, "ds");
+                }
+                catch (System.Data.SqlClient.SqlException ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                return ds;
+            }
+        }
+        #endregion
+
+        #region 鎵ц甯﹀弬鏁扮殑SQL璇彞
+        /// <summary>   
+        /// 鎵цSQL璇彞锛岃繑鍥炲奖鍝嶇殑璁板綍鏁�   
+        /// </summary>   
+        /// <param name="SQLString">SQL璇彞</param>   
+        /// <returns>褰卞搷鐨勮褰曟暟</returns>   
+        public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                using (SqlCommand cmd = new SqlCommand())
+                {
+                    try
+                    {
+                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+                        int rows = cmd.ExecuteNonQuery();
+                        cmd.Parameters.Clear();
+                        return rows;
+                    }
+                    catch (System.Data.SqlClient.SqlException E)
+                    {
+                        throw new Exception(E.Message);
+                    }
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�   
+        /// </summary>   
+        /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓簊ql璇彞锛寁alue鏄璇彞鐨凷qlParameter[]锛�</param>   
+        public static void ExecuteSqlTran(Hashtable SQLStringList)
+        {
+            using (SqlConnection conn = new SqlConnection(strConn))
+            {
+                conn.Open();
+                using (SqlTransaction trans = conn.BeginTransaction())
+                {
+                    SqlCommand cmd = new SqlCommand();
+                    try
+                    {
+                        //寰幆   
+                        foreach (DictionaryEntry myDE in SQLStringList)
+                        {
+                            string cmdText = myDE.Key.ToString();
+                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
+                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+                            int val = cmd.ExecuteNonQuery();
+                            cmd.Parameters.Clear();
+
+                            //trans.Commit();
+                        }
+                        trans.Commit();
+                    }
+                    catch
+                    {
+                        trans.Rollback();
+                        throw;
+                    }
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�   
+        /// </summary>   
+        /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓簊ql璇彞锛寁alue鏄璇彞鐨凷qlParameter[]锛�</param>   
+        public static int ExecuteSqlTranRtn(Hashtable SQLStringList)
+        {
+            int d = 0;
+            using (SqlConnection conn = new SqlConnection(strConn))
+            {
+                conn.Open();
+                using (SqlTransaction trans = conn.BeginTransaction())
+                {
+                    SqlCommand cmd = new SqlCommand();
+                    try
+                    {
+                        //寰幆   
+                        foreach (DictionaryEntry myDE in SQLStringList)
+                        {
+                            string cmdText = myDE.Key.ToString();
+                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
+                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+                            int val = cmd.ExecuteNonQuery();
+                            d = d + val;
+                            cmd.Parameters.Clear();
+
+                            //trans.Commit();
+                        }
+                        trans.Commit();
+                    }
+                    catch
+                    {
+                        trans.Rollback();
+                        throw;
+                    }
+                }
+            }
+            return d;
+        }
+        /// <summary>   
+        /// 鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟   
+        /// </summary>   
+        /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓烘爣璇嗭紝value鏄璇彞鐨凷qlParameter[]锛�</param>   
+        public static void ExecuteSqlTran(string sqltxt, Hashtable SQLStringList)
+        {
+            using (SqlConnection conn = new SqlConnection(strConn))
+            {
+                conn.Open();
+                using (SqlTransaction trans = conn.BeginTransaction())
+                {
+                    SqlCommand cmd = new SqlCommand();
+                    try
+                    {
+                        //寰幆   
+                        foreach (DictionaryEntry myDE in SQLStringList)
+                        {
+                            string cmdText = sqltxt;
+                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
+                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+                            int val = cmd.ExecuteNonQuery();
+                            cmd.Parameters.Clear();
+                        }
+                        trans.Commit();
+                    }
+                    catch
+                    {
+                        trans.Rollback();
+                        throw;
+                    }
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц涓�鏉¤绠楁煡璇㈢粨鏋滆鍙ワ紝杩斿洖鏌ヨ缁撴灉锛坥bject锛夈��   
+        /// </summary>   
+        /// <param name="SQLString">璁$畻鏌ヨ缁撴灉璇彞</param>   
+        /// <returns>鏌ヨ缁撴灉锛坥bject锛�</returns>   
+        public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                using (SqlCommand cmd = new SqlCommand())
+                {
+                    try
+                    {
+                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+                        object obj = cmd.ExecuteScalar();
+                        cmd.Parameters.Clear();
+                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
+                        {
+                            return null;
+                        }
+                        else
+                        {
+                            return obj;
+                        }
+                    }
+                    catch (System.Data.SqlClient.SqlException e)
+                    {
+                        throw new Exception(e.Message);
+                    }
+                }
+            }
+        }
+        /// <summary>   
+        /// 鎵ц鏌ヨ璇彞锛岃繑鍥濻qlDataReader   
+        /// </summary>   
+        /// <param name="strSQL">鏌ヨ璇彞</param>   
+        /// <returns>SqlDataReader</returns>   
+        public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
+        {
+            SqlConnection connection = new SqlConnection(strConn);
+            SqlCommand cmd = new SqlCommand();
+            try
+            {
+                PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+                SqlDataReader myReader = cmd.ExecuteReader();
+                cmd.Parameters.Clear();
+                return myReader;
+            }
+            catch (System.Data.SqlClient.SqlException e)
+            {
+                throw new Exception(e.Message);
+            }
+
+        }
+        /// <summary>   
+        /// 鎵ц鏌ヨ璇彞锛岃繑鍥濪ataSet   
+        /// </summary>   
+        /// <param name="SQLString">鏌ヨ璇彞</param>   
+        /// <returns>DataSet</returns>   
+        public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                SqlCommand cmd = new SqlCommand();
+                PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
+                {
+                    DataSet ds = new DataSet();
+                    try
+                    {
+                        da.Fill(ds, "ds");
+                        cmd.Parameters.Clear();
+                    }
+                    catch (System.Data.SqlClient.SqlException ex)
+                    {
+                        throw new Exception(ex.Message);
+                    }
+                    return ds;
+                }
+            }
+        }
+
+        //private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
+        //{
+
+        //    if (conn.State != ConnectionState.Open)
+        //        conn.Open();
+        //    cmd.Connection = conn;
+        //    cmd.CommandText = cmdText;
+        //    if (trans != null)
+        //        cmd.Transaction = trans;
+        //    cmd.CommandType = CommandType.Text;//cmdType;
+        //    if (cmdParms != null)
+        //    {
+        //        foreach (SqlParameter parameter in cmdParms)
+        //        {
+        //            if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
+        //                (parameter.Value == null))
+        //            {
+        //                parameter.Value = DBNull.Value;
+        //            }
+        //            cmd.Parameters.Add(parameter);
+        //        }
+        //    }
+        //}
+        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
+        {
+            if (conn.State != ConnectionState.Open)
+                conn.Open();
+            cmd.Connection = conn;
+            cmd.CommandText = cmdText;
+            if (trans != null)
+                cmd.Transaction = trans;
+            cmd.CommandType = CommandType.Text;//cmdType;   
+            if (cmdParms != null)
+            {
+                foreach (SqlParameter parm in cmdParms)
+                {
+                    //cmd.Parameters.Add(parm);
+                    if ((parm.Direction == ParameterDirection.InputOutput || parm.Direction == ParameterDirection.Input) &&
+                        (parm.Value == null))
+                    {
+                        parm.Value = DBNull.Value;
+                    }
+                    cmd.Parameters.Add(parm);
+                }
+            }
+        }
+        #endregion
+
+        #region 瀛樺偍杩囩▼鎿嶄綔
+        /// <summary>   
+        /// 鎵ц瀛樺偍杩囩▼   
+        /// </summary>   
+        /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>   
+        /// <returns>SqlDataReader</returns>   
+        public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
+        {
+            SqlConnection connection = new SqlConnection(strConn);
+            SqlDataReader returnReader;
+            connection.Open();
+            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+            command.CommandType = CommandType.StoredProcedure;
+            returnReader = command.ExecuteReader();
+            return returnReader;
+        }
+        /// <summary>   
+        /// 鎵ц甯﹁緭鍑哄弬鏁扮殑瀛樺偍杩囩▼   
+        /// </summary>   
+        /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟,OutName 杈撳嚭鍙傛暟鐨勫悕瀛楋紙濡傛灉鏄涓互@涓哄垎鍓茬锛�</param>   
+        /// <returns>string(浠鍒嗗壊鐨勮緭鍑哄弬鏁扮殑鍊�)</returns>   
+        public static string RunProcedureOut(string storedProcName, IDataParameter[] parameters, string outName)
+        {
+            SqlConnection connection = new SqlConnection(strConn);
+            string returnstring = string.Empty;
+            connection.Open();
+            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+            command.CommandType = CommandType.StoredProcedure;
+            command.ExecuteNonQuery();
+            string str = string.Empty;
+            //瑙f瀽绌胯繃鏉ョ殑鍙傛暟   
+            string[] Arraystr = outName.Split('|');
+            foreach (string st in Arraystr)
+            {
+                string a = st.ToString();
+                if (str == string.Empty)
+                {
+                    str = command.Parameters[a].Value.ToString();
+                }
+                else
+                {
+                    str = str + "|" + command.Parameters[a].Value.ToString();
+                }
+            }
+            return str;
+        }
+        /// <summary>   
+        /// 鎵ц瀛樺偍杩囩▼   
+        /// </summary>   
+        /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>   
+        /// <param name="tableName">DataSet缁撴灉涓殑琛ㄥ悕</param>   
+        /// <returns>DataSet</returns>   
+        public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                DataSet dataSet = new DataSet();
+                connection.Open();
+                SqlDataAdapter sqlDA = new SqlDataAdapter();
+                sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
+                sqlDA.Fill(dataSet, tableName);
+                connection.Close();
+                return dataSet;
+            }
+        }
+        /// <summary>   
+        /// 鏋勫缓 SqlCommand 瀵硅薄(鐢ㄦ潵杩斿洖涓�涓粨鏋滈泦锛岃�屼笉鏄竴涓暣鏁板��)   
+        /// </summary>   
+        /// <param name="connection">鏁版嵁搴撹繛鎺�</param>   
+        /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>   
+        /// <returns>SqlCommand</returns>   
+        private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
+        {
+            SqlCommand command = new SqlCommand(storedProcName, connection);
+            command.CommandType = CommandType.StoredProcedure;
+            foreach (SqlParameter parameter in parameters)
+            {
+                command.Parameters.Add(parameter);
+            }
+            return command;
+        }
+        /// <summary>   
+        /// 鎵ц瀛樺偍杩囩▼锛岃繑鍥炲奖鍝嶇殑琛屾暟         
+        /// </summary>   
+        /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>   
+        /// <param name="rowsAffected">褰卞搷鐨勮鏁�</param>   
+        /// <returns></returns>   
+        public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                int result;
+                connection.Open();
+                SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
+                rowsAffected = command.ExecuteNonQuery();
+                result = (int)command.Parameters["ReturnValue"].Value;
+                //Connection.Close();   
+                return result;
+            }
+        }
+        /// <summary>   
+        /// 鎵ц瀛樺偍杩囩▼锛岃繑鍥炲奖鍝嶈鏁�   
+        /// </summary>   
+        /// <param name="storedProcName">string绫诲瀷瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">SqlParameters[]瀛樺偍杩囩▼鍙傛暟</param>   
+        /// <returns>int 褰卞搷琛屾暟</returns>   
+        public static int RunProcedure_NonQuery(string storedProcName, IDataParameter[] parameters)
+        {
+            using (SqlConnection connection = new SqlConnection(strConn))
+            {
+                connection.Open();
+                SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+                return (command.ExecuteNonQuery());
+            }
+        }
+        /// <summary>   
+        /// 鍒涘缓 SqlCommand 瀵硅薄瀹炰緥(鐢ㄦ潵杩斿洖涓�涓暣鏁板��)      
+        /// </summary>   
+        /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>   
+        /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>   
+        /// <returns>SqlCommand 瀵硅薄瀹炰緥</returns>   
+        private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
+        {
+            SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
+            command.Parameters.Add(new SqlParameter("ReturnValue",
+                SqlDbType.Int, 4, ParameterDirection.ReturnValue,
+                false, 0, 0, string.Empty, DataRowVersion.Default, null));
+            return command;
+        }
+        #endregion
+    }
+}
+
+
diff --git a/WebApi/Gs.Toolbox/Gs.Toolbox.csproj b/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
new file mode 100644
index 0000000..44085bd
--- /dev/null
+++ b/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
+    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
+    <PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
+  </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.Toolbox/LogHelper.cs b/WebApi/Gs.Toolbox/LogHelper.cs
new file mode 100644
index 0000000..7b14cca
--- /dev/null
+++ b/WebApi/Gs.Toolbox/LogHelper.cs
@@ -0,0 +1,41 @@
+锘�
+namespace Gs.Toolbox
+{
+    public class LogHelper
+    {
+        //鍒涘缓鏃ュ織鐩綍
+        private static string path = AppContext.BaseDirectory + Gs.Toolbox.AppSettingsHelper.getValueByKey("LogPath");
+        /**
+         * 鍚戞棩蹇楁枃浠跺啓鍏ヨ皟璇曚俊鎭�
+         * @param className 绫诲悕
+         * @param content 鍐欏叆鍐呭
+         */
+        public static void Debug(string className, string content)
+        {
+            WriteLog("DEBUG", className, content);
+        }
+
+        /**
+        * 瀹為檯鐨勫啓鏃ュ織鎿嶄綔
+        * @param type 鏃ュ織璁板綍绫诲瀷
+        * @param className 绫诲悕
+        * @param content 鍐欏叆鍐呭
+        */
+        protected static void WriteLog(string type, string className, string content)
+        {
+            if (!Directory.Exists(path))//濡傛灉鏃ュ織鐩綍涓嶅瓨鍦ㄥ氨鍒涘缓
+            {
+                Directory.CreateDirectory(path);
+            }
+            string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//鑾峰彇褰撳墠绯荤粺鏃堕棿
+            string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//鐢ㄦ棩鏈熷鏃ュ織鏂囦欢鍛藉悕
+            //鍒涘缓鎴栨墦寮�鏃ュ織鏂囦欢锛屽悜鏃ュ織鏂囦欢鏈熬杩藉姞璁板綍
+            StreamWriter mySw = File.AppendText(filename);
+            //鍚戞棩蹇楁枃浠跺啓鍏ュ唴瀹�
+            string write_content = time + " " + type + " " + className + ": " + content;
+            mySw.WriteLine(write_content);
+            //鍏抽棴鏃ュ織鏂囦欢
+            mySw.Close();
+        }
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.Toolbox/ResponseResult.cs b/WebApi/Gs.Toolbox/ResponseResult.cs
new file mode 100644
index 0000000..fc2aa9a
--- /dev/null
+++ b/WebApi/Gs.Toolbox/ResponseResult.cs
@@ -0,0 +1,110 @@
+锘縰sing Newtonsoft.Json;
+
+namespace Gs.Toolbox
+{
+    public class ReturnDto<T>
+    {
+        public ReturnDto()
+        {
+            RtnData = default(T);
+            RtnCode = ReturnCode.Default;
+            RtnMsg = string.Empty;
+        }
+        [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, PropertyName = "RtnCode")]
+        public ReturnCode RtnCode { set; get; }
+
+        [JsonProperty(NullValueHandling = NullValueHandling.Include, PropertyName = "RtnData")]
+        public T RtnData { set; get; }
+
+        [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore, PropertyName = "RtnMsg")]
+        public string RtnMsg { get; set; }
+
+       
+        /// <summary>
+        /// 蹇�熻繑鍥炴暟鎹�
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="t"></param>
+        /// <returns></returns>
+        public static ReturnDto<T> QuickReturn<T>(T t, ReturnCode code, string msg)
+        {
+            ReturnDto<T> result = new ReturnDto<T>();
+            result.RtnData = t;
+            result.RtnCode = code;
+            result.RtnMsg = msg;
+            return result;
+        }
+    }
+
+    public enum ReturnCode : int
+    {
+        Default = -100,//榛樿
+        Unauthorized = -101,//闈炴硶璋冪敤
+        Exception = -102,//绯荤粺浠g爜寮傚父
+        Success = 1 //鎴愬姛
+    }
+
+    public class PageList<t>
+    {
+        /// <summary>
+        /// 鍒楄〃
+        /// </summary>
+        public List<t> list;
+        /// <summary>
+        /// 鎬婚〉鏁�
+        /// </summary>
+        public int pages;
+        /// <summary>
+        /// 鎬昏褰曟暟
+        /// </summary>
+        public int total;
+        /// <summary>
+        /// 姣忛〉澶у皬
+        /// </summary>
+        public int everyPageSize;
+        /// <summary>
+        ///  鎵╁睍鐢紝鍗曟枃鏈紝姣斿閲戦鍚堣绛夊叾瀹冮」鐩�
+        /// </summary>
+        public string? extendText;
+        /// <summary>
+        /// 鎵╁睍鐢紝鍒楄〃
+        /// </summary>
+        public List<dynamic>? extendList;
+    }
+
+    /// <summary>
+    /// 鏌ヨ瀹炰綋
+    /// </summary>
+    public class PageQuery
+    {
+        /// <summary>
+        /// 褰撳墠椤�
+        /// </summary>
+        public int currentPage { get; set; }
+
+        /// <summary>
+        /// 姣忛〉澶у皬
+        /// </summary>
+        public int everyPageSize { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍚�
+        /// </summary>
+        public string sortName { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鏂瑰紡
+        /// </summary>
+        public string sortOrder { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鍏抽敭瀛�
+        /// </summary>
+        public string keyWord { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ琛ㄨ揪寮�
+        /// </summary>
+        public string keyWhere { get; set; }
+    }
+}
diff --git a/WebApi/GsMesSolution.sln b/WebApi/GsMesSolution.sln
new file mode 100644
index 0000000..e89d4a8
--- /dev/null
+++ b/WebApi/GsMesSolution.sln
@@ -0,0 +1,43 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.35122.118
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.HostIIS", "Gs.HostIIS\Gs.HostIIS.csproj", "{4FCE647C-F1FD-43DC-A92D-88DB414D10C7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.Toolbox", "Gs.Toolbox\Gs.Toolbox.csproj", "{AAC197B4-CE8C-4D21-A2A9-73D383859668}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.Demo", "Gs.Demo\Gs.Demo.csproj", "{D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gs.User", "Gs.User\Gs.User.csproj", "{C77F6A1D-0CEA-40DE-9B03-C59B581531E8}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4FCE647C-F1FD-43DC-A92D-88DB414D10C7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D6D8C8B7-2BB2-4D5C-B83C-7412875C9BB6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C77F6A1D-0CEA-40DE-9B03-C59B581531E8}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {B05B2921-6384-4E90-B094-84B81629D9AB}
+	EndGlobalSection
+EndGlobal

--
Gitblit v1.9.3