微信小店商品上传 50%

This commit is contained in:
wule committed 2026-01-09 19:32:27 +08:00
1 parent 8f9bae9875
commit 343b01ab90
83 files changed
+12877 -656

No files matched your search

+136
View File
@@ -0,0 +1,136 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class UcSubAccount
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.lblLeft = new System.Windows.Forms.Label();
this.lblSubAccountName = new System.Windows.Forms.Label();
this.lblRight = new System.Windows.Forms.Label();
this.lblSubAccountGroupName = new System.Windows.Forms.Label();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.AutoSize = true;
this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.tableLayoutPanel1.ColumnCount = 4;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.Controls.Add(this.lblLeft, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.lblSubAccountName, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.lblRight, 3, 0);
this.tableLayoutPanel1.Controls.Add(this.lblSubAccountGroupName, 2, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(95, 20);
this.tableLayoutPanel1.TabIndex = 0;
//
// lblLeft
//
this.lblLeft.AutoSize = true;
this.lblLeft.BackColor = System.Drawing.Color.DodgerBlue;
this.lblLeft.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblLeft.ForeColor = System.Drawing.Color.White;
this.lblLeft.Location = new System.Drawing.Point(3, 4);
this.lblLeft.Margin = new System.Windows.Forms.Padding(3, 1, 0, 0);
this.lblLeft.Name = "lblLeft";
this.lblLeft.Size = new System.Drawing.Size(11, 12);
this.lblLeft.TabIndex = 3;
this.lblLeft.Text = "<";
this.lblLeft.Click += new System.EventHandler(this.lblLeft_Click);
//
// lblSubAccountName
//
this.lblSubAccountName.AutoSize = true;
this.lblSubAccountName.Location = new System.Drawing.Point(17, 4);
this.lblSubAccountName.Margin = new System.Windows.Forms.Padding(3, 1, 0, 0);
this.lblSubAccountName.Name = "lblSubAccountName";
this.lblSubAccountName.Size = new System.Drawing.Size(29, 12);
this.lblSubAccountName.TabIndex = 1;
this.lblSubAccountName.Text = "名称";
//
// lblRight
//
this.lblRight.AutoSize = true;
this.lblRight.BackColor = System.Drawing.Color.DodgerBlue;
this.lblRight.Cursor = System.Windows.Forms.Cursors.Hand;
this.lblRight.ForeColor = System.Drawing.Color.White;
this.lblRight.Location = new System.Drawing.Point(81, 4);
this.lblRight.Margin = new System.Windows.Forms.Padding(0, 1, 3, 0);
this.lblRight.Name = "lblRight";
this.lblRight.Size = new System.Drawing.Size(11, 12);
this.lblRight.TabIndex = 4;
this.lblRight.Text = ">";
this.lblRight.Click += new System.EventHandler(this.lblRight_Click);
//
// lblSubAccountGroupName
//
this.lblSubAccountGroupName.AutoSize = true;
this.lblSubAccountGroupName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.lblSubAccountGroupName.Location = new System.Drawing.Point(49, 3);
this.lblSubAccountGroupName.Name = "lblSubAccountGroupName";
this.lblSubAccountGroupName.Padding = new System.Windows.Forms.Padding(0, 1, 0, 1);
this.lblSubAccountGroupName.Size = new System.Drawing.Size(29, 14);
this.lblSubAccountGroupName.TabIndex = 2;
this.lblSubAccountGroupName.Text = "分组";
//
// UcSubAccount
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.AutoSize = true;
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.BackColor = System.Drawing.Color.Gainsboro;
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "UcSubAccount";
this.Size = new System.Drawing.Size(95, 20);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label lblSubAccountName;
private System.Windows.Forms.Label lblSubAccountGroupName;
private System.Windows.Forms.Label lblLeft;
private System.Windows.Forms.Label lblRight;
}
}
+72
View File
@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AllBase.Model.Result;
namespace TemuKJD.WXForms.ShopForms
{
public partial class UcSubAccount : UserControl
{
public ShopSubAccountInfo subAccount = null;
public delegate void SubAcountDelegate(object obj);
public event SubAcountDelegate AddSubAcountEvent;
public event SubAcountDelegate RemoveSubAcountEvent;
public UcSubAccount(ShopSubAccountInfo _subAccount, bool isNotShopSubAccount = true)
{
InitializeComponent();
subAccount = _subAccount;
if (isNotShopSubAccount)
lblRight.Visible = false;
else
lblLeft.Visible = false;
this.Load += UcSubAccount_Load;
}
public void AddAccount()
{
this.lblLeft_Click(null, null);
}
public void DeleteAccount()
{
this.lblRight_Click(null, null);
}
private void UcSubAccount_Load(object sender, EventArgs e)
{
this.lblSubAccountName.Text = subAccount.user_name;
this.lblSubAccountGroupName.Text = subAccount.group_name;
this.lblSubAccountName.Resize += Lbl_Resize;
this.lblSubAccountGroupName.Resize += Lbl_Resize;
}
private void Lbl_Resize(object sender, EventArgs e)
{
}
public void lblLeft_Click(object sender, EventArgs e)
{
this.lblRight.Visible = true;
this.lblLeft.Visible = false;
AddSubAcountEvent?.Invoke(this);
}
public void lblRight_Click(object sender, EventArgs e)
{
this.lblRight.Visible = false;
this.lblLeft.Visible = true;
RemoveSubAcountEvent?.Invoke(this);
}
}
}
+120
View File
@@ -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>
+321
View File
@@ -0,0 +1,321 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXShopAddEditForm
{
/// <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(WXShopAddEditForm));
this.panel2 = new System.Windows.Forms.Panel();
this.label7 = new System.Windows.Forms.Label();
this.cmbGroup = new System.Windows.Forms.ComboBox();
this.txtBuyAccount = new DevComponents.DotNetBar.Controls.TextBoxX();
this.label6 = new System.Windows.Forms.Label();
this.txtChatAccount = new DevComponents.DotNetBar.Controls.TextBoxX();
this.label4 = new System.Windows.Forms.Label();
this.txtUploadAccount = new DevComponents.DotNetBar.Controls.TextBoxX();
this.label3 = new System.Windows.Forms.Label();
this.txtShopPassword = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.txtLoginName = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.btnOk = new TemuKJD.UserControls.ButtonEx();
this.txtNotes = new DevComponents.DotNetBar.Controls.TextBoxX();
this.label8 = new System.Windows.Forms.Label();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.White;
this.panel2.Controls.Add(this.label8);
this.panel2.Controls.Add(this.txtNotes);
this.panel2.Controls.Add(this.label7);
this.panel2.Controls.Add(this.cmbGroup);
this.panel2.Controls.Add(this.txtBuyAccount);
this.panel2.Controls.Add(this.label6);
this.panel2.Controls.Add(this.txtChatAccount);
this.panel2.Controls.Add(this.label4);
this.panel2.Controls.Add(this.txtUploadAccount);
this.panel2.Controls.Add(this.label3);
this.panel2.Controls.Add(this.txtShopPassword);
this.panel2.Controls.Add(this.label2);
this.panel2.Controls.Add(this.txtLoginName);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.label5);
this.panel2.Controls.Add(this.btnOk);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(1, 33);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(295, 285);
this.panel2.TabIndex = 1;
this.panel2.Paint += new System.Windows.Forms.PaintEventHandler(this.panel2_Paint);
//
// label7
//
this.label7.AutoSize = true;
this.label7.ForeColor = System.Drawing.Color.DarkGray;
this.label7.Location = new System.Drawing.Point(31, 214);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(164, 17);
this.label7.TabIndex = 384;
this.label7.Text = "登录密码为空表示不更新密码";
this.label7.Visible = false;
//
// cmbGroup
//
this.cmbGroup.FormattingEnabled = true;
this.cmbGroup.Items.AddRange(new object[] {
"客服",
"采购",
"上货",
"数据",
"登录"});
this.cmbGroup.Location = new System.Drawing.Point(91, 257);
this.cmbGroup.Name = "cmbGroup";
this.cmbGroup.Size = new System.Drawing.Size(172, 25);
this.cmbGroup.TabIndex = 383;
this.cmbGroup.Visible = false;
//
// txtBuyAccount
//
//
//
//
this.txtBuyAccount.Border.Class = "CrumbBarBackgroundKey";
this.txtBuyAccount.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtBuyAccount.Border.PaddingBottom = 2;
this.txtBuyAccount.Border.PaddingLeft = 2;
this.txtBuyAccount.Border.PaddingRight = 2;
this.txtBuyAccount.Border.PaddingTop = 2;
this.txtBuyAccount.Location = new System.Drawing.Point(91, 240);
this.txtBuyAccount.Name = "txtBuyAccount";
this.txtBuyAccount.Size = new System.Drawing.Size(172, 23);
this.txtBuyAccount.TabIndex = 382;
this.txtBuyAccount.Visible = false;
this.txtBuyAccount.WatermarkText = "点击添加店铺子账户";
this.txtBuyAccount.Click += new System.EventHandler(this.txt_Click);
this.txtBuyAccount.TextChanged += new System.EventHandler(this.txtBuyAccount_TextChanged);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(29, 243);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(56, 17);
this.label6.TabIndex = 381;
this.label6.Text = "采购账户";
this.label6.Visible = false;
//
// txtChatAccount
//
//
//
//
this.txtChatAccount.Border.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtChatAccount.Border.BorderLeft = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtChatAccount.Border.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtChatAccount.Border.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtChatAccount.Border.Class = "CrumbBarBackgroundKey";
this.txtChatAccount.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtChatAccount.Border.PaddingBottom = 2;
this.txtChatAccount.Border.PaddingLeft = 2;
this.txtChatAccount.Border.PaddingRight = 2;
this.txtChatAccount.Border.PaddingTop = 2;
this.txtChatAccount.Location = new System.Drawing.Point(91, 99);
this.txtChatAccount.Name = "txtChatAccount";
this.txtChatAccount.Size = new System.Drawing.Size(172, 23);
this.txtChatAccount.TabIndex = 380;
this.txtChatAccount.WatermarkText = "点击添加店铺子账户";
this.txtChatAccount.Click += new System.EventHandler(this.txt_Click);
this.txtChatAccount.TextChanged += new System.EventHandler(this.txtChat_TextChanged);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(29, 102);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(56, 17);
this.label4.TabIndex = 379;
this.label4.Text = " 子账户";
//
// txtUploadAccount
//
//
//
//
this.txtUploadAccount.Border.Class = "CrumbBarBackgroundKey";
this.txtUploadAccount.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtUploadAccount.Border.PaddingBottom = 2;
this.txtUploadAccount.Border.PaddingLeft = 2;
this.txtUploadAccount.Border.PaddingRight = 2;
this.txtUploadAccount.Border.PaddingTop = 2;
this.txtUploadAccount.Location = new System.Drawing.Point(91, 99);
this.txtUploadAccount.Name = "txtUploadAccount";
this.txtUploadAccount.Size = new System.Drawing.Size(172, 23);
this.txtUploadAccount.TabIndex = 374;
this.txtUploadAccount.Visible = false;
this.txtUploadAccount.Click += new System.EventHandler(this.txt_Click);
this.txtUploadAccount.TextChanged += new System.EventHandler(this.txtUploadAccount_TextChanged);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(29, 102);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 17);
this.label3.TabIndex = 373;
this.label3.Text = "上货账户";
this.label3.Visible = false;
//
// txtShopPassword
//
this.txtShopPassword.Location = new System.Drawing.Point(91, 64);
this.txtShopPassword.Name = "txtShopPassword";
this.txtShopPassword.PasswordChar = '●';
this.txtShopPassword.Size = new System.Drawing.Size(172, 23);
this.txtShopPassword.TabIndex = 338;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(29, 67);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(56, 17);
this.label2.TabIndex = 337;
this.label2.Text = "登录密码";
//
// txtLoginName
//
this.txtLoginName.Location = new System.Drawing.Point(91, 29);
this.txtLoginName.Name = "txtLoginName";
this.txtLoginName.Size = new System.Drawing.Size(172, 23);
this.txtLoginName.TabIndex = 336;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(29, 32);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 17);
this.label1.TabIndex = 0;
this.label1.Text = "登录账号";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(29, 260);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(56, 17);
this.label5.TabIndex = 377;
this.label5.Text = "店铺分组";
this.label5.Visible = false;
//
// btnOk
//
this.btnOk.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOk.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOk.ForeColor = System.Drawing.Color.White;
this.btnOk.Location = new System.Drawing.Point(208, 209);
this.btnOk.Margin = new System.Windows.Forms.Padding(2);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(55, 26);
this.btnOk.TabIndex = 372;
this.btnOk.Text = "新增";
this.btnOk.UseVisualStyleBackColor = false;
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
//
// txtNotes
//
//
//
//
this.txtNotes.Border.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtNotes.Border.BorderLeft = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtNotes.Border.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtNotes.Border.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtNotes.Border.Class = "CrumbBarBackgroundKey";
this.txtNotes.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtNotes.Border.PaddingBottom = 2;
this.txtNotes.Border.PaddingLeft = 2;
this.txtNotes.Border.PaddingRight = 2;
this.txtNotes.Border.PaddingTop = 2;
this.txtNotes.Location = new System.Drawing.Point(91, 133);
this.txtNotes.Name = "txtNotes";
this.txtNotes.Size = new System.Drawing.Size(172, 23);
this.txtNotes.TabIndex = 385;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(29, 135);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(56, 17);
this.label8.TabIndex = 386;
this.label8.Text = " 备注";
//
// ShopAddEditForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(297, 319);
this.Controls.Add(this.panel2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "ShopAddEditForm";
this.Text = "添加店铺";
this.TitleText = "添加店铺";
this.Load += new System.EventHandler(this.ShopAddEditForm_Load);
this.Controls.SetChildIndex(this.panel2, 0);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtShopPassword;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtLoginName;
private UserControls.ButtonEx btnOk;
private System.Windows.Forms.Label label5;
private DevComponents.DotNetBar.Controls.TextBoxX txtUploadAccount;
private System.Windows.Forms.Label label3;
private DevComponents.DotNetBar.Controls.TextBoxX txtBuyAccount;
private System.Windows.Forms.Label label6;
private DevComponents.DotNetBar.Controls.TextBoxX txtChatAccount;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox cmbGroup;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private DevComponents.DotNetBar.Controls.TextBoxX txtNotes;
}
}
@@ -0,0 +1,134 @@
using AllBase.Helper;
using AllBase.Model.Result;
using TemuKJD.BaseForms;
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 TemuKJD.WXForms.ShopForms
{
public partial class WXShopAddEditForm : LRBaseForm
{
ShopLoginInfo shopLoginInfo = null;
bool isAdd = true;
public WXShopAddEditForm(ShopLoginInfo shop = null)
{
InitializeComponent();
shopLoginInfo = shop;
if (shopLoginInfo != null)
isAdd = false;
}
private void btnOk_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(this.txtLoginName.Text.Trim()))
{
BaseMsgForm.ShowError("用户名不能为空!");
return;
}
if (shopLoginInfo == null && string.IsNullOrEmpty(this.txtShopPassword.Text.Trim()))
{
BaseMsgForm.ShowError("密码不能为空!");
return;
}
if (shopLoginInfo == null)
shopLoginInfo = new ShopLoginInfo();
shopLoginInfo.LoginName = this.txtLoginName.Text.Trim();
if (!string.IsNullOrEmpty(this.txtShopPassword.Text.Trim()))
shopLoginInfo.Password = DataOpenSSL.EncryptString(this.txtShopPassword.Text.Trim());
shopLoginInfo.GroupName = this.cmbGroup.Text;
shopLoginInfo.Notes = this.txtNotes.Text;
shopLoginInfo.CompanyName = AllBase.BaseClass.CompanyName;
// 同一个登录账号下的店铺使用同样的groupName和Notes
var shopLst = GlobalConfig.ShopLoginList.Where(s => s.LoginName == shopLoginInfo.LoginName && s.ShopId != shopLoginInfo.ShopId).ToList();
foreach (var shop in shopLst)
{
shop.GroupName = shopLoginInfo.GroupName;
shop.Notes = shopLoginInfo.Notes;
}
this.OnSaveComplete(shopLoginInfo, isAdd);
this.Close();
}
private void panel2_Paint(object sender, PaintEventArgs e)
{
}
private void ShopAddEditForm_Load(object sender, EventArgs e)
{
this.cmbGroup.Items.Clear();
this.cmbGroup.Items.Add(string.Empty);
foreach (var shop in GlobalConfig.ShopLoginList)
{
if (!string.IsNullOrEmpty(shop.GroupName) && !this.cmbGroup.Items.Contains(shop.GroupName))
this.cmbGroup.Items.Add(shop.GroupName);
}
if (shopLoginInfo != null)
{
this.txtLoginName.Text = shopLoginInfo.LoginName;
this.cmbGroup.Text = shopLoginInfo.GroupName;
this.txtNotes.Text = shopLoginInfo.Notes;
this.btnOk.Text = "更新";
this.TitleText = "编辑店铺 - " + shopLoginInfo.ShopAccount;
this.txtBuyAccount.Text = shopLoginInfo.BuyAccount;
//this.txtChatAccount.Text = shopLoginInfo.ChatAccount;
this.txtChatAccount.Text = shopLoginInfo.SubUserName;
this.txtUploadAccount.Text = shopLoginInfo.UploadAccount;
this.label7.Visible = true;
this.txtLoginName.Enabled = false;
}
else
{
this.txtBuyAccount.Enabled = false;
this.txtChatAccount.Enabled = false;
this.txtUploadAccount.Enabled = false;
this.txtBuyAccount.Text = this.txtChatAccount.Text = this.txtUploadAccount.Text = "请在编辑账户时修改子账户";
}
}
private void txtUploadAccount_TextChanged(object sender, EventArgs e)
{
}
private void txtChat_TextChanged(object sender, EventArgs e)
{
}
private void txtBuyAccount_TextChanged(object sender, EventArgs e)
{
}
private void txt_Click(object sender, EventArgs e)
{
WXSubAccountShopEditForm f = new WXSubAccountShopEditForm(shopLoginInfo);
f.SaveComplete += F_SaveComplete;
f.ShowDialog();
}
private void F_SaveComplete(object obj)
{
var shop = obj as ShopLoginInfo;
if (shop != null)
{
this.txtBuyAccount.Text = shop.BuyAccount;
this.txtChatAccount.Text = shop.ChatAccount;
this.txtUploadAccount.Text = shop.UploadAccount;
}
}
}
}
@@ -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>
@@ -0,0 +1,886 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model.Param.PDDProdParam;
using AllBase.Model.Result;
using AllBase.Model.Result.PDDResult;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TemuKJD.BaseForms;
using TemuKJD.BLL;
using TemuKJD.PDDForms.AdminForms;
using TemuKJD.PDDForms.ProductThirdSelectForms;
using Work;
namespace TemuKJD.WXForms.ShopForms
{
public class WXShopBrowserObject
{
public delegate void InfoReceivedHandler(string information);
public event InfoReceivedHandler OnInfoReceived;
public string getProduct(string sProdId, string supplierId, PDDProductInfo prodInfo = null, bool notSaveDb = false)
{
var prodId = sProdId.ParseToLong();
if (prodId <= 0)
{
BaseMsgForm.ShowError("商品Id不存在!");
return "failed";
}
//var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == supplierId.ParseToString());
var shop = PDDAdminShopListForm.lstAdminShopInfo.FirstOrDefault(s => s.ShopId == supplierId.ParseToString());
if (string.IsNullOrEmpty(supplierId) || shop == null)
{
BaseMsgForm.ShowError("店铺不存在!");
return "failed";
}
Task.Run(() =>
{
try
{
var sourceShop = shop;
var sourceProdId = prodId;
string success_err_msg = "";
//string errorMsg = "";
var commit_id_rst = GetPddProdCommitId(sourceShop, sourceProdId.ToString());
if (!commit_id_rst.Contains("\"success\":true") || !commit_id_rst.Contains("\"result\""))
{
var errMsg = BaseRegex.GetStringJson(ref commit_id_rst, "error_msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = commit_id_rst;
OnInfoReceived("商品获取失败!" + errMsg);
return;
}
var commitId = BaseRegex.GetStringJson(ref commit_id_rst, "goods_commit_id");
if (string.IsNullOrEmpty(commitId))
{
OnInfoReceived("商品获取失败!商品提交编号获取失败!");
return;
}
Thread.Sleep(Randomx.GetId(10, 50));
var detail_json = "{}";
PDDProductDetailInfo product = null;
try
{
var prod_detail_rst = GetPddProdDetail(sourceShop, sourceProdId.ToString(), commitId);
JObject prod_detail_obj = JObject.Parse(prod_detail_rst);
detail_json = JsonHelper.SerializeObject(prod_detail_obj["result"]);
product = JsonHelper.DeserializeJsonToObject<PDDProductDetailInfo>(detail_json);
if (product == null || detail_json.Length < 10)
{
OnInfoReceived("商品获取失败!商品数据格式获取失败!");
return;
}
}
catch (Exception ex)
{
OnInfoReceived("商品获取失败!商品数据格式获取失败!" + ex.Message);
return;
}
Thread.Sleep(Randomx.GetId(10, 50));
var size_json = "{}";
if (product.size_spec_id.ParseToLong() != 0)
{
try
{
var prod_size_rst = GetPddProdSizeSpec(sourceShop, sourceProdId.ToString(), commitId, product.size_spec_id.ParseToString());
prod_size_rst = GetHtml.Unicode2String(prod_size_rst);
JObject prod_size_obj = JObject.Parse(prod_size_rst);
size_json = JsonHelper.SerializeObject(prod_size_obj["result"]);
var size = JsonHelper.DeserializeJsonToObject<PDDSizeSpecInfo>(size_json);
if (size == null)
{
OnInfoReceived("尺码表获取失败!尺码数据格式获取失败!");
return;
}
}
catch (Exception ex)
{
OnInfoReceived("尺码表获取失败!尺码数据格式获取失败!" + ex.Message);
return;
}
}
//temu尺码表暂时注释
//if (product.sizeTemplateId > 0)
//{
// html = SizeSpecQuery(shop1, prodId1.ToString(), product.sizeTemplateId.ToString());
// if(!html.Contains("\"success\":true"))
// {
// success_err_msg += " 尺码表获取失败!" + BaseRegex.GetStringJson(ref html, "errorMsg");
// }
// else
// {
// obj = JObject.Parse(html);
// sizeRst = JsonHelper.SerializeObject(obj["result"]);
// }
//}
Thread.Sleep(Randomx.GetId(10, 50));
var property_json = "{}";
PDDProductPropertyInfo property = null;
try
{
var prod_property_rst = GetPddProdProperty(sourceShop, sourceProdId.ToString(), commitId);
prod_property_rst = GetHtml.Unicode2String(prod_property_rst);
JObject prod_property_obj = JObject.Parse(prod_property_rst);
property_json = JsonHelper.SerializeObject(prod_property_obj["result"]);
property = JsonHelper.DeserializeJsonToObject<PDDProductPropertyInfo>(property_json);
}
catch (Exception ex) { }
if (property == null)
{
OnInfoReceived("商品获取失败!商品属性获取失败!");
return;
}
// 属性模板暂时注释
//var prop_template_json = "{}";
//PDDProductTemplateInfo templateInfo = null;
//try
//{
// var prop_template_rst = GetPddCatPropTemplate(sourceShop, product.cat_id.ParseToString(), sourceProdId.ToString(), commitId);
// JObject prop_template_obj = JObject.Parse(prop_template_rst);
// prop_template_json = JsonHelper.SerializeObject(prop_template_obj["result"]);
// templateInfo = JsonHelper.DeserializeJsonToObject<PDDProductTemplateInfo>(prop_template_json);
//}
//catch (Exception ex) { }
//if (templateInfo == null)
//{
// OnInfoReceived("商品获取失败!商品属性模板获取失败!");
// return;
//}
Thread.Sleep(Randomx.GetId(10, 50));
var decoration_json = "{}";
PDDProductDecorationInfo decoration = null;
try
{
var prod_decoration_rst = GetPddProdDecoration(sourceShop, sourceProdId.ToString(), commitId);
if (!prod_decoration_rst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref prod_decoration_rst, "error_msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = prod_decoration_rst;
OnInfoReceived("商品获取失败!商品详情图获取失败!" + errMsg);
return;
}
JObject prod_decoration_obj = JObject.Parse(prod_decoration_rst);
if (!prod_decoration_obj["result"].IsNullOrEmpty())
decoration_json = JsonHelper.SerializeObject(prod_decoration_obj["result"]);
decoration = JsonHelper.DeserializeJsonToObject<PDDProductDecorationInfo>(decoration_json);
}
catch (Exception ex)
{
OnInfoReceived("商品获取失败!商品详情图获取失败!" + ex.Message);
return;
}
if (decoration != null && decoration_json.ParseToString().Length < 20)
{
//try
//{ // 获取另一组详情数据,结构和主详情不一样无法通用
// var prod_detail_decoration_rst = GetPddProdOnShopDetail(sourceShop, sourceProdId.ToString(), commitId);
// JObject prod_detail_decoration_obj = JObject.Parse(prod_detail_decoration_rst);
// foreach (JObject ob in prod_detail_decoration_obj["result"]["carousel_gallery"])
// {
// }
//}
//catch (Exception ex)
//{
// OnInfoReceived("商品获取失败!商品详情图获取失败!" + ex.Message);
// return;
//}
PDDProdDecorationCommitParam decorationParam = new PDDProdDecorationCommitParam();
decorationParam.goods_id = product.goods_id;
decorationParam.goods_commit_id = commitId.ParseToLong();
decorationParam.preview_key = "";
decorationParam.decoration_floor_list = new List<decoration_floor_param>();
foreach (var gallary in product.galleries)
{
if (gallary.type != 2)
continue;
var floor_param = new decoration_floor_param();
//floor_param.floor_id = 0; // floorItem.floor_id;
floor_param.type = "image"; // floorItem.type;
floor_param.content_list = new List<decoration_content_param>();
//foreach (var c in floorItem.content_list)
{
var decorationContentParam = new decoration_content_param()
{
//file_id = c.file_id,
img_url = gallary.url, //c.img_url,
//height = c.height,
//text = c.text,
//text_module_details = null,
//width = c.width,
};
//try { decorationContentParam.text_module_details = JsonHelper.DeserializeJsonToObject<text_module_detail_param>(JsonHelper.SerializeObject(c.text_module_details)); }
//catch (Exception ex) { }
floor_param.content_list.Add(decorationContentParam);
}
decorationParam.decoration_floor_list.Add(floor_param);
}
var addDecorationRst = save_decoration(shop, decorationParam, product.goods_id.ParseToString(), commitId);
Thread.Sleep(Randomx.GetId(10, 50));
// 第二次获取详情图
try
{
var prod_decoration_rst = GetPddProdDecoration(sourceShop, sourceProdId.ToString(), commitId);
if (!prod_decoration_rst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref prod_decoration_rst, "error_msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = prod_decoration_rst;
OnInfoReceived("商品获取失败!商品详情图获取失败!" + errMsg);
return;
}
JObject prod_decoration_obj = JObject.Parse(prod_decoration_rst);
if (!prod_decoration_obj["result"].IsNullOrEmpty())
decoration_json = JsonHelper.SerializeObject(prod_decoration_obj["result"]);
decoration = JsonHelper.DeserializeJsonToObject<PDDProductDecorationInfo>(decoration_json);
}
catch (Exception ex)
{
OnInfoReceived("商品获取失败!商品详情图获取失败!" + ex.Message);
return;
}
}
if (decoration == null || decoration_json.ParseToString().Length < 20)
{
OnInfoReceived("商品获取失败!商品详情图获取失败!");
return;
}
Thread.Sleep(Randomx.GetId(10, 50));
var material3_json = "{}";
PDDMaterialInfo material3 = null;
try
{
var material3_rst = GetPddGoodsMaterial(sourceShop, sourceProdId.ToString(), commitId, 3);
if (!material3_rst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref material3_rst, "error_msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = material3_rst;
OnInfoReceived("商品获取失败!商品长图获取失败!" + errMsg);
return;
}
JObject material3_obj = JObject.Parse(material3_rst);
if (!material3_obj["result"].IsNullOrEmpty())
material3_json = JsonHelper.SerializeObject(material3_obj["result"]);
material3 = JsonHelper.DeserializeJsonToObject<PDDMaterialInfo>(material3_json);
}
catch (Exception ex)
{
OnInfoReceived("商品获取失败!商品长图获取失败!" + ex.Message);
return;
}
if (material3 == null)
{
OnInfoReceived("商品获取失败!商品长图获取失败!");
return;
}
Thread.Sleep(Randomx.GetId(10, 50));
var material1_json = "{}";
PDDMaterialInfo material1 = null;
try
{
var material1_rst = GetPddGoodsMaterial(sourceShop, sourceProdId.ToString(), commitId, 1);
if (!material1_rst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref material1_rst, "error_msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = material1_rst;
OnInfoReceived("商品获取失败!商品白底图获取失败!" + errMsg);
return;
}
JObject material1_obj = JObject.Parse(material1_rst);
if (!material1_obj["result"].IsNullOrEmpty())
material1_json = JsonHelper.SerializeObject(material1_obj["result"]);
material1 = JsonHelper.DeserializeJsonToObject<PDDMaterialInfo>(material1_json);
}
catch (Exception ex)
{
OnInfoReceived("商品获取失败!商品白底图获取失败!" + ex.Message);
return;
}
if (material1 == null)
{
OnInfoReceived("商品获取失败!商品白底图获取失败!");
return;
}
bool isExist = false;
var existUrl = BaseClass.BuildObjString("product/get_product_list");
string existData = UserLogin.GetSignaturex() + "&search_spu=" + product.goods_id;
string html = GetHtml.PostUtf8(existUrl, existData);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(existUrl, existData);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(existUrl, existData);
if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
{
if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]"))
isExist = true;
}
string product_json = "{\"detail\":" + detail_json + ",\"size\":" + size_json + ",\"decoration\":" + decoration_json +
",\"material3\":" + material3_json + ",\"material1\":" + material1_json + ",\"property\":" + property_json + "}";
if (notSaveDb)
{
prodInfo = JsonHelper.DeserializeJsonToObject<PDDProductInfo>(product_json);
}
else
{
string main_img = product.image_url;
if (string.IsNullOrEmpty(main_img))
main_img = product.hd_thumb_url;
if (string.IsNullOrEmpty(main_img))
main_img = product.thumb_url;
if (string.IsNullOrEmpty(main_img))
main_img = (product.galleries?.FirstOrDefault()?.url).ParseToString().Replace("https://", "http://");
var url = BaseClass.BuildObjString("product/add_product");
if (isExist)
{
bool isCover = false;
MainForm.instance.Invoke(new Action(() =>
{
var ok = BaseMsgForm.ShowConfirm("产品库内已存在相同id商品,是否更新?").DialogResult;
if (ok == DialogResult.OK)
isCover = true;
}));
if (isCover)
url = BaseClass.BuildObjString("product/mdy_product");
else
return;
}
var data = Work.UserLogin.GetSignaturex() +
"&from_shop_id=" + shop.ShopId +
"&spu_id=" + product.goods_id.ParseToString() +
"&skc_id=" + product.goods_id.ParseToString() +
"&price_text=" + product.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + product.sku.Max(s => s.multi_price).ParseToInt() * 0.01m +
"&main_cat_id=" + (product.cat_ids?.FirstOrDefault(c => c != null)).ParseToString() +
"&main_cat_name=" + HttpUtility.UrlEncode((product.cats?.FirstOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) +
"&cat_id=" + (product.cat_id).ParseToString() +
"&cat_name=" + HttpUtility.UrlEncode((product.cats?.LastOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) +
"&ext_code=" + HttpUtility.UrlEncode(product.out_goods_sn, Encoding.UTF8) +
"&product_name=" + HttpUtility.UrlEncode(product.goods_name, Encoding.UTF8) +
"&product_json=" + HttpUtility.UrlEncode(product_json, Encoding.UTF8) +
"&size_json=" + HttpUtility.UrlEncode(size_json, Encoding.UTF8) +
"&main_img=" + HttpUtility.UrlEncode(main_img, Encoding.UTF8);
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
string msg = "选品商品保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
//OnInfoReceived(msg);
MainForm.instance.Invoke(new Action(() =>
{
BaseMsgForm.ShowError(msg);
}));
}
else
{
//OnInfoReceived("选品商品保存成功!" + success_err_msg);
MainForm.instance.Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("选品商品保存成功!" + success_err_msg);
}));
}
//// 创建 SaveFileDialog 的实例
//SaveFileDialog saveFileDialog = new SaveFileDialog();
//// 单线程单元(STA)模式运行文件对话框,否则会报错。
//System.Threading.Thread InvokeThread = new System.Threading.Thread(new System.Threading.ThreadStart(()=> {
// // 设置对话框的属性
// saveFileDialog.Title = "保存商品";
// saveFileDialog.Filter = "商品文件 (*.prd)|*.prd|所有文件 (*.*)|*.*"; // 过滤文件类型
// saveFileDialog.FileName = product.productId.ParseToString(); // 默认文件名
// saveFileDialog.DefaultExt = "txt"; // 默认文件扩展名
// // 显示对话框并获取结果
// if (saveFileDialog.ShowDialog() == DialogResult.OK)
// {
// // 用户点击了“保存”按钮,此时可以获取文件的路径
// string filePath = saveFileDialog.FileName;
// // 在这里处理文件保存逻辑,例如写入数据到文件
// System.IO.File.WriteAllText(filePath, result);
// //BaseMsgForm.ShowInfo("商品保存成功!");
// }
//}));
//InvokeThread.SetApartmentState(System.Threading.ApartmentState.STA);
//InvokeThread.Start();
//InvokeThread.Join();
}
}
catch (Exception ex)
{
}
});
return "success";
}
/// <summary>
/// 第三方获取商品并直接提交到第三方待上传列表
/// </summary>
/// <param name="sProdId"></param>
/// <param name="supplierId"></param>
/// <returns></returns>
public string getThirdProduct(string sProdId, string supplierId)
{
var prodId = sProdId.ParseToLong();
if (prodId <= 0)
{
BaseMsgForm.ShowError("商品Id不存在!");
return "failed";
}
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == supplierId.ParseToString());
if (string.IsNullOrEmpty(supplierId) || shop == null)
{
BaseMsgForm.ShowError("店铺不存在!");
return "failed";
}
Task.Run(() =>
{
try
{
var sourceShop = shop;
var sourceProdId = prodId;
string success_err_msg = "";
string errorMsg = "";
var html = GetPddProdCommitId(sourceShop, sourceProdId.ToString());
if (!html.Contains("\"success\":true") || !html.Contains("\"result\""))
{
var errMsg = BaseRegex.GetStringJson(ref html, "error_msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = html;
OnInfoReceived("商品获取失败!" + errMsg);
return;
}
var commitId = BaseRegex.GetStringJson(ref html, "goods_commit_id");
if (string.IsNullOrEmpty(commitId))
{
OnInfoReceived("商品获取失败!商品提交编号获取失败!");
return;
}
html = GetPddProdDetail(sourceShop, sourceProdId.ToString(), commitId);
JObject obj = JObject.Parse(html);
var result = JsonHelper.SerializeObject(obj["result"]);
var sizeRst = "";
PDDProductDetailInfo product = JsonHelper.DeserializeJsonToObject<PDDProductDetailInfo>(result);
if (product == null)
{
OnInfoReceived("商品获取失败!商品数据格式获取失败!");
return;
}
//拼多多暂时注释尺码
//if (product.sizeTemplateId > 0)
//{
// html = SizeSpecQuery(sourceShop, sourceProdId.ToString(), product.sizeTemplateId.ToString());
// if (!html.Contains("\"success\":true"))
// {
// success_err_msg += " 尺码表获取失败!" + BaseRegex.GetStringJson(ref html, "errorMsg");
// }
// else
// {
// obj = JObject.Parse(html);
// sizeRst = JsonHelper.SerializeObject(obj["result"]);
// }
//}
List<ShopLoginInfo> shopLst = new List<ShopLoginInfo>();
WXShopListForm.Instance.Invoke(new Action(() =>
{
PDDThirdProdSelectAddShopForm shopForm = new PDDThirdProdSelectAddShopForm();
shopForm.ShowDialog();
shopLst.AddRange(shopForm.lstSelectShop);
}));
if (shopLst.Count == 0)
{
OnInfoReceived("库存上传操作取消或未选择上传店铺!");
return;
}
var main_img = product.image_url;
if (string.IsNullOrEmpty(main_img))
main_img = product.hd_thumb_url;
if (string.IsNullOrEmpty(main_img))
main_img = product.thumb_url;
if (string.IsNullOrEmpty(main_img))
main_img = (product.galleries?.FirstOrDefault()?.url).ParseToString().Replace("https://", "http://");
var url = BaseClass.BuildObjString("product_third/add_product");
var data = UserLogin.GetSignaturex() +
"&from_shop_id=" + shop.ShopId +
"&spu_id=" + product.goods_id.ParseToString() +
"&skc_id=" + product.goods_id.ParseToString() +
"&cat_id=" + (product.cat_id).ParseToString() +
"&cat_name=" + HttpUtility.UrlEncode((product.cats?.LastOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) +
"&ext_code=" + HttpUtility.UrlEncode(product.out_goods_sn, Encoding.UTF8) +
"&product_name=" + HttpUtility.UrlEncode(product.goods_name, Encoding.UTF8) +
"&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8) +
"&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8) +
"&main_img=" + HttpUtility.UrlEncode(main_img, Encoding.UTF8);
html = GetHtml.PostUtf8(url, data);
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
// html = GetHtml.PostUtf8(url, data);
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
// html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
errorMsg = "库存商品保存失败!请检查网络连接:" +
BaseRegex.GetStringJson(ref html, "msg").ParseToString().Replace("'", "\\'").Replace("\"", "\\\"");
}
var id = BaseRegex.GetLongJson(ref html, "id");
if (id == 0)
goto end;
foreach (var addProdShop in shopLst)
{
url = BaseClass.BuildObjString("product_third/add_user_select_product");
data = UserLogin.GetSignaturex() +
"&out_product_id=" + id +
"&shop_id=" + addProdShop.ShopId +
"&shop_account=" + addProdShop.ShopAccount +
"&main_user_name=" + addProdShop.UserName +
"&sub_user_name=" + addProdShop.SubUserName +
"&add_product_remaining=" + addProdShop.AddProductRemaining +
"&status=待上传";
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
errorMsg += product?.goods_id + " " + BaseRegex.GetStringJson(ref html, "msg") + "; ";
}
else
{
addProdShop.AddProductRemaining = addProdShop.AddProductRemaining - 1;
}
}
end:;
if (!string.IsNullOrEmpty(errorMsg))
{
OnInfoReceived(errorMsg);
}
else
{
OnInfoReceived("库存上传保存成功!" + success_err_msg);
}
}
catch (Exception ex)
{
OnInfoReceived("发生错误:" + ex.Message);
}
});
return "success";
}
TemuCat GetCat(TemuDetailProductInfo product)
{
if (product == null)
return new TemuCat();
var cat = product.categories.cat10;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat9;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat8;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat7;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat6;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat5;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat4;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat3;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat2;
if (string.IsNullOrWhiteSpace(cat.catName))
cat = product.categories.cat1;
return cat;
}
private string GetPddProdCommitId(ShopLoginInfo shop, string prodId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/glide/v2/mms/edit/commit/create_by_sn";
string body = @"{""goods_id"":" + prodId + "}";
string refere = "https://mms.pinduoduo.com/goods/goods_list?msfrom=mms_sidenav";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string GetPddProdDetail(ShopLoginInfo shop, string prodId, string commitId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
//string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; //on_shop获取到的结构不对
string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/detail";
//string body = @"{""goods_id"":" + prodId + "}";
string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":""" + prodId + @"""}";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string GetPddProdOnShopDetail(ShopLoginInfo shop, string prodId, string commitId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; //获取详情图
//string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/detail";
//string body = @"{""goods_id"":" + prodId + "}";
string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":""" + prodId + @"""}";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
/// <summary>
/// 保存商品详情图装修列表
/// gorse/mms/goods/decoration/commit/save
/// </summary>
/// <param name="shop"></param>
/// <param name="decoration"></param>
/// <param name="goodsId"></param>
/// <param name="commitId"></param>
/// <returns></returns>
private string save_decoration(ShopLoginInfo shop, PDDProdDecorationCommitParam decoration, string goodsId, string commitId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/save";
string body = @"{""goods_id"":" + goodsId + "}";
body = JsonHelper.SerializeObject(decoration);
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + goodsId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string GetPddProdSizeSpec(ShopLoginInfo shop, string prodId, string commitId, string sizeSpecId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/cabernet/mms/sizespec/query/draft";
//string body = @"{""goods_id"":" + prodId + "}";
string body = @"{""id"":" + sizeSpecId + @"}";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string GetPddProdProperty(ShopLoginInfo shop, string prodId, string commitId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/draco-ms/mms/query-goods-property";
string body = @"{""goods_id"":" + prodId + "}";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string GetPddProdDecoration(ShopLoginInfo shop, string prodId, string commitId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/query/V2";
url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/query/V2";
string body = @"{""goods_commit_id"":" + commitId + @",""goods_id"":" + prodId + @"}";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.FirstOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
/// <summary>
/// 获取物料详情 type = 1 或者 3 1是白底图,3是长图
/// </summary>
/// <param name="shop"></param>
/// <param name="catId"></param>
/// <param name="prodId"></param>
/// <param name="commitId"></param>
/// <param name="type"></param>
/// <returns></returns>
private string GetPddGoodsMaterial(ShopLoginInfo shop, string prodId, string commitId, int type)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/giraffe/mms/material/goodsMaterialInfo";
string body = @"{""goods_id"":" + prodId + @",""type"":" + type + "}";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string GetPddCatPropTemplate(ShopLoginInfo shop, string catId, string prodId, string commitId)
{
var anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
string url = "https://mms.pinduoduo.com/draco-ms/mms/template/mall?catId=" + catId +
"&goodsCommitId=" + commitId + "&goodsId=" + prodId;
string body = @"";
string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit";
var result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti);
for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++)
{
shop.AntiContents.Remove(anti);
anti = shop.AntiContents.LastOrDefault().ParseToString();
if (shop.AntiContents.Count > 0)
{
Thread.Sleep(Randomx.GetId(300, 500));
anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti);
}
}
return result;
}
private string SizeSpecQuery(ShopLoginInfo shop, string prodId, string sizeSpecId)
{
//string url = "https://seller.kuajingmaihuo.com/bg-anniston-mms/sizespec/query";
//string body = @"{""businessId"":" + sizeSpecId + @",""reusable"":false}";
//string refere = "https://seller.kuajingmaihuo.com/goods/product-create/product-edit?from=productList&productId=" + prodId;
//return HttpResponseBLL.PostResponse(shop, url, body, refere);
return "";
}
}
}
+189
View File
@@ -0,0 +1,189 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXShopForm
{
/// <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("店铺列表");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("子账号管理");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("订单金额统计");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("工作明细统计");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("运费模板");
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("高级运费模板");
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("素材库管理");
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("店铺管理", new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3,
treeNode4,
treeNode5,
treeNode6,
treeNode7});
this.panel1 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.lblName = new System.Windows.Forms.Label();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tv = new TemuKJD.UserComponent.UcTreeView();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.White;
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.panel2);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(792, 461);
this.panel1.TabIndex = 2;
//
// panel3
//
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 28);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(792, 433);
this.panel3.TabIndex = 1;
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244)))));
this.panel2.Controls.Add(this.lblName);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(792, 28);
this.panel2.TabIndex = 0;
//
// lblName
//
this.lblName.AutoSize = true;
this.lblName.Location = new System.Drawing.Point(5, 6);
this.lblName.Name = "lblName";
this.lblName.Size = new System.Drawing.Size(57, 17);
this.lblName.TabIndex = 0;
this.lblName.Text = "lblName";
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tv);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.panel1);
this.splitContainer1.Size = new System.Drawing.Size(933, 461);
this.splitContainer1.SplitterDistance = 140;
this.splitContainer1.SplitterWidth = 1;
this.splitContainer1.TabIndex = 3;
//
// tv
//
this.tv.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(251)))), ((int)(((byte)(251)))));
this.tv.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.tv.ChildNodeSelectedBgColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.tv.Cursor = System.Windows.Forms.Cursors.Hand;
this.tv.Dock = System.Windows.Forms.DockStyle.Fill;
this.tv.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.tv.ExpandButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.tv.FullRowSelect = true;
this.tv.GroupBgColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(249)))), ((int)(((byte)(249)))));
this.tv.GroupFont = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tv.GroupTitleColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.tv.HideCollapsedGroup = false;
this.tv.ItemHeight = 32;
this.tv.Location = new System.Drawing.Point(0, 0);
this.tv.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.tv.Name = "tv";
treeNode1.Name = "店铺列表";
treeNode1.Text = "店铺列表";
treeNode2.Name = "子账号管理";
treeNode2.Text = "子账号管理";
treeNode3.Name = "订单金额统计";
treeNode3.Text = "订单金额统计";
treeNode4.Name = "工作明细统计";
treeNode4.Text = "工作明细统计";
treeNode5.Name = "运费模板";
treeNode5.Text = "运费模板";
treeNode6.Name = "高级运费模板";
treeNode6.Text = "高级运费模板";
treeNode7.Name = "素材库管理";
treeNode7.Text = "素材库管理";
treeNode8.Name = "店铺管理";
treeNode8.Text = "店铺管理";
this.tv.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode8});
this.tv.OverForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
this.tv.Size = new System.Drawing.Size(140, 461);
this.tv.TabIndex = 1;
this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect);
//
// ShopForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(933, 461);
this.Controls.Add(this.splitContainer1);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "ShopForm";
this.Text = "ShopForm";
this.Load += new System.EventHandler(this.ShopForm_Load);
this.panel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UserComponent.UcTreeView tv;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label lblName;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.SplitContainer splitContainer1;
}
}
+151
View File
@@ -0,0 +1,151 @@
using AllBase;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TemuKJD.KJDForms.AdminForms;
using TemuKJD.BaseForms;
using TemuKJD.KJDForms.ProductSelectForms;
using TemuKJD.KJDForms.ProductThirdSelectForms;
using TemuKJD.KJDForms.ShopForms.Statistics;
namespace TemuKJD.WXForms.ShopForms
{
public partial class WXShopForm : BaseForm
{
public Lazy<WXShopListForm> shopListForm = new Lazy<WXShopListForm>();
public Lazy<WXSubAccountListForm> sbuAccountForm = new Lazy<WXSubAccountListForm>();
public WXShopForm()
{
InitializeComponent();
try
{
tv.SelectedNode = tv.Nodes[0].Nodes[0];
tv.ExpandGroup(tv.Nodes[0].Name);
List<string> hideName = new List<string>() { "子账号管理", "高级运费模板", "运费模板", "素材库管理", "订单金额统计", "工作明细统计" };
if (BaseClass.GroupId == 3)
{
hideName.Remove("子账号管理");
}
foreach (var item in hideName)
{
var n = tv.Nodes[0].Nodes.Find(item, true);
if (n.Count() > 0)
n[0].Remove();
}
}
catch { }
}
private void tv_AfterSelect(object sender, TreeViewEventArgs e)
{
MainForm.sCurrentModule = e.Node.Name;
this.lblName.Text = e.Node.Text;
// 如果是一级菜单,不做任何动作
if (e.Node.Parent == null) return;
new Thread(() =>
{
Thread.Sleep(200);
Invoke(new Action(() =>
{
switch (e.Node.Name)
{
case "店铺列表":
SetForm(shopListForm.Value);
break;
case "子账号管理":
SetForm(sbuAccountForm.Value);
break;
}
}));
}).Start();
}
/// <summary>
/// 显示隐藏层
/// </summary>
/// <param name="f"></param>
private void SetForm(Form f)
{
if (f == null)
{
foreach (Control form in panel3.Controls)
{
form.Visible = false;
if (form is Form)
{
panel3.Controls.Remove(form as Form);
}
}
return;
}
bool had = false;
string sCurrentFormName = f.Name;
for (int i = 0; i < panel3.Controls.Count; i++)
{
if (sCurrentFormName == panel3.Controls[i].Name)
{
had = true;
panel3.Controls[i].Visible = true;
}
else
{
panel3.Controls[i].Visible = false;
}
}
if (had)
{
f = null;
return;
}
f.TopLevel = false;
f.Left = 0;
f.Top = 0;
f.FormBorderStyle = FormBorderStyle.None;
panel3.Controls.Add(f);
f.AutoSize = true;
f.Dock = DockStyle.Fill;
try
{
f.Show();
}
catch
{
}
}
private void ShopForm_Load(object sender, EventArgs e)
{
try
{
var ns = tv.Nodes.Find("运费模板", true);
if (ns.Count() > 0)
{
//foreach (var n in ns)
//{
// tv.Nodes.Remove(n);
//}
if (AllBase.BaseClass.IsCloudBuyOrder)
this.tv.Nodes[0].Nodes.Insert(ns[0].Index + 1, new TreeNode() { Text = "高级运费模板", Name = "高级运费模板" });
}
tv.SelectedNode = tv.Nodes[0].Nodes[0];
tv.ExpandGroup(tv.Nodes[0].Name);
}
catch { }
}
}
}
+120
View File
@@ -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>
+739
View File
@@ -0,0 +1,739 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXShopListForm
{
/// <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.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.label1 = new System.Windows.Forms.Label();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.panel5 = new System.Windows.Forms.Panel();
this.btnRefreshShop = new TemuKJD.UserControls.ButtonEx();
this.btnLoginSelect = new TemuKJD.UserControls.ButtonEx();
this.btnCheck = new TemuKJD.UserControls.ButtonEx();
this.panel4 = new System.Windows.Forms.Panel();
this.cmbNotes = new System.Windows.Forms.ComboBox();
this.pnlEmpty = new DevComponents.DotNetBar.PanelEx();
this.btnSearch = new TemuKJD.UserControls.ButtonEx();
this.label4 = new System.Windows.Forms.Label();
this.txtShopName = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.txtShopId = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.btnImport = new TemuKJD.UserControls.ButtonEx();
this.btnAddShop = new TemuKJD.UserControls.ButtonEx();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.btnRefreshAuth = new TemuKJD.UserControls.ButtonEx();
this.pbLoading = new System.Windows.Forms.PictureBox();
this.dgvShop = new TemuKJD.UserComponent.DataGridViewEx();
this.chkAutoDrag = new System.Windows.Forms.CheckBox();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopAccount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colCookie = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSubUser = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colGroupName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colUploadAccount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colBuyAccount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colChatAccount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colLoginStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colGotoShop = new System.Windows.Forms.DataGridViewLinkColumn();
this.colShopOperate = new System.Windows.Forms.DataGridViewLinkColumn();
this.colRelogin = new System.Windows.Forms.DataGridViewLinkColumn();
this.colReLogin2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colMultiLogin = new System.Windows.Forms.DataGridViewLinkColumn();
this.colApiAuth = new System.Windows.Forms.DataGridViewLinkColumn();
this.colBuyApiAuth = new System.Windows.Forms.DataGridViewLinkColumn();
this.colUpdateCookies = new System.Windows.Forms.DataGridViewLinkColumn();
this.colCopyCookies = new System.Windows.Forms.DataGridViewLinkColumn();
this.colEdit = new System.Windows.Forms.DataGridViewLinkColumn();
this.colDelete = new System.Windows.Forms.DataGridViewLinkColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.panel5.SuspendLayout();
this.panel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pbLoading)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 13);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(201, 17);
this.label1.TabIndex = 0;
this.label1.Text = "这里显示店铺列表 -- ShopListForm";
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.White;
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.tableLayoutPanel2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Panel2.Margin = new System.Windows.Forms.Padding(4);
this.splitContainer1.Size = new System.Drawing.Size(1264, 622);
this.splitContainer1.SplitterDistance = 46;
this.splitContainer1.TabIndex = 33;
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 2;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel2.Controls.Add(this.panel5, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.panel4, 0, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(1264, 46);
this.tableLayoutPanel2.TabIndex = 37;
//
// panel5
//
this.panel5.Controls.Add(this.btnRefreshShop);
this.panel5.Controls.Add(this.btnLoginSelect);
this.panel5.Controls.Add(this.btnCheck);
this.panel5.Location = new System.Drawing.Point(1032, 3);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(229, 40);
this.panel5.TabIndex = 1;
//
// btnRefreshShop
//
this.btnRefreshShop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnRefreshShop.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRefreshShop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnRefreshShop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnRefreshShop.ForeColor = System.Drawing.Color.White;
this.btnRefreshShop.Location = new System.Drawing.Point(21, 9);
this.btnRefreshShop.Margin = new System.Windows.Forms.Padding(2);
this.btnRefreshShop.Name = "btnRefreshShop";
this.btnRefreshShop.Size = new System.Drawing.Size(66, 26);
this.btnRefreshShop.TabIndex = 375;
this.btnRefreshShop.Text = "刷新店铺";
this.btnRefreshShop.UseVisualStyleBackColor = false;
this.btnRefreshShop.Click += new System.EventHandler(this.btnRefreshCookie_Click);
//
// btnLoginSelect
//
this.btnLoginSelect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnLoginSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnLoginSelect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnLoginSelect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLoginSelect.ForeColor = System.Drawing.Color.White;
this.btnLoginSelect.Location = new System.Drawing.Point(162, 9);
this.btnLoginSelect.Margin = new System.Windows.Forms.Padding(2);
this.btnLoginSelect.Name = "btnLoginSelect";
this.btnLoginSelect.Size = new System.Drawing.Size(66, 26);
this.btnLoginSelect.TabIndex = 373;
this.btnLoginSelect.Text = "登录选中";
this.btnLoginSelect.UseVisualStyleBackColor = false;
this.btnLoginSelect.Click += new System.EventHandler(this.btnLoginSelect_Click);
//
// btnCheck
//
this.btnCheck.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCheck.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCheck.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCheck.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCheck.ForeColor = System.Drawing.Color.White;
this.btnCheck.Location = new System.Drawing.Point(92, 9);
this.btnCheck.Margin = new System.Windows.Forms.Padding(2);
this.btnCheck.Name = "btnCheck";
this.btnCheck.Size = new System.Drawing.Size(66, 26);
this.btnCheck.TabIndex = 372;
this.btnCheck.Text = "检测选中";
this.btnCheck.UseVisualStyleBackColor = false;
this.btnCheck.Click += new System.EventHandler(this.btnCheck_Click);
//
// panel4
//
this.panel4.Controls.Add(this.btnAddShop);
this.panel4.Controls.Add(this.cmbNotes);
this.panel4.Controls.Add(this.pnlEmpty);
this.panel4.Controls.Add(this.btnSearch);
this.panel4.Controls.Add(this.label4);
this.panel4.Controls.Add(this.txtShopName);
this.panel4.Controls.Add(this.label3);
this.panel4.Controls.Add(this.txtShopId);
this.panel4.Controls.Add(this.label2);
this.panel4.Controls.Add(this.btnImport);
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel4.Location = new System.Drawing.Point(3, 3);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(1023, 40);
this.panel4.TabIndex = 0;
//
// cmbNotes
//
this.cmbNotes.FormattingEnabled = true;
this.cmbNotes.Location = new System.Drawing.Point(584, 10);
this.cmbNotes.Name = "cmbNotes";
this.cmbNotes.Size = new System.Drawing.Size(120, 25);
this.cmbNotes.TabIndex = 413;
this.cmbNotes.Text = "全部";
//
// pnlEmpty
//
this.pnlEmpty.CanvasColor = System.Drawing.SystemColors.Control;
this.pnlEmpty.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.pnlEmpty.DisabledBackColor = System.Drawing.Color.Empty;
this.pnlEmpty.Location = new System.Drawing.Point(786, 9);
this.pnlEmpty.Name = "pnlEmpty";
this.pnlEmpty.Size = new System.Drawing.Size(66, 26);
this.pnlEmpty.Style.Alignment = System.Drawing.StringAlignment.Center;
this.pnlEmpty.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.pnlEmpty.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.pnlEmpty.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.pnlEmpty.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pnlEmpty.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.pnlEmpty.Style.GradientAngle = 90;
this.pnlEmpty.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
this.pnlEmpty.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.pnlEmpty.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pnlEmpty.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.pnlEmpty.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.pnlEmpty.TabIndex = 409;
this.pnlEmpty.Text = "清空条件";
this.pnlEmpty.Click += new System.EventHandler(this.btnEmpty_Click);
//
// btnSearch
//
this.btnSearch.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSearch.ForeColor = System.Drawing.Color.White;
this.btnSearch.Location = new System.Drawing.Point(715, 9);
this.btnSearch.Margin = new System.Windows.Forms.Padding(2);
this.btnSearch.Name = "btnSearch";
this.btnSearch.Size = new System.Drawing.Size(66, 26);
this.btnSearch.TabIndex = 372;
this.btnSearch.Text = "搜索";
this.btnSearch.UseVisualStyleBackColor = false;
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(525, 14);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(68, 17);
this.label4.TabIndex = 377;
this.label4.Text = "分组备注:";
//
// txtShopName
//
this.txtShopName.Location = new System.Drawing.Point(402, 11);
this.txtShopName.Name = "txtShopName";
this.txtShopName.Size = new System.Drawing.Size(110, 23);
this.txtShopName.TabIndex = 374;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(354, 14);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 17);
this.label3.TabIndex = 375;
this.label3.Text = "店铺名:";
//
// txtShopId
//
this.txtShopId.Location = new System.Drawing.Point(232, 11);
this.txtShopId.Name = "txtShopId";
this.txtShopId.Size = new System.Drawing.Size(110, 23);
this.txtShopId.TabIndex = 372;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(184, 14);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(55, 17);
this.label2.TabIndex = 373;
this.label2.Text = "店铺id:";
//
// btnImport
//
this.btnImport.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnImport.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnImport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnImport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnImport.ForeColor = System.Drawing.Color.White;
this.btnImport.Location = new System.Drawing.Point(71, 9);
this.btnImport.Margin = new System.Windows.Forms.Padding(2);
this.btnImport.Name = "btnImport";
this.btnImport.Size = new System.Drawing.Size(66, 26);
this.btnImport.TabIndex = 371;
this.btnImport.Text = "导入店铺";
this.btnImport.UseVisualStyleBackColor = false;
this.btnImport.Visible = false;
this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
//
// btnAddShop
//
this.btnAddShop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnAddShop.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAddShop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAddShop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAddShop.ForeColor = System.Drawing.Color.White;
this.btnAddShop.Location = new System.Drawing.Point(1, 9);
this.btnAddShop.Margin = new System.Windows.Forms.Padding(2);
this.btnAddShop.Name = "btnAddShop";
this.btnAddShop.Size = new System.Drawing.Size(107, 26);
this.btnAddShop.TabIndex = 370;
this.btnAddShop.Text = "扫码添加店铺";
this.btnAddShop.UseVisualStyleBackColor = false;
this.btnAddShop.Click += new System.EventHandler(this.btnAddShop_Click);
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.BackColor = System.Drawing.Color.White;
this.splitContainer2.Panel1.Controls.Add(this.btnRefreshAuth);
this.splitContainer2.Panel1.Controls.Add(this.pbLoading);
this.splitContainer2.Panel1.Controls.Add(this.dgvShop);
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.chkAutoDrag);
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
this.splitContainer2.Size = new System.Drawing.Size(1264, 572);
this.splitContainer2.SplitterDistance = 540;
this.splitContainer2.TabIndex = 0;
//
// btnRefreshAuth
//
this.btnRefreshAuth.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnRefreshAuth.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRefreshAuth.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnRefreshAuth.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnRefreshAuth.ForeColor = System.Drawing.Color.White;
this.btnRefreshAuth.Location = new System.Drawing.Point(11, 35);
this.btnRefreshAuth.Margin = new System.Windows.Forms.Padding(2);
this.btnRefreshAuth.Name = "btnRefreshAuth";
this.btnRefreshAuth.Size = new System.Drawing.Size(66, 26);
this.btnRefreshAuth.TabIndex = 374;
this.btnRefreshAuth.Text = "刷新授权";
this.btnRefreshAuth.UseVisualStyleBackColor = false;
this.btnRefreshAuth.Visible = false;
this.btnRefreshAuth.Click += new System.EventHandler(this.btnRefreshAuth_Click);
//
// pbLoading
//
this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pbLoading.Location = new System.Drawing.Point(607, 245);
this.pbLoading.Name = "pbLoading";
this.pbLoading.Size = new System.Drawing.Size(50, 50);
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pbLoading.TabIndex = 6;
this.pbLoading.TabStop = false;
//
// dgvShop
//
this.dgvShop.AllowUserToAddRows = false;
this.dgvShop.AllowUserToDeleteRows = false;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
this.dgvShop.AutoRowNumber = true;
this.dgvShop.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvShop.BackgroundColor = System.Drawing.Color.White;
this.dgvShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.dgvShop.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvShop.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colSelect,
this.colLoginName,
this.colShopId,
this.colShopAccount,
this.colNotes,
this.colCookie,
this.colSubUser,
this.colGroupName,
this.colUploadAccount,
this.colBuyAccount,
this.colChatAccount,
this.colLoginStatus,
this.colGotoShop,
this.colShopOperate,
this.colRelogin,
this.colReLogin2,
this.colMultiLogin,
this.colApiAuth,
this.colBuyApiAuth,
this.colUpdateCookies,
this.colCopyCookies,
this.colEdit,
this.colDelete});
this.dgvShop.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvShop.Location = new System.Drawing.Point(4, 0);
this.dgvShop.Name = "dgvShop";
this.dgvShop.ReadOnly = true;
this.dgvShop.RowTemplate.Height = 23;
this.dgvShop.Size = new System.Drawing.Size(1256, 540);
this.dgvShop.TabIndex = 5;
this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
//
// chkAutoDrag
//
this.chkAutoDrag.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.chkAutoDrag.AutoSize = true;
this.chkAutoDrag.BackColor = System.Drawing.Color.White;
this.chkAutoDrag.Location = new System.Drawing.Point(1108, 2);
this.chkAutoDrag.Name = "chkAutoDrag";
this.chkAutoDrag.Size = new System.Drawing.Size(159, 21);
this.chkAutoDrag.TabIndex = 3;
this.chkAutoDrag.Text = "登录时自动滑动拼图验证";
this.chkAutoDrag.UseVisualStyleBackColor = false;
this.chkAutoDrag.Visible = false;
this.chkAutoDrag.Click += new System.EventHandler(this.chkAutoDrag_Click);
//
// statusBar
//
this.statusBar.BackColor = System.Drawing.Color.White;
this.statusBar.Dock = System.Windows.Forms.DockStyle.Bottom;
this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.statusBar.Location = new System.Drawing.Point(0, -1);
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
this.statusBar.Name = "statusBar";
this.statusBar.Size = new System.Drawing.Size(1264, 29);
this.statusBar.TabIndex = 1;
//
// colSelect
//
this.colSelect.FillWeight = 26F;
this.colSelect.HeaderText = "选";
this.colSelect.Name = "colSelect";
this.colSelect.ReadOnly = true;
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colLoginName
//
this.colLoginName.FillWeight = 69.42599F;
this.colLoginName.HeaderText = "店铺登录号码";
this.colLoginName.Name = "colLoginName";
this.colLoginName.ReadOnly = true;
//
// colShopId
//
this.colShopId.FillWeight = 69.42599F;
this.colShopId.HeaderText = "店铺Id";
this.colShopId.Name = "colShopId";
this.colShopId.ReadOnly = true;
//
// colShopAccount
//
this.colShopAccount.HeaderText = "店铺账号";
this.colShopAccount.Name = "colShopAccount";
this.colShopAccount.ReadOnly = true;
//
// colNotes
//
this.colNotes.HeaderText = "备注";
this.colNotes.Name = "colNotes";
this.colNotes.ReadOnly = true;
//
// colCookie
//
this.colCookie.HeaderText = "店铺Cookie";
this.colCookie.Name = "colCookie";
this.colCookie.ReadOnly = true;
this.colCookie.Visible = false;
//
// colSubUser
//
this.colSubUser.FillWeight = 67F;
this.colSubUser.HeaderText = "子账户";
this.colSubUser.Name = "colSubUser";
this.colSubUser.ReadOnly = true;
//
// colGroupName
//
this.colGroupName.FillWeight = 69.42599F;
this.colGroupName.HeaderText = "店铺分组";
this.colGroupName.Name = "colGroupName";
this.colGroupName.ReadOnly = true;
this.colGroupName.Visible = false;
//
// colUploadAccount
//
this.colUploadAccount.FillWeight = 69.42599F;
this.colUploadAccount.HeaderText = "上货账户";
this.colUploadAccount.Name = "colUploadAccount";
this.colUploadAccount.ReadOnly = true;
this.colUploadAccount.Visible = false;
//
// colBuyAccount
//
this.colBuyAccount.FillWeight = 69.42599F;
this.colBuyAccount.HeaderText = "采购账户";
this.colBuyAccount.Name = "colBuyAccount";
this.colBuyAccount.ReadOnly = true;
this.colBuyAccount.Visible = false;
//
// colChatAccount
//
this.colChatAccount.FillWeight = 69.42599F;
this.colChatAccount.HeaderText = "客服账户";
this.colChatAccount.Name = "colChatAccount";
this.colChatAccount.ReadOnly = true;
this.colChatAccount.Visible = false;
//
// colLoginStatus
//
this.colLoginStatus.HeaderText = "登录状态";
this.colLoginStatus.Name = "colLoginStatus";
this.colLoginStatus.ReadOnly = true;
this.colLoginStatus.Visible = false;
//
// colGotoShop
//
this.colGotoShop.FillWeight = 46F;
this.colGotoShop.HeaderText = "进入店铺";
this.colGotoShop.Name = "colGotoShop";
this.colGotoShop.ReadOnly = true;
this.colGotoShop.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colGotoShop.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colShopOperate
//
this.colShopOperate.FillWeight = 46F;
this.colShopOperate.HeaderText = "检测";
this.colShopOperate.Name = "colShopOperate";
this.colShopOperate.ReadOnly = true;
this.colShopOperate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colShopOperate.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colShopOperate.Visible = false;
//
// colRelogin
//
this.colRelogin.FillWeight = 40F;
this.colRelogin.HeaderText = "登录";
this.colRelogin.Name = "colRelogin";
this.colRelogin.ReadOnly = true;
this.colRelogin.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colRelogin.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colReLogin2
//
this.colReLogin2.FillWeight = 55F;
this.colReLogin2.HeaderText = "国际版状态";
this.colReLogin2.Name = "colReLogin2";
this.colReLogin2.ReadOnly = true;
this.colReLogin2.Visible = false;
//
// colMultiLogin
//
this.colMultiLogin.FillWeight = 52F;
this.colMultiLogin.HeaderText = "多重登录";
this.colMultiLogin.Name = "colMultiLogin";
this.colMultiLogin.ReadOnly = true;
this.colMultiLogin.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colMultiLogin.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colMultiLogin.Visible = false;
//
// colApiAuth
//
this.colApiAuth.FillWeight = 69.42599F;
this.colApiAuth.HeaderText = "上货授权";
this.colApiAuth.Name = "colApiAuth";
this.colApiAuth.ReadOnly = true;
this.colApiAuth.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colApiAuth.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colApiAuth.Visible = false;
//
// colBuyApiAuth
//
this.colBuyApiAuth.FillWeight = 69.42599F;
this.colBuyApiAuth.HeaderText = "拍单授权";
this.colBuyApiAuth.Name = "colBuyApiAuth";
this.colBuyApiAuth.ReadOnly = true;
this.colBuyApiAuth.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colBuyApiAuth.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colBuyApiAuth.Visible = false;
//
// colUpdateCookies
//
this.colUpdateCookies.FillWeight = 67F;
this.colUpdateCookies.HeaderText = "导入Cookie";
this.colUpdateCookies.Name = "colUpdateCookies";
this.colUpdateCookies.ReadOnly = true;
this.colUpdateCookies.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colUpdateCookies.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colCopyCookies
//
this.colCopyCookies.FillWeight = 70F;
this.colCopyCookies.HeaderText = "复制Cookie";
this.colCopyCookies.Name = "colCopyCookies";
this.colCopyCookies.ReadOnly = true;
this.colCopyCookies.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colCopyCookies.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colEdit
//
this.colEdit.FillWeight = 46F;
this.colEdit.HeaderText = "编辑";
this.colEdit.Name = "colEdit";
this.colEdit.ReadOnly = true;
this.colEdit.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colEdit.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colDelete
//
this.colDelete.FillWeight = 46F;
this.colDelete.HeaderText = "删除";
this.colDelete.Name = "colDelete";
this.colDelete.ReadOnly = true;
//
// WXShopListForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1264, 622);
this.Controls.Add(this.splitContainer1);
this.Controls.Add(this.label1);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "WXShopListForm";
this.Text = "ShopListForm";
this.Load += new System.EventHandler(this.ShopListForm_Load);
this.VisibleChanged += new System.EventHandler(this.ShopListForm_VisibleChanged);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.panel5.ResumeLayout(false);
this.panel4.ResumeLayout(false);
this.panel4.PerformLayout();
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
this.splitContainer2.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pbLoading)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.SplitContainer splitContainer2;
private UserControls.ButtonEx btnAddShop;
private UserControls.ButtonEx btnLoginSelect;
private UserControls.ButtonEx btnCheck;
private UserControls.ButtonEx btnImport;
private UserControls.StatusBarUserControl statusBar;
private UserComponent.DataGridViewEx dgvShop;
private System.Windows.Forms.CheckBox chkAutoDrag;
private UserControls.ButtonEx btnRefreshAuth;
private System.Windows.Forms.PictureBox pbLoading;
private System.Windows.Forms.TextBox txtShopName;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtShopId;
private System.Windows.Forms.Label label2;
private UserControls.ButtonEx btnSearch;
private System.Windows.Forms.Label label4;
private DevComponents.DotNetBar.PanelEx pnlEmpty;
private UserControls.ButtonEx btnRefreshShop;
private System.Windows.Forms.ComboBox cmbNotes;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colLoginName;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopAccount;
private System.Windows.Forms.DataGridViewTextBoxColumn colNotes;
private System.Windows.Forms.DataGridViewTextBoxColumn colCookie;
private System.Windows.Forms.DataGridViewTextBoxColumn colSubUser;
private System.Windows.Forms.DataGridViewTextBoxColumn colGroupName;
private System.Windows.Forms.DataGridViewTextBoxColumn colUploadAccount;
private System.Windows.Forms.DataGridViewTextBoxColumn colBuyAccount;
private System.Windows.Forms.DataGridViewTextBoxColumn colChatAccount;
private System.Windows.Forms.DataGridViewTextBoxColumn colLoginStatus;
private System.Windows.Forms.DataGridViewLinkColumn colGotoShop;
private System.Windows.Forms.DataGridViewLinkColumn colShopOperate;
private System.Windows.Forms.DataGridViewLinkColumn colRelogin;
private System.Windows.Forms.DataGridViewTextBoxColumn colReLogin2;
private System.Windows.Forms.DataGridViewLinkColumn colMultiLogin;
private System.Windows.Forms.DataGridViewLinkColumn colApiAuth;
private System.Windows.Forms.DataGridViewLinkColumn colBuyApiAuth;
private System.Windows.Forms.DataGridViewLinkColumn colUpdateCookies;
private System.Windows.Forms.DataGridViewLinkColumn colCopyCookies;
private System.Windows.Forms.DataGridViewLinkColumn colEdit;
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
}
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,189 @@
<?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="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colLoginName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopAccount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCookie.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSubUser.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colGroupName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colUploadAccount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colBuyAccount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colChatAccount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colLoginStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colGotoShop.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopOperate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRelogin.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colReLogin2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colMultiLogin.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colApiAuth.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colBuyApiAuth.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colUpdateCookies.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCopyCookies.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colEdit.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDelete.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+384
View File
@@ -0,0 +1,384 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXShopLoginForm
{
/// <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(WXShopLoginForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.pnlMultiLogin = new System.Windows.Forms.Panel();
this.cmbMultiCookieName = new DevComponents.DotNetBar.Controls.ComboBoxEx();
this.btnMultiLogin = new DevComponents.DotNetBar.PanelEx();
this.btnDel = new DevComponents.DotNetBar.PanelEx();
this.btnLoginAgain = new TemuKJD.UserControls.ButtonEx();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.btnCopyPassword = new TemuKJD.UserControls.ButtonEx();
this.btnCopyUserName = new TemuKJD.UserControls.ButtonEx();
this.txtPassWord = new System.Windows.Forms.TextBox();
this.txtUserName = new System.Windows.Forms.TextBox();
this.btnStop = new TemuKJD.UserControls.ButtonEx();
this.btnReload = new TemuKJD.UserControls.ButtonEx();
this.chkCloseAfterLogin = new DevComponents.DotNetBar.Controls.CheckBoxX();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.txtAddress = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.pnlMultiLogin.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.pnlMultiLogin);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.btnLoginAgain);
this.splitContainer1.Panel2.Controls.Add(this.label2);
this.splitContainer1.Panel2.Controls.Add(this.label1);
this.splitContainer1.Panel2.Controls.Add(this.btnCopyPassword);
this.splitContainer1.Panel2.Controls.Add(this.btnCopyUserName);
this.splitContainer1.Panel2.Controls.Add(this.txtPassWord);
this.splitContainer1.Panel2.Controls.Add(this.txtUserName);
this.splitContainer1.Panel2.Controls.Add(this.btnStop);
this.splitContainer1.Panel2.Controls.Add(this.btnReload);
this.splitContainer1.Panel2.Controls.Add(this.chkCloseAfterLogin);
this.splitContainer1.Size = new System.Drawing.Size(1438, 736);
this.splitContainer1.SplitterDistance = 669;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
// pnlMultiLogin
//
this.pnlMultiLogin.Controls.Add(this.cmbMultiCookieName);
this.pnlMultiLogin.Controls.Add(this.btnMultiLogin);
this.pnlMultiLogin.Controls.Add(this.btnDel);
this.pnlMultiLogin.Location = new System.Drawing.Point(5, 634);
this.pnlMultiLogin.Name = "pnlMultiLogin";
this.pnlMultiLogin.Size = new System.Drawing.Size(251, 31);
this.pnlMultiLogin.TabIndex = 461;
this.pnlMultiLogin.Visible = false;
//
// cmbMultiCookieName
//
this.cmbMultiCookieName.DisplayMember = "Text";
this.cmbMultiCookieName.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.cmbMultiCookieName.FormattingEnabled = true;
this.cmbMultiCookieName.ItemHeight = 18;
this.cmbMultiCookieName.Location = new System.Drawing.Point(3, 3);
this.cmbMultiCookieName.Name = "cmbMultiCookieName";
this.cmbMultiCookieName.Size = new System.Drawing.Size(158, 24);
this.cmbMultiCookieName.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.cmbMultiCookieName.TabIndex = 379;
this.cmbMultiCookieName.Text = "cookie1";
//
// btnMultiLogin
//
this.btnMultiLogin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnMultiLogin.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnMultiLogin.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnMultiLogin.DisabledBackColor = System.Drawing.Color.Empty;
this.btnMultiLogin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMultiLogin.Location = new System.Drawing.Point(185, 3);
this.btnMultiLogin.Name = "btnMultiLogin";
this.btnMultiLogin.Size = new System.Drawing.Size(60, 24);
this.btnMultiLogin.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnMultiLogin.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnMultiLogin.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnMultiLogin.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnMultiLogin.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnMultiLogin.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnMultiLogin.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnMultiLogin.Style.GradientAngle = 90;
this.btnMultiLogin.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnMultiLogin.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnMultiLogin.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnMultiLogin.TabIndex = 460;
this.btnMultiLogin.Text = "多重登录";
this.btnMultiLogin.Click += new System.EventHandler(this.btnMultiLogin_Click);
//
// btnDel
//
this.btnDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnDel.CanvasColor = System.Drawing.SystemColors.Control;
this.btnDel.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnDel.DisabledBackColor = System.Drawing.Color.Empty;
this.btnDel.Location = new System.Drawing.Point(163, 3);
this.btnDel.Name = "btnDel";
this.btnDel.Size = new System.Drawing.Size(20, 24);
this.btnDel.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnDel.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.btnDel.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.btnDel.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.btnDel.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnDel.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.btnDel.Style.GradientAngle = 90;
this.btnDel.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
this.btnDel.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnDel.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnDel.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnDel.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.btnDel.TabIndex = 409;
this.btnDel.Text = "删";
this.btnDel.Click += new System.EventHandler(this.btnDel_Click);
//
// btnLoginAgain
//
this.btnLoginAgain.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnLoginAgain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnLoginAgain.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnLoginAgain.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnLoginAgain.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnLoginAgain.ForeColor = System.Drawing.Color.White;
this.btnLoginAgain.Location = new System.Drawing.Point(1155, 31);
this.btnLoginAgain.Margin = new System.Windows.Forms.Padding(2);
this.btnLoginAgain.Name = "btnLoginAgain";
this.btnLoginAgain.Size = new System.Drawing.Size(91, 25);
this.btnLoginAgain.TabIndex = 462;
this.btnLoginAgain.Text = "重新登录";
this.btnLoginAgain.UseVisualStyleBackColor = false;
this.btnLoginAgain.Click += new System.EventHandler(this.btnLoginAgain_Click);
//
// label2
//
this.label2.Location = new System.Drawing.Point(9, 35);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(44, 17);
this.label2.TabIndex = 378;
this.label2.Text = "密码";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(9, 8);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 17);
this.label1.TabIndex = 377;
this.label1.Text = "用户名";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// btnCopyPassword
//
this.btnCopyPassword.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCopyPassword.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyPassword.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCopyPassword.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCopyPassword.ForeColor = System.Drawing.Color.White;
this.btnCopyPassword.Location = new System.Drawing.Point(276, 31);
this.btnCopyPassword.Margin = new System.Windows.Forms.Padding(2);
this.btnCopyPassword.Name = "btnCopyPassword";
this.btnCopyPassword.Size = new System.Drawing.Size(57, 25);
this.btnCopyPassword.TabIndex = 376;
this.btnCopyPassword.Text = "复制";
this.btnCopyPassword.UseVisualStyleBackColor = false;
this.btnCopyPassword.Click += new System.EventHandler(this.btnCopyPassword_Click);
//
// btnCopyUserName
//
this.btnCopyUserName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCopyUserName.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyUserName.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCopyUserName.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCopyUserName.ForeColor = System.Drawing.Color.White;
this.btnCopyUserName.Location = new System.Drawing.Point(276, 4);
this.btnCopyUserName.Margin = new System.Windows.Forms.Padding(2);
this.btnCopyUserName.Name = "btnCopyUserName";
this.btnCopyUserName.Size = new System.Drawing.Size(57, 25);
this.btnCopyUserName.TabIndex = 375;
this.btnCopyUserName.Text = "复制";
this.btnCopyUserName.UseVisualStyleBackColor = false;
this.btnCopyUserName.Click += new System.EventHandler(this.btnCopyUserName_Click);
//
// txtPassWord
//
this.txtPassWord.Location = new System.Drawing.Point(53, 32);
this.txtPassWord.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtPassWord.Name = "txtPassWord";
this.txtPassWord.PasswordChar = '●';
this.txtPassWord.ReadOnly = true;
this.txtPassWord.Size = new System.Drawing.Size(221, 23);
this.txtPassWord.TabIndex = 374;
//
// txtUserName
//
this.txtUserName.Location = new System.Drawing.Point(53, 5);
this.txtUserName.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtUserName.Name = "txtUserName";
this.txtUserName.ReadOnly = true;
this.txtUserName.Size = new System.Drawing.Size(221, 23);
this.txtUserName.TabIndex = 373;
//
// btnStop
//
this.btnStop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnStop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnStop.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnStop.ForeColor = System.Drawing.Color.White;
this.btnStop.Location = new System.Drawing.Point(1342, 31);
this.btnStop.Margin = new System.Windows.Forms.Padding(2);
this.btnStop.Name = "btnStop";
this.btnStop.Size = new System.Drawing.Size(91, 25);
this.btnStop.TabIndex = 372;
this.btnStop.Text = "停止操作";
this.btnStop.UseVisualStyleBackColor = false;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// btnReload
//
this.btnReload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnReload.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnReload.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnReload.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReload.ForeColor = System.Drawing.Color.White;
this.btnReload.Location = new System.Drawing.Point(1249, 31);
this.btnReload.Margin = new System.Windows.Forms.Padding(2);
this.btnReload.Name = "btnReload";
this.btnReload.Size = new System.Drawing.Size(91, 25);
this.btnReload.TabIndex = 371;
this.btnReload.Text = "重新加载";
this.btnReload.UseVisualStyleBackColor = false;
this.btnReload.Click += new System.EventHandler(this.btnReload_Click);
//
// chkCloseAfterLogin
//
this.chkCloseAfterLogin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
//
//
//
this.chkCloseAfterLogin.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.chkCloseAfterLogin.Checked = true;
this.chkCloseAfterLogin.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkCloseAfterLogin.CheckValue = "Y";
this.chkCloseAfterLogin.Location = new System.Drawing.Point(1306, 6);
this.chkCloseAfterLogin.Name = "chkCloseAfterLogin";
this.chkCloseAfterLogin.Size = new System.Drawing.Size(135, 23);
this.chkCloseAfterLogin.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.chkCloseAfterLogin.TabIndex = 8;
this.chkCloseAfterLogin.Text = "登录成功后关闭窗口";
//
// splitContainer2
//
this.splitContainer2.BackColor = System.Drawing.Color.White;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(1, 33);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.splitContainer1);
this.splitContainer2.Size = new System.Drawing.Size(1438, 766);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 5;
//
// txtAddress
//
this.txtAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtAddress.Location = new System.Drawing.Point(3, 3);
this.txtAddress.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(1432, 23);
this.txtAddress.TabIndex = 7;
this.txtAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtAddress_KeyDown);
//
// PDDShopLoginForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1440, 800);
this.Controls.Add(this.splitContainer2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "PDDShopLoginForm";
this.ShowMaximizeBox = true;
this.Text = "店铺登录";
this.TitleText = "店铺登录";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ShopLoginForm_FormClosed);
this.Load += new System.EventHandler(this.ShopLoginForm_Load);
this.Controls.SetChildIndex(this.splitContainer2, 0);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.pnlMultiLogin.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private UserControls.ButtonEx btnStop;
private UserControls.ButtonEx btnReload;
private System.Windows.Forms.TextBox txtPassWord;
private System.Windows.Forms.TextBox txtUserName;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private UserControls.ButtonEx btnCopyPassword;
private UserControls.ButtonEx btnCopyUserName;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TextBox txtAddress;
private UserControls.ButtonEx btnLoginAgain;
public DevComponents.DotNetBar.Controls.CheckBoxX chkCloseAfterLogin;
private System.Windows.Forms.Panel pnlMultiLogin;
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbMultiCookieName;
private DevComponents.DotNetBar.PanelEx btnMultiLogin;
private DevComponents.DotNetBar.PanelEx btnDel;
}
}
@@ -0,0 +1,918 @@
using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.WinForms;
//using TemuKJD.DashBoardForms;
using TemuKJD.Helper;
using TemuKJD.BaseForms;
using Microsoft.Win32;
using NaiBa.CefHelper;
using NaiBa.CefHelper.Handler;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
//using System.Web.Hosting;
using System.Windows.Forms;
using Work;
using Work.BLL.Tools;
using TemuKJD.BLL;
using AllBase.Model.Result.PDDResult;
using NaiBa.Util;
namespace TemuKJD.WXForms.ShopForms
{
public enum EnumOpenType
{
login,
manage,
refresh_cookie,
}
public partial class WXShopLoginForm : LRBaseForm
{
public static WXShopLoginForm shopLoginInstance { get; set; } = null;
public int CloseAfterSecond { get; set; }
public EnumOpenType openType = EnumOpenType.manage;
public bool isMultiLogin = false;
public string MultiLoginCookieName = "";
public string InitUrl = "";
private string shopCookieHead = "qq.com";
private string shopLoginUrl = "https://store.weixin.qq.com/shop?redirect_url=%2Fhome";
private string shopMainUrl = "https://store.weixin.qq.com/shop/home";
public ChromiumWebBrowser cefWebBrowser = null;
private ShopLoginInfo shop = null;
private ConcurrentList<ShopCompany> lstShopCompany = new ConcurrentList<ShopCompany>();
private string currentUrl = "";
public WXShopLoginForm(ShopLoginInfo shopInfo)
{
shopLoginInstance = this;
InitializeComponent();
this.shop = shopInfo;
this.txtUserName.Text = (shopInfo?.LoginName).ParseToString();
this.txtPassWord.Text = DataOpenSSL.DecryptString((shopInfo?.Password).ParseToString());
}
private void ShopLoginForm_Load(object sender, EventArgs e)
{
this.splitContainer1.SplitterDistance = this.splitContainer1.Height - 62;
if (isMultiLogin && shop != null)
{
this.pnlMultiLogin.Visible = true;
InitMultiLoginCookies();
}
if (CloseAfterSecond > 0)
{
Task.Run(() =>
{
Thread.Sleep(1000 * CloseAfterSecond);
if (this.Created)
{
Invoke(new Action(() => { this.Close(); }));
}
});
}
if (!isMultiLogin)
AutoLogin();
CheckAndSaveShop(); //判断登录是否成功,成功则保存店铺信息和店铺cookie
//ClosePopWindow(); //自动关闭弹窗
}
/// <summary>
/// 判断登录,保存店铺
/// </summary>
private void CheckAndSaveShop()
{
Task.Run(() =>
{
// 自动判断是否登录成功,登录成功后记录cookie保存到服务端。
while (this.Created)
{
Thread.Sleep(3000);
if (!this.Created)
break;
if (currentUrl.TrimEnd('/') == shopMainUrl)
{
if (!cefWebBrowser.GetBrowser().MainFrame.IsValid)
continue;
if (!lstShopCompany.Any())
continue;
else // 检测到登录成功后
{
string cookies = "";
List<Cookie> cookieList = CEFBrowser.GetCookieList(shopCookieHead, cefWebBrowser.GetCookieManager(null));
foreach (var cookie in cookieList)
{
cookie.Domain = cookie.Domain.Replace(".store.weixin.qq.com", "store.weixin.qq.com");
}
List<Cookie> cookieListNew = new List<Cookie>();
if (cookieList != null && cookieList.Count > 0)
{
foreach (var cookie in cookieList)
{
cookies += cookie.Name + "=" + cookie.Value + "; ";
cookieListNew.Add(cookie);
}
cookies = JsonHelper.SerializeObject(cookieListNew);
}
if (!string.IsNullOrEmpty(cookies))
{
var lstShopCompanyCopy = lstShopCompany.ToList();
foreach (ShopCompany sc in lstShopCompanyCopy)
{
ShopLoginInfo newShop = new ShopLoginInfo()
{
LoginName = shop?.LoginName ?? sc.AccountId,
Password = shop?.Password,
GroupName = shop?.GroupName,
ShopAccount = sc.AccountName,
ShopId = sc.AccountId,
SubUserName = shop?.SubUserName,
Notes = shop?.Notes,
openid = sc.openid,
};
var oldShop = GlobalConfig.ShopLoginList.FirstOrDefault(l => l.ShopId == newShop.ShopId);
if (oldShop == null)
{
GlobalConfig.ShopLoginList.Add(newShop);
ShopBLL.AddServerShop(newShop); // 店铺写入到服务端
if (shop == null)
shop = newShop;
}
else
{
oldShop.ShopId = newShop.ShopId;
oldShop.LoginName = newShop.LoginName;
oldShop.ShopAccount = newShop.ShopAccount;
oldShop.openid = newShop.openid;
// 店铺更新写入到服务端
var url = BaseClass.BuildObjString("shop/mdy_shop");
var data = UserLogin.GetSignaturex()
+ "&login_name=" + oldShop.LoginName
+ "&shop_id=" + oldShop.ShopId
+ "&shop_account=" + oldShop.ShopAccount;
var result = GetHtml.PostUtf8(url, data);
}
}
// 店铺cookie写入服务端,多店共用一个登录账号一组cookie
WXShopListForm.UpdateServerShopCookies(shop);
// 手动更新内存中的店铺cookie
var lstShop = GlobalConfig.ShopLoginList.Where(l => l.LoginName == shop?.LoginName).ToList();
foreach (var s in lstShop)
{
s.LoginStatus = "登录成功";
s.Cookies = cookies;
s.LastRefreshDate = DateTime.Now.ToString("yyyyMMdd");
}
OnSaveComplete(shop);
if (this.Created && this.chkCloseAfterLogin.Checked)
{
Invoke(new Action(() => { this.Close(); }));
}
else
{
break;
}
}
}
}
}
});
}
/// <summary>
/// 自动关闭弹窗
/// </summary>
private void ClosePopWindow()
{
// 关闭弹窗
Task.Run(() =>
{
var sleepTime = 2500;
int i = 0;
while (true && i++ < 50)
{
try
{
Thread.Sleep(sleepTime);
var jsStr1 = "function ClosePopWindow(txt) {\r\n" +
" var result = 'no_pop'\r\n" +
" var item = document.getElementsByClassName(txt);\r\n" +
" for(i = 0; i < item.length; i++) {\r\n" +
" item[i].click();\r\n" +
" result = 'success'\r\n" +
" }\r\n" +
" return result;\r\n" +
"}\r\n" +
"ClosePopWindow('anticon-close-circle');\r\n" +
"ClosePopWindow('ant-modal-close-x');\r\n";
var jsStr2 = "function clickPopWindow(txt) {\r\n"
+ "var child = document.body.firstElementChild;\r\n"
+ "var element1 = null;\r\n"
+ " while (child) {\r\n"
+ " if (child.innerHTML.indexOf(txt) >= 0) {\r\n"
+ " element1 = child;\r\n"
+ " if (child.firstElementChild) {\r\n"
+ " child = child.firstElementChild; continue;\r\n"
+ " } else break;\r\n"
+ " }\r\n"
+ " child = child.nextElementSibling;\r\n"
+ " }\r\n"
+ " if (element1) {\r\n"
+ " element1.click(); return 'success';\r\n"
+ " } else return 'no_pop';\r\n"
+ "}\r\n"
+ "clickPopWindow('我知道了');\r\n"
+ "clickPopWindow('知道了');\r\n";
if (cefWebBrowser != null && cefWebBrowser.IsBrowserInitialized)
{
var t1 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr1);
t1.Wait();
var t2 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr2);
t2.Wait();
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
sleepTime = Randomx.GetId(550, 650);
else
sleepTime = Randomx.GetId(1500, 2000);
}
}
catch (Exception ex) { }
}
});
}
/// <summary>
/// 自动登录店铺后台
/// </summary>
private void AutoLogin()
{
if (openType != EnumOpenType.login && shop == null)
return;
if (cefWebBrowser == null)
{
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, false);
else
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(shopMainUrl, false);
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad;
cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.LoadError += CefWebBrowser_LoadError;
cefWebBrowser.Dock = DockStyle.Fill;
//js绑定C#对象
WXShopBrowserObject shopObj = new WXShopBrowserObject();
shopObj.OnInfoReceived += ShopObj_OnInfoReceived;
CefSharpSettings.WcfEnabled = true;
cefWebBrowser.JavascriptObjectRepository.Register(
name: "shopObj",
objectToBind: shopObj,
isAsync: false,
options: new BindingOptions { Binder = BindingOptions.DefaultBinder.Binder /*CamelCaseJavascriptNames = false*/ /*cef79*/ }
);
List<Cookie> cookieLst = new List<Cookie>();
try
{
if (shop != null)
{
cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop.Cookies.ParseToString());
if (cookieLst == null)
cookieLst = new List<Cookie>();
}
}
catch
{
}
Task.Run(() =>
{
Invoke(new Action(() =>
{
splitContainer1.Panel1.Controls.Add(cefWebBrowser);
//cefWebBrowser.Load(shopMainUrl);
}));
// cef138必须init后方可设置或删除cookie
while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
Thread.Sleep(20);
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//if (this.openType != EnumOpenType.login)
{
//var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
foreach (var cook in cookieLst)
{
var t = CEFBrowser.SetCookieAsync(cook.Domain, cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
t.Wait(5000);
}
}
//根据登录的具体店铺设置local storage
if (!string.IsNullOrEmpty(shop?.ShopId))
{
//var storageJsCode = "window.localStorage.setItem('" + "mall-info-id" + "', '" + shop.ShopId + "');\r\n";
//storageJsCode += "window.localStorage.setItem('" + "agentseller-mall-info-id" + "', '" + shop.ShopId + "');\r\n";
//while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
// Thread.Sleep(20);
//cefWebBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync(storageJsCode);
}
if (!string.IsNullOrEmpty(InitUrl))
cefWebBrowser.Load(InitUrl);
else
cefWebBrowser.Load(shopMainUrl);
//不是登录的话就此返回
if (openType != EnumOpenType.login)
{
Invoke(new Action(() =>
{
chkCloseAfterLogin.Visible = false;
btnLoginAgain.Visible = false;
}));
return;
}
for (int i = 0; i < 50; i++)
{
if (cefWebBrowser.IsLoading)
Thread.Sleep(100);
}
Thread.Sleep(Randomx.GetId(1500,2000));
if (!this.Created)
return;
while (!cefWebBrowser.Address.StartsWith(shopLoginUrl))
{
Thread.Sleep(1000);
if (!this.Created)
return;
}
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
// 扫码登录,无输入密码环节
// InputUserNameAndPassword(cefWebBrowser, shop.LoginName, DataOpenSSL.DecryptString(shop.Password));
});
}
}
private void ShopObj_OnInfoReceived(string information)
{
//BaseMsgForm.ShowInfo(information);
if (!string.IsNullOrEmpty(information))
cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("alert('" + information + "');");
}
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
if (this.Created && !this.Disposing && !this.IsDisposed)
Invoke(new Action(() =>
{
currentUrl = e.Address;
txtAddress.Text = e.Address;
}));
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
//js绑定C#对象 html页面内声明绑定的C#对象
StringBuilder sb = new StringBuilder();
sb.Append("(function(){");
sb.Append("CefSharp.BindObjectAsync('shopObj');");
sb.Append("})();");
//cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sb.ToString());
}
//public Func<object, string, string, request, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, request, true(表示取消执行)
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
return false;
}
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
if (url == "https://store.weixin.qq.com/shop/home" && this.openType == EnumOpenType.login)
{
Task.Run(() =>
{
var data = responseData;
var index = data.IndexOf("window.__INITIAL_PINIA_DATA__=") + "window.__INITIAL_PINIA_DATA__=".Length;
var indexEnd = data.IndexOf(";window.__USE_VITE__=");
if (index < 1000)
{
//BaseMsgForm.ShowError("cookie已失效!");
return;
}
var dataStr = data.Substring(index, indexEnd - index);
dataStr = GetHtml.Unicode2String(dataStr);
var shopId = BaseRegex.GetStringJson(ref data, "appid");
var nickName = BaseRegex.GetStringJson(ref data, "nickName");
var openId = BaseRegex.GetStringJson(ref data, "openid"); // oGu7k7HxmUyOmc1X6VM7GQwS-9cI
if (shop != null && shop.ShopId != shopId)
{
BaseMsgForm.ShowError("cookie与店铺不匹配,请核对店铺!");
return;
}
if (shop == null && GlobalConfig.ShopLoginList.Any(s=>s.ShopId == shopId))
{
BaseMsgForm.ShowError("录入的新店铺已存在,请核对店铺!");
return;
}
ShopCompany sc = new ShopCompany()
{
UserName = BaseClass.UserName, // 登录的用户信息
AccountId = shopId,
AccountName = nickName,
LoginName = shopId,
openid = openId,
LoginStatus = "登录成功",
};
this.lstShopCompany.RemoveAll(s => s.AccountId == sc.AccountId);
this.lstShopCompany.Add(sc);
});
}
}
/// <summary>
/// 自动登录
/// </summary>
/// <param name="webBrowser"></param>
/// <param name="_account"></param>
/// <param name="_password"></param>
private void InputUserNameAndPassword(ChromiumWebBrowser webBrowser, string _account, string _password)
{
webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sGetElementWithText);
var jsStr0 = "var clickBox1 = getElementWithText('账号登录'); clickBox1.click()";
var response0 = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr0);
response0.Wait(1000);
Thread.Sleep(Randomx.GetId(500, 1000));
string jsStr1 = "function getInputItem () {var usernameId = document.getElementById('usernameId'); if (usernameId) return 'true';} getInputItem();";
Task<JavascriptResponse> response1 = null;
while (response1?.Result?.Result == null || !response1.Result.Result.ParseToString().Contains("true"))
{
Thread.Sleep(250);
if (!this.Created)
return;
response1 = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr1);
response1.Wait(5000);
if (!this.Created)
return;
}
webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(sInputValueChange2);
jsStr1 = "var usernameId = document.getElementById('usernameId'); " +
"changeReactInputValue(usernameId,'" + _account + "');";
response1 = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr1);
response1.Wait(1000);
Thread.Sleep(Randomx.GetId(500, 1000));
string jsStr = "var passwordId = document.getElementById('passwordId'); "+
"changeReactInputValue(passwordId,'" + _password + "');";
var response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(1000);
Thread.Sleep(Randomx.GetId(500, 1000));
jsStr = "var clickBox = getElementWithText('我已阅读并同意'); " +
"clickBox.click()";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(1000);
Thread.Sleep(Randomx.GetId(500, 1000));
jsStr = "var clickBox = getElementWithText('登录'); " +
"clickBox.click()";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(1000);
Thread.Sleep(Randomx.GetId(500, 1000));
return;
//下面代码原抖音使用,废弃
#region 输入用js
string jsSetValue = @"
function keyboardInput(dom, st) {
var evt = new InputEvent('input', {
//var evt = new Event('input', { // cef57
inputType: 'insertText',
data: st,
dataTransfer: null,
isComposing: false
});
dom.value = st;
dom.dispatchEvent(evt);
dom.focus();
};";
string jsInputKey = @"
function fireKeyEvent(el, evtType, keyCode) {
var evtObj;
if (document.createEvent)
{
if (window.KeyEvent)
{
//firefox 浏览器下模拟事件
evtObj = document.createEvent('KeyEvents');
evtObj.initKeyEvent(evtType, true, true, window, true, false, false, false, keyCode, 0);
}
else
{
//chrome 浏览器下模拟事件
evtObj = document.createEvent('UIEvents');
evtObj.initUIEvent(evtType, true, true, window, 1);
delete evtObj.keyCode;
if (typeof evtObj.keyCode === 'undefined')
{
//为了模拟keycode
Object.defineProperty(evtObj, 'keyCode', { value: keyCode });
}
else
{
evtObj.key = String.fromCharCode(keyCode);
}
if (typeof evtObj.ctrlKey === 'undefined')
{
//为了模拟ctrl键
Object.defineProperty(evtObj, 'ctrlKey', { value: true });
}
else
{
evtObj.ctrlKey = true;
}
}
el.dispatchEvent(evtObj);
}
else if (document.createEventObject)
{
//IE 浏览器下模拟事件
evtObj = document.createEventObject();
evtObj.keyCode = keyCode
el.fireEvent('on' + evtType, evtObj);
}
}";
#endregion
#region 输入用户名
jsStr = @"var txt1 = document.getElementsByName('email')[0]; txt1.focus(); txt1.click(); keyboardInput(txt1, '" + _account + "');"
+ "var uname = '" + _account + "';"
+ "for(var i = 0; i < uname.length; i++) {"
+ " cCode = uname.charCodeAt(i);"
+ " fireKeyEvent(txt1, 'keydown', cCode);"
+ " fireKeyEvent(txt1, 'keypress', cCode);"
+ " fireKeyEvent(txt1, 'keyup', cCode);"
+ "}";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsSetValue + jsInputKey + jsStr);
response.Wait(2000);
Thread.Sleep(Randomx.GetId(400, 800));
#endregion
#region 输入密码
jsStr = @"var txt2 = document.getElementsByName('password')[0]; txt2.focus(); txt2.click(); keyboardInput(txt2, '" + _password + "');"
+ "var pwd = '" + _password + "';"
+ "for(var i = 0; i < pwd.length; i++) {"
+ " cCode = pwd.charCodeAt(i);"
+ " fireKeyEvent(txt2, 'keydown', cCode);"
+ " fireKeyEvent(txt2, 'keypress', cCode);"
+ " fireKeyEvent(txt2, 'keyup', cCode);"
+ "}";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsInputKey + jsStr);
response.Wait(2000);
Thread.Sleep(Randomx.GetId(400, 800));
#endregion
#region 点击登录按钮
jsStr = "var btn = document.getElementsByClassName('account-center-action-button')[0]; btn.click(); //btn.dispatchEvent(new Event('change'));";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(2000);
Thread.Sleep(1500 + Randomx.GetId(1000));
#endregion
#region 获取验证码
int getImageCount = 0;
getImageAgain:
if (!this.Created)
return;
jsStr = "function getImg() { return document.getElementsByClassName('captcha_verify_img--wrapper')[0].innerHTML; }";
jsStr += "getImg();";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(2000);
if (response.Result?.Result == null)
{
if (getImageCount < 50)
{
Thread.Sleep(2500);
getImageCount++;
goto getImageAgain;
}
}
if (response.Result?.Result != null)
{
var imgStr = response.Result.Result.ToString();
var src = BaseRegex.GetMatchRegexString(ref imgStr, "src=\"([\\s\\S]*?)\"");
Bitmap bt = (Bitmap)GetHtml.LoadImage(src);
if (bt != null)
{
int Stopxt = 0;
int dragButtonWidth = 53;
//Stopxt = new Base64ChangeImgUrl().CalculateNick(bt, dragButtonWidth);
Thread.Sleep(500 + Randomx.GetId(1000));
Stopxt = new Base64ChangeImgUrl().CalculateNickNew(bt, dragButtonWidth);
if (Stopxt > 0)
{
jsStr = "function getImgPos() { return document.getElementsByClassName('secsdk-captcha-drag-icon')[0].getBoundingClientRect().left + '|' "
+ " + document.getElementsByClassName('secsdk-captcha-drag-icon')[0].getBoundingClientRect().top;} getImgPos();";
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(2000);
if (response.Result?.Result != null)
{
var xy = response.Result?.Result.ToString();
var xyArr = xy.Split('|');
if (xyArr.Length == 2)
{
try
{
int x = (int)Convert.ToDecimal(xyArr[0]) + 25;
int y = (int)Convert.ToDecimal(xyArr[1]) + 25;
// 自动滑块图形验证
if (GlobalConfig.TemuShopSettingParam.IsAutoDragLogin)
{
WXShopLoginForm.CefMouseDragDou(cefWebBrowser, x, y, Convert.ToInt32((x + Stopxt * 340m / 552m) - 15), y);
for (int i = 0; i < 1; i++)
Thread.Sleep(2000 + Randomx.GetId(1000));
response = webBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
response.Wait(2000);
if (response.Result?.Result != null && getImageCount < 50)
{
getImageCount++;
goto getImageAgain;
}
}
}
catch
{
}
}
}
for (int i = 0; i < 1; i++)
Thread.Sleep(2000 + Randomx.GetId(1000));
}
}
}
Thread.Sleep(1500 + Randomx.GetId(1000));
#endregion
}
// 鼠标左键按下,移动,移动...左键抬起。
public static void CefMouseDragDou(ChromiumWebBrowser webBrowser, int x1, int y1, int x2, int y2)
{
Thread.Sleep(100);
var host = webBrowser.GetBrowser().GetHost();
var rx = -6 + Randomx.GetId(13);
x2 = x2 + rx;
// 随机按下点的位置(正负6像素),提高仿真性
int x = x1 + rx;
int y = y1 - 6 + Randomx.GetId(13);
// 按下鼠标左键
host.SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.None);
Thread.Sleep(100 + Randomx.GetId(300));
// 滑动光标
int times = -20;
while (x < x2 + 4 - Randomx.GetId(9))
{
times++;
x += (15 + Randomx.GetId(15)) / 8;
if (times % 5 == 0)
y = y - 1 + Randomx.GetId(3);
Thread.Sleep(6 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
}
if (x < x2 - 1)
while (x < x2)
{
times++;
x += (8 + Randomx.GetId(8)) / 8;
if (times % 5 == 0)
y = y - 1 + Randomx.GetId(3);
Thread.Sleep(6 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
}
else if (x > x2 + 1)
while (x > x2)
{
times++;
x -= (8 + Randomx.GetId(8)) / 8;
if (times % 5 == 0)
y = y - 1 + Randomx.GetId(3);
Thread.Sleep(6 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
}
// 如果最后位置偏差较多,再做一次调整
x = x2 - 1 + Randomx.GetId(3);
x = x2;
Thread.Sleep(18 + Math.Abs(times) / 5 + Randomx.GetId(16));
Thread.Sleep(18 + Math.Abs(times) / 5 + Randomx.GetId(16));
host.SendMouseMoveEvent((int)x, (int)y, false, CefEventFlags.LeftMouseButton);
// 抬起鼠标左键
Thread.Sleep(300 + Randomx.GetId(500));
host.SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
host.SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
}
private void btnStop_Click(object sender, EventArgs e)
{
}
private void btnCopyUserName_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtUserName.Text))
Clipboard.SetDataObject(txtUserName.Text);
}
private void btnCopyPassword_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtPassWord.Text))
Clipboard.SetDataObject(txtPassWord.Text);
}
private void btnReload_Click(object sender, EventArgs e)
{
if (cefWebBrowser != null)
{
if (txtAddress.Text != "about:blank")
cefWebBrowser.Load(txtAddress.Text);
else
cefWebBrowser.Load(shopMainUrl);
}
}
private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e)
{
//OnSaveComplete(shop);
Task.Run(() => {
Thread.Sleep(500);
if (!this.Disposing && !this.IsDisposed)
{
MainForm.instance.Invoke(new Action(() => { this.Dispose(); }));
}
});
}
private void txtAddress_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtAddress.Text);
}
}
}
private void btnMultiLogin_Click(object sender, EventArgs e)
{
MultiLoginCookieName = cmbMultiCookieName.Text;
AutoLogin();
}
private void btnDel_Click(object sender, EventArgs e)
{
if (shop != null)
{
shop.DictMultiCookies.Remove(cmbMultiCookieName.Text);
StartUp.SaveLocalShopLoginInfo();
InitMultiLoginCookies();
}
}
private void InitMultiLoginCookies()
{
this.cmbMultiCookieName.Items.Clear();
foreach (var cookieKey in shop.DictMultiCookies.Keys)
{
this.cmbMultiCookieName.Items.Add(cookieKey);
}
int i = 1;
foreach (var item in this.cmbMultiCookieName.Items)
{
if (i <= item.ToString().Replace("cookie", "").ParseToInt())
{
i = item.ToString().Replace("cookie", "").ParseToInt() + 1;
}
}
this.cmbMultiCookieName.Items.Insert(0, "cookie" + i);
this.cmbMultiCookieName.Text = "cookie" + i;
}
string sInputValueChange = @"
let usernameId = document.getElementById('usernameId');
usernameId.value = '1';
var event = document.createEvent('HTMLEvents');
event.initEvent('input', true, true);
event.eventType = 'message';
usernameId.dispatchEvent(event);
";
string sInputValueChange2 = @"
function changeReactInputValue(inputDom,newText){
let lastValue = inputDom.value;
inputDom.value = newText;
let event = new Event('input', { bubbles: true });
event.simulated = true;
let tracker = inputDom._valueTracker;
if (tracker) {
tracker.setValue(lastValue);
}
inputDom.dispatchEvent(event);
}
";
string sGetElementWithText = @"
function getElementWithText(sText)
{
var elem=null;
const elements = document.querySelectorAll('*'); // 选择所有元素
elements.forEach(element => {
if (element.textContent.includes(sText)) {
// 对每个匹配的元素执行操作
//console.log(element);
elem=element;
}
});
return elem;
};
";
private void btnLoginAgain_Click(object sender, EventArgs e)
{
if (this.currentUrl != shopLoginUrl)
this.cefWebBrowser.Load(shopLoginUrl);
Task.Run(() =>
{
InputUserNameAndPassword(cefWebBrowser, shop.LoginName, DataOpenSSL.DecryptString(shop.Password));
});
}
private void btnReturnPackage_Click(object sender, EventArgs e)
{
//ReturnPackageDetailForm form = new ReturnPackageDetailForm(this.shop);
//form.ShowDialog();
}
}
}
@@ -0,0 +1,298 @@
<?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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQYAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzM
zMzMzMzMzMx3d4iIiIiIiIh3fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzMzMzMzMzHeIiIiIj/////////iIiIiId8zMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzMzMzMzMeIiI/////////////////////4iIh8zMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzMzMzMzHiI////////////////////////////iIfMzMzMzMzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMzMzMx3iP///////////////////////////////4iHzMzMzMzMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMzMzMx3iP//////////////////////////////////+IfMzMzMzMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzMzMx3iP/////////////////////////////////////4h8zMzMzMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzMzMzHiP////////////////////////////////////////h3zM
zMzMzMzMzMzMzMzGAAAABMzMzMzMzMzMzMzMzHiP////////////////////////////////////////
//iHzMzMzMzMzMzMzMzMzEAAAAbMzMzMzMzMzMzMzMeI////////////////////////////////////
////////+IfMzMzMzMzMzMzMzMxgAABMzMzMzMzMzMzMzMx4////////////////////////////////
//////////////+IfMzMzMzMzMzMzMzMxAAAbMzMzMzMzMzMzMzHj///////////////////////////
/////////////////////4fMzMzMzMzMzMzMzMYAAMzMzMzMzMzMzMzMeP//////////////////////
///////////////////////////4fMzMzMzMzMzMzMzMAAbMzMzMzMzMzMzMx4//////////////////
/////////////////////////////////4fMzMzMzMzMzMzMzGAGzMzMzMzMzMzMzHj/////////////
///////////////////////////////////////4fMzMzMzMzMzMzMxgDMzMzMzMzMzMzMyI////////
/////////////////////////////////////////////4zMzMzMzMzMzMzMwEzMzMzMzMzMzMzHj///
//////////////////////////////////////////////////+HzMzMzMzMzMzMzMRszMzMzMzMzMzM
eP//////////////////////////////////////////////////////+HzMzMzMzMzMzMzGbMzMzMzM
zMzMzHj///////////////////////////////////////////////////////+MzMzMzMzMzMzMxmzM
zMzMzMzMzMyP////+IiP////////////////////////////////////////+I//////h8zMzMzMzMzM
zMZszMzMzMzMzMzHj////4iIiI//////////////////////////////////////+IiIj/////jMzMzM
zMzMzMzGbMzMzMzMzMzMyP////iIiIiI/////////////////////////////////////4iIiIj////4
fMzMzMzMzMzMxszMzMzMzMzMzHj////4iIiIiP////////////////////////////////////+IiIiI
j////4zMzMzMzMzMzMbMzMzMzMzMzMx4////iIiIiIj////////////////////////////////////4
iIiIiI////+HzMzMzMzMzMzMzMzMzMzMzMzMj////4iIiIiI//////////////+IiP//iI//////////
////+IiIiIiP////h8zMzMzMzMzMzMzMzMzMzMzMzI/////4iIiIiP/////////////4d3eIiIeIj///
//////////+IiIiIj/////jMzMzMzMzMzMzMzMzMzMzMzMyP////+IiIiIj/////////////iIiId3eI
iI//////////////iIiIiI/////4zMzMzMzMzMzMzMzMzMzMzMzHj/////+IiIiP/////////////4//
/4d4j/+P//////////////iIiIj/////+MzMzMzMzMzMzMzMzMzMzMzMx4//////+IiP////////////
///////4j///////////////////iIiP//////jMzMzMzMzMzMzMzMzMzMzMzMeP//////////+IiIj/
///////////////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzH//////////+H
fMx8eP//////////////////////////iId3iP//////////+HzMzMzMzMzMzMzMzMzMzMzMyP//////
///4fMzHh8eP////////////////////////+MzMzMd4//////////h8zMzMzMzMzMzMzMzMzMzMzMf/
////////+MzMePjMeP///////////////////////4zMzMeHx4/////////4fMzMzMzMzMzMzMzMzMzM
zMzH/////////4fMd3eHzMeP//////////////////////iMzMzIiHx4////////+HzMzMzMzMzMzMzM
zMzMzMzMx/////////+Hx4iIfMzMj//////////////////////4h3d8x4h8yP////////jMzMzMzMzM
zMzMzMzMzMzMzMeP////////+HiP+IfMzI//////////////////////+HiIiHd3zHj////////4zMzM
zMzMzMzMzMzMzMzMzMzHj/////////h4//+HzMeP//////////////////////h4//h8zMyP////////
+MzMzMzMzMzMzMzMzMzMzMzMzI/////////4iP//h8x4///////////////////////4j//4fMzHj///
//////jMzMzMzMzMzMzMzMzMzMzMzMyP///////4iIiP+IfHj///////////////////////+Ij/+HzM
eP/////////4zMzMzMzMzMzMzMzMzMzMzMzMj///////iIiIiIh3eP////////////////////////+I
j4h8x3iI////////h8zMzMzMzMzMzMzMzMzMzMzMzH//////+Hj///iIiI//////////////////////
/////4iId4iIiIj//////4zMzMzMzMzMzMzMzMzMzMzMzMx4//////iP////iP//////////////////
/////////////4iP//iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMyP//////////+I//////////////
///////////////////4eP//iP//////jMzMzMzMzMzMzMzMzMzMzMzMzMj///////////iP////////
/////////////////////////4j/////////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj///////////////
//////////////////////////////+I//////////jMzMzMzMzMzMzMzMzMzMzMzMzMzI//////////
//////////////////////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
eP///////////////////////////////////////////////////////4zMzMzMzMzMzMzMzMzMzMzM
zMzMzMj///////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzM
zMzMzMzMzMzHj//////////////////////////////////////////////////////4zMzMzMzMzMzM
zMzMzMzMzMzMzMzMzI//////////////////////////////////////////////////////h8zMzMzM
zMzMzMzMzMzMzMzMzMzMzMx4////////////////////////////////////////////////////+HzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMyI////+I////////////////////////////////////////////
//h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+Ij/////////////////////////////////////
//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+IiIiIj//////////////////////////4
////iI/////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiP/////4iIiP//////////////////////
////+IiIiIj/////iHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////////////////
///////////4iIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP////////////////////
//////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////
//////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////
///////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////
////////////////////////////////////////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI
j/////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMeP//////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMx4////////+I//////////////////////////////////////jMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMeP///////4iIj///////////////////////////iP///////4fMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMx4////////iIiIiP///////////////////////4iIiP///////4zMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIj///////+HzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIj////////////////////4iIiIiIj///////
+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIiI//
//////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiP////////////////////iIiI
iIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiIj/////iIiIiIiIj/////
/4iIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiI/////4zMzMzMzM
j/////+IiIiIiIiP//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP//////+IiIiIiIj/////+MzM
zMzMzI//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iIiIiIiI////
//jMzMzMzMyP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP///////4iIiIiI
iP/////4zMzMzMzMj//////4iIiIiIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iI
iIiIiI//////+MzMzMzMzI//////+IiIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
///4iIiIiIiP//////fMzMzMzMyP//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzH
j///////+IiIiIiI//////+HzMzMzMzMeP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzM
zMzMyP////////iIiIiIiP//////jMzMzMzMzHj///////iIiIiIiI///////4fMzMzMzMzMzMzMzMzM
zMzMzMzMzMj///////+IiIiIiI///////4zMzMzMzMzI///////4iIiIiIiI///////3zMzMzMzMzMzM
zMzMzMzMzMzMzMzI////////iIiIiIiP//////+MzMzMzMzMyP//////+IiIiIiIiP//////+MzMzMzM
zMzMzMzMzMzMzMzMzMzMeP///////4iIiIiIj///////jMzMzMzMzMj///////+IiIiIiIj///////jM
zMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiIiP//////+HzMzMzMzMzHj///////iIiIiIiI////
///4zMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIiI////////jMzMzMzMzMzI///////4iIiIiI
iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMzMj////////4iIiIiP///////4zMzMzMzMzMyP///////4
iIiIiIiP//////jMzMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiI////////h8zMzMzMzMzMeP//
/////4iIiIiIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIj////////4fMzMzMzMzM
zHj///////+IiIiIiI//////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////iIiP////////+MzMzM
zMzMzMzI////////+IiIiIiP//////h8zMzMzMzMzMzMxmzMzMzMzMzMx4/////////4iP/////////4
fMzMzMzMzMzMx4////////+IiIiIj//////4fMzMzMzMzMzMzMZszMzMzMzMzMeP////////////////
////+MzMzMzMzMzMzMyP////////iIiIiP//////+HzMzMzMzMzMzMzGbMzMzMzMzMzH////////////
//////////fMzMzMzMzMzMzMeP////////iIiIj///////98zMzMzMzMzMzMxmzMzMzMzMzMyP//////
//////////////+HzMzMzMzMzMzMzHj/////////+IiP////////jMzMzMzMzMzMzMZszMzMzMzMzMj/
////////////////////jMzMzMzMzMzMzMzIj////////////////////4zMzMzMzMzMzMzGTMzMzMzM
zMzH////////////////////+HzMzMzMzMzMzMzMx4////////////////////+MzMzMzMzMzMzMxAzM
zMzMzMzMx/////////////////////jMzMzMzMzMzMzMzMyI///////////////////4fMzMzMzMzMzM
zMAGzMzMzMzMzMeP//////////////////+HzMzMzMzMzMzMzMzMeP//////////////////+HzMzMzM
zMzMzMxgBszMzMzMzMzHj//////////////////4fMzMzMzMzMzMzMzMzMeP//////////////////h8
zMzMzMzMzMzMYADMzMzMzMzMzI//////////////////+HzMzMzMzMzMzMzMzMzHj///////////////
///4zMzMzMzMzMzMzAAAbMzMzMzMzMyP/////////////////4fMzMzMzMzMzMzMzMzMzHj/////////
////////+MzMzMzMzMzMzMYAAEzMzMzMzMzMj/////////////////+MzMzMzMzMzMzMzMzMzMzIj///
/////////////4fMzMzMzMzMzMzEAAAGzMzMzMzMzHj////////////////4fMzMzMzMzMzMzMzMzMzM
x4////////////////+MzMzMzMzMzMzMYAAABMzMzMzMzMx4////////////////h8zMzMzMzMzMzMzM
zMzMzMx4///////////////4fMzMzMzMzMzMzEAAAABszMzMzMzMx4//////////////+HzMzMzMzMzM
zMzMzMzMzMzMx4//////////////+MzMzMzMzMzMzMYAAAAATMzMzMzMzMyP/////////////4fMzMzM
zMzMzMzMzMzMzMzMzMeI/////////////4fMzMzMzMzMzMzEAAAAAAbMzMzMzMzMeP////////////h8
zMzMzMzMzMzMzMzMzMzMzMzMeI////////////h8zMzMzMzMzMzMYAAAAAAAbMzMzMzMzMeP////////
//iHzMzMzMzMzMzMzMzMzMzMzMzMzMyI//////////+HzMzMzMzMzMzMxgAAAAAAAEzMzMzMzMzMeP//
//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMx4/////////4fMzMzMzMzMzMzMQAAAAAAAAGzMzMzMzM
zMeI//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4j//////4h8zMzMzMzMzMzMxgAAAAAAAAAGzM
zMzMzMzMx4iIiIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiIj/+Ih3zMzMzMzMzMzMzGAAAAAAAA
AAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx3iId8zMzMzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>
@@ -0,0 +1,203 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXShopUpdateCookieForm
{
/// <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(WXShopUpdateCookieForm));
this.panel2 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.label4 = new System.Windows.Forms.Label();
this.txtCookieJs1 = new DevComponents.DotNetBar.Controls.TextBoxX();
this.label3 = new System.Windows.Forms.Label();
this.txtSubPassId = new System.Windows.Forms.TextBox();
this.txtLoginName = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.btnOk = new TemuKJD.UserControls.ButtonEx();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.White;
this.panel2.Controls.Add(this.splitContainer1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(1, 33);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(698, 424);
this.panel2.TabIndex = 1;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.label4);
this.splitContainer1.Panel1.Controls.Add(this.txtCookieJs1);
this.splitContainer1.Panel1.Controls.Add(this.label3);
this.splitContainer1.Panel1.Controls.Add(this.txtSubPassId);
this.splitContainer1.Panel1.Controls.Add(this.txtLoginName);
this.splitContainer1.Panel1.Controls.Add(this.label1);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.btnOk);
this.splitContainer1.Size = new System.Drawing.Size(698, 424);
this.splitContainer1.SplitterDistance = 348;
this.splitContainer1.TabIndex = 394;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(40, 103);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(60, 17);
this.label4.TabIndex = 399;
this.label4.Text = "CookieJs";
//
// txtCookieJs1
//
this.txtCookieJs1.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.txtCookieJs1.Border.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtCookieJs1.Border.BorderLeft = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtCookieJs1.Border.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtCookieJs1.Border.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.txtCookieJs1.Border.Class = "CrumbBarBackgroundKey";
this.txtCookieJs1.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.txtCookieJs1.Border.PaddingBottom = 2;
this.txtCookieJs1.Border.PaddingLeft = 2;
this.txtCookieJs1.Border.PaddingRight = 2;
this.txtCookieJs1.Border.PaddingTop = 2;
this.txtCookieJs1.Location = new System.Drawing.Point(100, 101);
this.txtCookieJs1.Multiline = true;
this.txtCookieJs1.Name = "txtCookieJs1";
this.txtCookieJs1.Size = new System.Drawing.Size(569, 227);
this.txtCookieJs1.TabIndex = 398;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(16, 72);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(84, 17);
this.label3.TabIndex = 397;
this.label3.Text = "SUB_PASS_ID";
this.label3.Visible = false;
//
// txtSubPassId
//
this.txtSubPassId.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtSubPassId.Location = new System.Drawing.Point(100, 69);
this.txtSubPassId.Name = "txtSubPassId";
this.txtSubPassId.Size = new System.Drawing.Size(569, 23);
this.txtSubPassId.TabIndex = 396;
this.txtSubPassId.Visible = false;
//
// txtLoginName
//
this.txtLoginName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtLoginName.Location = new System.Drawing.Point(100, 15);
this.txtLoginName.Name = "txtLoginName";
this.txtLoginName.Size = new System.Drawing.Size(569, 23);
this.txtLoginName.TabIndex = 395;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(44, 18);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 17);
this.label1.TabIndex = 394;
this.label1.Text = "登录账号";
//
// btnOk
//
this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOk.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOk.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOk.ForeColor = System.Drawing.Color.White;
this.btnOk.Location = new System.Drawing.Point(614, 28);
this.btnOk.Margin = new System.Windows.Forms.Padding(2);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(55, 26);
this.btnOk.TabIndex = 392;
this.btnOk.Text = "保存";
this.btnOk.UseVisualStyleBackColor = false;
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
//
// WXShopUpdateCookieForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(700, 458);
this.Controls.Add(this.panel2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "WXShopUpdateCookieForm";
this.Text = "更新Cookie";
this.TitleText = "更新Cookie";
this.Load += new System.EventHandler(this.ShopUpdateCookieForm_Load);
this.Controls.SetChildIndex(this.panel2, 0);
this.panel2.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel1.PerformLayout();
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.SplitContainer splitContainer1;
private DevComponents.DotNetBar.Controls.TextBoxX txtCookieJs1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtSubPassId;
private System.Windows.Forms.TextBox txtLoginName;
private System.Windows.Forms.Label label1;
private UserControls.ButtonEx btnOk;
private System.Windows.Forms.Label label4;
}
}
@@ -0,0 +1,237 @@
using AllBase.Helper;
using AllBase.Model.Result;
using TemuKJD.BaseForms;
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 AllBase;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using Work;
using TemuKJD.KJDForms.AdminForms;
using TemuKJD.BLL;
namespace TemuKJD.WXForms.ShopForms
{
public enum SetCookieFromEnum
{
normal_user,
sa,
}
public partial class WXShopUpdateCookieForm : LRBaseForm
{
ShopLoginInfo shopLoginInfo = null;
SetCookieFromEnum updateFrom;
string cookieVersion = "";
public WXShopUpdateCookieForm(ShopLoginInfo shop = null, SetCookieFromEnum from = SetCookieFromEnum.normal_user, string _cookieVersion="国内版")
{
InitializeComponent();
shopLoginInfo = shop;
updateFrom = from;
cookieVersion = _cookieVersion;
this.TitleText = "更新Cookie";
}
private void ShopUpdateCookieForm_Load(object sender, EventArgs e)
{
if (shopLoginInfo != null)
txtLoginName.Text = shopLoginInfo.LoginName + " " + shopLoginInfo.ShopAccount + " " + shopLoginInfo.Notes;
}
/*
document.cookie='_qimei_uuid42=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='_qpsvr_localtk=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='biz_magic=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='biz_rand=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='biz_ticket=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='biz_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='ptcz=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='RK=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='yyb_muid=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
document.cookie='_qimei_uuid42=19b0b09361e100c47695a05aaf3375f6d5eb35bb32; domain=.qq.com; expires=2026-11-11T01:54:30.000Z; path=/';
document.cookie='_qpsvr_localtk=5432784879518021; domain=.qq.com;expires=Fri, 06 Feb 2026 01:31:39 UTC; path=/';
document.cookie='biz_magic=4a425a343f033dd057463cfafc3e04b1531e36a25b0e99be21efce245c9129e8; domain=store.weixin.qq.com;expires=Fri, 06 Feb 2026 01:31:39 UTC; path=/';
document.cookie='biz_rand=CAESIMo2sjiyv4vip6jSSg+6B6Uh7gdgW4GBae7AEySSXswt; domain=store.weixin.qq.com;expires=Fri, 06 Feb 2026 01:31:39 UTC; path=/';
document.cookie='biz_ticket=; domain=store.weixin.qq.com;expires=Fri, 06 Feb 2026 01:31:39 UTC; path=/';
document.cookie='biz_token=b_0000019b_8e3d689c_f4835bf4_23267fa7_c4ff2be1; domain=store.weixin.qq.com;expires=Fri, 06 Feb 2026 01:31:39 UTC; path=/';
document.cookie='ptcz=584e5aff2216045382bfed928d03d10924787f910ea5a5e09e0df73b6c5e6c9d; domain=.qq.com;expires=2027-02-09T06:15:17.542Z; path=/';
document.cookie='RK=WCfEwM0OZQ; domain=.qq.com;expires=2026-07-30T07:12:51.627Z; path=/';
document.cookie='yyb_muid=3B8E28E6B8EA60762CCA3EF0B9EF61AB; domain=.qq.com; expires=2026-08-01T04:50:29.209Z; path=/';
window.location.href='https://store.weixin.qq.com/shop/goods/list';
*/
private void btnOk_Click(object sender, EventArgs e)
{
if (shopLoginInfo == null)
{
BaseMsgForm.ShowError("店铺为空!");
return;
}
bool ok1 = false;
bool ok2 = false;
if (!string.IsNullOrWhiteSpace(txtSubPassId.Text) || !string.IsNullOrWhiteSpace(txtCookieJs1.Text))
{
ok1 = GetCookie1();
}
if (ok1 || ok2)
{
this.OnSaveComplete(shopLoginInfo);
this.Close();
}
}
bool GetCookie1()
{
string txt = this.txtCookieJs1.Text;
txt = txt.Replace("_qimei_uuid42=;", "").Replace("_qpsvr_localtk=;", "").Replace("biz_magic=;", "")
.Replace("biz_rand=;", "").Replace("biz_ticket=;", "").Replace("biz_token=;", "")
.Replace("ptcz=;", "").Replace("RK=;", "").Replace("yyb_muid=;", "");
List<CefSharp.Cookie> cookieLst = new List<CefSharp.Cookie>();
string _qimei_uuid42 = BaseRegex.GetStringCookie(ref txt, "_qimei_uuid42").ParseToString().Trim('\'');
string _qpsvr_localtk = BaseRegex.GetStringCookie(ref txt, "_qpsvr_localtk").ParseToString().Trim('\'');
string biz_magic = BaseRegex.GetStringCookie(ref txt, "biz_magic").ParseToString().Trim('\'');
string biz_rand = BaseRegex.GetStringCookie(ref txt, "biz_rand").ParseToString().Trim('\'');
string biz_ticket = BaseRegex.GetStringCookie(ref txt, "biz_ticket").ParseToString().Trim('\'');
string biz_token = BaseRegex.GetStringCookie(ref txt, "biz_token").ParseToString().Trim('\'');
string ptcz = BaseRegex.GetStringCookie(ref txt, "ptcz").ParseToString().Trim('\'');
string RK = BaseRegex.GetStringCookie(ref txt, "RK").ParseToString().Trim('\'');
string yyb_muid = BaseRegex.GetStringCookie(ref txt, "yyb_muid").ParseToString().Trim('\'');
cookieLst.Add(new CefSharp.Cookie() { Name = "_qimei_uuid42", Value = _qimei_uuid42, Domain = ".qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "_qpsvr_localtk", Value = _qpsvr_localtk, Domain = ".qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "biz_magic", Value = biz_magic, Domain = "store.weixin.qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "biz_rand", Value = biz_rand, Domain = "store.weixin.qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "biz_ticket", Value = biz_ticket, Domain = "store.weixin.qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "biz_token", Value = biz_token, Domain = "store.weixin.qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "ptcz", Value = ptcz, Domain = ".qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "RK", Value = RK, Domain = ".qq.com", Expires = DateTime.Now.AddMonths(1) });
cookieLst.Add(new CefSharp.Cookie() { Name = "yyb_muid", Value = yyb_muid, Domain = ".qq.com", Expires = DateTime.Now.AddMonths(1) });
if (string.IsNullOrEmpty(biz_magic))
{
BaseMsgForm.ShowError("Cookie缺少关键字段,请检查!");
return false;
}
// 建立一个临时店铺并用这个店铺去登录
var cookieShop = new ShopLoginInfo();
cookieShop.Cookies = JsonHelper.SerializeObject(cookieLst);
var data = "";
data = WXShopListForm.GetShopInfo(cookieShop);
var index = data.IndexOf("window.__INITIAL_PINIA_DATA__=") + "window.__INITIAL_PINIA_DATA__=".Length;
var indexEnd = data.IndexOf(";window.__USE_VITE__=");
if (index < 1000)
{
BaseMsgForm.ShowError("cookie已失效!");
return false;
}
var dataStr = data.Substring(index, indexEnd - index);
dataStr = GetHtml.Unicode2String(dataStr);
var shopId = BaseRegex.GetStringJson(ref data, "appid");
var nickName = BaseRegex.GetStringJson(ref data, "nickName");
if (shopLoginInfo.ShopId != shopId)
{
BaseMsgForm.ShowError("cookie与店铺不匹配,请核对店铺!");
return false;
}
shopLoginInfo.Cookies = JsonHelper.SerializeObject(cookieLst);
shopLoginInfo.ShopAccount = nickName;
shopLoginInfo.LoginStatus = "登录成功";
WXShopListForm.UpdateServerShopCookies(shopLoginInfo); // 店铺cookie写入服务端,多店共用一个登录账号一组cookie
return true;
}
/// <summary>
/// 如果店铺没有cookie登录过,处理店铺第一次登录(分裂cookie下的所有店铺)
/// </summary>
/// <param name="loginData"></param>
void GetShopFirstLogin(string loginData, List<ShopLoginInfo> lstServerShop)
{
if (this.shopLoginInfo == null)
return;
if (lstServerShop == null)
lstServerShop = new List<ShopLoginInfo>();
List<ShopCompany> lstShopCompany = new List<ShopCompany>();
var jObj = JObject.Parse(loginData);
var jArr = jObj["result"]?["companyList"]?[0]?["malInfoList"] as JArray;
if (jArr == null)
jArr = new JArray();
foreach (var productObj in jArr)
{
var prod = JsonHelper.SerializeObject(productObj);
ShopCompany sc = new ShopCompany()
{
AccountId = BaseRegex.GetStringJson(ref prod, "mallId"),
AccountName = BaseRegex.GetStringJson(ref prod, "mallName"),
LoginName = shopLoginInfo.LoginName,
UserName = BaseClass.UserName,
LoginStatus = "登录成功",
};
lstShopCompany.Add(sc);
}
var lstShopCompanyCopy = lstShopCompany.ToList();
foreach (ShopCompany sc in lstShopCompanyCopy)
{
ShopLoginInfo newShop = new ShopLoginInfo()
{
UserName = shopLoginInfo.UserName,
LoginName = shopLoginInfo.LoginName,
Password = shopLoginInfo.Password,
GroupName = shopLoginInfo.GroupName,
ShopAccount = sc.AccountName,
ShopId = sc.AccountId,
SubUserName = shopLoginInfo.SubUserName,
Notes = shopLoginInfo.Notes,
};
var oldServerShop = lstServerShop.FirstOrDefault(s =>
s.LoginName == newShop.LoginName && s.ShopId == newShop.ShopId);
if (oldServerShop == null)
{
if (updateFrom != SetCookieFromEnum.normal_user)
ShopBLL.AdminAddServerShop(newShop); // 店铺写入到服务端
else
ShopBLL.AddServerShop(newShop); // 店铺写入到服务端
}
}
}
private void btnGetCookie_Click(object sender, EventArgs e)
{
//复制cookie
var cookJs = @"
document.body.innerHTML = '<button id=""button1"" onclick=""geCookie();"" style=""margin:10px;"">点击我复制cookie</button>' + document.body.innerHTML;
function geCookie()
{
var cookieText = document.cookie;
navigator.clipboard.writeText(cookieText).then(function() {
alert('复制cookie成功!');
}, function(err) {
alert('复制cookie失败: ', err);
});
}";
Clipboard.SetDataObject(cookJs);
BaseMsgForm.ShowInfo("js复制成功");
}
}
}
@@ -0,0 +1,298 @@
<?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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQYAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzM
zMzMzMzMzMx3d4iIiIiIiIh3fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzMzMzMzMzHeIiIiIj/////////iIiIiId8zMzMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzMzMzMzMeIiI/////////////////////4iIh8zMzMzMzMzMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzMzMzMzHiI////////////////////////////iIfMzMzMzMzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMzMzMx3iP///////////////////////////////4iHzMzMzMzMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMzMzMx3iP//////////////////////////////////+IfMzMzMzMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzMzMx3iP/////////////////////////////////////4h8zMzMzMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzMzMzHiP////////////////////////////////////////h3zM
zMzMzMzMzMzMzMzGAAAABMzMzMzMzMzMzMzMzHiP////////////////////////////////////////
//iHzMzMzMzMzMzMzMzMzEAAAAbMzMzMzMzMzMzMzMeI////////////////////////////////////
////////+IfMzMzMzMzMzMzMzMxgAABMzMzMzMzMzMzMzMx4////////////////////////////////
//////////////+IfMzMzMzMzMzMzMzMxAAAbMzMzMzMzMzMzMzHj///////////////////////////
/////////////////////4fMzMzMzMzMzMzMzMYAAMzMzMzMzMzMzMzMeP//////////////////////
///////////////////////////4fMzMzMzMzMzMzMzMAAbMzMzMzMzMzMzMx4//////////////////
/////////////////////////////////4fMzMzMzMzMzMzMzGAGzMzMzMzMzMzMzHj/////////////
///////////////////////////////////////4fMzMzMzMzMzMzMxgDMzMzMzMzMzMzMyI////////
/////////////////////////////////////////////4zMzMzMzMzMzMzMwEzMzMzMzMzMzMzHj///
//////////////////////////////////////////////////+HzMzMzMzMzMzMzMRszMzMzMzMzMzM
eP//////////////////////////////////////////////////////+HzMzMzMzMzMzMzGbMzMzMzM
zMzMzHj///////////////////////////////////////////////////////+MzMzMzMzMzMzMxmzM
zMzMzMzMzMyP////+IiP////////////////////////////////////////+I//////h8zMzMzMzMzM
zMZszMzMzMzMzMzHj////4iIiI//////////////////////////////////////+IiIj/////jMzMzM
zMzMzMzGbMzMzMzMzMzMyP////iIiIiI/////////////////////////////////////4iIiIj////4
fMzMzMzMzMzMxszMzMzMzMzMzHj////4iIiIiP////////////////////////////////////+IiIiI
j////4zMzMzMzMzMzMbMzMzMzMzMzMx4////iIiIiIj////////////////////////////////////4
iIiIiI////+HzMzMzMzMzMzMzMzMzMzMzMzMj////4iIiIiI//////////////+IiP//iI//////////
////+IiIiIiP////h8zMzMzMzMzMzMzMzMzMzMzMzI/////4iIiIiP/////////////4d3eIiIeIj///
//////////+IiIiIj/////jMzMzMzMzMzMzMzMzMzMzMzMyP////+IiIiIj/////////////iIiId3eI
iI//////////////iIiIiI/////4zMzMzMzMzMzMzMzMzMzMzMzHj/////+IiIiP/////////////4//
/4d4j/+P//////////////iIiIj/////+MzMzMzMzMzMzMzMzMzMzMzMx4//////+IiP////////////
///////4j///////////////////iIiP//////jMzMzMzMzMzMzMzMzMzMzMzMeP//////////+IiIj/
///////////////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzH//////////+H
fMx8eP//////////////////////////iId3iP//////////+HzMzMzMzMzMzMzMzMzMzMzMyP//////
///4fMzHh8eP////////////////////////+MzMzMd4//////////h8zMzMzMzMzMzMzMzMzMzMzMf/
////////+MzMePjMeP///////////////////////4zMzMeHx4/////////4fMzMzMzMzMzMzMzMzMzM
zMzH/////////4fMd3eHzMeP//////////////////////iMzMzIiHx4////////+HzMzMzMzMzMzMzM
zMzMzMzMx/////////+Hx4iIfMzMj//////////////////////4h3d8x4h8yP////////jMzMzMzMzM
zMzMzMzMzMzMzMeP////////+HiP+IfMzI//////////////////////+HiIiHd3zHj////////4zMzM
zMzMzMzMzMzMzMzMzMzHj/////////h4//+HzMeP//////////////////////h4//h8zMyP////////
+MzMzMzMzMzMzMzMzMzMzMzMzI/////////4iP//h8x4///////////////////////4j//4fMzHj///
//////jMzMzMzMzMzMzMzMzMzMzMzMyP///////4iIiP+IfHj///////////////////////+Ij/+HzM
eP/////////4zMzMzMzMzMzMzMzMzMzMzMzMj///////iIiIiIh3eP////////////////////////+I
j4h8x3iI////////h8zMzMzMzMzMzMzMzMzMzMzMzH//////+Hj///iIiI//////////////////////
/////4iId4iIiIj//////4zMzMzMzMzMzMzMzMzMzMzMzMx4//////iP////iP//////////////////
/////////////4iP//iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMyP//////////+I//////////////
///////////////////4eP//iP//////jMzMzMzMzMzMzMzMzMzMzMzMzMj///////////iP////////
/////////////////////////4j/////////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj///////////////
//////////////////////////////+I//////////jMzMzMzMzMzMzMzMzMzMzMzMzMzI//////////
//////////////////////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
eP///////////////////////////////////////////////////////4zMzMzMzMzMzMzMzMzMzMzM
zMzMzMj///////////////////////////////////////////////////////h8zMzMzMzMzMzMzMzM
zMzMzMzMzMzHj//////////////////////////////////////////////////////4zMzMzMzMzMzM
zMzMzMzMzMzMzMzMzI//////////////////////////////////////////////////////h8zMzMzM
zMzMzMzMzMzMzMzMzMzMzMx4////////////////////////////////////////////////////+HzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMyI////+I////////////////////////////////////////////
//h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+Ij/////////////////////////////////////
//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////+IiIiIj//////////////////////////4
////iI/////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiP/////4iIiP//////////////////////
////+IiIiIj/////iHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////////////////
///////////4iIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP////////////////////
//////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiP//////////////
//////////////////////////////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////
///////////////////////////////////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP////
////////////////////////////////////////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI
j/////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMeP//////////////////////////////////////////////h8zMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMx4////////+I//////////////////////////////////////jMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMeP///////4iIj///////////////////////////iP///////4fMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMx4////////iIiIiP///////////////////////4iIiP///////4zMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIj///////+HzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIj////////////////////4iIiIiIj///////
+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiI////////////////////+IiIiIiI//
//////h8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiP////////////////////iIiI
iIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMj///////+IiIiIiIj/////iIiIiIiIj/////
/4iIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4////////iIiIiIiI/////4zMzMzMzM
j/////+IiIiIiIiP//////+HzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP//////+IiIiIiIj/////+MzM
zMzMzI//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iIiIiIiI////
//jMzMzMzMyP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzMzMzMzMeP///////4iIiIiI
iP/////4zMzMzMzMj//////4iIiIiIiI///////4fMzMzMzMzMzMzMzMzMzMzMzMzMzMzI////////iI
iIiIiI//////+MzMzMzMzI//////+IiIiIiIiP///////4zMzMzMzMzMzMzMzMzMzMzMzMzMzMyP////
///4iIiIiIiP//////fMzMzMzMyP//////+IiIiIiIj///////+MzMzMzMzMzMzMzMzMzMzMzMzMzMzH
j///////+IiIiIiI//////+HzMzMzMzMeP//////iIiIiIiIj///////jMzMzMzMzMzMzMzMzMzMzMzM
zMzMyP////////iIiIiIiP//////jMzMzMzMzHj///////iIiIiIiI///////4fMzMzMzMzMzMzMzMzM
zMzMzMzMzMj///////+IiIiIiI///////4zMzMzMzMzI///////4iIiIiIiI///////3zMzMzMzMzMzM
zMzMzMzMzMzMzMzI////////iIiIiIiP//////+MzMzMzMzMyP//////+IiIiIiIiP//////+MzMzMzM
zMzMzMzMzMzMzMzMzMzMeP///////4iIiIiIj///////jMzMzMzMzMj///////+IiIiIiIj///////jM
zMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiIiP//////+HzMzMzMzMzHj///////iIiIiIiI////
///4zMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIiI////////jMzMzMzMzMzI///////4iIiIiI
iI//////+MzMzMzMzMzMzMzMzMzMzMzMzMzMj////////4iIiIiP///////4zMzMzMzMzMyP///////4
iIiIiIiP//////jMzMzMzMzMzMzMzMzMzMzMzMzMzI////////+IiIiI////////h8zMzMzMzMzMeP//
/////4iIiIiIj//////4fMzMzMzMzMzMzMzMzMzMzMzMzMyP////////iIiIj////////4fMzMzMzMzM
zHj///////+IiIiIiI//////+HzMzMzMzMzMzMzMzMzMzMzMzMzHj/////////iIiP////////+MzMzM
zMzMzMzI////////+IiIiIiP//////h8zMzMzMzMzMzMxmzMzMzMzMzMx4/////////4iP/////////4
fMzMzMzMzMzMx4////////+IiIiIj//////4fMzMzMzMzMzMzMZszMzMzMzMzMeP////////////////
////+MzMzMzMzMzMzMyP////////iIiIiP//////+HzMzMzMzMzMzMzGbMzMzMzMzMzH////////////
//////////fMzMzMzMzMzMzMeP////////iIiIj///////98zMzMzMzMzMzMxmzMzMzMzMzMyP//////
//////////////+HzMzMzMzMzMzMzHj/////////+IiP////////jMzMzMzMzMzMzMZszMzMzMzMzMj/
////////////////////jMzMzMzMzMzMzMzIj////////////////////4zMzMzMzMzMzMzGTMzMzMzM
zMzH////////////////////+HzMzMzMzMzMzMzMx4////////////////////+MzMzMzMzMzMzMxAzM
zMzMzMzMx/////////////////////jMzMzMzMzMzMzMzMyI///////////////////4fMzMzMzMzMzM
zMAGzMzMzMzMzMeP//////////////////+HzMzMzMzMzMzMzMzMeP//////////////////+HzMzMzM
zMzMzMxgBszMzMzMzMzHj//////////////////4fMzMzMzMzMzMzMzMzMeP//////////////////h8
zMzMzMzMzMzMYADMzMzMzMzMzI//////////////////+HzMzMzMzMzMzMzMzMzHj///////////////
///4zMzMzMzMzMzMzAAAbMzMzMzMzMyP/////////////////4fMzMzMzMzMzMzMzMzMzHj/////////
////////+MzMzMzMzMzMzMYAAEzMzMzMzMzMj/////////////////+MzMzMzMzMzMzMzMzMzMzIj///
/////////////4fMzMzMzMzMzMzEAAAGzMzMzMzMzHj////////////////4fMzMzMzMzMzMzMzMzMzM
x4////////////////+MzMzMzMzMzMzMYAAABMzMzMzMzMx4////////////////h8zMzMzMzMzMzMzM
zMzMzMx4///////////////4fMzMzMzMzMzMzEAAAABszMzMzMzMx4//////////////+HzMzMzMzMzM
zMzMzMzMzMzMx4//////////////+MzMzMzMzMzMzMYAAAAATMzMzMzMzMyP/////////////4fMzMzM
zMzMzMzMzMzMzMzMzMeI/////////////4fMzMzMzMzMzMzEAAAAAAbMzMzMzMzMeP////////////h8
zMzMzMzMzMzMzMzMzMzMzMzMeI////////////h8zMzMzMzMzMzMYAAAAAAAbMzMzMzMzMeP////////
//iHzMzMzMzMzMzMzMzMzMzMzMzMzMyI//////////+HzMzMzMzMzMzMxgAAAAAAAEzMzMzMzMzMeP//
//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMx4/////////4fMzMzMzMzMzMzMQAAAAAAAAGzMzMzMzM
zMeI//////iHfMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx4j//////4h8zMzMzMzMzMzMxgAAAAAAAAAGzM
zMzMzMzMx4iIiIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzHiIj/+Ih3zMzMzMzMzMzMzGAAAAAAAA
AAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMx3iId8zMzMzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>
+477
View File
@@ -0,0 +1,477 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXSubAccountListForm
{
/// <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.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
this.splitContainer5 = new System.Windows.Forms.SplitContainer();
this.label1 = new System.Windows.Forms.Label();
this.btnRefresh = new TemuKJD.UserControls.ButtonEx();
this.btnCancel = new TemuKJD.UserControls.ButtonEx();
this.btnOpUser = new TemuKJD.UserControls.ButtonEx();
this.label30 = new System.Windows.Forms.Label();
this.label31 = new System.Windows.Forms.Label();
this.txtRePass = new System.Windows.Forms.TextBox();
this.label32 = new System.Windows.Forms.Label();
this.label33 = new System.Windows.Forms.Label();
this.label34 = new System.Windows.Forms.Label();
this.label35 = new System.Windows.Forms.Label();
this.label36 = new System.Windows.Forms.Label();
this.cmbGroup = new System.Windows.Forms.ComboBox();
this.label37 = new System.Windows.Forms.Label();
this.txtPassword = new System.Windows.Forms.TextBox();
this.label38 = new System.Windows.Forms.Label();
this.mobiletextBox = new System.Windows.Forms.TextBox();
this.label39 = new System.Windows.Forms.Label();
this.txtNickName = new System.Windows.Forms.TextBox();
this.label40 = new System.Windows.Forms.Label();
this.dgvUser = new TemuKJD.UserComponent.DataGridViewEx();
this.UserIdColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.UserNickNameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.mobileColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.groupIdColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.groupNameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.shopCountColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.editColumn = new System.Windows.Forms.DataGridViewLinkColumn();
this.deleteColumn = new System.Windows.Forms.DataGridViewLinkColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).BeginInit();
this.splitContainer5.Panel1.SuspendLayout();
this.splitContainer5.Panel2.SuspendLayout();
this.splitContainer5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvUser)).BeginInit();
this.SuspendLayout();
//
// splitContainer5
//
this.splitContainer5.BackColor = System.Drawing.Color.Transparent;
this.splitContainer5.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer5.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer5.Location = new System.Drawing.Point(0, 0);
this.splitContainer5.Name = "splitContainer5";
//
// splitContainer5.Panel1
//
this.splitContainer5.Panel1.Controls.Add(this.label1);
this.splitContainer5.Panel1.Controls.Add(this.btnRefresh);
this.splitContainer5.Panel1.Controls.Add(this.btnCancel);
this.splitContainer5.Panel1.Controls.Add(this.btnOpUser);
this.splitContainer5.Panel1.Controls.Add(this.label30);
this.splitContainer5.Panel1.Controls.Add(this.label31);
this.splitContainer5.Panel1.Controls.Add(this.txtRePass);
this.splitContainer5.Panel1.Controls.Add(this.label32);
this.splitContainer5.Panel1.Controls.Add(this.label33);
this.splitContainer5.Panel1.Controls.Add(this.label34);
this.splitContainer5.Panel1.Controls.Add(this.label35);
this.splitContainer5.Panel1.Controls.Add(this.label36);
this.splitContainer5.Panel1.Controls.Add(this.cmbGroup);
this.splitContainer5.Panel1.Controls.Add(this.label37);
this.splitContainer5.Panel1.Controls.Add(this.txtPassword);
this.splitContainer5.Panel1.Controls.Add(this.label38);
this.splitContainer5.Panel1.Controls.Add(this.mobiletextBox);
this.splitContainer5.Panel1.Controls.Add(this.label39);
this.splitContainer5.Panel1.Controls.Add(this.txtNickName);
this.splitContainer5.Panel1.Controls.Add(this.label40);
//
// splitContainer5.Panel2
//
this.splitContainer5.Panel2.Controls.Add(this.dgvUser);
this.splitContainer5.Panel2.Padding = new System.Windows.Forms.Padding(0, 5, 5, 5);
this.splitContainer5.Size = new System.Drawing.Size(933, 445);
this.splitContainer5.SplitterDistance = 357;
this.splitContainer5.SplitterWidth = 1;
this.splitContainer5.TabIndex = 2;
//
// label1
//
this.label1.AutoSize = true;
this.label1.ForeColor = System.Drawing.SystemColors.ButtonShadow;
this.label1.Location = new System.Drawing.Point(56, 378);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(212, 17);
this.label1.TabIndex = 37;
this.label1.Text = "编辑时,密码为空表示不更改原密码。";
//
// btnRefresh
//
this.btnRefresh.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnRefresh.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnRefresh.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRefresh.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnRefresh.ForeColor = System.Drawing.Color.White;
this.btnRefresh.Location = new System.Drawing.Point(267, 5);
this.btnRefresh.Name = "btnRefresh";
this.btnRefresh.Size = new System.Drawing.Size(86, 25);
this.btnRefresh.TabIndex = 36;
this.btnRefresh.Text = "刷新列表";
this.btnRefresh.UseVisualStyleBackColor = false;
this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
//
// btnCancel
//
this.btnCancel.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnCancel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCancel.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnCancel.ForeColor = System.Drawing.Color.White;
this.btnCancel.Location = new System.Drawing.Point(59, 328);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(86, 25);
this.btnCancel.TabIndex = 35;
this.btnCancel.Text = "取消编辑";
this.btnCancel.UseVisualStyleBackColor = false;
this.btnCancel.Visible = false;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// btnOpUser
//
this.btnOpUser.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
this.btnOpUser.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnOpUser.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOpUser.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOpUser.ForeColor = System.Drawing.Color.White;
this.btnOpUser.Location = new System.Drawing.Point(174, 328);
this.btnOpUser.Name = "btnOpUser";
this.btnOpUser.Size = new System.Drawing.Size(86, 25);
this.btnOpUser.TabIndex = 34;
this.btnOpUser.Text = "添加用户";
this.btnOpUser.UseVisualStyleBackColor = false;
this.btnOpUser.Click += new System.EventHandler(this.btnOpUser_Click);
//
// label30
//
this.label30.AutoSize = true;
this.label30.ForeColor = System.Drawing.SystemColors.ButtonShadow;
this.label30.Location = new System.Drawing.Point(282, 145);
this.label30.Name = "label30";
this.label30.Size = new System.Drawing.Size(56, 17);
this.label30.TabIndex = 33;
this.label30.Text = "登录使用";
//
// label31
//
this.label31.AutoSize = true;
this.label31.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.label31.Location = new System.Drawing.Point(266, 229);
this.label31.Name = "label31";
this.label31.Size = new System.Drawing.Size(13, 17);
this.label31.TabIndex = 32;
this.label31.Text = "*";
//
// repasstextBox
//
this.txtRePass.Location = new System.Drawing.Point(112, 226);
this.txtRePass.Name = "repasstextBox";
this.txtRePass.PasswordChar = '*';
this.txtRePass.Size = new System.Drawing.Size(148, 23);
this.txtRePass.TabIndex = 24;
//
// label32
//
this.label32.AutoSize = true;
this.label32.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label32.Location = new System.Drawing.Point(27, 227);
this.label32.Name = "label32";
this.label32.Size = new System.Drawing.Size(79, 20);
this.label32.TabIndex = 31;
this.label32.Text = "重复密码:";
//
// label33
//
this.label33.AutoSize = true;
this.label33.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.label33.Location = new System.Drawing.Point(266, 271);
this.label33.Name = "label33";
this.label33.Size = new System.Drawing.Size(13, 17);
this.label33.TabIndex = 30;
this.label33.Text = "*";
//
// label34
//
this.label34.AutoSize = true;
this.label34.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.label34.Location = new System.Drawing.Point(266, 187);
this.label34.Name = "label34";
this.label34.Size = new System.Drawing.Size(13, 17);
this.label34.TabIndex = 29;
this.label34.Text = "*";
//
// label35
//
this.label35.AutoSize = true;
this.label35.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.label35.Location = new System.Drawing.Point(266, 145);
this.label35.Name = "label35";
this.label35.Size = new System.Drawing.Size(13, 17);
this.label35.TabIndex = 28;
this.label35.Text = "*";
//
// label36
//
this.label36.AutoSize = true;
this.label36.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.label36.Location = new System.Drawing.Point(266, 103);
this.label36.Name = "label36";
this.label36.Size = new System.Drawing.Size(13, 17);
this.label36.TabIndex = 27;
this.label36.Text = "*";
//
// groupIdcomboBox
//
this.cmbGroup.Enabled = false;
this.cmbGroup.FormattingEnabled = true;
this.cmbGroup.Items.AddRange(new object[] {
"客服",
"采购",
"上货",
"数据",
"登录"});
this.cmbGroup.Location = new System.Drawing.Point(112, 267);
this.cmbGroup.Name = "groupIdcomboBox";
this.cmbGroup.Size = new System.Drawing.Size(148, 25);
this.cmbGroup.TabIndex = 26;
this.cmbGroup.Text = "客服";
//
// label37
//
this.label37.AutoSize = true;
this.label37.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label37.Location = new System.Drawing.Point(55, 269);
this.label37.Name = "label37";
this.label37.Size = new System.Drawing.Size(51, 20);
this.label37.TabIndex = 25;
this.label37.Text = "分组:";
//
// passwordtextBox
//
this.txtPassword.Location = new System.Drawing.Point(112, 184);
this.txtPassword.Name = "passwordtextBox";
this.txtPassword.PasswordChar = '*';
this.txtPassword.Size = new System.Drawing.Size(148, 23);
this.txtPassword.TabIndex = 23;
//
// label38
//
this.label38.AutoSize = true;
this.label38.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label38.Location = new System.Drawing.Point(55, 185);
this.label38.Name = "label38";
this.label38.Size = new System.Drawing.Size(51, 20);
this.label38.TabIndex = 22;
this.label38.Text = "密码:";
//
// mobiletextBox
//
this.mobiletextBox.Location = new System.Drawing.Point(112, 142);
this.mobiletextBox.Name = "mobiletextBox";
this.mobiletextBox.Size = new System.Drawing.Size(148, 23);
this.mobiletextBox.TabIndex = 21;
//
// label39
//
this.label39.AutoSize = true;
this.label39.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label39.Location = new System.Drawing.Point(41, 143);
this.label39.Name = "label39";
this.label39.Size = new System.Drawing.Size(65, 20);
this.label39.TabIndex = 20;
this.label39.Text = "手机号:";
//
// txtNickName
//
this.txtNickName.Location = new System.Drawing.Point(112, 100);
this.txtNickName.Name = "txtNickName";
this.txtNickName.Size = new System.Drawing.Size(148, 23);
this.txtNickName.TabIndex = 19;
//
// label40
//
this.label40.AutoSize = true;
this.label40.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label40.Location = new System.Drawing.Point(55, 101);
this.label40.Name = "label40";
this.label40.Size = new System.Drawing.Size(51, 20);
this.label40.TabIndex = 18;
this.label40.Text = "昵称:";
//
// dgvUser
//
this.dgvUser.AllowUserToAddRows = false;
this.dgvUser.AllowUserToDeleteRows = false;
dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(249)))), ((int)(((byte)(249)))));
this.dgvUser.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle4;
this.dgvUser.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvUser.BackgroundColor = System.Drawing.Color.White;
this.dgvUser.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvUser.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5;
this.dgvUser.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvUser.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.UserIdColumn,
this.UserNickNameColumn,
this.mobileColumn,
this.groupIdColumn,
this.groupNameColumn,
this.shopCountColumn,
this.editColumn,
this.deleteColumn});
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvUser.DefaultCellStyle = dataGridViewCellStyle6;
this.dgvUser.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvUser.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(215)))), ((int)(((byte)(229)))));
this.dgvUser.Location = new System.Drawing.Point(0, 5);
this.dgvUser.Name = "dgvUser";
this.dgvUser.ReadOnly = true;
this.dgvUser.RowTemplate.Height = 23;
this.dgvUser.Size = new System.Drawing.Size(570, 435);
this.dgvUser.TabIndex = 1;
this.dgvUser.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvUser_CellContentClick);
//
// UserIdColumn
//
this.UserIdColumn.HeaderText = "id";
this.UserIdColumn.Name = "UserIdColumn";
this.UserIdColumn.ReadOnly = true;
this.UserIdColumn.Visible = false;
//
// UserNickNameColumn
//
this.UserNickNameColumn.HeaderText = "用户昵称";
this.UserNickNameColumn.Name = "UserNickNameColumn";
this.UserNickNameColumn.ReadOnly = true;
//
// mobileColumn
//
this.mobileColumn.HeaderText = "手机(登录账号)";
this.mobileColumn.Name = "mobileColumn";
this.mobileColumn.ReadOnly = true;
//
// groupIdColumn
//
this.groupIdColumn.HeaderText = "groupId";
this.groupIdColumn.Name = "groupIdColumn";
this.groupIdColumn.ReadOnly = true;
this.groupIdColumn.Visible = false;
//
// groupNameColumn
//
this.groupNameColumn.HeaderText = "分组";
this.groupNameColumn.Name = "groupNameColumn";
this.groupNameColumn.ReadOnly = true;
//
// shopCountColumn
//
this.shopCountColumn.HeaderText = "店铺数";
this.shopCountColumn.Name = "shopCountColumn";
this.shopCountColumn.ReadOnly = true;
this.shopCountColumn.Visible = false;
//
// editColumn
//
this.editColumn.HeaderText = "编辑";
this.editColumn.Name = "editColumn";
this.editColumn.ReadOnly = true;
this.editColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.editColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// deleteColumn
//
this.deleteColumn.HeaderText = "删除";
this.deleteColumn.Name = "deleteColumn";
this.deleteColumn.ReadOnly = true;
//
// SubAccountListForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(933, 445);
this.Controls.Add(this.splitContainer5);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "SubAccountListForm";
this.Text = "子账号管理";
this.Load += new System.EventHandler(this.SubAccountForm_Load);
this.splitContainer5.Panel1.ResumeLayout(false);
this.splitContainer5.Panel1.PerformLayout();
this.splitContainer5.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).EndInit();
this.splitContainer5.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvUser)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer5;
private UserControls.ButtonEx btnCancel;
private UserControls.ButtonEx btnOpUser;
private System.Windows.Forms.Label label30;
private System.Windows.Forms.Label label31;
private System.Windows.Forms.TextBox txtRePass;
private System.Windows.Forms.Label label32;
private System.Windows.Forms.Label label33;
private System.Windows.Forms.Label label34;
private System.Windows.Forms.Label label35;
private System.Windows.Forms.Label label36;
private System.Windows.Forms.ComboBox cmbGroup;
private System.Windows.Forms.Label label37;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.Label label38;
private System.Windows.Forms.TextBox mobiletextBox;
private System.Windows.Forms.Label label39;
private System.Windows.Forms.TextBox txtNickName;
private System.Windows.Forms.Label label40;
private UserComponent.DataGridViewEx dgvUser;
private UserControls.ButtonEx btnRefresh;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.DataGridViewTextBoxColumn UserIdColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn UserNickNameColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn mobileColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn groupIdColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn groupNameColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn shopCountColumn;
private System.Windows.Forms.DataGridViewLinkColumn editColumn;
private System.Windows.Forms.DataGridViewLinkColumn deleteColumn;
}
}
@@ -0,0 +1,220 @@
using AllBase;
using AllBase.Model.Result;
using TemuKJD.BaseForms;
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 Work;
namespace TemuKJD.WXForms.ShopForms
{
public partial class WXSubAccountListForm : BaseForm
{
public static List<ShopSubAccountInfo> AllUsers { get; set; } = new List<ShopSubAccountInfo>();
public MainForm Mf { get; set; } = null;
public string Uid { get; set; } = "";
public WXSubAccountListForm()
{
InitializeComponent();
}
private void btnOpUser_Click(object sender, EventArgs e)
{
if (txtPassword.Text != txtRePass.Text)
{
BaseMsgForm.ShowInfo("两次密码不正确", "提示");
return;
}
if (btnOpUser.Text == "添加用户" && txtPassword.Text.Length < 6)
{
BaseMsgForm.ShowInfo("密码最少6位", "提示");
return;
}
if (string.IsNullOrEmpty(txtNickName.Text) || string.IsNullOrEmpty(mobiletextBox.Text) ||
mobiletextBox.Text.Length != 11)
{
BaseMsgForm.ShowInfo("信息不正确", "提示");
return;
}
StringBuilder data = new StringBuilder();
data.Append(UserLogin.GetSignaturex());
data.Append("&sub_nick_name=" + GetHtml.UrlEncodeUtf8(txtNickName.Text));
data.Append("&sub_name=" + GetHtml.UrlEncodeUtf8(mobiletextBox.Text));
data.Append("&sub_mobile=" + GetHtml.UrlEncodeUtf8(mobiletextBox.Text));
data.Append("&card_id=");
if (cmbGroup.Text == "客服")
data.Append("&group_id=4");
else
{
BaseMsgForm.ShowInfo("分组不正确", "提示");
return;
}
//else if (groupIdcomboBox.Text == "采购")
// data.Append("&group_id=9");
//if (groupIdcomboBox.Text == "上货")
// data.Append("&group_id=10");
//if (groupIdcomboBox.Text == "数据")
// data.Append("&group_id=11");
//if (groupIdcomboBox.Text == "登录")
// data.Append("&group_id=8");
if (!string.IsNullOrEmpty(txtPassword.Text))
data.Append("&sub_password=" + Md5Base.GetMd5(txtPassword.Text).ToLower());
string url = BaseClass.BuildObjString("user/add_sub_user");
if (btnOpUser.Text != "添加用户" && !string.IsNullOrEmpty(Uid))
{
data.Append("&id=" + Uid);
url = BaseClass.BuildObjString("user/update_sub_user");
}
string html = GetHtml.PostUtf8(url, data.ToString()).Trim();
if (html == "had" || html == "error had")
{
BaseMsgForm.ShowInfo("手机号被占用,请换一个", "提示");
return;
}
if (!string.IsNullOrEmpty(html))
{
if (html.Contains("\"code\":200"))
{
btnOpUser.Text = "添加用户";
EmptyInput();
btnCancel.Visible = false;
GetUser();
return;
}
var msg = BaseRegex.GetStringJson(ref html, "msg");
if (string.IsNullOrEmpty(msg))
msg = html;
BaseMsgForm.ShowError(msg, "错误");
return;
}
BaseMsgForm.ShowError("出现异常,添加失败", "错误");
}
private void EmptyInput()
{
txtNickName.Clear();
txtPassword.Clear();
txtRePass.Clear();
mobiletextBox.Clear();
}
private void GetUser()
{
dgvUser.Rows.Clear();
AllUsers.Clear();
string url = BaseClass.BuildObjString("user/get_sub_user");
string data = UserLogin.GetSignaturex();
string html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html))
return;
if (html.Contains("\"data\""))
{
var userObj = Newtonsoft.Json.Linq.JObject.Parse(html);
foreach (Newtonsoft.Json.Linq.JObject obj in userObj["data"])
{
string oStr = JsonHelper.SerializeObject(obj);
ShopSubAccountInfo user = new ShopSubAccountInfo();
user.id = BaseRegex.GetIntJson(ref oStr, "id");
user.user_name = BaseRegex.GetStringJson(ref oStr, "user_name");
user.nick_name = BaseRegex.GetStringJson(ref oStr, "nick_name");
user.mobile = BaseRegex.GetStringJson(ref oStr, "mobile");
user.group_id = BaseRegex.GetStringJson(ref oStr, "group_id");
user.shop_count = BaseRegex.GetIntJson(ref oStr, "shop_count");
AllUsers.Add(user);
dgvUser.Rows.Add(user.id, user.nick_name, user.user_name, user.group_id, user.group_name, user.shop_count, "编辑", "删除");
}
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
btnOpUser.Text = "添加用户";
Uid = "";
EmptyInput();
btnCancel.Visible = false;
}
private void dgvUser_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
string columname = dgvUser.Columns[e.ColumnIndex].HeaderText;
string uid = dgvUser.Rows[e.RowIndex].Cells["UseridColumn"].Value.ToString();
string nickName = dgvUser.Rows[e.RowIndex].Cells["UserNickNameColumn"].Value.ToString();
string mobile = dgvUser.Rows[e.RowIndex].Cells["mobileColumn"].Value.ToString();
string groupName = dgvUser.Rows[e.RowIndex].Cells["groupNameColumn"].Value.ToString();
if (columname == "编辑")
{
Uid = uid;
txtNickName.Text = nickName;
mobiletextBox.Text = mobile;
cmbGroup.Text = groupName;
txtPassword.Text = "";
txtRePass.Text = "";
btnOpUser.Text = "保存用户";
btnCancel.Visible = true;
btnCancel.Text = "取消編輯";
}
if (columname == "删除")
{
if (BaseMsgForm.ShowConfirm("是否删除,删除后无法再次添加", "提示").DialogResult == DialogResult.OK)
{
Delete(uid);
}
}
}
public void Delete(string uid)
{
StringBuilder data = new StringBuilder();
data.Append(UserLogin.GetSignaturex());
data.Append("&id=" + uid);
string url = BaseClass.BuildObjString("user/delete_user");
string html = GetHtml.PostUtf8(url, data.ToString());
if (!string.IsNullOrEmpty(html))
{
if (html.Contains("\"code\":200"))
{
BaseMsgForm.ShowInfo("删除成功", "提示");
GetUser();
return;
}
var msg = BaseRegex.GetStringJson(ref html, "msg");
if (string.IsNullOrEmpty(msg))
msg = html;
BaseMsgForm.ShowError(msg, "错误");
return;
}
BaseMsgForm.ShowError("返回异常", "错误");
}
private void SubAccountForm_Load(object sender, EventArgs e)
{
this.cmbGroup.Enabled = false;
this.cmbGroup.Items.Clear();
//this.groupIdcomboBox.Items.Add("上货");
//this.groupIdcomboBox.Items.Add("采购");
this.cmbGroup.Items.Add("客服");
//if (BaseClass.UserName == "18888888888")
//{
// this.groupIdcomboBox.Items.Add("主管");
// this.groupIdcomboBox.Enabled = true;
//}
this.dgvUser.BackgroundColor = Color.White;
GetUser();
}
private void btnRefresh_Click(object sender, EventArgs e)
{
GetUser();
}
}
}
@@ -0,0 +1,144 @@
<?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="UserIdColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="UserNickNameColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="mobileColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="groupIdColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="groupNameColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="shopCountColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="editColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="deleteColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
@@ -0,0 +1,259 @@
namespace TemuKJD.WXForms.ShopForms
{
partial class WXSubAccountShopEditForm
{
/// <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(WXSubAccountShopEditForm));
this.label1 = new System.Windows.Forms.Label();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.flpShopSubAccount = new System.Windows.Forms.FlowLayoutPanel();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.btnAdd = new TemuKJD.UserControls.ButtonEx();
this.btnRemove = new TemuKJD.UserControls.ButtonEx();
this.flpNotSubAccount = new System.Windows.Forms.FlowLayoutPanel();
this.btnOk = new TemuKJD.UserControls.ButtonEx();
this.panel1 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 18);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 12);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
//
// splitContainer1
//
this.splitContainer1.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.splitContainer1.Location = new System.Drawing.Point(12, 41);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.BackColor = System.Drawing.Color.Gainsboro;
this.splitContainer1.Panel1.Controls.Add(this.flpShopSubAccount);
this.splitContainer1.Panel1.Padding = new System.Windows.Forms.Padding(2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(771, 326);
this.splitContainer1.SplitterDistance = 353;
this.splitContainer1.TabIndex = 1;
//
// flpShopSubAccount
//
this.flpShopSubAccount.AutoScroll = true;
this.flpShopSubAccount.BackColor = System.Drawing.Color.White;
this.flpShopSubAccount.Dock = System.Windows.Forms.DockStyle.Fill;
this.flpShopSubAccount.Location = new System.Drawing.Point(2, 2);
this.flpShopSubAccount.Name = "flpShopSubAccount";
this.flpShopSubAccount.Size = new System.Drawing.Size(349, 322);
this.flpShopSubAccount.TabIndex = 11111;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.tableLayoutPanel1);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.BackColor = System.Drawing.Color.Gainsboro;
this.splitContainer2.Panel2.Controls.Add(this.flpNotSubAccount);
this.splitContainer2.Panel2.Padding = new System.Windows.Forms.Padding(2);
this.splitContainer2.Size = new System.Drawing.Size(414, 326);
this.splitContainer2.SplitterDistance = 36;
this.splitContainer2.TabIndex = 0;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.btnAdd, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.btnRemove, 0, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 5;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(36, 326);
this.tableLayoutPanel1.TabIndex = 0;
//
// btnAdd
//
this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnAdd.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnAdd.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAdd.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAdd.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAdd.ForeColor = System.Drawing.Color.White;
this.btnAdd.Location = new System.Drawing.Point(4, 175);
this.btnAdd.Margin = new System.Windows.Forms.Padding(2);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(30, 26);
this.btnAdd.TabIndex = 375;
this.btnAdd.Text = "<<";
this.btnAdd.UseVisualStyleBackColor = false;
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// btnRemove
//
this.btnRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnRemove.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnRemove.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRemove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnRemove.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnRemove.ForeColor = System.Drawing.Color.White;
this.btnRemove.Location = new System.Drawing.Point(4, 125);
this.btnRemove.Margin = new System.Windows.Forms.Padding(2);
this.btnRemove.Name = "btnRemove";
this.btnRemove.Size = new System.Drawing.Size(30, 26);
this.btnRemove.TabIndex = 0;
this.btnRemove.Text = ">>";
this.btnRemove.UseVisualStyleBackColor = false;
this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
//
// flpNotSubAccount
//
this.flpNotSubAccount.AutoScroll = true;
this.flpNotSubAccount.BackColor = System.Drawing.Color.White;
this.flpNotSubAccount.Dock = System.Windows.Forms.DockStyle.Fill;
this.flpNotSubAccount.Location = new System.Drawing.Point(2, 2);
this.flpNotSubAccount.Name = "flpNotSubAccount";
this.flpNotSubAccount.Size = new System.Drawing.Size(370, 322);
this.flpNotSubAccount.TabIndex = 0;
//
// btnOk
//
this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOk.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOk.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnOk.ForeColor = System.Drawing.Color.White;
this.btnOk.Location = new System.Drawing.Point(717, 377);
this.btnOk.Margin = new System.Windows.Forms.Padding(2);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(66, 26);
this.btnOk.TabIndex = 373;
this.btnOk.Text = "确定";
this.btnOk.UseVisualStyleBackColor = false;
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.White;
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.splitContainer1);
this.panel1.Controls.Add(this.btnOk);
this.panel1.Controls.Add(this.label1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(1, 33);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(798, 416);
this.panel1.TabIndex = 0;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(409, 18);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 12);
this.label2.TabIndex = 374;
this.label2.Text = "label2";
//
// SubAccountShopEditForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.panel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.ShowMinimizedBox = true;
this.Name = "SubAccountShopEditForm";
this.Text = "SubAccountShopEditForm";
this.TitleText = "SubAccountShopEditForm";
this.Load += new System.EventHandler(this.SubAccountShopEditForm_Load);
this.Controls.SetChildIndex(this.panel1, 0);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private UserControls.ButtonEx btnAdd;
private UserControls.ButtonEx btnRemove;
private UserControls.ButtonEx btnOk;
private System.Windows.Forms.FlowLayoutPanel flpShopSubAccount;
private System.Windows.Forms.FlowLayoutPanel flpNotSubAccount;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label2;
}
}
@@ -0,0 +1,194 @@
using AllBase;
using AllBase.Model.Result;
using TemuKJD.BaseForms;
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 Work;
namespace TemuKJD.WXForms.ShopForms
{
public partial class WXSubAccountShopEditForm : LRBaseForm
{
ShopLoginInfo shop = null;
public List<ShopSubAccountInfo> AllSubAccountList { get; set; } = new List<ShopSubAccountInfo>();
public List<ShopSubAccountInfo> ShopSubAccountList { get; set; } = new List<ShopSubAccountInfo>();
public List<ShopSubAccountInfo> NotShopSubAccountList { get; set; } = new List<ShopSubAccountInfo>();
public WXSubAccountShopEditForm(ShopLoginInfo _shop)
{
InitializeComponent();
shop = _shop;
}
private void SubAccountShopEditForm_Load(object sender, EventArgs e)
{
this.TitleText = "店铺 " + shop?.ShopAccount + " 子账号编辑";
label1.Text = "店铺 " + shop?.ShopAccount + " 子账号";
label2.Text = "未分配的子账号";
GetUser();
}
private void GetUser()
{
flpNotSubAccount.Controls.Clear();
flpShopSubAccount.Controls.Clear();
AllSubAccountList.Clear();
string url = BaseClass.BuildObjString("user/get_sub_user");
string data = UserLogin.GetSignaturex();
string html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html))
return;
if (html.Contains("\"data\""))
{
var userObj = Newtonsoft.Json.Linq.JObject.Parse(html);
foreach (Newtonsoft.Json.Linq.JObject obj in userObj["data"])
{
string oStr = JsonHelper.SerializeObject(obj);
ShopSubAccountInfo user = new ShopSubAccountInfo();
user.id = BaseRegex.GetIntJson(ref oStr, "id");
user.nick_name = BaseRegex.GetStringJson(ref oStr, "nick_name");
user.user_name = BaseRegex.GetStringJson(ref oStr, "user_name");
user.mobile = BaseRegex.GetStringJson(ref oStr, "mobile");
user.group_id = BaseRegex.GetStringJson(ref oStr, "group_id");
user.shop_count = BaseRegex.GetIntJson(ref oStr, "shop_count");
AllSubAccountList.Add(user);
}
if (shop != null)
{
ShopSubAccountList.Clear();
ShopSubAccountList.AddRange(AllSubAccountList.Where(u=>shop.SubUserName.Contains(u.sub_user_name)));
shop.ShopSubAccountList.Clear();
shop.ShopSubAccountList.AddRange(ShopSubAccountList);
NotShopSubAccountList.AddRange(AllSubAccountList.Where(u => !ShopSubAccountList.Any(bu => bu.id == u.id)));
foreach (var item in ShopSubAccountList)
{
UcSubAccount s = new UcSubAccount(item, false);
s.AddSubAcountEvent += S_AddSubAcountEvent;
s.RemoveSubAcountEvent += S_RemoveSubAcountEvent;
flpShopSubAccount.Controls.Add(s);
}
foreach (var item in NotShopSubAccountList)
{
UcSubAccount s = new UcSubAccount(item);
s.AddSubAcountEvent += S_AddSubAcountEvent;
s.RemoveSubAcountEvent += S_RemoveSubAcountEvent;
flpNotSubAccount.Controls.Add(s);
}
}
}
}
private void S_AddSubAcountEvent(object obj)
{
var s = obj as UcSubAccount;
if (s != null)
{
if (this.flpShopSubAccount.Controls.Count > 0)
{
//BaseMsgForm.ShowInfo("只能有一个子账户!");
//s.lblRight_Click(null, null);
//return;
}
this.flpNotSubAccount.Controls.Remove(s);
this.flpShopSubAccount.Controls.Add(s);
}
}
private void S_RemoveSubAcountEvent(object obj)
{
var s = obj as UcSubAccount;
if (s != null)
{
this.flpShopSubAccount.Controls.Remove(s);
this.flpNotSubAccount.Controls.Add(s);
}
}
private void btnRemove_Click(object sender, EventArgs e)
{
var controls = this.flpShopSubAccount.Controls.Cast<Control>().ToList();
foreach (var c in controls)
{
(c as UcSubAccount).DeleteAccount();
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
var controls = this.flpNotSubAccount.Controls.Cast<Control>().ToList();
foreach (var c in controls)
{
(c as UcSubAccount).AddAccount();
}
}
private void btnOk_Click(object sender, EventArgs e)
{
List<ShopSubAccountInfo> AddUsers = new List<ShopSubAccountInfo>();
List<ShopSubAccountInfo> DeleteUsers = new List<ShopSubAccountInfo>();
foreach (Control c in this.flpNotSubAccount.Controls)
{
var co = c as UcSubAccount;
if (co == null)
continue;
if (ShopSubAccountList.Contains(co.subAccount))
{
DeleteUsers.Add(co.subAccount);
shop.ShopSubAccountList.Remove(co.subAccount);
//string url = BaseClass.BuildObjString("shop&act=delete_shop_user_sub_group");
//string data = UserLogin.GetSignaturex()
// + "&shop_id=" + shop.ShopId
// + "&sub_user_id=" + co.subAccount.sub_user_id
// + "&sub_user_name=" + co.subAccount.sub_user_name
// + "&status=" + co.subAccount.status
// + "&group_id=" + co.subAccount.group_id;
//string html = GetHtml.PostUtf8(url, data);
}
}
foreach (Control c in this.flpShopSubAccount.Controls)
{
var co = c as UcSubAccount;
if (co == null)
continue;
if (NotShopSubAccountList.Contains(co.subAccount))
{
AddUsers.Add(co.subAccount);
shop.ShopSubAccountList.Add(co.subAccount);
//string url = BaseClass.BuildObjString("shop&act=update_shop_user_sub_group");
//string data = UserLogin.GetSignaturex()
// + "&shop_id=" + shop.ShopId
// + "&sub_user_id=" + co.subAccount.sub_user_id
// + "&sub_user_name=" + co.subAccount.sub_user_name
// + "&status=" + co.subAccount.status
// + "&group_id=" + co.subAccount.group_id;
//string html = GetHtml.PostUtf8(url, data);
}
}
shop.SubUserName = shop.ShopSubAccountList.FirstOrDefault()?.sub_user_name;
shop.SubUserName = string.Join(",", shop.ShopSubAccountList.Select(s => s.sub_user_name));
var shopLst = AllBase.Helper.GlobalConfig.ShopLoginList.Where(s => s.LoginName == shop.LoginName && s.ShopId!= shop.ShopId);
foreach(var s in shopLst)
{
s.SubUserName = shop.SubUserName;
s.ShopSubAccountList.Clear();
shop.ShopSubAccountList.AddRange(s.ShopSubAccountList);
}
OnSaveComplete(shop);
this.Close();
}
}
}
@@ -0,0 +1,298 @@
<?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="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQVQAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAABEZmbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZkQAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAZszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMxmAAAAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMxkAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzGQAAAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMd3d3d3d3d3
d3d3fMzMzMzMzMzMzMzMzMzMzMzMzMYAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMd3d3iIiIiI
iIiIiIiIiIh3d3d8zMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAABszMzMzMzMzMzMzMzMzMx3eIiIiI
iIiIiIiIiIiIiIiIiIiIiHd8zMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAAGzMzMzMzMzMzMzMzMzMd4iI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiHfMzMzMzMzMzMzMzMzMxgAAAAAAAAAAAAbMzMzMzMzMzMzMzMzH
eIiIiIiIiIiHZmZmZmZmZmZmZ3eIiIiIiIiIiHzMzMzMzMzMzMzMzMxgAAAAAAAAAABszMzMzMzMzMzM
zMzHiIiIiIiHZmZmZmZmZmZmZmZmZmZmZmZmeIiIiIiIfMzMzMzMzMzMzMzMxgAAAAAAAAAGzMzMzMzM
zMzMzMzHiIiIiIdmZmZmZgAAAAAAAAAAAAZmZmZmZmZmeIiIiIh8zMzMzMzMzMzMzMxgAAAAAAAATMzM
zMzMzMzMzMzHiIiIiHZmZgAAAAAAAAAAAAEAAAAAAAAAAGZmZmZniIiIiHzMzMzMzMzMzMzMxAAAAAAA
AGzMzMzMzMzMzMzMeIiIiGZmAAAAAAERERmZmZmZmZmZkRERERAAAGZmZmZ4iIiIfMzMzMzMzMzMzMYA
AAAAAAbMzMzMzMzMzMzMeIiIiGZgAAAAERmZmZmZmZmZmZmZmZmZmZmZkREAAGZmZniIiIfMzMzMzMzM
zMzMYAAAAABMzMzMzMzMzMzMzIiIiHYAAAARGZmZiIiIj///////+IiIiIeZmZmZkREAZmZmiIiIfMzM
zMzMzMzMzMQAAAAAbMzMzMzMzMzMzO6IiIYAAAARmYiI/////////////////////4iHmZmZEQBmZmeI
iIh8zMzMzMzMzMzGAAAABMzMzMzMzMzMzMeIiIdgAAAZmI////////////////////////////iJmZmR
EGZmZ4iIh8zMzMzMzMzMzEAAAAbMzMzMzMzMzMzoiIhwAAAZeP//////////////////////////////
/4iZmZEAZmZ4iIh8zMzMzMzMzMxgAABMzMzMzMzMzMzOiIiGAAABiP//////////////////////////
////////+JmZkQZmZ4iIh8zMzMzMzMzMxAAAbMzMzMzMzMzM7oiIYAABeP//////////////////////
///////////////4mZkQZmZ4iIjMzMzMzMzMzMYAAMzMzMzMzMzMzu6IhwAAGP//////////////////
/////////////////////4iZmRZmZ4iIfMzMzMzMzMzMAAbMzMzMzMzMzM7oiHAAB4//////////////
////////////////////////////iZmRBmZ4iIfMzMzMzMzMzGAGzMzMzMzMzMzuiIcAAHj/////////
//////////////////////////////////iZmRZmZ4iIzMzMzMzMzMxgDMzMzMzMzMzM7ohwAAf/////
////////////////////////////////////////95mRZmaIiHzMzMzMzMzMwEzMzMzMzMzMzuiIEABo
//////////////////////////////////////////////95mRZmaIiMzMzMzMzMzMRszMzMzMzMzM7o
hwAGj///////////////////////////////////////////////95kQZmeIh8zMzMzMzMzGbMzMzMzM
zMzu6HEAB/////////////////////////////////////////////////+ZkQZmiIjMzMzMzMzMxmzM
zMzMzMzM7ohwAGj/////////////////////////////////////////////////iZkWZniIfMzMzMzM
zMZszMzMzMzMxu6HEAbv/4iI/////////////////////////////////////////4iP//iZEGZoiHzM
zMzMzMzGbMzMzMzMzM7uhxAGj/iIiIj//////////////////////////////////////4iIiI//mZFm
aIiMzMzMzMzMxszMzMzMzMzO6IEAbv+IiIiIj/////////////////////////////////////iIiIiP
/4mRBmeIh8zMzMzMzMbMzMzMzMzMbuhxAG7/iIiIiI////////////////iIj///j//////////////4
iIiIiP/5mQZmiIfMzMzMzMzMzMzMzMzMzO7ocQDo+IiIiIiP///////////////u7u7u7u7o////////
////iIiIiIj/+JkWZoiHzMzMzMzMzMzMzMzMzMzu6BEG7/iIiIiIj/////////////+Hd3ju5maO7v//
/////////4iIiIiI//iZEGaIh8zMzMzMzMzMzMzMzMzM7ugRBu//iIiIiI//////////////kZmZdmAZ
mP/////////////4iIiIiP//mRBmeIjMzMzMzMzMzMzMzMzMzO7nEAbv/4iIiIiP////////////+HiI
mZEBd5n/////////////+IiIiIj//4mQZniIzMzMzMzMzMzMzMzMzMzu5xAO7//4iIiI//ju7o//////
//j//4mZeP/4//////////////iIiIiP//+JkGZ4iHzMzMzMzMzMzMzMzMzG7ocQDu///4iI//ju7u7u
j//////////4mP//////////////7u7uiIiI////iZBmaIh8zMzMzMzMzMzMzMzMzu6HEG7v//////+G
ZmZ47u7//////////4//////////////7u7u7u6P/////4mQBmiIfMzMzMzMzMzMzMzMzM7uhRBu7///
///3AAAAF37u7///////////////////////h2AABm7u7v/////5kAZ4iHzMzMzMzMzMzMzMzMzO7oUQ
bu//////gQAAZgEG7u//////////////////////+BAAAAAFfu6P////+ZAGeIjMzMzMzMzMzMzMzMzM
zu6FEG7v////+JEAAXhwAG7o/////////////////////4gAABEGARbu7/////kQBoiIzMzMzMzMzMzM
zMzMzM7uhRBu7/////iZABmZkQBm6P////////////////////+JABGZF2AAbo////+JEGaIiMzMzMzM
zMzMzMzMzMzO7ucRbu/////4mRZ4iZkQBu//////////////////////mQB5mZdgAG7/////iRBmiIfM
zMzMzMzMzMzMzMzMxu7nEQ7v////+Bl+j/iZEAaP/////////////////////5l2/4mRAABu/////4kQ
ZoiHzMzMzMzMzMzMzMzMzMzu5xEO6P//+Phgbu/4kQAI//////////////////////+Zfo/4kQAAeIiP
//+JEGaIh8zMzMzMzMzMzMzMzMzM7ucRBu7///iOYHiI+HAAf///////////////////////mYjv+BAA
BuiIj///iQBniIfMzMzMzMzMzMzMzMzMzO7nEQbu///3EAAG6IcRF4iP/////////////////////4GP
/4cQAAZnbv///5EAaIiMzMzMzMzMzMzMzMzMzMzu5xEW7v//iRF3dmZgAXjmj///////////////////
///3ePiBEQAHdm7///iRAGiIfMzMzMzMzMzMzMzMzMzM7u5xFu6P/5EZmXZmZmbmaP//////////////
///////4/4d2cRAAFwbuj//4kQZoiHzMzMzMzMzMzMzMzMzMzG7ucRDu7/iXiZkQAAZmAH//////////
////////////+IiIdmYABmAX//j/+BAGeIh8zMzMzMzMzMzMzMzMzMzO7nEQbu/4iP+BERkREZf/////
//////////////////+JmXdxEBEAB3////kQBoiIzMzMzMzMzMzMzMzMzMzMzu5xEW7o+P//gZmZmZmP
////////////////////////+JmZmZmZl453//+JAGaIh8zMzMzMzMzMzMzMzMzMzM7u5xEO7vj/+IeP
iIj////////////////////////////4iZmZmZiPiP//cQBoiIfMzMzMzMzMzMzMzMzMzMzM7ucRFu6P
//iP//////////////////////////////////////+Jn/j/+JAAaIiMzMzMzMzMzMzMzMzMzMzMzO7n
ERbu7//4/////////////////////////////////////////4j///gQBoiIfMzMzMzMzMzMzMzMzMzM
zMzu7nERbuj////////////////////////////////////////////4//+BAAaIiMzMzMzMzMzMzMzM
zMzMzMzMzu5xEW7u////////////////////////////////////////////////cQBoiIfMzMzMzMzM
zMzMzMzMzMzMzM7u5xEW7u//////////////////////////////////////////////+BAAaIiMzMzM
zMzMzMzMzMzMzMzMzMzO7uYREO7o//7v//////////////////////////////////////////cABoiI
fMzMzMzMzMzMzMzMzMzMzMzMzO7ucRFu7oj/7o////////////////////////////////////////9x
AAeIiMzMzMzMzMzMzMzMzMzMzMzMzMzO7ucRFu7nePju7u7v////////////////////////////////
6P/4EAB4iIfMzMzMzMzMzMzMzMzMzMzMzMzMzu7nERBu7nmIiO7oj///////////////////////////
ju7u7o//hwAGiIh8zMzMzMzMzMzMzMzMzMzMzMzMzMzu7nERbu7nmZl5eP//////////////////////
///4iPiO5nj/+HAAaIiIzMzMzMzMzMzMzMzMzMzMzMzMzMzM7u7nERbu7oiZeI//////////////////
////////+ImXd5mP/4cAAHiIh8zMzMzMzMzMzMzMzMzMzMzMzMzMzM7u53ERbu7v////////////////
///////////////4iZl4//hgAAeIiHzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM7u53ERBu7v//////////
//////////////////////////+GAAB4iI7MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzO7uiHEADujv////
///////////////////////////////3AAAGiIh8zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzO7ohwABmP
////////////////////////////////////iREAZniIjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzuiI
EAB4f///////////////////////////////////+JmZkWZoiIfMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zO6IhwBo//////////////////////////////////////iImZl2ZoiIzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzuiHAA7////////////////////////////////////////4iZFmZ4iHzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzO6IgQBo/////4j///////////////////////////////////mZFmaIiMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzuiHAA7/////iIiP//////7o//////////////////iI/////4mRZmeIh8zMzMzM
zMzMzMzMzMzMzMzMzMzMzO6IcQBo////+IiIiI/////+7u7u7uiIiI7u7v////iIiI/////5mRZmiIjM
zMzMzMzMzMzMzMzMzMzMzMzMzMzuiHAA7////4iIiIiIj//3d2bu7u7u7u7u7u7//4iIiIiP////+JkW
ZniIfMzMzMzMzMzMzMzMzMzMzMzMzMzO6IcQBo////+IiIiIiI//+ZkAAGZmZmZmZmbv//iIiIiIiP//
//+ZkWZoiIzMzMzMzMzMzMzMzMzMzMzMzMzMzuiFAG7////4iIiIiIj///iZABEREREREBAG7//4iIiI
iIj/////iZFmaIiMzMzMzMzMzMzMzMzMzMzMzMzMzO6IcQBo////+IiIiIiI///4kQARERERERERDo//
+IiIiIiIj/////mZBmeIh8zMzMzMzMzMzMzMzMzMzMzMzMzuiHAG7////4iIiIiIiP//+JFmeHd3d3dx
EW6P//iIiIiIiI/////4mRZmiIfMzMzMzMzMzMzMzMzMzMzMzMzO7ocQBo////+IiIiIiIj///iQZoiO
7u7u5xFu7//4iIiIiIiI////+JkWZniIzMzMzMzMzMzMzMzMzMzMzMzMzuiHEA7////4iIiIiIiP///5
kGaIju7u7ucRbu///4iIiIiIiP////95kGZ4iHzMzMzMzMzMzMzMzMzMzMzMzM7ogQBu////+IiIiIiI
j///+RBmiI7u7u7nEW7v//+IiIiIiIiP////iZFmaIh8zMzMzMzMzMzMzMzMzMzMzMzu6HEAaP////iI
iIiIiI////kQZoiHzMzu5xEO6P//iIiIiIiIj////4mRZmiIjMzMzMzMzMzMzMzMzMzMzMzM7ugRBu//
///4iIiIiIj///+JEGaIh8zM7ucRBu7//4iIiIiIiI/////5kQZniIzMzMzMzMzMzMzMzMzMzMzMzO6I
EAbv////iIiIiIiI////iQBniIzMzO7oERbu///4iIiIiIiP////+JkGZ4iHzMzMzMzMzMzMzMzMzMzM
zMbuhxAGj////4iIiIiIj////3kAaIiMzMzu7nEW7v//+IiIiIiIiP////iZFmaIh8zMzMzMzMzMzMzM
zMzMzMzO7oUQbv////+IiIiIiI////+RBmiIfMzMzu5xFu6P//+IiIiIiIj////4mRZmiIfMzMzMzMzM
zMzMzMzMzMzMzu6BAG7////4iIiIiIj////4kQZoiHzMzM7ucRDu7///iIiIiIiIj////5kQZoiHzMzM
zMzMzMzMzMzMzMzMzM7ocQBu////+IiIiIiI////+JAGeIh8zMzO7nERbu///4iIiIiIiI////95EGaI
h8zMzMzMzMzMzMzMzMzMzMxu6HEA7v////iIiIiIiP////cQBoiIzMzMzu7lEW7v///4iIiIiIiP////
iRBmeIjMzMzMzMzMzMzMzMzMzMzM7uhxBuj////4iIiIiI/////5EAaIiMzMzMbu5xEO7v//+IiIiIiI
j////4kQZniIzMzMzMzMzMzMzMzMzMzMzO7oEQbv////+IiIiIj/////iQBmiIfMzMzM7ucRBu7///iI
iIiIiIj///+JkGZ4iMzMzMzMzMzMzMzMzMzMzMzu6BEG7/////iIiIiI/////4EAaIiHzMzMzO7nERbu
j///iIiIiIiI////iZBmaIh8zMzMzMzMzMzMzMzMzMzM7ucRBu/////4iIiIj/////+RAGiIjMzMzMzu
7nEQ7u////iIiIiIiP///4mQBmiIfMzMzMzMzMzMzMzMzMzMzO7nEAbv////+IiIiP/////4EAZ4iHzM
zMzMzu5xEG7v///4iIiIiIj///+JkAZoiHzMzMzMzMzMxmzMzMzMzMzu5xAO7/////+IiI//////+RAG
iIjMzMzMzM7ucRFu7v///4iIiIiI////+ZAGaIh8zMzMzMzMzMZszMzMzMzG7ocQDu//////+I//////
/4EAZoiIzMzMzMzO7ucRBu7////4iIiIiP////mQBmiIfMzMzMzMzMzGbMzMzMzMzu6HEA7v////////
//////9xAGiIh8zMzMzMzO7nERbu7///+IiIiI/////5kAZoiHzMzMzMzMzMxmzMzMzMzM7uhxAO7///
///////////4EABoiIzMzMzMzMzu7nEQbu////+IiIiP////+ZAGaIh8zMzMzMzMzMZszMzMzMzO7oUQ
Du//////////////9xAGiIh8zMzMzMzM7u5xEW7u/////4iI//////mQBmiIfMzMzMzMzMzGTMzMzMzM
zu6HEA7v/////////////4EABoiIzMzMzMzMzM7u5xEG7v/////////////5kAZoiHzMzMzMzMzMxAzM
zMzMzM7uhxEO7/////////////9wAGiIh8zMzMzMzMzO7ucRFu7v////////////+RAGeIh8zMzMzMzM
zMAGzMzMzMzO7ucRDuj////////////4EAB4iIzMzMzMzMzMzO7ucRBu6P///////////4kQBoiIzMzM
zMzMzMxgBszMzMzMxu7nEQbo////////////gQAGiIh8zMzMzMzMzMzu7nERDu7///////////+JEAaI
iMzMzMzMzMzMYADMzMzMzMzu5xEG7v///////////3EAZ4iIzMzMzMzMzMzMzu7nERbu7///////////
gQBmiIfMzMzMzMzMzAAAbMzMzMzM7ucRBu7///////////gQAGiIh8zMzMzMzMzMzM7u5xEQbu7/////
/////5EAZ4iHzMzMzMzMzMYAAEzMzMzMzO7nERDu7/////////+HAAaIiIzMzMzMzMzMzMzM7u5xEQ7u
7/////////gQAGiIjMzMzMzMzMzEAAAGzMzMzMzu7nEQbuj////////4cAAHiIh8zMzMzMzMzMzMzO7u
dxEW7uj////////3AAZoiHzMzMzMzMzMYAAABMzMzMzM7u5xEG7u////////hgAAeIiHzMzMzMzMzMzM
zMzO7ucREW7u7///////gQAGiIh8zMzMzMzMzEAAAABszMzMzM7ucREG7uj/////hmAAB4iI7MzMzMzM
zMzMzMzMzu7ucREG7u6P////+AAAB4iIzMzMzMzMzMYAAAAATMzMzMzO7ucREG7u7oiO7mAAAHiIiMzM
zMzMzMzMzMzMzMzu7ucREG7u7o//+HYAAHiIh8zMzMzMzMzEAAAAAAbMzMzMzu7nEREG7u7u5mAAAAeI
iIfMzMzMzMzMzMzMzMzMzu7ucREQbu7u7uYAAAeIiHzMzMzMzMzMYAAAAAAAbMzMzMzu7nEREAZmZgAA
AAF4iI58zMzMzMzMzMzMzMzMzMzu7ncREQZm7mZgAAB4iI7MzMzMzMzMxgAAAAAAAEzMzMzM7u7nEREQ
AAAAABF4iI7uzMzMzMzMzMzMzMzMzMzM7u7ucRERAAAAAAAHiIiMzMzMzMzMzMQAAAAAAAAGzMzMzM7u
7nERERERERF3iIju7MzMzMzMzMzMzMzMzMzMzM7u7udREREQAAAReIiIfMzMzMzMzMxgAAAAAAAAAGzM
zMzM7u7udRERERV4iI7u7MzMzMzMzMzMzMzMzMzMzMzM7u7u5xEREREReIiO7MzMzMzMzMzGAAAAAAAA
AAAGzMzMzM7u7u53d3eIiO7u7szMzMzMzMzMzMzMzMzMzMzMzM7u7u7nd1F3eIiO7uzMzMzMzMzMYAAA
AAAAAAAAAGzMzMzM7u7u7u7u7u7u7szMzMzMzMzMzMzMzMzMzMzMzMzMzu7u7u6IiI7u7uzMzMzMzMzM
xgAAAAAAAAAAAAAGzMzMzMzu7u7u7u7u5szMzMzMzMzMzMzMzMzMzMzMzMzMzMzO7u7u7u7u7u7MzMzM
zMzMzGAAAAAAAAAAAAAAAEbMzMzMzG7u7u7ubMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM7u7u7u7uzM
zMzMzMzMzGQAAAAAAAAAAAAAAAAAbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzG7u
7szMzMzMzMzMzMYAAAAAAAAAAAAAAAAAAARszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAABGzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAEbMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMZAAAAAAAAAAAAAAAAAAAAAAAAAAABmzMzMzMzMzMzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGZmzMzMzMzMzMzMzM
zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMZmZEAAAAAAAAAAAAAAAAD////+AAAAAAAAAAD/////////AAAA
AAAAAAAAAP//////+AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH////+
AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA
B///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA
AAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAf+AAAAAAA
AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAB+AA
AAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA
AAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA
AAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AA
AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAA
AD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//gAAAAAAAAAAA
AAAAAAH//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////wAAAAA
AAAAAAAAAAA////+AAAAAAAAAAAAAAAAf////4AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAf/////
+AAAAAAAAAAAAAAf//////8AAAAAAAAAAAAA/////////gAAAAAAAAAAf////w==
</value>
</data>
</root>