From f0e4fa93666206c4af4a654c43148915d934c6ef Mon Sep 17 00:00:00 2001
From: huawei <huawei@2214094776>
Date: 星期一, 22 十二月 2025 10:43:54 +0800
Subject: [PATCH] 看板维护模块
---
DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.cs | 352 ++++++++++
DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.resx | 120 +++
DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.Designer.cs | 58 +
DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.cs | 381 +++++++++++
DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.cs | 24
DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.resx | 123 +++
DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.Designer.cs | 362 ++++++++++
DevApp/Gs.DevApp/Gs.DevApp.csproj | 27
DevApp/Gs.DevApp/Program.cs | 1
DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.resx | 123 +++
DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.Designer.cs | 415 ++++++++++++
11 files changed, 1,986 insertions(+), 0 deletions(-)
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.Designer.cs b/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.Designer.cs
new file mode 100644
index 0000000..25bdcbc
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.Designer.cs
@@ -0,0 +1,58 @@
+锘縩amespace Gs.DevApp.DevFrm.Sys
+{
+ partial class DefectCodeKanBan
+ {
+ /// <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.simpleKanBan1 = new Gs.DevApp.DevFrm.Sys.SimpleKanBan();
+ this.SuspendLayout();
+ //
+ // simpleKanBan1
+ //
+ this.simpleKanBan1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.simpleKanBan1.Location = new System.Drawing.Point(0, 0);
+ this.simpleKanBan1.Name = "simpleKanBan1";
+ this.simpleKanBan1.Size = new System.Drawing.Size(1001, 568);
+ this.simpleKanBan1.TabIndex = 0;
+ //
+ // DefectCodeKanBan
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1001, 568);
+ this.Controls.Add(this.simpleKanBan1);
+ this.Name = "DefectCodeKanBan";
+ this.Text = "鐪嬫澘鐩綍绠$悊";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private SimpleKanBan simpleKanBan1;
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.cs b/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.cs
new file mode 100644
index 0000000..cbca228
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.cs
@@ -0,0 +1,24 @@
+锘縰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.Sys
+{
+ /// <summary>
+ /// 鐪嬫澘鐩綍绠$悊 - 涓荤獥浣�
+ /// </summary>
+ public partial class DefectCodeKanBan : DevExpress.XtraEditors.XtraForm
+ {
+ public DefectCodeKanBan()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.resx b/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.resx
new file mode 100644
index 0000000..eee23a6
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/DefectCodeKanban.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="cms1.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/Sys/SimpleKanBan.Designer.cs b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.Designer.cs
new file mode 100644
index 0000000..3b91c3a
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.Designer.cs
@@ -0,0 +1,362 @@
+锘�
+namespace Gs.DevApp.DevFrm.Sys
+{
+ partial class SimpleKanBan
+ {
+ /// <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.toolStripMenuItemRoot = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItemEdt = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItemAdd = new System.Windows.Forms.ToolStripMenuItem();
+ this.cms1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.toolStripMenuItemDel = new System.Windows.Forms.ToolStripMenuItem();
+ this.colId = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colParentId = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colCode = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colTitle = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colNodeType = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colUrl = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colIsEnabled = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colIsExpanded = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colSortOrder = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colCreatedBy = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.colCreatedAt = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.split1 = new DevExpress.XtraEditors.SplitContainerControl();
+ this.tlMenu = new DevExpress.XtraTreeList.TreeList();
+ this.treeListColumn1 = new DevExpress.XtraTreeList.Columns.TreeListColumn();
+ this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
+ this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
+ this.toolBarMenu1 = new Gs.DevApp.UserControl.UcToolBarMenu();
+ this.cms1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.split1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.split1.Panel1)).BeginInit();
+ this.split1.Panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.split1.Panel2)).BeginInit();
+ this.split1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.tlMenu)).BeginInit();
+ this.xtraTabPage1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).BeginInit();
+ this.xtraTabControl1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // toolStripMenuItemRoot
+ //
+ this.toolStripMenuItemRoot.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_allmarkup_16x16;
+ this.toolStripMenuItemRoot.Name = "toolStripMenuItemRoot";
+ this.toolStripMenuItemRoot.Size = new System.Drawing.Size(156, 30);
+ this.toolStripMenuItemRoot.Text = "澧炲姞涓婚」";
+ //
+ // toolStripMenuItemEdt
+ //
+ this.toolStripMenuItemEdt.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_trackchanges_16x16;
+ this.toolStripMenuItemEdt.Name = "toolStripMenuItemEdt";
+ this.toolStripMenuItemEdt.Size = new System.Drawing.Size(156, 30);
+ this.toolStripMenuItemEdt.Text = "缂栬緫璇ラ」";
+ //
+ // toolStripMenuItemAdd
+ //
+ this.toolStripMenuItemAdd.Image = global::Gs.DevApp.Properties.Resources.trackingchanges_allmarkup_16x16;
+ this.toolStripMenuItemAdd.Name = "toolStripMenuItemAdd";
+ this.toolStripMenuItemAdd.Size = new System.Drawing.Size(156, 30);
+ this.toolStripMenuItemAdd.Text = "澧炲姞瀛愰」";
+ //
+ // cms1
+ //
+ this.cms1.ImageScalingSize = new System.Drawing.Size(20, 20);
+ this.cms1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItemAdd,
+ this.toolStripMenuItemEdt,
+ this.toolStripMenuItemDel,
+ this.toolStripMenuItemRoot});
+ this.cms1.Name = "contextMenuStrip1";
+ this.cms1.Size = new System.Drawing.Size(157, 124);
+ //
+ // toolStripMenuItemDel
+ //
+ this.toolStripMenuItemDel.Image = global::Gs.DevApp.Properties.Resources.deletelist2_16x16;
+ this.toolStripMenuItemDel.Name = "toolStripMenuItemDel";
+ this.toolStripMenuItemDel.Size = new System.Drawing.Size(156, 30);
+ this.toolStripMenuItemDel.Text = "鍒犻櫎璇ラ」";
+ //
+ // colId
+ //
+ this.colId.Caption = "ID";
+ this.colId.FieldName = "id";
+ this.colId.MinWidth = 25;
+ this.colId.Name = "colId";
+ this.colId.Width = 94;
+ //
+ // colParentId
+ //
+ this.colParentId.Caption = "鐖禝D";
+ this.colParentId.FieldName = "parentId";
+ this.colParentId.MinWidth = 25;
+ this.colParentId.Name = "colParentId";
+ this.colParentId.Width = 94;
+ //
+ // colCode
+ //
+ this.colCode.Caption = "缂栫爜";
+ this.colCode.FieldName = "code";
+ this.colCode.MinWidth = 29;
+ this.colCode.Name = "colCode";
+ this.colCode.Visible = true;
+ this.colCode.VisibleIndex = 0;
+ this.colCode.Width = 150;
+ //
+ // colTitle
+ //
+ this.colTitle.Caption = "鍚嶇О";
+ this.colTitle.FieldName = "title";
+ this.colTitle.MinWidth = 47;
+ this.colTitle.Name = "colTitle";
+ this.colTitle.Visible = true;
+ this.colTitle.VisibleIndex = 1;
+ this.colTitle.Width = 250;
+ //
+ // colNodeType
+ //
+ this.colNodeType.Caption = "鑺傜偣绫诲瀷";
+ this.colNodeType.FieldName = "nodeTypeTxt";
+ this.colNodeType.MinWidth = 29;
+ this.colNodeType.Name = "colNodeType";
+ this.colNodeType.Visible = true;
+ this.colNodeType.VisibleIndex = 2;
+ this.colNodeType.Width = 100;
+ //
+ // colUrl
+ //
+ this.colUrl.Caption = "URL鍦板潃";
+ this.colUrl.FieldName = "url";
+ this.colUrl.MinWidth = 29;
+ this.colUrl.Name = "colUrl";
+ this.colUrl.Visible = true;
+ this.colUrl.VisibleIndex = 3;
+ this.colUrl.Width = 250;
+ //
+ // colIsEnabled
+ //
+ this.colIsEnabled.Caption = "鍚敤";
+ this.colIsEnabled.FieldName = "isEnabledTxt";
+ this.colIsEnabled.MinWidth = 29;
+ this.colIsEnabled.Name = "colIsEnabled";
+ this.colIsEnabled.Visible = true;
+ this.colIsEnabled.VisibleIndex = 5;
+ //
+ // colIsExpanded
+ //
+ this.colIsExpanded.Caption = "鏄惁灞曞紑";
+ this.colIsExpanded.FieldName = "isExpandedTxt";
+ this.colIsExpanded.MinWidth = 29;
+ this.colIsExpanded.Name = "colIsExpanded";
+ this.colIsExpanded.Visible = true;
+ this.colIsExpanded.VisibleIndex = 6;
+ this.colIsExpanded.Width = 100;
+ //
+ // colSortOrder
+ //
+ this.colSortOrder.Caption = "鎺掑簭鍙�";
+ this.colSortOrder.FieldName = "sortOrder";
+ this.colSortOrder.MinWidth = 29;
+ this.colSortOrder.Name = "colSortOrder";
+ this.colSortOrder.Visible = true;
+ this.colSortOrder.VisibleIndex = 7;
+ this.colSortOrder.Width = 100;
+ //
+ // colCreatedBy
+ //
+ this.colCreatedBy.Caption = "鍒涘缓浜�";
+ this.colCreatedBy.FieldName = "createdBy";
+ this.colCreatedBy.MinWidth = 29;
+ this.colCreatedBy.Name = "colCreatedBy";
+ this.colCreatedBy.Visible = true;
+ this.colCreatedBy.VisibleIndex = 8;
+ this.colCreatedBy.Width = 125;
+ //
+ // colCreatedAt
+ //
+ this.colCreatedAt.Caption = "鍒涘缓鏃堕棿";
+ this.colCreatedAt.FieldName = "createdAt";
+ this.colCreatedAt.MinWidth = 29;
+ this.colCreatedAt.Name = "colCreatedAt";
+ this.colCreatedAt.Visible = true;
+ this.colCreatedAt.VisibleIndex = 9;
+ this.colCreatedAt.Width = 187;
+ //
+ // split1
+ //
+ this.split1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.split1.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.Panel2;
+ this.split1.Horizontal = false;
+ this.split1.Location = new System.Drawing.Point(0, 0);
+ this.split1.Margin = new System.Windows.Forms.Padding(4);
+ this.split1.Name = "split1";
+ //
+ // split1.Panel1
+ //
+ this.split1.Panel1.Controls.Add(this.tlMenu);
+ this.split1.Panel1.Text = "Panel1";
+ //
+ // split1.Panel2
+ //
+ this.split1.Panel2.Text = "Panel2";
+ this.split1.ShowSplitGlyph = DevExpress.Utils.DefaultBoolean.True;
+ this.split1.Size = new System.Drawing.Size(1236, 831);
+ this.split1.SplitterPosition = 0;
+ this.split1.TabIndex = 0;
+ //
+ // tlMenu
+ //
+ this.tlMenu.Appearance.Row.Options.UseFont = true;
+ this.tlMenu.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
+ this.colId,
+ this.colParentId,
+ this.colCode,
+ this.colTitle,
+ this.colNodeType,
+ this.colUrl,
+ this.colIsEnabled,
+ this.colIsExpanded,
+ this.colSortOrder,
+ this.colCreatedBy,
+ this.colCreatedAt,
+ this.treeListColumn1});
+ this.tlMenu.Cursor = System.Windows.Forms.Cursors.Default;
+ this.tlMenu.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tlMenu.HorzScrollStep = 4;
+ this.tlMenu.Location = new System.Drawing.Point(0, 0);
+ this.tlMenu.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+ this.tlMenu.MinWidth = 29;
+ this.tlMenu.Name = "tlMenu";
+ this.tlMenu.OptionsBehavior.Editable = false;
+ this.tlMenu.OptionsFind.AlwaysVisible = true;
+ this.tlMenu.OptionsMenu.EnableColumnMenu = false;
+ this.tlMenu.OptionsMenu.EnableFooterMenu = false;
+ this.tlMenu.OptionsMenu.EnableNodeMenu = false;
+ this.tlMenu.OptionsMenu.ShowAddNodeItems = DevExpress.Utils.DefaultBoolean.False;
+ this.tlMenu.OptionsMenu.ShowAutoFilterRowItem = false;
+ this.tlMenu.OptionsView.ShowTreeLines = DevExpress.Utils.DefaultBoolean.True;
+ this.tlMenu.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Solid;
+ this.tlMenu.Size = new System.Drawing.Size(1236, 816);
+ this.tlMenu.TabIndex = 3;
+ this.tlMenu.TreeLevelWidth = 31;
+ //
+ // treeListColumn1
+ //
+ this.treeListColumn1.Caption = "杞挱鏃堕暱";
+ this.treeListColumn1.FieldName = "carouselDuration";
+ this.treeListColumn1.Name = "treeListColumn1";
+ this.treeListColumn1.Visible = true;
+ this.treeListColumn1.VisibleIndex = 4;
+ //
+ // xtraTabPage1
+ //
+ this.xtraTabPage1.Controls.Add(this.split1);
+ this.xtraTabPage1.Margin = new System.Windows.Forms.Padding(4);
+ this.xtraTabPage1.Name = "xtraTabPage1";
+ this.xtraTabPage1.Size = new System.Drawing.Size(1236, 831);
+ this.xtraTabPage1.Text = "鏁版嵁鍒楄〃";
+ //
+ // xtraTabControl1
+ //
+ this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.xtraTabControl1.Location = new System.Drawing.Point(0, 98);
+ this.xtraTabControl1.Margin = new System.Windows.Forms.Padding(4);
+ this.xtraTabControl1.Name = "xtraTabControl1";
+ this.xtraTabControl1.SelectedTabPage = this.xtraTabPage1;
+ this.xtraTabControl1.Size = new System.Drawing.Size(1238, 869);
+ this.xtraTabControl1.TabIndex = 5;
+ this.xtraTabControl1.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+ this.xtraTabPage1});
+ //
+ // toolBarMenu1
+ //
+ this.toolBarMenu1.chkParameter = null;
+ this.toolBarMenu1.currentAction = null;
+ this.toolBarMenu1.defaultActions = null;
+ this.toolBarMenu1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.toolBarMenu1.guidKey = null;
+ this.toolBarMenu1.isSetBtn = false;
+ this.toolBarMenu1.Location = new System.Drawing.Point(0, 0);
+ this.toolBarMenu1.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4);
+ this.toolBarMenu1.Name = "toolBarMenu1";
+ this.toolBarMenu1.rptParameter = null;
+ this.toolBarMenu1.Size = new System.Drawing.Size(1238, 98);
+ this.toolBarMenu1.TabIndex = 4;
+ this.toolBarMenu1.xlsInService = null;
+ this.toolBarMenu1.xlsOutParameter = null;
+ //
+ // SimpleKanBan
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 22F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.xtraTabControl1);
+ this.Controls.Add(this.toolBarMenu1);
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.Name = "SimpleKanBan";
+ this.Size = new System.Drawing.Size(1238, 967);
+ this.cms1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.split1.Panel1)).EndInit();
+ this.split1.Panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.split1.Panel2)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.split1)).EndInit();
+ this.split1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.tlMenu)).EndInit();
+ this.xtraTabPage1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).EndInit();
+ this.xtraTabControl1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRoot;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemEdt;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemAdd;
+ private System.Windows.Forms.ContextMenuStrip cms1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemDel;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colId;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colParentId;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colCode;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colTitle;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colNodeType;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colUrl;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colIsEnabled;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colIsExpanded;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colSortOrder;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colCreatedBy;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn colCreatedAt;
+ private DevExpress.XtraEditors.SplitContainerControl split1;
+ private DevExpress.XtraTreeList.TreeList tlMenu;
+ private DevExpress.XtraTab.XtraTabPage xtraTabPage1;
+ private DevExpress.XtraTab.XtraTabControl xtraTabControl1;
+ private UserControl.UcToolBarMenu toolBarMenu1;
+ private DevExpress.XtraTreeList.Columns.TreeListColumn treeListColumn1;
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.cs b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.cs
new file mode 100644
index 0000000..30f720a
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.cs
@@ -0,0 +1,381 @@
+锘縰sing DevExpress.Data;
+using DevExpress.XtraTreeList;
+using DevExpress.XtraTreeList.Nodes;
+using Gs.DevApp.Entity;
+using Gs.DevApp.ToolBox;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.DevFrm.Sys
+{
+ /// <summary>
+ /// 鐪嬫澘鐩綍绠$悊 - 鏍戝舰缁撴瀯缁存姢鐣岄潰锛堢敤鎴锋帶浠讹級
+ /// </summary>
+ public partial class SimpleKanBan : DevExpress.XtraEditors.XtraUserControl
+ {
+ private string _webServiceName = "MesSimpleManager/";
+
+ public SimpleKanBan()
+ {
+ InitializeComponent();
+
+ // 宸ュ叿鏍忎簨浠剁粦瀹�
+ toolBarMenu1.btnLoadClick += ToolBarMenu1_btnLoadClick;
+ toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick;
+ // TreeList 琛屽彿鏄剧ず
+ tlMenu.IndicatorWidth = 50;
+ tlMenu.CustomDrawNodeIndicator += (s, ee) =>
+ {
+ if (ee.IsNodeIndicator)
+ {
+ var index = ee.Node.TreeList.GetVisibleIndexByNode(ee.Node);
+ ee.Info.DisplayText = (index + 1).ToString();
+ }
+ };
+
+ // 鍒濆鍖栧姞杞芥暟鎹�
+ getPageList();
+
+ // 鍙抽敭鑿滃崟浜嬩欢
+ tlMenu.MouseDown += TlMenu_MouseDown;
+
+ // 澧炲姞瀛愰」
+ toolStripMenuItemAdd.Click += (s, ee) =>
+ {
+ string strGuid = "";
+ string strUpGuid = "";
+ if (tlMenu.FocusedNode != null)
+ {
+ strUpGuid = tlMenu.FocusedNode.GetValue("id").ToString();
+ }
+ SimpleKanBanEdit frm = new SimpleKanBanEdit(strGuid, strUpGuid);
+ frm.UpdateParent += (s2, ee2) =>
+ {
+ getPageList();
+ TreeListNode node = tlMenu.FindNodeByKeyID(long.Parse(strUpGuid));
+ if (node != null)
+ {
+ node.Expanded = true;
+ tlMenu.MakeNodeVisible(node);
+ }
+ };
+ frm.ShowDialog();
+ };
+
+ // 澧炲姞涓婚」锛堟牴鑺傜偣锛�
+ toolStripMenuItemRoot.Click += (s, ee) =>
+ {
+ string strGuid = "";
+ string strUpGuid = "";
+ SimpleKanBanEdit frm = new SimpleKanBanEdit(strGuid, strUpGuid);
+ frm.UpdateParent += (s2, ee2) =>
+ {
+ getPageList();
+ };
+ frm.ShowDialog();
+ };
+
+ // 鍒犻櫎鑺傜偣
+ toolStripMenuItemDel.Click += (s, ee) =>
+ {
+ if (tlMenu.FocusedNode != null)
+ {
+ string rowGuid = "";
+ string rowName = "";
+ rowGuid = tlMenu.FocusedNode.GetValue("id").ToString();
+ rowName = tlMenu.FocusedNode.GetValue("title").ToString();
+ if (string.IsNullOrEmpty(rowGuid))
+ {
+ MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
+ return;
+ }
+ if (!MsgHelper.AskQuestion("浣犻�夋嫨浜嗐��" + rowName + "銆戯紝纭畾鍒犻櫎鍚楋紵"))
+ return;
+ List<dynamic> lst = new List<dynamic>();
+ lst.Add(rowGuid);
+ try
+ {
+ string strJson = UtilityHelper.HttpPost("", _webServiceName + "DeleteModel", JsonConvert.SerializeObject(lst));
+ ReturnModel<dynamic> _rtn = UtilityHelper.ReturnToDynamic(strJson);
+ if (_rtn.rtnCode > 0)
+ {
+ tlMenu.DeleteNode(tlMenu.FocusedNode);
+ }
+ else
+ MsgHelper.ShowError("鎻愮ず锛�" + _rtn.rtnMsg);
+ }
+ catch (Exception ex)
+ {
+ MsgHelper.ShowError("鎻愮ず锛�" + ex.Message);
+ }
+ }
+ };
+ // 鍒涘缓鍒锋柊鑿滃崟椤�
+ ToolStripMenuItem toolStripMenuItemRefresh = new ToolStripMenuItem();
+ toolStripMenuItemRefresh.Text = "鍒锋柊";
+ toolStripMenuItemRefresh.Click += ToolBarMenu1_btnLoadClick; // 鐩存帴璋冪敤宸叉湁鍒锋柊浜嬩欢
+
+ // 娣诲姞鍒板彸閿彍鍗曪紝涓嶆竻绌哄師鏈� Items
+ cms1.Items.Add(toolStripMenuItemRefresh);
+
+ // 缂栬緫鑺傜偣
+ toolStripMenuItemEdt.Click += (s, ee) =>
+ {
+ string strGuid = "";
+ string strUpGuid = "";
+ if (tlMenu.FocusedNode != null)
+ {
+ strGuid = tlMenu.FocusedNode.GetValue("id").ToString();
+ var fidValue = tlMenu.FocusedNode.GetValue("parentId");
+ strUpGuid = fidValue != null ? fidValue.ToString() : "";
+ }
+ SimpleKanBanEdit frm = new SimpleKanBanEdit(strGuid, strUpGuid);
+ frm.UpdateParent += (s2, ee2) =>
+ {
+ getPageList();
+ TreeListNode node = tlMenu.FindNodeByKeyID(long.Parse(strGuid));
+ if (node != null)
+ {
+ node.Expanded = true;
+ tlMenu.MakeNodeVisible(node);
+ }
+ };
+ frm.ShowDialog();
+ };
+ }
+
+ /// <summary>
+ /// 鏌ヨ浜嬩欢
+ /// </summary>
+ private void ToolBarMenu1_btnQueryClick(object sender, EventArgs e)
+ {
+ MsgHelper.ShowInformation("璇ョ獥浣撲笉鏀寔鏌ヨ锛岃嫢鎯虫洿鏂伴〉闈紝璇风偣鍑� 鍒锋柊");
+ }
+
+ /// <summary>
+ /// 鍒锋柊浜嬩欢
+ /// </summary>
+ private void ToolBarMenu1_btnLoadClick(object sender, EventArgs e)
+ {
+ getPageList();
+ MsgHelper.ShowInformation("鍒锋柊鎴愬姛锛�");
+ }
+ /// <summary>
+ /// 鍙抽敭寮瑰嚭鑿滃崟
+ /// </summary>
+ private void TlMenu_MouseDown(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Right)
+ {
+ TreeListHitInfo hInfo = tlMenu.CalcHitInfo(new Point(e.X, e.Y));
+ TreeListNode node = hInfo.Node;
+ tlMenu.FocusedNode = node;
+ if (hInfo.HitInfoType == HitInfoType.Cell ||
+ hInfo.HitInfoType == HitInfoType.Row ||
+ hInfo.HitInfoType == HitInfoType.RowIndent ||
+ hInfo.HitInfoType == HitInfoType.RowIndicator)
+ {
+ if (node != null)
+ {
+ toolStripMenuItemAdd.Visible = true;
+ toolStripMenuItemEdt.Visible = true;
+ toolStripMenuItemDel.Visible = true;
+ toolStripMenuItemRoot.Visible = false;
+ cms1.Show(tlMenu, e.Location);
+ }
+ }
+ else
+ {
+ toolStripMenuItemAdd.Visible = false;
+ toolStripMenuItemEdt.Visible = false;
+ toolStripMenuItemDel.Visible = false;
+ toolStripMenuItemRoot.Visible = true;
+ cms1.Show(tlMenu, e.Location);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍔犺浇鏁版嵁鍒楄〃 - 鏍戝舰缁撴瀯鏄剧ず
+ /// </summary>
+ private void getPageList()
+ {
+ var pgq = new PageQueryModel(1, 999999, "a.node_level", "asc", "", "");//sort_order
+ var json = JsonConvert.SerializeObject(pgq);
+
+ try
+ {
+ var strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetListPage", json);
+ var dd = UtilityHelper.ReturnToTablePage(strReturn);
+ var dt = dd.rtnData.list; // 鑾峰彇鍘熷 DataTable
+
+
+ // 妫�娴� parentId 鏄惁瀛樺湪涓旂被鍨嬩笉瀵�
+ if (dt.Columns.Contains("parentId") && dt.Columns["parentId"].DataType != typeof(long))
+ {
+ // 1. 鍒涘缓涓�涓柊鐨� Int64 绫诲瀷鐨勪复鏃跺垪
+ DataColumn newCol = new DataColumn("parentId_Fixed", typeof(long));
+ dt.Columns.Add(newCol);
+
+ // 2. 閬嶅巻鎵�鏈夎锛屾妸 String 杞垚 Long
+ foreach (DataRow row in dt.Rows)
+ {
+ object oldVal = row["parentId"];
+ // 鍙湁闈炵┖鍊兼墠杞崲锛岀┖鍊间繚鎸� DBNull (鍗虫牴鑺傜偣)
+ if (oldVal != null && oldVal != DBNull.Value && !string.IsNullOrEmpty(oldVal.ToString()))
+ {
+ if (long.TryParse(oldVal.ToString(), out long val))
+ {
+ row["parentId_Fixed"] = val;
+ }
+ }
+ }
+
+ // 3. 绉婚櫎鏃х殑 String 鍒�
+ dt.Columns.Remove("parentId");
+
+ // 4. 鎶婃柊鍒楁敼鍚嶄负 parentId
+ newCol.ColumnName = "parentId";
+ }
+
+
+ tlMenu.BeginUpdate();
+
+ // 1. 缁戝畾澶勭悊杩囩殑鏁版嵁
+ tlMenu.DataSource = dt;
+
+ // 2. 缁戝畾瀛楁 (鐜板湪绫诲瀷瀹屽叏涓�鑷翠簡)
+ tlMenu.KeyFieldName = "id";
+ tlMenu.ParentFieldName = "parentId";
+ // 璁剧疆鏍硅妭鐐� (Int64 绫诲瀷鐨勫垪锛岀┖鍊煎氨鏄� DBNull)
+ tlMenu.RootValue = DBNull.Value;
+
+
+ string sortColName = "sortOrder";
+
+ if (tlMenu.Columns[sortColName] != null)
+ {
+
+ tlMenu.ClearSorting();
+
+ tlMenu.Columns[sortColName].SortOrder = System.Windows.Forms.SortOrder.Ascending;
+
+ tlMenu.Columns[sortColName].SortIndex = 0;
+ }
+ tlMenu.ForceInitialize();
+
+ // 4. 璋冪敤灞曞紑閫昏緫
+ ApplyExpandState();
+
+ tlMenu.EndUpdate();
+ tlMenu.BestFitColumns();
+
+
+
+ }
+ catch (Exception ex)
+ {
+ tlMenu.EndUpdate();
+ MsgHelper.Warning("鍔犺浇澶辫触锛�" + ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁 isExpanded (bool) 瀛楁璁剧疆鑺傜偣灞曞紑
+ /// </summary>
+ private void ApplyExpandState()
+ {
+ // 1. 鍏堝叏閮ㄦ姌鍙�
+ tlMenu.CollapseAll();
+
+ // 2. 浣跨敤 DevExpress 楂樻晥杩唬鍣ㄩ亶鍘�
+ tlMenu.NodesIterator.DoOperation(node =>
+ {
+ // 鑾峰彇鍊� (娉ㄦ剰锛氬垪鍚嶅繀椤讳笌 DataTable 涓竴鑷达紝閫氬父鏄� "isExpanded")
+ object val = node.GetValue("isExpanded");
+
+ // 3. 鍒ゆ柇骞跺睍寮�
+ if (val != null && val != DBNull.Value)
+ {
+ if ((bool)val)
+ {
+ node.Expanded = true;
+ }
+ }
+ });
+ }
+ /// <summary>
+ /// 灏嗗姩鎬佹暟鎹浆鎹负DataTable
+ /// </summary>
+ private DataTable ConvertToDataTable(dynamic sourceData)
+ {
+ DataTable dt = new DataTable();
+
+ if (sourceData == null) return dt;
+
+ // 濡傛灉宸茬粡鏄疍ataTable锛岀洿鎺ヨ繑鍥�
+ if (sourceData is DataTable)
+ return sourceData as DataTable;
+
+ // 灏濊瘯浠嶫SON鏁扮粍杞崲
+ string jsonStr = JsonConvert.SerializeObject(sourceData);
+ dt = JsonConvert.DeserializeObject<DataTable>(jsonStr);
+
+ return dt;
+ }
+
+ /// <summary>
+ /// 澶勭悊parentId瀛楁锛岀‘淇濇爲褰㈢粨鏋勬纭瀯寤�
+ /// 鏍硅妭鐐癸紙node_level=0 鎴� parentId涓簄ull/0锛夌殑parentId璁句负DBNull
+ /// </summary>
+ private void ProcessParentIdForTreeStructure(DataTable dt)
+ {
+ if (dt == null || dt.Rows.Count == 0) return;
+
+ foreach (DataRow row in dt.Rows)
+ {
+ // 鑾峰彇nodeLevel
+ int nodeLevel = 0;
+ if (dt.Columns.Contains("nodeLevel") && row["nodeLevel"] != DBNull.Value)
+ {
+ nodeLevel = Convert.ToInt32(row["nodeLevel"]);
+ }
+
+ // 鑾峰彇parentId
+ object parentIdValue = null;
+ if (dt.Columns.Contains("parentId"))
+ {
+ parentIdValue = row["parentId"];
+ }
+
+ // 濡傛灉鏄牴鑺傜偣锛坣odeLevel=0 鎴� parentId涓簄ull/0/绌猴級锛屽皢parentId璁句负DBNull
+ bool isRootNode = nodeLevel == 0;
+ bool hasNoParent = parentIdValue == null ||
+ parentIdValue == DBNull.Value ||
+ string.IsNullOrEmpty(parentIdValue.ToString()) ||
+ parentIdValue.ToString() == "0";
+
+ if (isRootNode || hasNoParent)
+ {
+ row["parentId"] = DBNull.Value;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 灞曞紑绗竴绾ц妭鐐癸紙鏍硅妭鐐癸級
+ /// </summary>
+ private void ExpandFirstLevelNodes()
+ {
+ foreach (TreeListNode node in tlMenu.Nodes)
+ {
+ node.Expanded = true;
+ }
+ }
+
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.resx b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.resx
new file mode 100644
index 0000000..eee23a6
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBan.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="cms1.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/Sys/SimpleKanBanEdit.Designer.cs b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.Designer.cs
new file mode 100644
index 0000000..20edc7f
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.Designer.cs
@@ -0,0 +1,415 @@
+锘縩amespace Gs.DevApp.DevFrm.Sys
+{
+ partial class SimpleKanBanEdit
+ {
+ /// <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.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+ this.txtCode = new DevExpress.XtraEditors.TextEdit();
+ this.txtTitle = new DevExpress.XtraEditors.TextEdit();
+ this.rgNodeType = new DevExpress.XtraEditors.RadioGroup();
+ this.txtUrl = new DevExpress.XtraEditors.TextEdit();
+ this.seCarouselDuration = new DevExpress.XtraEditors.SpinEdit();
+ this.seSortOrder = new DevExpress.XtraEditors.SpinEdit();
+ this.chkIsExpanded = new DevExpress.XtraEditors.CheckEdit();
+ this.chkIsEnabled = new DevExpress.XtraEditors.CheckEdit();
+ this.btnSave = new DevExpress.XtraEditors.SimpleButton();
+ this.btnCancel = new DevExpress.XtraEditors.SimpleButton();
+ this.layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
+ this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem8 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
+ this.layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+ this.layoutControlItem10 = new DevExpress.XtraLayout.LayoutControlItem();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
+ this.layoutControl1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtCode.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtTitle.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.rgNodeType.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtUrl.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.seCarouselDuration.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.seSortOrder.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkIsExpanded.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkIsEnabled.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem7)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem10)).BeginInit();
+ this.SuspendLayout();
+ //
+ // layoutControl1
+ //
+ this.layoutControl1.Controls.Add(this.txtCode);
+ this.layoutControl1.Controls.Add(this.txtTitle);
+ this.layoutControl1.Controls.Add(this.rgNodeType);
+ this.layoutControl1.Controls.Add(this.txtUrl);
+ this.layoutControl1.Controls.Add(this.seCarouselDuration);
+ this.layoutControl1.Controls.Add(this.seSortOrder);
+ this.layoutControl1.Controls.Add(this.chkIsExpanded);
+ this.layoutControl1.Controls.Add(this.chkIsEnabled);
+ this.layoutControl1.Controls.Add(this.btnSave);
+ this.layoutControl1.Controls.Add(this.btnCancel);
+ this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.layoutControl1.Location = new System.Drawing.Point(0, 0);
+ this.layoutControl1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.layoutControl1.Name = "layoutControl1";
+ this.layoutControl1.Root = this.layoutControlGroup1;
+ this.layoutControl1.Size = new System.Drawing.Size(562, 464);
+ this.layoutControl1.TabIndex = 0;
+ this.layoutControl1.Text = "layoutControl1";
+ //
+ // txtCode
+ //
+ this.txtCode.Location = new System.Drawing.Point(151, 14);
+ this.txtCode.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtCode.Name = "txtCode";
+ this.txtCode.Properties.MaxLength = 50;
+ this.txtCode.Size = new System.Drawing.Size(397, 28);
+ this.txtCode.StyleController = this.layoutControl1;
+ this.txtCode.TabIndex = 4;
+ //
+ // txtTitle
+ //
+ this.txtTitle.Location = new System.Drawing.Point(151, 46);
+ this.txtTitle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtTitle.Name = "txtTitle";
+ this.txtTitle.Properties.MaxLength = 255;
+ this.txtTitle.Size = new System.Drawing.Size(397, 28);
+ this.txtTitle.StyleController = this.layoutControl1;
+ this.txtTitle.TabIndex = 5;
+ //
+ // rgNodeType
+ //
+ this.rgNodeType.Location = new System.Drawing.Point(151, 78);
+ this.rgNodeType.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.rgNodeType.Name = "rgNodeType";
+ this.rgNodeType.Properties.Items.AddRange(new DevExpress.XtraEditors.Controls.RadioGroupItem[] {
+ new DevExpress.XtraEditors.Controls.RadioGroupItem(0, "鏍圭洰褰�"),
+ new DevExpress.XtraEditors.Controls.RadioGroupItem(1, "鐪嬫澘鐩綍"),
+ new DevExpress.XtraEditors.Controls.RadioGroupItem(2, "鐪嬫澘鍐呭")});
+ this.rgNodeType.Size = new System.Drawing.Size(397, 49);
+ this.rgNodeType.StyleController = this.layoutControl1;
+ this.rgNodeType.TabIndex = 6;
+ //
+ // txtUrl
+ //
+ this.txtUrl.Location = new System.Drawing.Point(151, 131);
+ this.txtUrl.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtUrl.Name = "txtUrl";
+ this.txtUrl.Properties.MaxLength = 500;
+ this.txtUrl.Size = new System.Drawing.Size(397, 28);
+ this.txtUrl.StyleController = this.layoutControl1;
+ this.txtUrl.TabIndex = 7;
+ //
+ // seCarouselDuration
+ //
+ this.seCarouselDuration.EditValue = new decimal(new int[] {
+ 10,
+ 0,
+ 0,
+ 0});
+ this.seCarouselDuration.Location = new System.Drawing.Point(151, 163);
+ this.seCarouselDuration.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.seCarouselDuration.Name = "seCarouselDuration";
+ this.seCarouselDuration.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.seCarouselDuration.Properties.MaxValue = new decimal(new int[] {
+ 3600,
+ 0,
+ 0,
+ 0});
+ this.seCarouselDuration.Properties.MinValue = new decimal(new int[] {
+ 1,
+ 0,
+ 0,
+ 0});
+ this.seCarouselDuration.Size = new System.Drawing.Size(397, 28);
+ this.seCarouselDuration.StyleController = this.layoutControl1;
+ this.seCarouselDuration.TabIndex = 8;
+ //
+ // seSortOrder
+ //
+ this.seSortOrder.EditValue = new decimal(new int[] {
+ 0,
+ 0,
+ 0,
+ 0});
+ this.seSortOrder.Location = new System.Drawing.Point(151, 195);
+ this.seSortOrder.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.seSortOrder.Name = "seSortOrder";
+ this.seSortOrder.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.seSortOrder.Properties.MaxValue = new decimal(new int[] {
+ 99999,
+ 0,
+ 0,
+ 0});
+ this.seSortOrder.Size = new System.Drawing.Size(397, 28);
+ this.seSortOrder.StyleController = this.layoutControl1;
+ this.seSortOrder.TabIndex = 9;
+ //
+ // chkIsExpanded
+ //
+ this.chkIsExpanded.Location = new System.Drawing.Point(14, 227);
+ this.chkIsExpanded.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.chkIsExpanded.Name = "chkIsExpanded";
+ this.chkIsExpanded.Properties.Caption = "榛樿灞曞紑";
+ this.chkIsExpanded.Size = new System.Drawing.Size(534, 27);
+ this.chkIsExpanded.StyleController = this.layoutControl1;
+ this.chkIsExpanded.TabIndex = 10;
+ //
+ // chkIsEnabled
+ //
+ this.chkIsEnabled.EditValue = true;
+ this.chkIsEnabled.Location = new System.Drawing.Point(14, 258);
+ this.chkIsEnabled.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.chkIsEnabled.Name = "chkIsEnabled";
+ this.chkIsEnabled.Properties.Caption = "鍚敤";
+ this.chkIsEnabled.Size = new System.Drawing.Size(534, 27);
+ this.chkIsEnabled.StyleController = this.layoutControl1;
+ this.chkIsEnabled.TabIndex = 11;
+ //
+ // btnSave
+ //
+ this.btnSave.Location = new System.Drawing.Point(14, 418);
+ this.btnSave.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.btnSave.Name = "btnSave";
+ this.btnSave.Size = new System.Drawing.Size(399, 32);
+ this.btnSave.StyleController = this.layoutControl1;
+ this.btnSave.TabIndex = 12;
+ this.btnSave.Text = "淇濆瓨";
+ //
+ // btnCancel
+ //
+ this.btnCancel.Location = new System.Drawing.Point(417, 418);
+ this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(131, 32);
+ this.btnCancel.StyleController = this.layoutControl1;
+ this.btnCancel.TabIndex = 13;
+ this.btnCancel.Text = "鍙栨秷";
+ //
+ // layoutControlGroup1
+ //
+ this.layoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+ this.layoutControlGroup1.GroupBordersVisible = false;
+ this.layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+ this.layoutControlItem1,
+ this.layoutControlItem2,
+ this.layoutControlItem3,
+ this.layoutControlItem4,
+ this.layoutControlItem5,
+ this.layoutControlItem6,
+ this.layoutControlItem7,
+ this.layoutControlItem8,
+ this.emptySpaceItem1,
+ this.layoutControlItem9,
+ this.layoutControlItem10});
+ this.layoutControlGroup1.Name = "layoutControlGroup1";
+ this.layoutControlGroup1.Size = new System.Drawing.Size(562, 464);
+ this.layoutControlGroup1.TextVisible = false;
+ //
+ // layoutControlItem1
+ //
+ this.layoutControlItem1.Control = this.txtCode;
+ this.layoutControlItem1.Location = new System.Drawing.Point(0, 0);
+ this.layoutControlItem1.Name = "layoutControlItem1";
+ this.layoutControlItem1.Size = new System.Drawing.Size(538, 32);
+ this.layoutControlItem1.Text = "缂栫爜锛�";
+ this.layoutControlItem1.TextSize = new System.Drawing.Size(122, 22);
+ //
+ // layoutControlItem2
+ //
+ this.layoutControlItem2.Control = this.txtTitle;
+ this.layoutControlItem2.Location = new System.Drawing.Point(0, 32);
+ this.layoutControlItem2.Name = "layoutControlItem2";
+ this.layoutControlItem2.Size = new System.Drawing.Size(538, 32);
+ this.layoutControlItem2.Text = "鍚嶇О锛�";
+ this.layoutControlItem2.TextSize = new System.Drawing.Size(122, 22);
+ //
+ // layoutControlItem3
+ //
+ this.layoutControlItem3.Control = this.rgNodeType;
+ this.layoutControlItem3.Location = new System.Drawing.Point(0, 64);
+ this.layoutControlItem3.Name = "layoutControlItem3";
+ this.layoutControlItem3.Size = new System.Drawing.Size(538, 53);
+ this.layoutControlItem3.Text = "鑺傜偣绫诲瀷锛�";
+ this.layoutControlItem3.TextSize = new System.Drawing.Size(122, 22);
+ //
+ // layoutControlItem4
+ //
+ this.layoutControlItem4.Control = this.txtUrl;
+ this.layoutControlItem4.Location = new System.Drawing.Point(0, 117);
+ this.layoutControlItem4.Name = "layoutControlItem4";
+ this.layoutControlItem4.Size = new System.Drawing.Size(538, 32);
+ this.layoutControlItem4.Text = "URL鍦板潃锛�";
+ this.layoutControlItem4.TextSize = new System.Drawing.Size(122, 22);
+ //
+ // layoutControlItem5
+ //
+ this.layoutControlItem5.Control = this.seCarouselDuration;
+ this.layoutControlItem5.Location = new System.Drawing.Point(0, 149);
+ this.layoutControlItem5.Name = "layoutControlItem5";
+ this.layoutControlItem5.Size = new System.Drawing.Size(538, 32);
+ this.layoutControlItem5.Text = "杞挱鏃堕暱(绉�)锛�";
+ this.layoutControlItem5.TextSize = new System.Drawing.Size(122, 22);
+ //
+ // layoutControlItem6
+ //
+ this.layoutControlItem6.Control = this.seSortOrder;
+ this.layoutControlItem6.Location = new System.Drawing.Point(0, 181);
+ this.layoutControlItem6.Name = "layoutControlItem6";
+ this.layoutControlItem6.Size = new System.Drawing.Size(538, 32);
+ this.layoutControlItem6.Text = "鎺掑簭鍙凤細";
+ this.layoutControlItem6.TextSize = new System.Drawing.Size(122, 22);
+ //
+ // layoutControlItem7
+ //
+ this.layoutControlItem7.Control = this.chkIsExpanded;
+ this.layoutControlItem7.Location = new System.Drawing.Point(0, 213);
+ this.layoutControlItem7.Name = "layoutControlItem7";
+ this.layoutControlItem7.Size = new System.Drawing.Size(538, 31);
+ this.layoutControlItem7.Text = "榛樿灞曞紑锛�";
+ this.layoutControlItem7.TextSize = new System.Drawing.Size(0, 0);
+ this.layoutControlItem7.TextVisible = false;
+ //
+ // layoutControlItem8
+ //
+ this.layoutControlItem8.Control = this.chkIsEnabled;
+ this.layoutControlItem8.Location = new System.Drawing.Point(0, 244);
+ this.layoutControlItem8.Name = "layoutControlItem8";
+ this.layoutControlItem8.Size = new System.Drawing.Size(538, 31);
+ this.layoutControlItem8.Text = "鍚敤鐘舵�侊細";
+ this.layoutControlItem8.TextSize = new System.Drawing.Size(0, 0);
+ this.layoutControlItem8.TextVisible = false;
+ //
+ // emptySpaceItem1
+ //
+ this.emptySpaceItem1.AllowHotTrack = false;
+ this.emptySpaceItem1.Location = new System.Drawing.Point(0, 275);
+ this.emptySpaceItem1.Name = "emptySpaceItem1";
+ this.emptySpaceItem1.Size = new System.Drawing.Size(538, 129);
+ this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
+ //
+ // layoutControlItem9
+ //
+ this.layoutControlItem9.Control = this.btnSave;
+ this.layoutControlItem9.Location = new System.Drawing.Point(0, 404);
+ this.layoutControlItem9.Name = "layoutControlItem9";
+ this.layoutControlItem9.Size = new System.Drawing.Size(403, 36);
+ this.layoutControlItem9.TextSize = new System.Drawing.Size(0, 0);
+ this.layoutControlItem9.TextVisible = false;
+ //
+ // layoutControlItem10
+ //
+ this.layoutControlItem10.Control = this.btnCancel;
+ this.layoutControlItem10.Location = new System.Drawing.Point(403, 404);
+ this.layoutControlItem10.Name = "layoutControlItem10";
+ this.layoutControlItem10.Size = new System.Drawing.Size(135, 36);
+ this.layoutControlItem10.TextSize = new System.Drawing.Size(0, 0);
+ this.layoutControlItem10.TextVisible = false;
+ //
+ // SimpleKanBanEdit
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 22F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(562, 464);
+ this.Controls.Add(this.layoutControl1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "SimpleKanBanEdit";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "鐪嬫澘鑺傜偣缂栬緫";
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
+ this.layoutControl1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.txtCode.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtTitle.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.rgNodeType.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtUrl.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.seCarouselDuration.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.seSortOrder.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkIsExpanded.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkIsEnabled.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem5)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem7)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem8)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem9)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem10)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraLayout.LayoutControl layoutControl1;
+ private DevExpress.XtraEditors.TextEdit txtCode;
+ private DevExpress.XtraEditors.TextEdit txtTitle;
+ private DevExpress.XtraEditors.RadioGroup rgNodeType;
+ private DevExpress.XtraEditors.TextEdit txtUrl;
+ private DevExpress.XtraEditors.SpinEdit seCarouselDuration;
+ private DevExpress.XtraEditors.SpinEdit seSortOrder;
+ private DevExpress.XtraEditors.CheckEdit chkIsExpanded;
+ private DevExpress.XtraEditors.CheckEdit chkIsEnabled;
+ private DevExpress.XtraEditors.SimpleButton btnSave;
+ private DevExpress.XtraEditors.SimpleButton btnCancel;
+ private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
+ private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
+ private DevExpress.XtraLayout.LayoutControlItem layoutControlItem10;
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.cs b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.cs
new file mode 100644
index 0000000..58a61c6
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.cs
@@ -0,0 +1,352 @@
+锘縰sing DevExpress.XtraEditors;
+using Gs.DevApp.ToolBox;
+using Newtonsoft.Json;
+using System;
+using System.Windows.Forms;
+
+namespace Gs.DevApp.DevFrm.Sys
+{
+ /// <summary>
+ /// 鐪嬫澘鑺傜偣缂栬緫绐椾綋
+ /// </summary>
+ public partial class SimpleKanBanEdit : DevExpress.XtraEditors.XtraForm
+ {
+ private string _webServiceName = "MesSimpleManager/";
+ private string _strId = ""; // 褰撳墠缂栬緫鐨勮妭鐐笽D锛堜负绌鸿〃绀烘柊澧烇級
+ private string _strFid = ""; // 鐖惰妭鐐笽D
+ private int _nodeLevel = 0; // 鑺傜偣灞傜骇
+ private bool _isEditMode = false; // 鏄惁涓虹紪杈戞ā寮�
+ private bool _isLoading = false; // 鏄惁姝e湪鍔犺浇鏁版嵁
+
+ /// <summary>
+ /// 淇濆瓨鎴愬姛鍚庣殑鍥炶皟浜嬩欢
+ /// </summary>
+ public event EventHandler<UpdateParentEventArgs> UpdateParent;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="strId">鑺傜偣ID锛屼负绌鸿〃绀烘柊澧�</param>
+ /// <param name="strFid">鐖惰妭鐐笽D锛屼负绌鸿〃绀烘牴鑺傜偣</param>
+ public SimpleKanBanEdit(string strId, string strFid)
+ {
+ InitializeComponent();
+ rgNodeType.EditValueChanged += RgNodeType_EditValueChanged;
+ _strId = strId;
+ _strFid = strFid;
+ _isEditMode = !string.IsNullOrEmpty(_strId);
+
+ // 璁剧疆绐椾綋鏍囬
+ this.Text = _isEditMode ? "缂栬緫鐪嬫澘鑺傜偣" : "鏂板鐪嬫澘鑺傜偣";
+
+ // 鍒濆鍖栬妭鐐圭被鍨嬮�夐」锛�0=鏍圭洰褰�, 1=鐪嬫澘鐩綍, 2=鐪嬫澘鍐呭锛�
+ rgNodeType.Properties.Items.Clear();
+ rgNodeType.Properties.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem(0, "鏍圭洰褰�"));
+ rgNodeType.Properties.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem(1, "鐪嬫澘鐩綍"));
+ rgNodeType.Properties.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem(2, "鐪嬫澘鍐呭"));
+
+ // 淇濆瓨鎸夐挳
+ btnSave.Click += BtnSave_Click;
+
+ // 鍙栨秷鎸夐挳
+ btnCancel.Click += (s, e) => { this.Close(); };
+
+ // 鍒濆鍖栭粯璁ゅ��
+ seSortOrder.Value = 0;
+ seCarouselDuration.Value = 10;
+ chkIsExpanded.Checked = false;
+ chkIsEnabled.Checked = true;
+
+ // 鍔犺浇鏁版嵁
+ if (_isEditMode)
+ {
+ LoadModel();
+ }
+ else
+ {
+ // 鏂板妯″紡锛氭牴鎹埗鑺傜偣璁$畻褰撳墠鑺傜偣灞傜骇骞惰缃妭鐐圭被鍨�
+ InitNodeLevelAndType();
+ }
+ }
+
+
+ /// <summary>
+ /// 鏂板妯″紡锛氬垵濮嬪寲鑺傜偣灞傜骇
+ /// 瑙勫垯锛�
+ /// - node_level = 0锛氭牴鑺傜偣
+ /// - node_level >= 1锛氶潪鏍硅妭鐐�
+ /// </summary>
+ private void InitNodeLevelAndType()
+ {
+ if (string.IsNullOrEmpty(_strFid))
+ {
+ // 鏃犵埗鑺傜偣锛岃鏄庢槸鏍硅妭鐐�
+ _nodeLevel = 0;
+ }
+ else
+ {
+ // 鏈夌埗鑺傜偣锛屽熀浜庣埗鑺傜偣灞傜骇 +1
+ try
+ {
+ var _obj = new { Id = long.Parse(_strFid) };
+ var json = JsonConvert.SerializeObject(_obj);
+ var strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetModel", json);
+ var dd = UtilityHelper.ReturnToDynamic(strReturn);
+
+ if (dd.rtnCode > 0 && dd.rtnData != null)
+ {
+ int parentNodeLevel = dd.rtnData.nodeLevel != null
+ ? Convert.ToInt32(dd.rtnData.nodeLevel)
+ : 0;
+
+ _nodeLevel = parentNodeLevel + 1;
+ }
+ else
+ {
+ _nodeLevel = 1;
+ }
+ }
+ catch
+ {
+ _nodeLevel = 1;
+ }
+ }
+
+ // 鏍规嵁灞傜骇鍒濆鍖� NodeType & 鎺т欢鐘舵��
+ SetNodeTypeByLevel();
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑺傜偣灞傜骇璁剧疆鑺傜偣绫诲瀷
+ /// - node_level = 0锛氬彧鑳介�� 0锛堟牴鐩綍锛夛紝鏁翠釜鎺т欢绂佺敤
+ /// - node_level >= 1锛氬彧鑳介�� 1 / 2锛屾牴鐩綍椤圭伆鎺変笉鍙��
+ /// </summary>
+ private void SetNodeTypeByLevel()
+ {
+ // 鍏堢粺涓�鍚敤鎺т欢锛屽悗闈㈡寜鎯呭喌澶勭悊
+ rgNodeType.Enabled = true;
+
+ if (_nodeLevel == 0)
+ {
+ // 鏍硅妭鐐癸細鍙兘鏄牴鐩綍
+ rgNodeType.EditValue = 0;
+ rgNodeType.Enabled = false;
+ }
+ else
+ {
+ // 闈炴牴鑺傜偣锛氫笉鑳介�夆�滄牴鐩綍(0)鈥�
+ DisableRootNodeTypeItem();
+
+ // 濡傛灉褰撳墠鍊兼槸 0锛屽己鍒跺垏鍒伴粯璁ゅ��
+ if (rgNodeType.EditValue == null ||
+ Convert.ToInt32(rgNodeType.EditValue) == 0)
+ {
+ rgNodeType.EditValue = 1; // 榛樿鈥滅湅鏉跨洰褰曗��
+ }
+ }
+
+ SetControlsByNodeType();
+ }
+
+ /// <summary>
+ /// 绂佺敤 NodeType=0锛堟牴鐩綍锛夐�夐」
+ /// </summary>
+ private void DisableRootNodeTypeItem()
+ {
+ foreach (DevExpress.XtraEditors.Controls.RadioGroupItem item in rgNodeType.Properties.Items)
+ {
+ if (Convert.ToInt32(item.Value) == 0)
+ {
+ item.Enabled = false;
+ break;
+ }
+ }
+ }
+ private void LoadModel()
+ {
+ try
+ {
+ var _obj = new { Id = long.Parse(_strId) };
+ var json = JsonConvert.SerializeObject(_obj);
+ var strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetModel", json);
+ var dd = UtilityHelper.ReturnToDynamic(strReturn);
+
+ if (dd.rtnCode > 0 && dd.rtnData != null)
+ {
+ var m = dd.rtnData;
+
+ // 1. 鍩虹璧嬪��
+ txtCode.Text = m.code != null ? m.code.ToString() : "";
+ txtTitle.Text = m.title != null ? m.title.ToString() : "";
+ txtUrl.Text = m.url != null ? m.url.ToString() : "";
+ _isLoading = true;
+
+ _nodeLevel = m.nodeLevel != null ? Convert.ToInt32(m.nodeLevel) : 0;
+ if (m.parentId != null) _strFid = m.parentId.ToString();
+
+
+ if (m.nodeType != null)
+ {
+ int type = Convert.ToInt32(m.nodeType);
+ rgNodeType.EditValue = type;
+
+ // 鑾峰彇瀛愯妭鐐规暟閲� (浠庡瓨鍌ㄨ繃绋嬫柊澧炵殑瀛楁)
+ int childCount = m.childCount != null ? Convert.ToInt32(m.childCount) : 0;
+
+ // 閫昏緫鍒ゆ柇
+ if (type == 0)
+ {
+ // 鏍圭洰褰曪細姘歌繙涓嶅彲淇敼
+ rgNodeType.Properties.ReadOnly = true;
+ }
+ else
+ {
+
+ if (childCount > 0)
+ {
+ rgNodeType.Properties.ReadOnly = true;
+ // 鍙互缁欑敤鎴蜂竴涓彁绀�(Tooltip)鎴栧湪淇濆瓨鏃朵綋鐜帮紝杩欓噷浠呮帶鍒禪I鍙
+ }
+ else
+ {
+ rgNodeType.Properties.ReadOnly = false;
+ }
+ }
+ }
+
+
+ SetControlsByNodeType(); // 鍒锋柊鐣岄潰
+ _isLoading = false;
+
+ // 鍏朵粬瀛楁
+ if (m.carouselDuration != null) seCarouselDuration.Value = Convert.ToInt32(m.carouselDuration);
+ if (m.sortOrder != null) seSortOrder.Value = Convert.ToInt32(m.sortOrder);
+ chkIsExpanded.Checked = m.isExpanded != null && Convert.ToBoolean(m.isExpanded);
+ chkIsEnabled.Checked = m.isEnabled != null && Convert.ToBoolean(m.isEnabled);
+ }
+ else
+ {
+ MsgHelper.ShowError("鍔犺浇鏁版嵁澶辫触锛�" + dd.rtnMsg);
+ }
+ }
+ catch (Exception ex)
+ {
+ MsgHelper.ShowError("鍔犺浇鏁版嵁寮傚父锛�" + ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑺傜偣灞傜骇锛坣ode_level锛夎缃� URL 鍜岃疆鎾椂闀挎樉绀虹姸鎬�
+ /// </summary>
+ private void SetControlsByNodeType()
+ {
+ int nodeType = Convert.ToInt32(rgNodeType.EditValue);
+ // 鍙湁 nodeType == 2锛堢湅鏉垮唴瀹癸級鎵嶆樉绀�
+ bool show = (nodeType == 2);
+
+ SetUrlAndDurationVisible(show);
+ }
+ /// <summary>
+ /// 绫诲瀷鏇存敼鑷姩鍒锋柊
+ /// </summary>
+ private void RgNodeType_EditValueChanged(object sender, EventArgs e)
+ {
+ SetControlsByNodeType();
+ }
+ /// <summary>
+ /// 璁剧疆 URL 鍜岃疆鎾椂闀跨殑鏄剧ず鐘舵��
+ /// </summary>
+ private void SetUrlAndDurationVisible(bool visible)
+ {
+ // 鎺у埗鍙鎬�
+ layoutControlItem4.Visibility = visible
+ ? DevExpress.XtraLayout.Utils.LayoutVisibility.Always
+ : DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+
+ layoutControlItem5.Visibility = visible
+ ? DevExpress.XtraLayout.Utils.LayoutVisibility.Always
+ : DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
+
+ // 鎺у埗鍙紪杈戠姸鎬�
+ txtUrl.Enabled = visible;
+ seCarouselDuration.Enabled = visible;
+
+ if (!visible)
+ {
+ // 涓嶅彲瑙佹椂娓呯┖
+ txtUrl.Text = string.Empty;
+ seCarouselDuration.Value = 0;
+ }
+ else
+ {
+ // 鍙鏃剁粰榛樿鍊�
+ if (seCarouselDuration.Value <= 0)
+ {
+ seCarouselDuration.Value = 5; // 榛樿 5 绉�
+ }
+ }
+ }
+
+ /// <summary>
+ /// 淇濆瓨鎸夐挳鐐瑰嚮浜嬩欢
+ /// </summary>
+ private void BtnSave_Click(object sender, EventArgs e)
+ {
+ // 楠岃瘉蹇呭~椤�
+ if (string.IsNullOrWhiteSpace(txtTitle.Text))
+ {
+ MsgHelper.Warning("鍚嶇О涓嶈兘涓虹┖锛�");
+ txtTitle.Focus();
+ return;
+ }
+
+ // 鑺傜偣绫诲瀷涓虹湅鏉垮唴瀹规椂锛孶RL涓嶈兘涓虹┖
+ if ((int)rgNodeType.EditValue == 2 && string.IsNullOrWhiteSpace(txtUrl.Text))
+ {
+ MsgHelper.Warning("鐪嬫澘鍐呭鐨刄RL鍦板潃涓嶈兘涓虹┖锛�");
+ txtUrl.Focus();
+ return;
+ }
+
+ try
+ {
+ // 鏋勫缓淇濆瓨瀵硅薄
+ var _obj = new
+ {
+ Id = string.IsNullOrEmpty(_strId) ? 0 : long.Parse(_strId),
+ ParentId = string.IsNullOrEmpty(_strFid) ? (long?)null : long.Parse(_strFid),
+ NodeType = (int)rgNodeType.EditValue,
+ Code = string.IsNullOrWhiteSpace(txtCode.Text) ? null : txtCode.Text.Trim(),
+ Title = txtTitle.Text.Trim(),
+ Url = string.IsNullOrWhiteSpace(txtUrl.Text) ? null : txtUrl.Text.Trim(),
+ CarouselDuration = (int)rgNodeType.EditValue == 2 ? (int?)seCarouselDuration.Value : null,
+ IsExpanded = chkIsExpanded.Checked,
+ IsEnabled = chkIsEnabled.Checked,
+ SortOrder = (int)seSortOrder.Value
+ };
+
+ var json = JsonConvert.SerializeObject(_obj);
+ var strReturn = UtilityHelper.HttpPost("", _webServiceName + "SaveModel", json);
+ var dd = UtilityHelper.ReturnToDynamic(strReturn);
+
+ if (dd.rtnCode > 0)
+ {
+ MsgHelper.ShowInformation("淇濆瓨鎴愬姛锛�");
+
+ // 瑙﹀彂鐖剁獥浣撳埛鏂颁簨浠�
+ UpdateParent?.Invoke(this, new UpdateParentEventArgs());
+
+ this.Close();
+ }
+ else
+ {
+ MsgHelper.ShowError("淇濆瓨澶辫触锛�" + dd.rtnMsg);
+ }
+ }
+ catch (Exception ex)
+ {
+ MsgHelper.ShowError("淇濆瓨寮傚父锛�" + ex.Message);
+ }
+ }
+ }
+}
diff --git a/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.resx b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/DevApp/Gs.DevApp/DevFrm/Sys/SimpleKanBanEdit.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
index 53ce045..762c341 100644
--- a/DevApp/Gs.DevApp/Gs.DevApp.csproj
+++ b/DevApp/Gs.DevApp/Gs.DevApp.csproj
@@ -581,6 +581,18 @@
<Compile Include="DevFrm\QC\DefectCodeDaa.Designer.cs">
<DependentUpon>DefectCodeDaa.cs</DependentUpon>
</Compile>
+ <Compile Include="DevFrm\Sys\DefectCodeKanban.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\Sys\DefectCodeKanban.Designer.cs">
+ <DependentUpon>DefectCodeKanban.cs</DependentUpon>
+ </Compile>
+ <Compile Include="DevFrm\Sys\SimpleKanBan.cs">
+ <SubType>UserControl</SubType>
+ </Compile>
+ <Compile Include="DevFrm\Sys\SimpleKanBan.Designer.cs">
+ <DependentUpon>SimpleKanBan.cs</DependentUpon>
+ </Compile>
<Compile Include="DevFrm\QC\DefectCodeShouJian.cs">
<SubType>Form</SubType>
</Compile>
@@ -616,6 +628,12 @@
</Compile>
<Compile Include="DevFrm\QC\Frm_MesQaItemsDetect01Input.Designer.cs">
<DependentUpon>Frm_MesQaItemsDetect01Input.cs</DependentUpon>
+ </Compile>
+ <Compile Include="DevFrm\Sys\SimpleKanBanEdit.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="DevFrm\Sys\SimpleKanBanEdit.Designer.cs">
+ <DependentUpon>SimpleKanBanEdit.cs</DependentUpon>
</Compile>
<Compile Include="DevFrm\QC\JyxmShowCopy.cs">
<SubType>Form</SubType>
@@ -1981,6 +1999,9 @@
<EmbeddedResource Include="DevFrm\QC\DefectCode.resx">
<DependentUpon>DefectCode.cs</DependentUpon>
</EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\Sys\DefectCodeKanban.resx">
+ <DependentUpon>DefectCodeKanban.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="DevFrm\QC\Frm_IQCLookups.resx">
<DependentUpon>Frm_IQCLookups.cs</DependentUpon>
</EmbeddedResource>
@@ -1993,6 +2014,12 @@
<EmbeddedResource Include="DevFrm\QC\Frm_MesQaItemsDetect01Input.resx">
<DependentUpon>Frm_MesQaItemsDetect01Input.cs</DependentUpon>
</EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\Sys\SimpleKanBan.resx">
+ <DependentUpon>SimpleKanBan.cs</DependentUpon>
+ </EmbeddedResource>
+ <EmbeddedResource Include="DevFrm\Sys\SimpleKanBanEdit.resx">
+ <DependentUpon>SimpleKanBanEdit.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="DevFrm\QC\JyxmShow.resx">
<DependentUpon>JyxmShow.cs</DependentUpon>
</EmbeddedResource>
diff --git a/DevApp/Gs.DevApp/Program.cs b/DevApp/Gs.DevApp/Program.cs
index 1220f48..3c572bf 100644
--- a/DevApp/Gs.DevApp/Program.cs
+++ b/DevApp/Gs.DevApp/Program.cs
@@ -53,6 +53,7 @@
fmLogin.ShowDialog();
if (fmLogin.DialogResult == DialogResult.OK)
{
+
//Application.Run(new DevFrm.User.SysMenu());
//return;
Application.Run(new FrmMain());
--
Gitblit v1.9.3