temu客户端程序
This commit is contained in:
commit
4aaf264e89
694 files changed
+263780
No files matched your search
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<connectionStrings>
|
||||
<add connectionString="Data Source=temp\product.db;Version=3;" name="conStr" />
|
||||
</connectionStrings>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
<system.net>
|
||||
<settings>
|
||||
<httpWebRequest useUnsafeHeaderParsing="true " />
|
||||
</settings>
|
||||
</system.net>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="CefSharp" publicKeyToken="40c4b6fc221f4138" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-67.0.0.0" newVersion="67.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="CefSharp.WinForms" publicKeyToken="40c4b6fc221f4138" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-67.0.0.0" newVersion="67.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="CefSharp.Core" publicKeyToken="40c4b6fc221f4138" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-67.0.0.0" newVersion="67.0.0.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -0,0 +1,43 @@
|
||||
using CefSharp;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using AllBase;
|
||||
using NaiBa.CefHelper;
|
||||
|
||||
namespace LittleRabbit
|
||||
{
|
||||
public class BoundObject
|
||||
{
|
||||
public List<KeyValueBase> ShopMessage = new List<KeyValueBase>();
|
||||
public string MyProperty { get; set; }
|
||||
|
||||
public void TestCallback(IJavascriptCallback javascriptCallback)
|
||||
{
|
||||
using (javascriptCallback)
|
||||
{
|
||||
var response = new string[] { MyProperty };
|
||||
javascriptCallback.ExecuteAsync(response);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public string GetToken(string html)
|
||||
{
|
||||
return html;
|
||||
}
|
||||
public string getHtml(string html)
|
||||
{
|
||||
return html;
|
||||
}
|
||||
|
||||
public void Service(string html)
|
||||
{
|
||||
if(string.IsNullOrEmpty(html) || !html.Contains(","))
|
||||
return;
|
||||
string shop = html.Substring(0, html.IndexOf(","));
|
||||
string newHtml = html.Substring(0, shop.Length + 1);
|
||||
ShopMessage.Add(new KeyValueBase(shop,newHtml));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using AllBase;
|
||||
using LittleRabbit.ChatForms;
|
||||
using LittleRabbit.DashBoardForms;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using Work;
|
||||
|
||||
namespace LittleRabbit
|
||||
{
|
||||
public partial class ChangeForm : LRBaseForm
|
||||
{
|
||||
public MainForm mf;
|
||||
public ChangeForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void panel1_Click(object sender, EventArgs e)
|
||||
{
|
||||
Process p = new Process();
|
||||
p.StartInfo.FileName = "TaobaoLoginer.exe";
|
||||
p.StartInfo.Arguments = BaseClass.UserName + " " + BaseClass.PassWord;
|
||||
p.StartInfo.UseShellExecute = true;
|
||||
p.StartInfo.Verb = "runas";
|
||||
p.Start();
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
|
||||
private void panel2_Click(object sender, EventArgs e)
|
||||
{
|
||||
mf.Show();
|
||||
mf.SetTitle();
|
||||
mf.ShowTaobaoLoginAndInitModule();
|
||||
Hide();
|
||||
}
|
||||
|
||||
private void panel3_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Process p = new Process();
|
||||
p.StartInfo.FileName = "FindLittleRabbitOrder.exe";
|
||||
p.StartInfo.Arguments = BaseClass.UserName + " " + BaseClass.PassWord;
|
||||
p.StartInfo.UseShellExecute = true;
|
||||
p.StartInfo.Verb = "runas";
|
||||
p.Start();
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
catch
|
||||
{
|
||||
BaseMsgForm.ShowInfo("未找到拍单王启动文件");
|
||||
}
|
||||
}
|
||||
|
||||
private void panel4_Click(object sender, EventArgs e)
|
||||
{
|
||||
string url = "http://oa.qixiaoke.com/?obj=public/jump_login&url=order&" + UserLogin.GetSignaturex();
|
||||
GetHtml.OpenUrl(url);
|
||||
}
|
||||
|
||||
private void ChangeForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
|
||||
private void ChangeForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
TitleText = "功能选择 - " + BaseClass.ToolName;
|
||||
if (BaseClass.Ico != null)
|
||||
{
|
||||
Iconx = BaseClass.Ico;
|
||||
Icon = BaseClass.Ico;
|
||||
}
|
||||
mf.Hide();
|
||||
Text += " - " + BaseClass.ToolName;
|
||||
|
||||
pnlExtend.Visible = BaseClass.DarenYaoyue;
|
||||
}
|
||||
|
||||
private void pnlChat_Click(object sender, EventArgs e)
|
||||
{
|
||||
ChatForm cf = new ChatForm();
|
||||
cf.Show();
|
||||
cf.SetTitle();
|
||||
Hide();
|
||||
}
|
||||
|
||||
private void pnlExtend_Click(object sender, EventArgs e)
|
||||
{
|
||||
DashBoardForm df = new DashBoardForm();
|
||||
df.Show();
|
||||
//df.SetTitle();
|
||||
Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
+170
@@ -0,0 +1,170 @@
|
||||
namespace LittleRabbit
|
||||
{
|
||||
partial class ChangeForm
|
||||
{
|
||||
/// <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(ChangeForm));
|
||||
this.panel4 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel3 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel2 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel1 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel5 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.pnlExtend = new DevComponents.DotNetBar.PanelEx();
|
||||
this.pnlChat = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel5.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel4
|
||||
//
|
||||
this.panel4.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.panel4.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.panel4.Location = new System.Drawing.Point(234, 215);
|
||||
this.panel4.Name = "panel4";
|
||||
this.panel4.Size = new System.Drawing.Size(172, 65);
|
||||
this.panel4.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.choice_order;
|
||||
this.panel4.StyleMouseOver.Border = DevComponents.DotNetBar.eBorderType.RaisedInner;
|
||||
this.panel4.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(7)))), ((int)(((byte)(157)))), ((int)(((byte)(235)))));
|
||||
this.panel4.TabIndex = 3;
|
||||
this.panel4.Visible = false;
|
||||
this.panel4.Click += new System.EventHandler(this.panel4_Click);
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.panel3.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.panel3.Location = new System.Drawing.Point(31, 43);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Size = new System.Drawing.Size(172, 65);
|
||||
this.panel3.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.choice_buyer_blast;
|
||||
this.panel3.StyleMouseOver.Border = DevComponents.DotNetBar.eBorderType.RaisedInner;
|
||||
this.panel3.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(7)))), ((int)(((byte)(157)))), ((int)(((byte)(235)))));
|
||||
this.panel3.TabIndex = 2;
|
||||
this.panel3.Click += new System.EventHandler(this.panel3_Click);
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.panel2.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.panel2.Location = new System.Drawing.Point(234, 43);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(172, 65);
|
||||
this.panel2.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.choice_upload;
|
||||
this.panel2.StyleMouseOver.Border = DevComponents.DotNetBar.eBorderType.RaisedInner;
|
||||
this.panel2.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(7)))), ((int)(((byte)(157)))), ((int)(((byte)(235)))));
|
||||
this.panel2.TabIndex = 1;
|
||||
this.panel2.Click += new System.EventHandler(this.panel2_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.panel1.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.panel1.Location = new System.Drawing.Point(31, 215);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(172, 65);
|
||||
this.panel1.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.choice_loginer;
|
||||
this.panel1.StyleMouseOver.Border = DevComponents.DotNetBar.eBorderType.RaisedInner;
|
||||
this.panel1.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(7)))), ((int)(((byte)(157)))), ((int)(((byte)(235)))));
|
||||
this.panel1.TabIndex = 0;
|
||||
this.panel1.Visible = false;
|
||||
this.panel1.Click += new System.EventHandler(this.panel1_Click);
|
||||
//
|
||||
// panel5
|
||||
//
|
||||
this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panel5.Controls.Add(this.pnlExtend);
|
||||
this.panel5.Controls.Add(this.pnlChat);
|
||||
this.panel5.Controls.Add(this.panel1);
|
||||
this.panel5.Controls.Add(this.panel3);
|
||||
this.panel5.Controls.Add(this.panel4);
|
||||
this.panel5.Controls.Add(this.panel2);
|
||||
this.panel5.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.panel5.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel5.Location = new System.Drawing.Point(1, 33);
|
||||
this.panel5.Name = "panel5";
|
||||
this.panel5.Size = new System.Drawing.Size(440, 258);
|
||||
this.panel5.TabIndex = 4;
|
||||
//
|
||||
// pnlExtend
|
||||
//
|
||||
this.pnlExtend.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlExtend.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlExtend.Location = new System.Drawing.Point(234, 131);
|
||||
this.pnlExtend.Name = "pnlExtend";
|
||||
this.pnlExtend.Size = new System.Drawing.Size(172, 65);
|
||||
this.pnlExtend.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.choice_extend;
|
||||
this.pnlExtend.StyleMouseOver.Border = DevComponents.DotNetBar.eBorderType.RaisedInner;
|
||||
this.pnlExtend.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(7)))), ((int)(((byte)(157)))), ((int)(((byte)(235)))));
|
||||
this.pnlExtend.TabIndex = 35;
|
||||
this.pnlExtend.Visible = false;
|
||||
this.pnlExtend.Click += new System.EventHandler(this.pnlExtend_Click);
|
||||
//
|
||||
// pnlChat
|
||||
//
|
||||
this.pnlChat.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlChat.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlChat.Location = new System.Drawing.Point(31, 131);
|
||||
this.pnlChat.Name = "pnlChat";
|
||||
this.pnlChat.Size = new System.Drawing.Size(172, 65);
|
||||
this.pnlChat.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.choice_chat;
|
||||
this.pnlChat.StyleMouseOver.Border = DevComponents.DotNetBar.eBorderType.RaisedInner;
|
||||
this.pnlChat.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(7)))), ((int)(((byte)(157)))), ((int)(((byte)(235)))));
|
||||
this.pnlChat.TabIndex = 16;
|
||||
this.pnlChat.Click += new System.EventHandler(this.pnlChat_Click);
|
||||
//
|
||||
// ChangeForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(442, 292);
|
||||
this.Controls.Add(this.panel5);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.ShowMinimizedBox = true;
|
||||
this.Name = "ChangeForm";
|
||||
this.Text = "功能选择";
|
||||
this.TitleText = "功能选择";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ChangeForm_FormClosed);
|
||||
this.Load += new System.EventHandler(this.ChangeForm_Load);
|
||||
this.Controls.SetChildIndex(this.panel5, 0);
|
||||
this.panel5.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private DevComponents.DotNetBar.PanelEx panel1;
|
||||
private DevComponents.DotNetBar.PanelEx panel2;
|
||||
private DevComponents.DotNetBar.PanelEx panel3;
|
||||
private DevComponents.DotNetBar.PanelEx panel4;
|
||||
private DevComponents.DotNetBar.PanelEx panel5;
|
||||
private DevComponents.DotNetBar.PanelEx pnlChat;
|
||||
private DevComponents.DotNetBar.PanelEx pnlExtend;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Generated
+686
@@ -0,0 +1,686 @@
|
||||
namespace LittleRabbit.ChatForms
|
||||
{
|
||||
partial class ChatForm
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.chkNotShowMessageWindow = new System.Windows.Forms.CheckBox();
|
||||
this.cmbMessage = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.pnlSet = new DevComponents.DotNetBar.PanelEx();
|
||||
this.line4 = new DevComponents.DotNetBar.Controls.Line();
|
||||
this.chkIsAutoReLogin = new System.Windows.Forms.CheckBox();
|
||||
this.txtAutoReplyText = new System.Windows.Forms.TextBox();
|
||||
this.chkIsAutoReply = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvShop = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.ColumnShopID = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.ColumnShopStatus = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.pnlRefresh = new DevComponents.DotNetBar.PanelEx();
|
||||
this.tabControl1 = new LittleRabbit.UserComponent.UcTabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.mainPanel = new System.Windows.Forms.Panel();
|
||||
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.pbLogo = new System.Windows.Forms.PictureBox();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.lblVersionName = new DevComponents.DotNetBar.LabelX();
|
||||
this.lblVersionInfo = new DevComponents.DotNetBar.LabelX();
|
||||
this.max = new DevComponents.DotNetBar.PanelEx();
|
||||
this.min = new DevComponents.DotNetBar.PanelEx();
|
||||
this.close = new DevComponents.DotNetBar.PanelEx();
|
||||
((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();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit();
|
||||
this.splitContainer4.Panel1.SuspendLayout();
|
||||
this.splitContainer4.Panel2.SuspendLayout();
|
||||
this.splitContainer4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).BeginInit();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
|
||||
this.splitContainer3.Panel1.SuspendLayout();
|
||||
this.splitContainer3.Panel2.SuspendLayout();
|
||||
this.splitContainer3.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbLogo)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// 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";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.tabControl1);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1496, 683);
|
||||
this.splitContainer1.SplitterDistance = 270;
|
||||
this.splitContainer1.SplitterWidth = 1;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// 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";
|
||||
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer2.Panel1
|
||||
//
|
||||
this.splitContainer2.Panel1.Controls.Add(this.chkNotShowMessageWindow);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.cmbMessage);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.pnlSet);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.line4);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.chkIsAutoReLogin);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.txtAutoReplyText);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.chkIsAutoReply);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.splitContainer4);
|
||||
this.splitContainer2.Panel2.Padding = new System.Windows.Forms.Padding(4, 0, 0, 4);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(270, 683);
|
||||
this.splitContainer2.SplitterDistance = 136;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// chkNotShowMessageWindow
|
||||
//
|
||||
this.chkNotShowMessageWindow.AutoSize = true;
|
||||
this.chkNotShowMessageWindow.Location = new System.Drawing.Point(4, 33);
|
||||
this.chkNotShowMessageWindow.Name = "chkNotShowMessageWindow";
|
||||
this.chkNotShowMessageWindow.Size = new System.Drawing.Size(123, 21);
|
||||
this.chkNotShowMessageWindow.TabIndex = 201;
|
||||
this.chkNotShowMessageWindow.Text = "新消息不弹框提示";
|
||||
this.chkNotShowMessageWindow.UseVisualStyleBackColor = true;
|
||||
this.chkNotShowMessageWindow.CheckedChanged += new System.EventHandler(this.chkNotShowMessageWindow_CheckedChanged);
|
||||
//
|
||||
// cmbMessage
|
||||
//
|
||||
this.cmbMessage.BackColor = System.Drawing.Color.White;
|
||||
this.cmbMessage.Font = new System.Drawing.Font("新宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.cmbMessage.FormattingEnabled = true;
|
||||
this.cmbMessage.ItemHeight = 12;
|
||||
this.cmbMessage.Items.AddRange(new object[] {
|
||||
"默认提示音",
|
||||
"1号电脑",
|
||||
"2号电脑",
|
||||
"3号电脑",
|
||||
"4号电脑",
|
||||
"5号电脑",
|
||||
"6号电脑",
|
||||
"7号电脑",
|
||||
"8号电脑",
|
||||
"9号电脑",
|
||||
"10号电脑",
|
||||
"11号电脑",
|
||||
"12号电脑",
|
||||
"13号电脑",
|
||||
"14号电脑",
|
||||
"15号电脑",
|
||||
"16号电脑",
|
||||
"17号电脑",
|
||||
"18号电脑",
|
||||
"19号电脑",
|
||||
"20号电脑",
|
||||
"无"});
|
||||
this.cmbMessage.Location = new System.Drawing.Point(180, 4);
|
||||
this.cmbMessage.Name = "cmbMessage";
|
||||
this.cmbMessage.Size = new System.Drawing.Size(90, 20);
|
||||
this.cmbMessage.TabIndex = 193;
|
||||
this.cmbMessage.SelectedIndexChanged += new System.EventHandler(this.cmbMessage_SelectedIndexChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(118, 6);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(68, 17);
|
||||
this.label1.TabIndex = 197;
|
||||
this.label1.Text = "消息提示:";
|
||||
//
|
||||
// pnlSet
|
||||
//
|
||||
this.pnlSet.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pnlSet.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlSet.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlSet.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlSet.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.pnlSet.Location = new System.Drawing.Point(230, 56);
|
||||
this.pnlSet.Name = "pnlSet";
|
||||
this.pnlSet.Size = new System.Drawing.Size(40, 20);
|
||||
this.pnlSet.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlSet.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlSet.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlSet.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.pnlSet.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.pnlSet.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.pnlSet.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.pnlSet.Style.GradientAngle = 90;
|
||||
this.pnlSet.TabIndex = 184;
|
||||
this.pnlSet.Text = "设 置";
|
||||
this.pnlSet.Visible = false;
|
||||
this.pnlSet.Click += new System.EventHandler(this.pnlSet_Click);
|
||||
//
|
||||
// line4
|
||||
//
|
||||
this.line4.ForeColor = System.Drawing.Color.Silver;
|
||||
this.line4.Location = new System.Drawing.Point(4, 24);
|
||||
this.line4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.line4.Name = "line4";
|
||||
this.line4.Size = new System.Drawing.Size(266, 8);
|
||||
this.line4.TabIndex = 180;
|
||||
this.line4.Text = "line4";
|
||||
//
|
||||
// chkIsAutoReLogin
|
||||
//
|
||||
this.chkIsAutoReLogin.AutoSize = true;
|
||||
this.chkIsAutoReLogin.Location = new System.Drawing.Point(4, 5);
|
||||
this.chkIsAutoReLogin.Name = "chkIsAutoReLogin";
|
||||
this.chkIsAutoReLogin.Size = new System.Drawing.Size(99, 21);
|
||||
this.chkIsAutoReLogin.TabIndex = 2;
|
||||
this.chkIsAutoReLogin.Text = "掉线自动重登";
|
||||
this.chkIsAutoReLogin.UseVisualStyleBackColor = true;
|
||||
this.chkIsAutoReLogin.CheckedChanged += new System.EventHandler(this.chkIsAutoReLogin_CheckedChanged);
|
||||
//
|
||||
// txtAutoReplyText
|
||||
//
|
||||
this.txtAutoReplyText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtAutoReplyText.Location = new System.Drawing.Point(4, 78);
|
||||
this.txtAutoReplyText.Multiline = true;
|
||||
this.txtAutoReplyText.Name = "txtAutoReplyText";
|
||||
this.txtAutoReplyText.Size = new System.Drawing.Size(266, 58);
|
||||
this.txtAutoReplyText.TabIndex = 1;
|
||||
this.txtAutoReplyText.TextChanged += new System.EventHandler(this.txtAutoReplyText_TextChanged);
|
||||
//
|
||||
// chkIsAutoReply
|
||||
//
|
||||
this.chkIsAutoReply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.chkIsAutoReply.AutoSize = true;
|
||||
this.chkIsAutoReply.Location = new System.Drawing.Point(4, 56);
|
||||
this.chkIsAutoReply.Name = "chkIsAutoReply";
|
||||
this.chkIsAutoReply.Size = new System.Drawing.Size(87, 21);
|
||||
this.chkIsAutoReply.TabIndex = 0;
|
||||
this.chkIsAutoReply.Text = "自动回复:";
|
||||
this.chkIsAutoReply.UseVisualStyleBackColor = true;
|
||||
this.chkIsAutoReply.CheckedChanged += new System.EventHandler(this.chkIsAutoReply_CheckedChanged);
|
||||
//
|
||||
// splitContainer4
|
||||
//
|
||||
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer4.Location = new System.Drawing.Point(4, 0);
|
||||
this.splitContainer4.Name = "splitContainer4";
|
||||
this.splitContainer4.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer4.Panel1
|
||||
//
|
||||
this.splitContainer4.Panel1.Controls.Add(this.dgvShop);
|
||||
//
|
||||
// splitContainer4.Panel2
|
||||
//
|
||||
this.splitContainer4.Panel2.Controls.Add(this.pnlRefresh);
|
||||
this.splitContainer4.Size = new System.Drawing.Size(266, 539);
|
||||
this.splitContainer4.SplitterDistance = 509;
|
||||
this.splitContainer4.TabIndex = 7;
|
||||
//
|
||||
// dgvShop
|
||||
//
|
||||
this.dgvShop.AllowUserToAddRows = false;
|
||||
this.dgvShop.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvShop.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.dgvShop.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.dgvShop.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
|
||||
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.ColumnShopID,
|
||||
this.ColumnShopName,
|
||||
this.ColumnShopStatus});
|
||||
this.dgvShop.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvShop.Location = new System.Drawing.Point(0, 0);
|
||||
this.dgvShop.MultiSelect = false;
|
||||
this.dgvShop.Name = "dgvShop";
|
||||
this.dgvShop.ReadOnly = true;
|
||||
this.dgvShop.RowHeadersWidth = 36;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvShop.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvShop.RowTemplate.Height = 23;
|
||||
this.dgvShop.Size = new System.Drawing.Size(266, 509);
|
||||
this.dgvShop.TabIndex = 6;
|
||||
this.dgvShop.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellClick);
|
||||
this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
|
||||
//
|
||||
// ColumnShopID
|
||||
//
|
||||
this.ColumnShopID.HeaderText = "店铺账号";
|
||||
this.ColumnShopID.Name = "ColumnShopID";
|
||||
this.ColumnShopID.ReadOnly = true;
|
||||
this.ColumnShopID.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.ColumnShopID.Width = 62;
|
||||
//
|
||||
// ColumnShopName
|
||||
//
|
||||
this.ColumnShopName.HeaderText = "店铺名称";
|
||||
this.ColumnShopName.Name = "ColumnShopName";
|
||||
this.ColumnShopName.ReadOnly = true;
|
||||
this.ColumnShopName.Width = 62;
|
||||
//
|
||||
// ColumnShopStatus
|
||||
//
|
||||
this.ColumnShopStatus.HeaderText = "登录状态";
|
||||
this.ColumnShopStatus.Name = "ColumnShopStatus";
|
||||
this.ColumnShopStatus.ReadOnly = true;
|
||||
this.ColumnShopStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.ColumnShopStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.ColumnShopStatus.Width = 106;
|
||||
//
|
||||
// pnlRefresh
|
||||
//
|
||||
this.pnlRefresh.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlRefresh.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlRefresh.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlRefresh.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlRefresh.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.pnlRefresh.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlRefresh.Name = "pnlRefresh";
|
||||
this.pnlRefresh.Size = new System.Drawing.Size(266, 26);
|
||||
this.pnlRefresh.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlRefresh.Style.BackColor1.Color = System.Drawing.Color.White;
|
||||
this.pnlRefresh.Style.BackColor2.Color = System.Drawing.Color.White;
|
||||
this.pnlRefresh.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.pnlRefresh.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlRefresh.Style.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlRefresh.Style.GradientAngle = 90;
|
||||
this.pnlRefresh.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlRefresh.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlRefresh.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlRefresh.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.pnlRefresh.TabIndex = 188;
|
||||
this.pnlRefresh.Text = "刷 新 店 铺";
|
||||
this.pnlRefresh.Click += new System.EventHandler(this.pnlRefresh_Click);
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.BackgroundColor = System.Drawing.Color.White;
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.ItemSize = new System.Drawing.Size(72, 26);
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.ShowCloseButton = false;
|
||||
this.tabControl1.Size = new System.Drawing.Size(1225, 683);
|
||||
this.tabControl1.TabIndex = 1;
|
||||
this.tabControl1.TabSelectColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.tabControl1.TabTextColor = System.Drawing.Color.DimGray;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.BackColor = System.Drawing.Color.White;
|
||||
this.tabPage1.Controls.Add(this.panel1);
|
||||
this.tabPage1.Location = new System.Drawing.Point(2, 30);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
|
||||
this.tabPage1.Size = new System.Drawing.Size(1219, 649);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "客服窗口";
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 2);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(1219, 647);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.BackColor = System.Drawing.Color.White;
|
||||
this.tabPage2.Controls.Add(this.mainPanel);
|
||||
this.tabPage2.Location = new System.Drawing.Point(2, 30);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
|
||||
this.tabPage2.Size = new System.Drawing.Size(1219, 649);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "店铺后台";
|
||||
//
|
||||
// mainPanel
|
||||
//
|
||||
this.mainPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.mainPanel.Location = new System.Drawing.Point(0, 2);
|
||||
this.mainPanel.Name = "mainPanel";
|
||||
this.mainPanel.Size = new System.Drawing.Size(1219, 647);
|
||||
this.mainPanel.TabIndex = 0;
|
||||
//
|
||||
// splitContainer3
|
||||
//
|
||||
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer3.Location = new System.Drawing.Point(2, 2);
|
||||
this.splitContainer3.Name = "splitContainer3";
|
||||
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer3.Panel1
|
||||
//
|
||||
this.splitContainer3.Panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.splitContainer3.Panel1.Controls.Add(this.panel2);
|
||||
//
|
||||
// splitContainer3.Panel2
|
||||
//
|
||||
this.splitContainer3.Panel2.Controls.Add(this.splitContainer1);
|
||||
this.splitContainer3.Size = new System.Drawing.Size(1496, 764);
|
||||
this.splitContainer3.SplitterDistance = 77;
|
||||
this.splitContainer3.TabIndex = 1;
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.Controls.Add(this.pbLogo);
|
||||
this.panel2.Controls.Add(this.textBox1);
|
||||
this.panel2.Controls.Add(this.button2);
|
||||
this.panel2.Controls.Add(this.button1);
|
||||
this.panel2.Controls.Add(this.lblVersionName);
|
||||
this.panel2.Controls.Add(this.lblVersionInfo);
|
||||
this.panel2.Controls.Add(this.max);
|
||||
this.panel2.Controls.Add(this.min);
|
||||
this.panel2.Controls.Add(this.close);
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel2.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(1496, 77);
|
||||
this.panel2.TabIndex = 51;
|
||||
this.panel2.DoubleClick += new System.EventHandler(this.panel2_DoubleClick);
|
||||
this.panel2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel2_MouseDown);
|
||||
this.panel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel2_MouseMove);
|
||||
this.panel2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.panel2_MouseUp);
|
||||
//
|
||||
// pbLogo
|
||||
//
|
||||
this.pbLogo.Image = global::LittleRabbit.Properties.Resources.main_form_logo;
|
||||
this.pbLogo.Location = new System.Drawing.Point(7, 9);
|
||||
this.pbLogo.Name = "pbLogo";
|
||||
this.pbLogo.Size = new System.Drawing.Size(180, 60);
|
||||
this.pbLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pbLogo.TabIndex = 78;
|
||||
this.pbLogo.TabStop = false;
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.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.textBox1.Location = new System.Drawing.Point(347, 6);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(530, 23);
|
||||
this.textBox1.TabIndex = 65;
|
||||
this.textBox1.Visible = false;
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(271, 6);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||
this.button2.TabIndex = 64;
|
||||
this.button2.Text = "button2";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Visible = false;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(195, 6);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 51;
|
||||
this.button1.Text = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Visible = false;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// lblVersionName
|
||||
//
|
||||
this.lblVersionName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
//
|
||||
//
|
||||
//
|
||||
this.lblVersionName.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.lblVersionName.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.lblVersionName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
|
||||
this.lblVersionName.Location = new System.Drawing.Point(1418, 31);
|
||||
this.lblVersionName.Name = "lblVersionName";
|
||||
this.lblVersionName.Size = new System.Drawing.Size(74, 17);
|
||||
this.lblVersionName.TabIndex = 34;
|
||||
this.lblVersionName.Text = "版本类型";
|
||||
this.lblVersionName.TextAlignment = System.Drawing.StringAlignment.Far;
|
||||
//
|
||||
// lblVersionInfo
|
||||
//
|
||||
this.lblVersionInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
//
|
||||
//
|
||||
//
|
||||
this.lblVersionInfo.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.lblVersionInfo.Font = new System.Drawing.Font("微软雅黑", 9F);
|
||||
this.lblVersionInfo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(159)))), ((int)(((byte)(165)))), ((int)(((byte)(204)))));
|
||||
this.lblVersionInfo.Location = new System.Drawing.Point(1257, 54);
|
||||
this.lblVersionInfo.Name = "lblVersionInfo";
|
||||
this.lblVersionInfo.Size = new System.Drawing.Size(235, 16);
|
||||
this.lblVersionInfo.TabIndex = 30;
|
||||
this.lblVersionInfo.Text = "版本信息";
|
||||
this.lblVersionInfo.TextAlignment = System.Drawing.StringAlignment.Far;
|
||||
//
|
||||
// max
|
||||
//
|
||||
this.max.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.max.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.max.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.max.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.max.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.max.Location = new System.Drawing.Point(1449, 6);
|
||||
this.max.Name = "max";
|
||||
this.max.Size = new System.Drawing.Size(16, 16);
|
||||
this.max.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.max.Style.BackColor1.Alpha = ((byte)(0));
|
||||
this.max.Style.BackColor1.Color = System.Drawing.Color.Transparent;
|
||||
this.max.Style.BackColor2.Alpha = ((byte)(0));
|
||||
this.max.Style.BackColor2.Color = System.Drawing.Color.Transparent;
|
||||
this.max.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.max;
|
||||
this.max.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.max.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.max.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.max.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.max.Style.GradientAngle = 90;
|
||||
this.max.StyleMouseOver.BackgroundImage = global::LittleRabbit.Properties.Resources.max_hover;
|
||||
this.max.TabIndex = 33;
|
||||
this.max.Click += new System.EventHandler(this.max_Click);
|
||||
//
|
||||
// min
|
||||
//
|
||||
this.min.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.min.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.min.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.min.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.min.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.min.Location = new System.Drawing.Point(1424, 6);
|
||||
this.min.Name = "min";
|
||||
this.min.Size = new System.Drawing.Size(16, 16);
|
||||
this.min.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.min.Style.BackColor1.Alpha = ((byte)(0));
|
||||
this.min.Style.BackColor1.Color = System.Drawing.Color.Transparent;
|
||||
this.min.Style.BackColor2.Alpha = ((byte)(0));
|
||||
this.min.Style.BackColor2.Color = System.Drawing.Color.Transparent;
|
||||
this.min.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.min;
|
||||
this.min.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.min.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.min.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.min.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.min.Style.GradientAngle = 90;
|
||||
this.min.StyleMouseOver.BackgroundImage = global::LittleRabbit.Properties.Resources.min_hover;
|
||||
this.min.TabIndex = 32;
|
||||
this.min.Click += new System.EventHandler(this.min_Click);
|
||||
//
|
||||
// close
|
||||
//
|
||||
this.close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.close.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.close.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.close.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.close.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.close.Location = new System.Drawing.Point(1474, 6);
|
||||
this.close.Name = "close";
|
||||
this.close.Size = new System.Drawing.Size(16, 16);
|
||||
this.close.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.close.Style.BackColor1.Alpha = ((byte)(0));
|
||||
this.close.Style.BackColor1.Color = System.Drawing.Color.Transparent;
|
||||
this.close.Style.BackColor2.Alpha = ((byte)(0));
|
||||
this.close.Style.BackColor2.Color = System.Drawing.Color.Transparent;
|
||||
this.close.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.close;
|
||||
this.close.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.close.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.close.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.close.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.close.Style.GradientAngle = 90;
|
||||
this.close.StyleMouseOver.BackgroundImage = global::LittleRabbit.Properties.Resources.close_hover;
|
||||
this.close.TabIndex = 31;
|
||||
this.close.Click += new System.EventHandler(this.close_Click);
|
||||
//
|
||||
// ChatForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ClientSize = new System.Drawing.Size(1500, 768);
|
||||
this.Controls.Add(this.splitContainer3);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "ChatForm";
|
||||
this.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "客服集成";
|
||||
this.Load += new System.EventHandler(this.ChatForm_Load);
|
||||
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.Panel1.PerformLayout();
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
this.splitContainer4.Panel1.ResumeLayout(false);
|
||||
this.splitContainer4.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit();
|
||||
this.splitContainer4.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).EndInit();
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
this.splitContainer3.Panel1.ResumeLayout(false);
|
||||
this.splitContainer3.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
|
||||
this.splitContainer3.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbLogo)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvShop;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private UserComponent.UcTabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.Panel mainPanel;
|
||||
private System.Windows.Forms.SplitContainer splitContainer3;
|
||||
private DevComponents.DotNetBar.LabelX lblVersionName;
|
||||
private DevComponents.DotNetBar.LabelX lblVersionInfo;
|
||||
private DevComponents.DotNetBar.PanelEx max;
|
||||
private DevComponents.DotNetBar.PanelEx min;
|
||||
private DevComponents.DotNetBar.PanelEx close;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.TextBox txtAutoReplyText;
|
||||
private System.Windows.Forms.CheckBox chkIsAutoReply;
|
||||
private DevComponents.DotNetBar.Controls.Line line4;
|
||||
private System.Windows.Forms.CheckBox chkIsAutoReLogin;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private DevComponents.DotNetBar.PanelEx pnlSet;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.ComboBox cmbMessage;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer4;
|
||||
private DevComponents.DotNetBar.PanelEx pnlRefresh;
|
||||
private System.Windows.Forms.PictureBox pbLogo;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnShopID;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnShopName;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn ColumnShopStatus;
|
||||
private System.Windows.Forms.CheckBox chkNotShowMessageWindow;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
<?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="ColumnShopName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="ColumnShopStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,27 @@
|
||||
using LittleRabbit.ChatForms.ChatModel;
|
||||
using NaiBa.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LittleRabbit.ChatForms.ChatHelper
|
||||
{
|
||||
public class ChatConfig
|
||||
{
|
||||
public static ChatSettingsParam ChatSettingConfig { get; set; }
|
||||
|
||||
public static void LoadChatSetting()
|
||||
{
|
||||
ChatConfig.ChatSettingConfig = NaiBa.Util.Helper.ConfigHelper.LoadConfig<ChatSettingsParam>("chat_setting");
|
||||
if (ChatConfig.ChatSettingConfig == null)
|
||||
ChatConfig.ChatSettingConfig = new ChatSettingsParam();
|
||||
}
|
||||
|
||||
public static void SaveChatSettingParam()
|
||||
{
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("chat_setting", ChatConfig.ChatSettingConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
namespace LittleRabbit.ChatForms
|
||||
{
|
||||
partial class ChatMessageForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChatMessageForm));
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.pnlMessage = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pnlMessage
|
||||
//
|
||||
this.pnlMessage.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlMessage.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlMessage.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlMessage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlMessage.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.pnlMessage.Location = new System.Drawing.Point(8, 8);
|
||||
this.pnlMessage.Name = "pnlMessage";
|
||||
this.pnlMessage.Size = new System.Drawing.Size(238, 94);
|
||||
this.pnlMessage.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlMessage.Style.BackColor1.Color = System.Drawing.Color.White;
|
||||
this.pnlMessage.Style.BackColor2.Color = System.Drawing.Color.White;
|
||||
this.pnlMessage.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.pnlMessage.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.pnlMessage.Style.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlMessage.Style.GradientAngle = 90;
|
||||
this.pnlMessage.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlMessage.StyleMouseDown.BackColor1.Color = System.Drawing.Color.White;
|
||||
this.pnlMessage.StyleMouseDown.BackColor2.Color = System.Drawing.Color.White;
|
||||
this.pnlMessage.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlMessage.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||
this.pnlMessage.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(235)))), ((int)(((byte)(255)))));
|
||||
this.pnlMessage.TabIndex = 188;
|
||||
this.pnlMessage.Text = "有新消息";
|
||||
this.pnlMessage.Click += new System.EventHandler(this.pnlMessage_Click);
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.White;
|
||||
this.panel2.Controls.Add(this.pnlMessage);
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel2.Location = new System.Drawing.Point(1, 33);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Padding = new System.Windows.Forms.Padding(8);
|
||||
this.panel2.Size = new System.Drawing.Size(254, 110);
|
||||
this.panel2.TabIndex = 189;
|
||||
//
|
||||
// ChatMessageForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(256, 144);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.ShowMinimizedBox = true;
|
||||
this.Name = "ChatMessageForm";
|
||||
this.Text = "新消息";
|
||||
this.TitleText = "新消息";
|
||||
this.Controls.SetChildIndex(this.panel2, 0);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Timer timer1;
|
||||
private DevComponents.DotNetBar.PanelEx pnlMessage;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.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;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.ChatForms
|
||||
{
|
||||
public partial class ChatMessageForm : LRBaseForm
|
||||
{
|
||||
public DouShopLoginInfo shop;
|
||||
public ChatForm cf;
|
||||
public ChatMessageForm(DouShopLoginInfo _shop, ChatForm _cf)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.shop = _shop;
|
||||
this.cf = _cf;
|
||||
this.Load += ChatMessageForm_Load;
|
||||
this.FormClosed += ChatMessageForm_FormClosed;
|
||||
this.TopMost = true;
|
||||
}
|
||||
|
||||
private void ChatMessageForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
ChatForm.lstChatMessageForm.Remove(this);
|
||||
}
|
||||
|
||||
private void ChatMessageForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (shop != null)
|
||||
{
|
||||
this.pnlMessage.Text = "店铺" + shop.ShopAccount + "有新消息\r\n点击查看";
|
||||
}
|
||||
var height = this.Height;
|
||||
Task.Run(() =>
|
||||
{
|
||||
for (int i = 0; i < height; i++)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
Point p = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height);
|
||||
this.Location = new Point(p.X, p.Y - i);
|
||||
}));
|
||||
Thread.Sleep(5);
|
||||
}
|
||||
//Thread.Sleep(2000);
|
||||
//var _opacity = 1.0;
|
||||
//while (_opacity > 0)
|
||||
//{
|
||||
// _opacity -= 0.02;
|
||||
// Invoke(new Action(() =>
|
||||
// {
|
||||
// this.Opacity = _opacity;
|
||||
// if (this.Opacity <= 0)
|
||||
// this.Close();
|
||||
// }));
|
||||
// Thread.Sleep(100);
|
||||
//}
|
||||
});
|
||||
}
|
||||
|
||||
private void pnlMessage_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cf != null)
|
||||
{
|
||||
cf.TopMost = true;
|
||||
cf.DgvShopClick(shop);
|
||||
Task.Run(() =>
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.TopMost = false;
|
||||
cf.TopMost = false;
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,301 @@
|
||||
<?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="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAgIAQeQAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
|
||||
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>
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LittleRabbit.ChatForms.ChatModel
|
||||
{
|
||||
public class ChatSettingsParam
|
||||
{
|
||||
public bool IsAutoReLogin { get; set; } = false;
|
||||
public bool IsAutoReply { get; set; } = false;
|
||||
public bool IsNotShowMessageWindow { get; set; } = false;
|
||||
public string MessageSound { get; set; } = "默认提示音";
|
||||
public string AutoReplayText { get; set; } = "您好";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace LittleRabbit
|
||||
{
|
||||
public class CookieVisitor : CefSharp.ICookieVisitor
|
||||
{
|
||||
public event Action<CefSharp.Cookie> SendCookie;
|
||||
public bool Visit(CefSharp.Cookie cookie, int count, int total, ref bool deleteCookie)
|
||||
{
|
||||
deleteCookie = false;
|
||||
if (SendCookie != null)
|
||||
{
|
||||
SendCookie(cookie);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
+571
@@ -0,0 +1,571 @@
|
||||
namespace LittleRabbit.DashBoardForms
|
||||
{
|
||||
partial class DashBoardForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.pnlBanner = new DevComponents.DotNetBar.PanelEx();
|
||||
this.txtChatWords = new System.Windows.Forms.TextBox();
|
||||
this.rbChat = new System.Windows.Forms.RadioButton();
|
||||
this.rbInvite = new System.Windows.Forms.RadioButton();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.btnSend = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.pnlDetailForm = new DevComponents.DotNetBar.PanelEx();
|
||||
this.pnlMainForm = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnLoginDouyin = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.cmbShop = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.txtSuccessCount = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtInterval = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtTotalPage = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtCurrentPage = new System.Windows.Forms.TextBox();
|
||||
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||
this.max = new DevComponents.DotNetBar.PanelEx();
|
||||
this.min = new DevComponents.DotNetBar.PanelEx();
|
||||
this.close = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.line1 = new DevComponents.DotNetBar.Controls.Line();
|
||||
this.line2 = new DevComponents.DotNetBar.Controls.Line();
|
||||
this.line3 = new DevComponents.DotNetBar.Controls.Line();
|
||||
this.line4 = new DevComponents.DotNetBar.Controls.Line();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.pnlBanner.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// 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(2, 2);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.pnlBanner);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1196, 676);
|
||||
this.splitContainer1.SplitterDistance = 66;
|
||||
this.splitContainer1.SplitterWidth = 1;
|
||||
this.splitContainer1.TabIndex = 1;
|
||||
//
|
||||
// pnlBanner
|
||||
//
|
||||
this.pnlBanner.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.pnlBanner.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlBanner.Controls.Add(this.txtChatWords);
|
||||
this.pnlBanner.Controls.Add(this.rbChat);
|
||||
this.pnlBanner.Controls.Add(this.rbInvite);
|
||||
this.pnlBanner.Controls.Add(this.label7);
|
||||
this.pnlBanner.Controls.Add(this.btnSend);
|
||||
this.pnlBanner.Controls.Add(this.pnlDetailForm);
|
||||
this.pnlBanner.Controls.Add(this.pnlMainForm);
|
||||
this.pnlBanner.Controls.Add(this.btnLoginDouyin);
|
||||
this.pnlBanner.Controls.Add(this.cmbShop);
|
||||
this.pnlBanner.Controls.Add(this.label5);
|
||||
this.pnlBanner.Controls.Add(this.txtSuccessCount);
|
||||
this.pnlBanner.Controls.Add(this.label4);
|
||||
this.pnlBanner.Controls.Add(this.label3);
|
||||
this.pnlBanner.Controls.Add(this.txtInterval);
|
||||
this.pnlBanner.Controls.Add(this.label2);
|
||||
this.pnlBanner.Controls.Add(this.txtTotalPage);
|
||||
this.pnlBanner.Controls.Add(this.label1);
|
||||
this.pnlBanner.Controls.Add(this.txtCurrentPage);
|
||||
this.pnlBanner.Controls.Add(this.textBox3);
|
||||
this.pnlBanner.Controls.Add(this.max);
|
||||
this.pnlBanner.Controls.Add(this.min);
|
||||
this.pnlBanner.Controls.Add(this.close);
|
||||
this.pnlBanner.Controls.Add(this.label6);
|
||||
this.pnlBanner.Controls.Add(this.line1);
|
||||
this.pnlBanner.Controls.Add(this.line2);
|
||||
this.pnlBanner.Controls.Add(this.line3);
|
||||
this.pnlBanner.Controls.Add(this.line4);
|
||||
this.pnlBanner.Controls.Add(this.label8);
|
||||
this.pnlBanner.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlBanner.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlBanner.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlBanner.Name = "pnlBanner";
|
||||
this.pnlBanner.Size = new System.Drawing.Size(1196, 66);
|
||||
this.pnlBanner.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlBanner.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlBanner.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlBanner.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.pnlBanner.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.pnlBanner.Style.BorderWidth = 0;
|
||||
this.pnlBanner.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.pnlBanner.Style.GradientAngle = 90;
|
||||
this.pnlBanner.TabIndex = 0;
|
||||
this.pnlBanner.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.pnlBanner_MouseDoubleClick);
|
||||
this.pnlBanner.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pnlBanner_MouseDown);
|
||||
this.pnlBanner.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pnlBanner_MouseMove);
|
||||
this.pnlBanner.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pnlBanner_MouseUp);
|
||||
//
|
||||
// txtChatWords
|
||||
//
|
||||
this.txtChatWords.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtChatWords.Location = new System.Drawing.Point(524, 26);
|
||||
this.txtChatWords.Name = "txtChatWords";
|
||||
this.txtChatWords.Size = new System.Drawing.Size(588, 21);
|
||||
this.txtChatWords.TabIndex = 405;
|
||||
this.txtChatWords.Visible = false;
|
||||
this.txtChatWords.TextChanged += new System.EventHandler(this.txtChatWords_TextChanged);
|
||||
//
|
||||
// rbChat
|
||||
//
|
||||
this.rbChat.AutoSize = true;
|
||||
this.rbChat.ForeColor = System.Drawing.Color.White;
|
||||
this.rbChat.Location = new System.Drawing.Point(364, 28);
|
||||
this.rbChat.Name = "rbChat";
|
||||
this.rbChat.Size = new System.Drawing.Size(71, 16);
|
||||
this.rbChat.TabIndex = 404;
|
||||
this.rbChat.Text = "在线沟通";
|
||||
this.rbChat.UseVisualStyleBackColor = true;
|
||||
this.rbChat.Visible = false;
|
||||
this.rbChat.CheckedChanged += new System.EventHandler(this.rbChat_CheckedChanged);
|
||||
//
|
||||
// rbInvite
|
||||
//
|
||||
this.rbInvite.AutoSize = true;
|
||||
this.rbInvite.ForeColor = System.Drawing.Color.White;
|
||||
this.rbInvite.Location = new System.Drawing.Point(287, 28);
|
||||
this.rbInvite.Name = "rbInvite";
|
||||
this.rbInvite.Size = new System.Drawing.Size(71, 16);
|
||||
this.rbInvite.TabIndex = 403;
|
||||
this.rbInvite.Text = "发送邀约";
|
||||
this.rbInvite.UseVisualStyleBackColor = true;
|
||||
this.rbInvite.Visible = false;
|
||||
this.rbInvite.CheckedChanged += new System.EventHandler(this.rbInvite_CheckedChanged);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.ForeColor = System.Drawing.Color.White;
|
||||
this.label7.Location = new System.Drawing.Point(227, 30);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(53, 12);
|
||||
this.label7.TabIndex = 402;
|
||||
this.label7.Text = "邀请方式";
|
||||
this.label7.Visible = false;
|
||||
//
|
||||
// btnSend
|
||||
//
|
||||
this.btnSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSend.BackColor = System.Drawing.Color.NavajoWhite;
|
||||
this.btnSend.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSend.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.btnSend.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSend.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||
this.btnSend.Location = new System.Drawing.Point(1046, 2);
|
||||
this.btnSend.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.btnSend.Name = "btnSend";
|
||||
this.btnSend.Size = new System.Drawing.Size(66, 21);
|
||||
this.btnSend.TabIndex = 386;
|
||||
this.btnSend.Text = "开始邀约";
|
||||
this.btnSend.UseCompatibleTextRendering = true;
|
||||
this.btnSend.UseVisualStyleBackColor = false;
|
||||
this.btnSend.Click += new System.EventHandler(this.btnSend_Click);
|
||||
//
|
||||
// pnlDetailForm
|
||||
//
|
||||
this.pnlDetailForm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.pnlDetailForm.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.pnlDetailForm.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlDetailForm.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlDetailForm.Location = new System.Drawing.Point(77, 44);
|
||||
this.pnlDetailForm.Name = "pnlDetailForm";
|
||||
this.pnlDetailForm.Size = new System.Drawing.Size(76, 26);
|
||||
this.pnlDetailForm.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlDetailForm.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(175)))), ((int)(((byte)(210)))), ((int)(((byte)(255)))));
|
||||
this.pnlDetailForm.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(175)))), ((int)(((byte)(210)))), ((int)(((byte)(255)))));
|
||||
this.pnlDetailForm.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.pnlDetailForm.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.pnlDetailForm.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.pnlDetailForm.Style.GradientAngle = 90;
|
||||
this.pnlDetailForm.TabIndex = 382;
|
||||
this.pnlDetailForm.Text = "详情";
|
||||
this.pnlDetailForm.Visible = false;
|
||||
this.pnlDetailForm.Click += new System.EventHandler(this.btnDetailForm_Click);
|
||||
//
|
||||
// pnlMainForm
|
||||
//
|
||||
this.pnlMainForm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.pnlMainForm.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.pnlMainForm.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlMainForm.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlMainForm.Location = new System.Drawing.Point(2, 42);
|
||||
this.pnlMainForm.Name = "pnlMainForm";
|
||||
this.pnlMainForm.Size = new System.Drawing.Size(76, 26);
|
||||
this.pnlMainForm.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlMainForm.Style.BackColor1.Color = System.Drawing.Color.White;
|
||||
this.pnlMainForm.Style.BackColor2.Color = System.Drawing.Color.White;
|
||||
this.pnlMainForm.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.pnlMainForm.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.pnlMainForm.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.pnlMainForm.Style.GradientAngle = 90;
|
||||
this.pnlMainForm.TabIndex = 375;
|
||||
this.pnlMainForm.Text = "主页";
|
||||
this.pnlMainForm.Click += new System.EventHandler(this.btnMainForm_Click);
|
||||
//
|
||||
// btnLoginDouyin
|
||||
//
|
||||
this.btnLoginDouyin.BackColor = System.Drawing.Color.White;
|
||||
this.btnLoginDouyin.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnLoginDouyin.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.btnLoginDouyin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnLoginDouyin.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnLoginDouyin.Location = new System.Drawing.Point(159, 2);
|
||||
this.btnLoginDouyin.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.btnLoginDouyin.Name = "btnLoginDouyin";
|
||||
this.btnLoginDouyin.Size = new System.Drawing.Size(66, 21);
|
||||
this.btnLoginDouyin.TabIndex = 374;
|
||||
this.btnLoginDouyin.Text = "登录抖音";
|
||||
this.btnLoginDouyin.UseCompatibleTextRendering = true;
|
||||
this.btnLoginDouyin.UseVisualStyleBackColor = false;
|
||||
this.btnLoginDouyin.Click += new System.EventHandler(this.btnLoginDouyin_Click);
|
||||
//
|
||||
// cmbShop
|
||||
//
|
||||
this.cmbShop.DisplayMember = "Text";
|
||||
this.cmbShop.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbShop.FormattingEnabled = true;
|
||||
this.cmbShop.ItemHeight = 15;
|
||||
this.cmbShop.Location = new System.Drawing.Point(2, 2);
|
||||
this.cmbShop.Name = "cmbShop";
|
||||
this.cmbShop.Size = new System.Drawing.Size(156, 21);
|
||||
this.cmbShop.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2003;
|
||||
this.cmbShop.TabIndex = 76;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.ForeColor = System.Drawing.Color.White;
|
||||
this.label5.Location = new System.Drawing.Point(572, 6);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(65, 12);
|
||||
this.label5.TabIndex = 66;
|
||||
this.label5.Text = "邀约成功数";
|
||||
//
|
||||
// txtSuccessCount
|
||||
//
|
||||
this.txtSuccessCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtSuccessCount.Enabled = false;
|
||||
this.txtSuccessCount.Location = new System.Drawing.Point(638, 2);
|
||||
this.txtSuccessCount.Name = "txtSuccessCount";
|
||||
this.txtSuccessCount.Size = new System.Drawing.Size(33, 21);
|
||||
this.txtSuccessCount.TabIndex = 65;
|
||||
this.txtSuccessCount.Text = "0";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.ForeColor = System.Drawing.Color.White;
|
||||
this.label4.Location = new System.Drawing.Point(773, 6);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(17, 12);
|
||||
this.label4.TabIndex = 64;
|
||||
this.label4.Text = "秒";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.ForeColor = System.Drawing.Color.White;
|
||||
this.label3.Location = new System.Drawing.Point(683, 6);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(53, 12);
|
||||
this.label3.TabIndex = 63;
|
||||
this.label3.Text = "邀约间隔";
|
||||
//
|
||||
// txtInterval
|
||||
//
|
||||
this.txtInterval.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtInterval.Location = new System.Drawing.Point(738, 2);
|
||||
this.txtInterval.Name = "txtInterval";
|
||||
this.txtInterval.Size = new System.Drawing.Size(33, 21);
|
||||
this.txtInterval.TabIndex = 62;
|
||||
this.txtInterval.Text = "10";
|
||||
this.txtInterval.TextChanged += new System.EventHandler(this.txtInterval_TextChanged);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.ForeColor = System.Drawing.Color.White;
|
||||
this.label2.Location = new System.Drawing.Point(799, 6);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(77, 12);
|
||||
this.label2.TabIndex = 61;
|
||||
this.label2.Text = "预计邀约页数";
|
||||
//
|
||||
// txtTotalPage
|
||||
//
|
||||
this.txtTotalPage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtTotalPage.Location = new System.Drawing.Point(878, 2);
|
||||
this.txtTotalPage.Name = "txtTotalPage";
|
||||
this.txtTotalPage.Size = new System.Drawing.Size(33, 21);
|
||||
this.txtTotalPage.TabIndex = 60;
|
||||
this.txtTotalPage.Text = "10";
|
||||
this.txtTotalPage.TextChanged += new System.EventHandler(this.txtTotalPage_TextChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.Location = new System.Drawing.Point(922, 6);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(65, 12);
|
||||
this.label1.TabIndex = 59;
|
||||
this.label1.Text = "当前邀约第";
|
||||
//
|
||||
// txtCurrentPage
|
||||
//
|
||||
this.txtCurrentPage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtCurrentPage.Enabled = false;
|
||||
this.txtCurrentPage.Location = new System.Drawing.Point(989, 2);
|
||||
this.txtCurrentPage.Name = "txtCurrentPage";
|
||||
this.txtCurrentPage.Size = new System.Drawing.Size(33, 21);
|
||||
this.txtCurrentPage.TabIndex = 58;
|
||||
this.txtCurrentPage.Text = "1";
|
||||
//
|
||||
// textBox3
|
||||
//
|
||||
this.textBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox3.Location = new System.Drawing.Point(229, 2);
|
||||
this.textBox3.Name = "textBox3";
|
||||
this.textBox3.Size = new System.Drawing.Size(332, 21);
|
||||
this.textBox3.TabIndex = 36;
|
||||
this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown);
|
||||
//
|
||||
// max
|
||||
//
|
||||
this.max.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.max.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.max.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.max.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.max.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.max.Location = new System.Drawing.Point(1149, 4);
|
||||
this.max.Name = "max";
|
||||
this.max.Size = new System.Drawing.Size(16, 16);
|
||||
this.max.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.max.Style.BackColor1.Alpha = ((byte)(0));
|
||||
this.max.Style.BackColor1.Color = System.Drawing.Color.Transparent;
|
||||
this.max.Style.BackColor2.Alpha = ((byte)(0));
|
||||
this.max.Style.BackColor2.Color = System.Drawing.Color.Transparent;
|
||||
this.max.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.max;
|
||||
this.max.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.max.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.max.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.max.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.max.Style.GradientAngle = 90;
|
||||
this.max.StyleMouseOver.BackgroundImage = global::LittleRabbit.Properties.Resources.max_hover;
|
||||
this.max.TabIndex = 22;
|
||||
this.max.Click += new System.EventHandler(this.max_Click);
|
||||
//
|
||||
// min
|
||||
//
|
||||
this.min.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.min.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.min.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.min.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.min.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.min.Location = new System.Drawing.Point(1123, 4);
|
||||
this.min.Name = "min";
|
||||
this.min.Size = new System.Drawing.Size(16, 16);
|
||||
this.min.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.min.Style.BackColor1.Alpha = ((byte)(0));
|
||||
this.min.Style.BackColor1.Color = System.Drawing.Color.Transparent;
|
||||
this.min.Style.BackColor2.Alpha = ((byte)(0));
|
||||
this.min.Style.BackColor2.Color = System.Drawing.Color.Transparent;
|
||||
this.min.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.min;
|
||||
this.min.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.min.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.min.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.min.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.min.Style.GradientAngle = 90;
|
||||
this.min.StyleMouseOver.BackgroundImage = global::LittleRabbit.Properties.Resources.min_hover;
|
||||
this.min.TabIndex = 21;
|
||||
this.min.Click += new System.EventHandler(this.min_Click);
|
||||
//
|
||||
// close
|
||||
//
|
||||
this.close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.close.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.close.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.close.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.close.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.close.Location = new System.Drawing.Point(1175, 4);
|
||||
this.close.Name = "close";
|
||||
this.close.Size = new System.Drawing.Size(16, 16);
|
||||
this.close.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.close.Style.BackColor1.Alpha = ((byte)(0));
|
||||
this.close.Style.BackColor1.Color = System.Drawing.Color.Transparent;
|
||||
this.close.Style.BackColor2.Alpha = ((byte)(0));
|
||||
this.close.Style.BackColor2.Color = System.Drawing.Color.Transparent;
|
||||
this.close.Style.BackgroundImage = global::LittleRabbit.Properties.Resources.close;
|
||||
this.close.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.close.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.close.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.close.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.close.Style.GradientAngle = 90;
|
||||
this.close.StyleMouseOver.BackgroundImage = global::LittleRabbit.Properties.Resources.close_hover;
|
||||
this.close.TabIndex = 20;
|
||||
this.close.Click += new System.EventHandler(this.close_Click);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.ForeColor = System.Drawing.Color.White;
|
||||
this.label6.Location = new System.Drawing.Point(1024, 6);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(17, 12);
|
||||
this.label6.TabIndex = 383;
|
||||
this.label6.Text = "页";
|
||||
//
|
||||
// line1
|
||||
//
|
||||
this.line1.ForeColor = System.Drawing.Color.White;
|
||||
this.line1.Location = new System.Drawing.Point(545, 2);
|
||||
this.line1.Name = "line1";
|
||||
this.line1.Size = new System.Drawing.Size(48, 21);
|
||||
this.line1.TabIndex = 387;
|
||||
this.line1.Text = "line1";
|
||||
this.line1.VerticalLine = true;
|
||||
//
|
||||
// line2
|
||||
//
|
||||
this.line2.ForeColor = System.Drawing.Color.White;
|
||||
this.line2.Location = new System.Drawing.Point(656, 2);
|
||||
this.line2.Name = "line2";
|
||||
this.line2.Size = new System.Drawing.Size(48, 21);
|
||||
this.line2.TabIndex = 388;
|
||||
this.line2.Text = "line2";
|
||||
this.line2.VerticalLine = true;
|
||||
//
|
||||
// line3
|
||||
//
|
||||
this.line3.ForeColor = System.Drawing.Color.White;
|
||||
this.line3.Location = new System.Drawing.Point(772, 2);
|
||||
this.line3.Name = "line3";
|
||||
this.line3.Size = new System.Drawing.Size(48, 21);
|
||||
this.line3.TabIndex = 389;
|
||||
this.line3.Text = "line3";
|
||||
this.line3.VerticalLine = true;
|
||||
//
|
||||
// line4
|
||||
//
|
||||
this.line4.ForeColor = System.Drawing.Color.White;
|
||||
this.line4.Location = new System.Drawing.Point(895, 2);
|
||||
this.line4.Name = "line4";
|
||||
this.line4.Size = new System.Drawing.Size(48, 21);
|
||||
this.line4.TabIndex = 390;
|
||||
this.line4.Text = "line4";
|
||||
this.line4.VerticalLine = true;
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.ForeColor = System.Drawing.Color.White;
|
||||
this.label8.Location = new System.Drawing.Point(442, 30);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(89, 12);
|
||||
this.label8.TabIndex = 406;
|
||||
this.label8.Text = "沟通内容发送:";
|
||||
this.label8.Visible = false;
|
||||
//
|
||||
// DashBoardForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ClientSize = new System.Drawing.Size(1200, 680);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "DashBoardForm";
|
||||
this.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "DashBoardForm";
|
||||
this.Load += new System.EventHandler(this.DashBoardForm_Load);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.pnlBanner.ResumeLayout(false);
|
||||
this.pnlBanner.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private DevComponents.DotNetBar.PanelEx pnlBanner;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.TextBox txtSuccessCount;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txtInterval;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox txtTotalPage;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox txtCurrentPage;
|
||||
private System.Windows.Forms.TextBox textBox3;
|
||||
private DevComponents.DotNetBar.PanelEx max;
|
||||
private DevComponents.DotNetBar.PanelEx min;
|
||||
private DevComponents.DotNetBar.PanelEx close;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbShop;
|
||||
private DevComponents.DotNetBar.PanelEx pnlMainForm;
|
||||
private DevComponents.DotNetBar.PanelEx pnlDetailForm;
|
||||
private UserControls.ButtonEx btnSend;
|
||||
private UserControls.ButtonEx btnLoginDouyin;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private DevComponents.DotNetBar.Controls.Line line1;
|
||||
private DevComponents.DotNetBar.Controls.Line line2;
|
||||
private DevComponents.DotNetBar.Controls.Line line3;
|
||||
private DevComponents.DotNetBar.Controls.Line line4;
|
||||
private System.Windows.Forms.TextBox txtChatWords;
|
||||
private System.Windows.Forms.RadioButton rbChat;
|
||||
private System.Windows.Forms.RadioButton rbInvite;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,828 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using CefSharp;
|
||||
using CefSharp.WinForms;
|
||||
using LittleRabbit.Helper;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.CefHelper;
|
||||
using NaiBa.Util;
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.DashBoardForms
|
||||
{
|
||||
public partial class DashBoardForm : Form
|
||||
{
|
||||
public enum InviteTypeEnum
|
||||
{
|
||||
Invite,
|
||||
Chat,
|
||||
}
|
||||
|
||||
public class DaRenSettings
|
||||
{
|
||||
/// <summary>
|
||||
/// 要采集的总页码数量
|
||||
/// </summary>
|
||||
public int TotalPage { get; set; } = 10;
|
||||
/// <summary>
|
||||
/// 发送邀约操作操作间隔时间
|
||||
/// </summary>
|
||||
public int Interval { get; set; } = 10;
|
||||
/// <summary>
|
||||
/// 翻页操作间隔时间
|
||||
/// </summary>
|
||||
public int PageInterval { get; set; } = 10;
|
||||
public string ChatWords { get; set; } = "老板您好!";
|
||||
public InviteTypeEnum InviteType { get; set; } = InviteTypeEnum.Invite;
|
||||
}
|
||||
|
||||
private Point mouseOffset; // 记录鼠标指针的坐标
|
||||
private bool isMouseDown; // 记录鼠标左键是否按下
|
||||
|
||||
private ChromiumWebBrowser cefWebBrowser = null;
|
||||
private ChromiumWebBrowser cefWebBrowserDetail = null;
|
||||
private DaRenSettings drSetting;
|
||||
private bool IsOpenDaRenPage = false;
|
||||
|
||||
public DashBoardForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
|
||||
}
|
||||
|
||||
private void DashBoardForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (BaseClass.Ico != null)
|
||||
this.Icon = BaseClass.Ico;
|
||||
|
||||
this.WindowState = FormWindowState.Maximized;
|
||||
max.Style.BackgroundImage = Properties.Resources.normal;
|
||||
max.StyleMouseOver.BackgroundImage = Properties.Resources.normal_hover;
|
||||
this.Padding = new Padding(2);
|
||||
|
||||
this.drSetting = NaiBa.Util.Helper.ConfigHelper.LoadConfig<DaRenSettings>("daren_settings");
|
||||
if (drSetting == null)
|
||||
drSetting = new DaRenSettings();
|
||||
|
||||
this.txtChatWords.Text = drSetting.ChatWords;
|
||||
this.txtInterval.Text = drSetting.Interval.ToString();
|
||||
this.txtTotalPage.Text = drSetting.TotalPage.ToString();
|
||||
this.rbInvite.CheckedChanged -= rbInvite_CheckedChanged;
|
||||
this.rbChat.CheckedChanged -= rbChat_CheckedChanged;
|
||||
if (drSetting.InviteType == InviteTypeEnum.Invite)
|
||||
this.rbInvite.Checked = true;
|
||||
else
|
||||
this.rbChat.Checked = true;
|
||||
this.rbInvite.CheckedChanged += rbInvite_CheckedChanged;
|
||||
this.rbChat.CheckedChanged += rbChat_CheckedChanged;
|
||||
rbInvite.Checked = true;
|
||||
|
||||
for (int i = 0; i < GlobalConfig.DouShopLoginList.Count; i++)
|
||||
{
|
||||
var shop = GlobalConfig.DouShopLoginList[i];
|
||||
this.cmbShop.Items.Add(shop.ShopAccount);
|
||||
}
|
||||
this.cmbShop.SelectedIndex = 0;
|
||||
|
||||
string cookie = "";
|
||||
if (GlobalConfig.DouShopLoginList.Count > 0)
|
||||
{
|
||||
cookie = GlobalConfig.DouShopLoginList[0].Cookies;
|
||||
}
|
||||
InitCef(cookie);
|
||||
}
|
||||
|
||||
private void close_Click(object sender, EventArgs e)
|
||||
{
|
||||
{
|
||||
if (BaseMsgForm.ShowConfirm("是否关闭客户端?", "系统提示", FormLevel.SMALL).DialogResult.Equals(DialogResult.Cancel))
|
||||
return;
|
||||
else
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
}
|
||||
|
||||
private void max_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (WindowState.Equals(FormWindowState.Normal))
|
||||
{
|
||||
WindowState = FormWindowState.Maximized;
|
||||
max.Style.BackgroundImage = Properties.Resources.normal;
|
||||
max.StyleMouseOver.BackgroundImage = Properties.Resources.normal_hover;
|
||||
this.Padding = new Padding(0);
|
||||
}
|
||||
else if (WindowState.Equals(FormWindowState.Maximized))
|
||||
{
|
||||
WindowState = FormWindowState.Normal;
|
||||
max.Style.BackgroundImage = Properties.Resources.max;
|
||||
max.StyleMouseOver.BackgroundImage = Properties.Resources.max_hover;
|
||||
this.Padding = new Padding(1);
|
||||
}
|
||||
}
|
||||
|
||||
private void min_Click(object sender, EventArgs e)
|
||||
{
|
||||
WindowState = FormWindowState.Minimized;
|
||||
ShowInTaskbar = true;
|
||||
}
|
||||
private void pnlBanner_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
max_Click(null, null);
|
||||
}
|
||||
|
||||
private void pnlBanner_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
mouseOffset = new Point(-e.X, -e.Y);
|
||||
isMouseDown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void pnlBanner_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (isMouseDown)
|
||||
{
|
||||
//获取鼠标的位置
|
||||
Point mousePos = MousePosition;
|
||||
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
|
||||
Location = mousePos;
|
||||
}
|
||||
}
|
||||
|
||||
private void pnlBanner_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
isMouseDown = false;
|
||||
}
|
||||
|
||||
void InitCef(string cookie = "")
|
||||
{
|
||||
string mainUrl = "https://fxg.jinritemai.com/ffa/mshop/homepage/index";
|
||||
//mainUrl = "https://buyin.jinritemai.com/mpa/account/roles-select?target_url=/dashboard/servicehall/daren-square";
|
||||
string darenUrl = "https://buyin.jinritemai.com/dashboard/servicehall/daren-square";
|
||||
// GlobalConfig.DouUserCookies;
|
||||
if (cefWebBrowser == null)
|
||||
{
|
||||
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", true);
|
||||
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
|
||||
lifeSapnHandler.OnPop += LifeSapnHandler_OnPop;
|
||||
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
|
||||
cefWebBrowser.KeyboardHandler = new NaiBa.CefHelper.Handler.KeyboardHandler();
|
||||
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
|
||||
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
|
||||
cefWebBrowser.Dock = DockStyle.Fill;
|
||||
|
||||
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowser.RequestContext.GetCookieManager(null));
|
||||
var cookieManager = Cef.GetGlobalCookieManager();
|
||||
//cookieManager.SetStoragePath(Environment.CurrentDirectory, true);
|
||||
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cookieManager);
|
||||
|
||||
splitContainer1.Panel2.Controls.Add(cefWebBrowser);
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Thread.Sleep(15000);
|
||||
|
||||
//var jsCode = "window.localStorage;";
|
||||
//var task = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
||||
//task.Wait(5000);
|
||||
//var result = task.Result.Result;
|
||||
//var dic = result as IDictionary<string, object>;
|
||||
//GlobalConfig.dicLocalStorage = dic;
|
||||
//StartUp.SaveDouLocalStorage();
|
||||
}
|
||||
});
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
do
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
while (cefWebBrowser == null || !cefWebBrowser.IsBrowserInitialized || cefWebBrowser.IsLoading);
|
||||
|
||||
var jsCode = "";
|
||||
if (GlobalConfig.dicLocalStorage != null)
|
||||
{
|
||||
foreach (var key in GlobalConfig.dicLocalStorage.Keys)
|
||||
{
|
||||
if (GlobalConfig.dicLocalStorage[key] is string)
|
||||
{
|
||||
jsCode += "localStorage.setItem('" + key + "', '" + GlobalConfig.dicLocalStorage[key] + "');\r\n";
|
||||
}
|
||||
}
|
||||
var ta0 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
ta0.Wait(5000);
|
||||
}
|
||||
|
||||
cefWebBrowser.Load("https://fxg.jinritemai.com/ffa/mshop/homepage/index");
|
||||
do
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
while (cefWebBrowser.IsLoading);
|
||||
Thread.Sleep(AllBase.Randomx.GetId(5000, 6000));
|
||||
|
||||
var jsStr = clickJsElementStr + "getElement('精选联盟').click();";
|
||||
var ta2 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
|
||||
ta2.Wait(8000);
|
||||
do
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
while (cefWebBrowser.IsLoading);
|
||||
Thread.Sleep(AllBase.Randomx.GetId(2000, 3000));
|
||||
|
||||
retry:
|
||||
jsStr = "window.location.href='" + darenUrl + "';";
|
||||
var ta3 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
|
||||
ta3.Wait(8000);
|
||||
do
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
while (cefWebBrowser.IsLoading);
|
||||
Thread.Sleep(AllBase.Randomx.GetId(4000, 5000));
|
||||
|
||||
jsStr = clickJsElementStr +
|
||||
"function clickBtn(txt) {\r\n" +
|
||||
" if (document.body.innerHTML.indexOf('加载失败') >= 0)\r\n" +
|
||||
" return '加载失败';\r\n" +
|
||||
" return 'ok';\r\n" +
|
||||
"}\r\n" +
|
||||
"clickBtn('添加商品');\r\n";
|
||||
var ta4 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
|
||||
ta4.Wait();
|
||||
if (ta4.Result?.Result?.ToString() == "加载失败" || ta4.Result?.Result?.ToString() == null)
|
||||
goto retry;
|
||||
|
||||
var sleepTime = 2500;
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
Thread.Sleep(sleepTime);
|
||||
var jsStr1 =
|
||||
"function ClosePopWindow(txt) {\r\n" +
|
||||
" var result = 'no_pop'\r\n" +
|
||||
" var item = document.getElementsByClassName(txt);\r\n" +
|
||||
" if (document.body.innerHTML.indexOf('重要消息') < 0) return result;\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 && element1.innerHTML === txt) {\r\n"
|
||||
+ " element1.click(); return 'success';\r\n"
|
||||
+ " } else return 'no_pop';\r\n"
|
||||
+ "}\r\n"
|
||||
//+ "clickPopWindow('我知道了');\r\n"
|
||||
+ "clickPopWindow('知道了');\r\n"
|
||||
+ "clickPopWindow('完 成');\r\n"
|
||||
+ "clickPopWindow('下一个');\r\n";
|
||||
var success1 = false;
|
||||
if (cefWebBrowser.IsBrowserInitialized && !cefWebBrowser.IsLoading)
|
||||
{
|
||||
var t1 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr1);
|
||||
t1.Wait(1000);
|
||||
var t2 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr2);
|
||||
t2.Wait(1000);
|
||||
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
|
||||
success1 = true;
|
||||
else
|
||||
success1 = false;
|
||||
}
|
||||
var success2 = false;
|
||||
if (cefWebBrowserDetail != null && cefWebBrowserDetail.IsBrowserInitialized && !cefWebBrowserDetail.IsLoading)
|
||||
{
|
||||
var t1 = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsStr1);
|
||||
t1.Wait(1000);
|
||||
var t2 = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsStr2);
|
||||
t2.Wait(1000);
|
||||
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
|
||||
success2 = true;
|
||||
else
|
||||
success2 = false;
|
||||
}
|
||||
if (success1 || success2)
|
||||
{
|
||||
sleepTime = Randomx.GetId(550, 650);
|
||||
}
|
||||
else
|
||||
sleepTime = Randomx.GetId(1500, 2000);
|
||||
}
|
||||
catch (Exception ex) { }
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
//CEFBrowser.DeleteCookie(cefWebBrowser.RequestContext.GetCookieManager(null));
|
||||
CEFBrowser.DeleteCookie(Cef.GetGlobalCookieManager());
|
||||
|
||||
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowser.RequestContext.GetCookieManager(null));
|
||||
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, Cef.GetGlobalCookieManager());
|
||||
t.Wait(5000);
|
||||
|
||||
cefWebBrowser.Load(mainUrl);
|
||||
}
|
||||
}
|
||||
|
||||
private void LifeSapnHandler_OnPop(object sender, PopData e)
|
||||
{
|
||||
if (e.Url == "https://fxg.jinritemai.com/alliance/common/redirectBuyin?target_url=%2Fdashboard")
|
||||
{
|
||||
cefWebBrowser.Load(e.Url);
|
||||
return;
|
||||
}
|
||||
|
||||
string cookie = GlobalConfig.DouUserCookies;
|
||||
if (cefWebBrowserDetail == null)
|
||||
{
|
||||
//cefWebBrowserDetail = CEFBrowser.CreateChromiumWebBrowser(e.Url, false);
|
||||
cefWebBrowserDetail = CEFBrowser.CreateChromiumWebBrowser(e.Url);
|
||||
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
|
||||
lifeSapnHandler.OnPop += LifeSapnHandler_OnPop;
|
||||
cefWebBrowserDetail.LifeSpanHandler = lifeSapnHandler;
|
||||
cefWebBrowserDetail.KeyboardHandler = new NaiBa.CefHelper.Handler.KeyboardHandler();
|
||||
cefWebBrowserDetail.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
|
||||
cefWebBrowserDetail.AddressChanged += CefWebBrowser_AddressChanged;
|
||||
cefWebBrowserDetail.Dock = DockStyle.Fill;
|
||||
|
||||
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowserDetail.RequestContext.GetCookieManager(null));
|
||||
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, Cef.GetGlobalCookieManager());
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Thread.Sleep(15000);
|
||||
|
||||
//var jsCode = "window.localStorage;";
|
||||
//var task = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
||||
//task.Wait(5000);
|
||||
//var result = task.Result.Result;
|
||||
//var dic = result as IDictionary<string, object>;
|
||||
//GlobalConfig.dicLocalDetailStorage = dic;
|
||||
//StartUp.SaveDouLocalDetailStorage();
|
||||
}
|
||||
});
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
splitContainer1.Panel2.Controls.Add(cefWebBrowserDetail);
|
||||
btnDetailForm_Click(null, null);
|
||||
pnlDetailForm.Visible = true;
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
cefWebBrowserDetail.Load(e.Url);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
btnDetailForm_Click(null, null);
|
||||
}));
|
||||
}
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
for (int i = 0; i < 1000 && (cefWebBrowserDetail.IsBrowserInitialized == false || cefWebBrowserDetail.IsLoading); i++)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
|
||||
var jsCode = "";
|
||||
if (GlobalConfig.dicLocalDetailStorage != null)
|
||||
{
|
||||
foreach (var key in GlobalConfig.dicLocalDetailStorage.Keys)
|
||||
{
|
||||
if (GlobalConfig.dicLocalDetailStorage[key] is string)
|
||||
{
|
||||
jsCode += "localStorage.setItem('" + key + "', '" + GlobalConfig.dicLocalDetailStorage[key] + "');\r\n";
|
||||
}
|
||||
}
|
||||
cefWebBrowserDetail.GetBrowser().MainFrame.ExecuteJavaScriptAsync(jsCode);
|
||||
}
|
||||
|
||||
// 达人邀约
|
||||
if (drSetting.InviteType == InviteTypeEnum.Invite)
|
||||
{
|
||||
if (IsOpenDaRenPage)
|
||||
{
|
||||
while (cefWebBrowserDetail.IsLoading)
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
retry1:
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
jsCode = "function jsFunc1() {" +
|
||||
" if (document.body.innerHTML.indexOf('>待回复</span>') > 0 || document.body.innerHTML.indexOf('>已同意</span>') > 0) " +
|
||||
" return 'had';" +
|
||||
" if (document.getElementsByClassName('contact-btn-text text4').length > 0) {" +
|
||||
" document.getElementsByClassName('contact-btn-text text4')[0].click(); " +
|
||||
" return 'ok';" +
|
||||
" }" +
|
||||
" return document.body.innerHTML.indexOf('加载失败,请稍后重试') >= 0 ? 'error' : 'noBtn'; " +
|
||||
"} " +
|
||||
"jsFunc1();";
|
||||
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
t1.Wait(2000);
|
||||
if (t1.Result?.Result?.ToString() == "had")
|
||||
{
|
||||
IsOpenDaRenPage = false;
|
||||
return;
|
||||
}
|
||||
else if (t1.Result?.Result?.ToString() != "ok")
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(800, 1500));
|
||||
if (t1.Result?.Result?.ToString() == null || t1.Result?.Result?.ToString() == "error")
|
||||
{
|
||||
cefWebBrowserDetail.Reload();
|
||||
}
|
||||
goto retry1;
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
}
|
||||
if (IsOpenDaRenPage)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
jsCode = "function jsFx() {var btns = document.getElementsByClassName('ant-btn ant-btn-primary');" +
|
||||
" for (i = 0; i < btns.length; i++) " +
|
||||
" {" +
|
||||
" if (btns[i].innerHTML.indexOf('我知道了') > 0)" +
|
||||
" {" +
|
||||
" btns[i].click();" +
|
||||
" }" +
|
||||
" }" +
|
||||
"} jsFx();";
|
||||
var tx = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
tx.Wait(2000);
|
||||
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
retry2:
|
||||
Thread.Sleep(Randomx.GetId(1200, 2400));
|
||||
jsCode = "function jsFunc2() { document.getElementsByClassName('text4 add-product-last-operate')[0].click(); return 'ok'} jsFunc2();";
|
||||
var t2 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
t2.Wait(2000);
|
||||
if (t2.Result?.Result?.ToString() != "ok")
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(300, 500));
|
||||
goto retry2;
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
}
|
||||
if (IsOpenDaRenPage)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
jsCode = "function jsFunc3() {" +
|
||||
" var btns = document.getElementsByClassName('auxo-btn auxo-btn-primary');" +
|
||||
" for (i = 0; i < btns.length; i++) " +
|
||||
" {" +
|
||||
" if (btns[i].innerHTML.indexOf('发送邀约') > 0)" +
|
||||
" {" +
|
||||
" btns[i].click(); return 'ok';" +
|
||||
" }" +
|
||||
" }" +
|
||||
"} " +
|
||||
"jsFunc3();";
|
||||
var t3 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
t3.Wait(2000);
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.txtSuccessCount.Text = (Convert.ToInt32(this.txtSuccessCount.Text) + 1).ToString();
|
||||
}));
|
||||
IsOpenDaRenPage = false;
|
||||
}
|
||||
}
|
||||
// 在线沟通
|
||||
else
|
||||
{
|
||||
// 点击沟通按钮
|
||||
if (IsOpenDaRenPage)
|
||||
{
|
||||
chatRetry:
|
||||
while (cefWebBrowserDetail.IsLoading)
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
jsCode = "function jsFunc1() { " +
|
||||
" if (document.body.innerHTML.indexOf('>待回复</span>') > 0 || document.body.innerHTML.indexOf('>已同意</span>') > 0) {" +
|
||||
" return 'had';" +
|
||||
" }" +
|
||||
" var btns = document.getElementsByClassName('contact-btn-text text4');" +
|
||||
" for (i = 0; i < btns.length; i++) {" +
|
||||
" if (btns[i].innerHTML.indexOf('在线沟通') >= 0) {" +
|
||||
" btns[i].click(); return 'ok';" +
|
||||
" }" +
|
||||
" }" +
|
||||
" return document.body.innerHTML.indexOf('加载失败,请稍后重试') >= 0 ? 'error' : 'noBtn'; " +
|
||||
"}" +
|
||||
"jsFunc1();";
|
||||
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
t1.Wait(2000);
|
||||
if (t1.Result?.Result?.ToString() == "had")
|
||||
{
|
||||
IsOpenDaRenPage = false;
|
||||
return;
|
||||
}
|
||||
else if (t1.Result?.Result?.ToString() != "ok")
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(800, 1500));
|
||||
if (t1.Result?.Result?.ToString() == "error")
|
||||
{
|
||||
cefWebBrowserDetail.Reload();
|
||||
}
|
||||
goto chatRetry;
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
}
|
||||
|
||||
// 点击沟通对话框
|
||||
if (IsOpenDaRenPage)
|
||||
{
|
||||
chatRetry:
|
||||
while (cefWebBrowserDetail.IsLoading)
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
Thread.Sleep(2500);
|
||||
jsCode = "function jsFuncChat() {" +
|
||||
" if (document.getElementsByClassName('im-textarea text-area')[0]) {" +
|
||||
" var txt1 = document.getElementsByClassName('im-textarea text-area')[0];" +
|
||||
" txt1.focus(); txt1.click(); txt1.innerHTML = '" + drSetting.ChatWords + " ';" +
|
||||
" return 'ok';" +
|
||||
" }" +
|
||||
" return 'noBtn'" +
|
||||
"}" +
|
||||
"jsFuncChat();";
|
||||
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
t1.Wait(2000);
|
||||
if (t1.Result?.Result?.ToString() != "ok")
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(300, 500));
|
||||
if (t1.Result?.Result?.ToString() == null || t1.Result?.Result?.ToString() == "error")
|
||||
{
|
||||
//cefWebBrowserDetail.Reload();
|
||||
}
|
||||
goto chatRetry;
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(500, 800));
|
||||
|
||||
chatSendRetry:
|
||||
|
||||
var host = cefWebBrowserDetail.GetBrowser().GetHost();
|
||||
host.SendKeyEvent(new CefSharp.KeyEvent() { WindowsKeyCode = 8, Type = KeyEventType.RawKeyDown, Modifiers = CefEventFlags.None });
|
||||
Thread.Sleep(250 + new Random(DateTime.Now.Millisecond).Next(250));
|
||||
|
||||
while (cefWebBrowserDetail.IsLoading)
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
while (true)
|
||||
{
|
||||
break;
|
||||
}
|
||||
Thread.Sleep(2500);
|
||||
jsCode = "function jsFuncChatSend() { " +
|
||||
" document.getElementsByClassName('send-button')[0].click();" +
|
||||
" return 'ok';" +
|
||||
"}" +
|
||||
"jsFuncChatSend();";
|
||||
var t2 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
||||
t2.Wait(2000);
|
||||
if (t2.Result?.Result?.ToString() != "ok")
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(300, 500));
|
||||
if (t2.Result?.Result?.ToString() == null || t2.Result?.Result?.ToString() == "error")
|
||||
{
|
||||
//cefWebBrowserDetail.Reload();
|
||||
}
|
||||
goto chatSendRetry;
|
||||
}
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.txtSuccessCount.Text = (Convert.ToInt32(this.txtSuccessCount.Text) + 1).ToString();
|
||||
}));
|
||||
IsOpenDaRenPage = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
|
||||
{
|
||||
Invoke(new Action(() => { this.textBox3.Text = e.Address; }));
|
||||
if (e.Address.Contains("https://buyin.jinritemai.com/dashboard")) //https://fxg.jinritemai.com/ffa/mshop/homepage/index
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
//AllBase.Helper.GlobalConfig.DouUserCookies = CEFBrowser.GetCookie("", cefWebBrowser.RequestContext.GetCookieManager(null));
|
||||
GlobalConfig.DouUserCookies = CEFBrowser.GetCookie("jinritemai.com", Cef.GetGlobalCookieManager());
|
||||
StartUp.SaveDouUserCookies();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
//int totalPage = 10;
|
||||
int currentPage = 1;
|
||||
//int pageTimeInterval = 10; // 翻页间隔秒数
|
||||
private void btnSend_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.txtSuccessCount.Text = "0";
|
||||
Task.Run(() => { GetDaRen(); });
|
||||
}
|
||||
catch
|
||||
{
|
||||
BaseMsgForm.ShowError("请注意参数格式。");
|
||||
}
|
||||
}
|
||||
|
||||
void GetDaRen()
|
||||
{
|
||||
while (currentPage <= drSetting.TotalPage)
|
||||
{
|
||||
var html = GetCefHtml(cefWebBrowser);
|
||||
var items = BaseRegex.GetMatchRegex(ref html, "data-item-uid=\"([\\s\\S]+?)\"");
|
||||
List<string> daRenIdList = new List<string>();
|
||||
foreach (Match m in items)
|
||||
{
|
||||
daRenIdList.Add(m.Groups[1].ToString());
|
||||
}
|
||||
|
||||
var jsCode = "";
|
||||
for (int i = 0; i < daRenIdList.Count; i++)
|
||||
{
|
||||
Invoke(new Action(() => { btnMainForm_Click(null, null); }));
|
||||
jsCode = "document.getElementsByClassName('daren-card')[" + i + "].click();";
|
||||
cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
||||
//i += 20; // 测试翻页
|
||||
|
||||
IsOpenDaRenPage = true;
|
||||
while (IsOpenDaRenPage)
|
||||
{
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
//while (cefWebBrowserDetail == null || !daRenIdList.Any(d => cefWebBrowserDetail.Address.Contains(d)))
|
||||
//{
|
||||
// Thread.Sleep(50);
|
||||
//}
|
||||
//while (cefWebBrowserDetail.IsLoading)
|
||||
//{
|
||||
// Thread.Sleep(50);
|
||||
//}
|
||||
|
||||
Thread.Sleep(drSetting.Interval * Randomx.GetId(1000, 1200));
|
||||
}
|
||||
|
||||
Invoke(new Action(() => { btnMainForm_Click(null, null); }));
|
||||
Thread.Sleep(Randomx.GetId(1000, 1200));
|
||||
jsCode = "document.getElementsByClassName('anticon anticon-right')[0].click();";
|
||||
cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
||||
Thread.Sleep(drSetting.PageInterval * Randomx.GetId(1000, 1200));
|
||||
currentPage++;
|
||||
Invoke(new Action(() => { txtCurrentPage.Text = "" + currentPage; }));
|
||||
}
|
||||
}
|
||||
|
||||
string GetCefHtml(ChromiumWebBrowser browser)
|
||||
{
|
||||
if (browser.IsBrowserInitialized)
|
||||
{
|
||||
var task = browser.GetBrowser().MainFrame.GetSourceAsync();
|
||||
task.Wait();
|
||||
Thread.Sleep(50);
|
||||
return task.Result;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private void btnMainForm_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cefWebBrowser != null)
|
||||
cefWebBrowser.BringToFront();
|
||||
|
||||
pnlDetailForm.Style.BackColor1.Color = pnlDetailForm.Style.BackColor2.Color = Color.FromArgb(175, 210, 255);
|
||||
pnlMainForm.Style.BackColor1.Color = pnlMainForm.Style.BackColor2.Color = Color.White;
|
||||
pnlDetailForm.Location = new Point(pnlDetailForm.Location.X, 44);
|
||||
pnlMainForm.Location = new Point(pnlMainForm.Location.X, 42);
|
||||
}
|
||||
|
||||
private void btnDetailForm_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cefWebBrowserDetail != null)
|
||||
cefWebBrowserDetail.BringToFront();
|
||||
|
||||
pnlDetailForm.Style.BackColor1.Color = pnlDetailForm.Style.BackColor2.Color = Color.White;
|
||||
pnlMainForm.Style.BackColor1.Color = pnlMainForm.Style.BackColor2.Color = Color.FromArgb(175, 210, 255);
|
||||
pnlDetailForm.Location = new Point(pnlDetailForm.Location.X, 42);
|
||||
pnlMainForm.Location = new Point(pnlMainForm.Location.X, 44);
|
||||
}
|
||||
|
||||
private void btnLoginDouyin_Click(object sender, EventArgs e)
|
||||
{
|
||||
string cookie = "";
|
||||
var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.ShopAccount == cmbShop.SelectedItem.ToString());
|
||||
if (shop != null)
|
||||
cookie = shop.Cookies;
|
||||
InitCef(cookie);
|
||||
}
|
||||
|
||||
private void rbInvite_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rbInvite.Checked)
|
||||
{
|
||||
drSetting.InviteType = InviteTypeEnum.Invite;
|
||||
SaveDRSetting();
|
||||
}
|
||||
}
|
||||
|
||||
private void rbChat_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rbChat.Checked)
|
||||
{
|
||||
drSetting.InviteType = InviteTypeEnum.Chat;
|
||||
SaveDRSetting();
|
||||
}
|
||||
}
|
||||
|
||||
private void txtChatWords_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
drSetting.ChatWords = txtChatWords.Text;
|
||||
SaveDRSetting();
|
||||
}
|
||||
|
||||
private void txtInterval_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (txtInterval.Text.ParseToInt() < 10)
|
||||
txtInterval.Text = "10";
|
||||
drSetting.Interval = drSetting.PageInterval = txtInterval.Text.ParseToInt();
|
||||
SaveDRSetting();
|
||||
}
|
||||
|
||||
private void txtTotalPage_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
drSetting.TotalPage = txtInterval.Text.ParseToInt();
|
||||
SaveDRSetting();
|
||||
}
|
||||
|
||||
private void SaveDRSetting()
|
||||
{
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("daren_settings", drSetting);
|
||||
}
|
||||
|
||||
private void textBox3_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
cefWebBrowser.Load(textBox3.Text);
|
||||
}
|
||||
}
|
||||
|
||||
public string clickJsElementStr = "function getElement(txt, elem) {\r\n" +
|
||||
" var child = document.body.firstElementChild;\r\n" +
|
||||
" if (elem) child = elem\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" +
|
||||
" return element1;\r\n" +
|
||||
" } else return error;\r\n" +
|
||||
"}\r\n";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="splitContainer1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,239 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
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 LittleRabbit.Extension
|
||||
{
|
||||
public static class DataGridViewExtension
|
||||
{
|
||||
public static object GetCellValueFromColumnName(this DataGridViewCellCollection CellCollection, string name)
|
||||
{
|
||||
return CellCollection.Cast<DataGridViewCell>().FirstOrDefault(c => c.OwningColumn.Name == name)?.Value;
|
||||
}
|
||||
|
||||
public static CheckBox AddSelectorColumn(this DataGridView dgv, string columnName = "Selected", Action<DataGridViewColumn> addHeaderCheckBoxOverride = null)
|
||||
{
|
||||
if (dgv.Columns[columnName] == null)
|
||||
{
|
||||
//var dt = dgv.Table();
|
||||
|
||||
//var dcol = new DataColumn(columnName, typeof(bool));
|
||||
//dt.Columns.Add(dcol);
|
||||
|
||||
//dt.ColumnChanged += (s, e) =>
|
||||
//{
|
||||
// var chCols = e.Row.GetChangedColumns();
|
||||
// if (chCols.Count == 1 && chCols[0].Equals(dcol))
|
||||
// e.Row.AcceptChanges();
|
||||
//};
|
||||
}
|
||||
|
||||
var col = dgv.Columns[columnName];
|
||||
col.HeaderText = "";
|
||||
col.ReadOnly = false;
|
||||
if (addHeaderCheckBoxOverride != null)
|
||||
{
|
||||
addHeaderCheckBoxOverride(col);
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return col.AddHeaderCheckBox();
|
||||
}
|
||||
}
|
||||
|
||||
public static CheckBox AddHeaderCheckBox(this DataGridViewColumn column, HorizontalAlignment align = HorizontalAlignment.Center, int leftBorderOffset = 0, int rightBorderOffset = 0, Func<object, bool> getValue = null, Action<object, bool> setValue = null, bool isSetCheckedChangedEvent = true, CheckBox checkBox = null, bool isClearHeaderText = false)
|
||||
{
|
||||
if (column.DataGridView == null) throw new ArgumentNullException("First you need to add the column to grid.");
|
||||
|
||||
// Creating checkbox without panel
|
||||
if (checkBox == null)
|
||||
{
|
||||
checkBox = new CheckBox();
|
||||
checkBox.Name = "chk" + column.Name;
|
||||
}
|
||||
checkBox.Size = new Size(15, 15);
|
||||
checkBox.BackColor = Color.Transparent;
|
||||
checkBox.Enabled = true;
|
||||
|
||||
// Reset properties
|
||||
checkBox.Padding = new Padding(0);
|
||||
checkBox.Margin = new Padding(0);
|
||||
checkBox.Text = "";
|
||||
|
||||
if (isClearHeaderText)
|
||||
column.HeaderText = "";
|
||||
|
||||
var changedByUser = true;
|
||||
var dgv = column.DataGridView;
|
||||
|
||||
if (isSetCheckedChangedEvent)
|
||||
{
|
||||
checkBox.CheckedChanged += (s, e) =>
|
||||
{
|
||||
if (changedByUser)
|
||||
{
|
||||
try
|
||||
{
|
||||
changedByUser = false;
|
||||
|
||||
if (dgv.IsCurrentCellInEditMode && dgv.CurrentCell.OwningColumn.Name.Equals(column.Name))
|
||||
dgv.EndEdit();
|
||||
|
||||
var dgvRows = new List<DataGridViewRow>((dgv.SelectedRows.Count < 2 ? (ICollection)dgv.Rows : dgv.SelectedRows).Cast<DataGridViewRow>());
|
||||
|
||||
if (column.IsDataBound)
|
||||
{
|
||||
//adding to list because of BindingSource sort by that column
|
||||
var boundItems = new List<object>();
|
||||
var areDataRows = dgvRows.Count < 1 || dgvRows[0].DataBoundItem is DataRowView;
|
||||
if (areDataRows)
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvRows)
|
||||
boundItems.Add(((DataRowView)row.DataBoundItem).Row);
|
||||
foreach (DataRow dr in boundItems)
|
||||
{
|
||||
var val = dr[column.DataPropertyName];
|
||||
if ((val is bool && (bool)val) != checkBox.Checked)
|
||||
dr[column.DataPropertyName] = checkBox.Checked;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvRows)
|
||||
boundItems.Add(row.DataBoundItem);
|
||||
foreach (var item in boundItems)
|
||||
{
|
||||
var val = getValue(item);
|
||||
if (val != checkBox.Checked)
|
||||
setValue(item, checkBox.Checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DataGridViewRow dgr in dgvRows)
|
||||
{
|
||||
var cell = dgr.Cells[column.Name];
|
||||
if ((cell.Value is bool && (bool)cell.Value) != checkBox.Checked)
|
||||
cell.Value = checkBox.Checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
changedByUser = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Add checkbox to datagrid cell
|
||||
dgv.Controls.Add(checkBox);
|
||||
|
||||
Action onColResize = () =>
|
||||
{
|
||||
var colCheck = dgv.Columns[column.Name];
|
||||
if (colCheck == null) return;
|
||||
int colLeft = (dgv.RowHeadersVisible ? dgv.RowHeadersWidth : 0) - (colCheck.Frozen ? 0 : dgv.HorizontalScrollingOffset);
|
||||
foreach (DataGridViewColumn col in dgv.Columns)
|
||||
{
|
||||
if (col.DisplayIndex >= colCheck.DisplayIndex) break;
|
||||
if (!col.Visible) continue;
|
||||
colLeft += col.Width;
|
||||
}
|
||||
|
||||
var newPoint = new Point(colLeft, dgv.ColumnHeadersHeight / 2 - checkBox.Height / 2);
|
||||
|
||||
if (align == HorizontalAlignment.Left)
|
||||
newPoint.X += 3;
|
||||
else if (align == HorizontalAlignment.Center)
|
||||
newPoint.X += colCheck.Width / 2 - checkBox.Width / 2;
|
||||
else if (align == HorizontalAlignment.Right)
|
||||
newPoint.X += colCheck.Width - checkBox.Width - 3;
|
||||
|
||||
var minLeft = colLeft + leftBorderOffset;
|
||||
var maxLeft = colLeft + colCheck.Width - checkBox.Width + rightBorderOffset;
|
||||
|
||||
if (newPoint.X < minLeft) newPoint.X = minLeft;
|
||||
if (newPoint.X > maxLeft) newPoint.X = maxLeft;
|
||||
|
||||
checkBox.Location = newPoint;
|
||||
checkBox.Visible = colCheck.Visible;
|
||||
};
|
||||
dgv.ColumnWidthChanged += (s, e) => onColResize();
|
||||
dgv.ColumnHeadersHeightChanged += (s, e) => onColResize();
|
||||
dgv.Scroll += (s, e) => onColResize();
|
||||
dgv.Resize += (s, e) => onColResize();
|
||||
dgv.Sorted += (s, e) => onColResize();
|
||||
dgv.RowHeadersWidthChanged += (s, e) => onColResize();
|
||||
dgv.ColumnStateChanged += (s, e) => onColResize();
|
||||
|
||||
Action<object> onDataChanged = (e) =>
|
||||
{
|
||||
if (!changedByUser) return;
|
||||
if (e is DataColumnChangeEventArgs)
|
||||
{
|
||||
if (!((DataColumnChangeEventArgs)e).Column.ColumnName.Equals(column.Name))
|
||||
return;
|
||||
}
|
||||
else if (e is ListChangedEventArgs)
|
||||
{
|
||||
var prop = ((ListChangedEventArgs)e).PropertyDescriptor;
|
||||
if (prop != null && !prop.Name.Equals(column.DataPropertyName))
|
||||
return;
|
||||
}
|
||||
|
||||
bool allAreTrue = true;
|
||||
foreach (DataGridViewRow row in dgv.SelectedRows.Count < 2 ? (ICollection)dgv.Rows : dgv.SelectedRows)
|
||||
{
|
||||
var val = row.Cells[column.Name].Value;
|
||||
if (!(val is bool) || !(bool)val)
|
||||
{
|
||||
allAreTrue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
changedByUser = false;
|
||||
var tag = checkBox.Tag;
|
||||
checkBox.Tag = "AUTO";
|
||||
try
|
||||
{
|
||||
if (isSetCheckedChangedEvent)
|
||||
{
|
||||
checkBox.Checked = allAreTrue;
|
||||
}
|
||||
}
|
||||
finally { checkBox.Tag = tag; }
|
||||
}
|
||||
finally
|
||||
{
|
||||
changedByUser = true;
|
||||
}
|
||||
};
|
||||
dgv.CellClick += (s, e) => onDataChanged(e);
|
||||
dgv.CellContentClick += (s, e) => onDataChanged(e);
|
||||
dgv.SelectionChanged += (s, e) => onDataChanged(e);
|
||||
if (dgv.DataSource is BindingSource)
|
||||
((BindingSource)dgv.DataSource).ListChanged += (s, e) => onDataChanged(e);
|
||||
else if (dgv.DataSource is DataSet)
|
||||
((DataSet)dgv.DataSource).Tables[dgv.DataMember].ColumnChanged += (s, e) => onDataChanged(e);
|
||||
else if (dgv.DataSource is DataTable)
|
||||
((DataTable)dgv.DataSource).ColumnChanged += (s, e) => onDataChanged(e);
|
||||
|
||||
onColResize();
|
||||
|
||||
return checkBox;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using CefSharp;
|
||||
using CefSharp.Handler;
|
||||
using CefSharp.ResponseFilter;
|
||||
using CefSharp.WinForms;
|
||||
using NaiBa.Util;
|
||||
using NaiBa.Util.Extension;
|
||||
using NaiBa.Util.Helper;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
|
||||
namespace LittleRabbit.Helper
|
||||
{
|
||||
//public event Action<string, string, string, IRequest> ResourceLoadCompleteEvent; // requestUrl, postData, responseData
|
||||
|
||||
public class BaseResourceRequestHandler : ResourceRequestHandler
|
||||
{
|
||||
public string UserAgent = string.Empty;
|
||||
public Func<object, string, string, bool> BeforeResourceLoadEvent; // sender, requestUrl, postData, true(表示取消执行)
|
||||
public Action<object, string, string, string, IRequest> ResourceLoadCompleteEvent; // sender, requestUrl, postData, responseData
|
||||
public Action<object, string, string, string> ResourceRedirectEvent; // sender, requestUrl, postData, redirectUrl
|
||||
public string[] ResourceContentTypeRegister = new string[] { "application/json", "javascript", "application/x-www-form-urlencoded", "text/html", "text/plain" };
|
||||
|
||||
public string GetCharSet(string charSet)
|
||||
{
|
||||
if (string.IsNullOrEmpty(charSet))
|
||||
{
|
||||
charSet = "UTF-8";
|
||||
}
|
||||
return charSet;
|
||||
}
|
||||
|
||||
public string GetPostData(IRequest request)
|
||||
{
|
||||
string postData = string.Empty;
|
||||
if (request.PostData != null && request.PostData.Elements.Any())
|
||||
{
|
||||
for (int i = 0; i < request.PostData.Elements.Count; i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
string charset = GetCharSet(request.GetCharSet());
|
||||
postData += request.PostData.Elements[i].GetBody(charset);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteWithTime(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
return postData;
|
||||
}
|
||||
}
|
||||
|
||||
public class CustomResourceRequestHandlerLocal : BaseResourceRequestHandler
|
||||
{
|
||||
private ConcurrentDictionary<ulong, MemoryStream> responseDict = new ConcurrentDictionary<ulong, MemoryStream>();
|
||||
|
||||
protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
|
||||
{
|
||||
Uri url;
|
||||
if (Uri.TryCreate(request.Url, UriKind.Absolute, out url) == false)
|
||||
{
|
||||
//If we're unable to parse the Uri then cancel the request
|
||||
// avoid throwing any exceptions here as we're being called by unmanaged code
|
||||
return CefReturnValue.Cancel;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(UserAgent))
|
||||
{
|
||||
var headers = request.Headers;
|
||||
headers["User-Agent"] = UserAgent;
|
||||
request.Headers = headers;
|
||||
}
|
||||
|
||||
//NOTE: If you do not wish to implement this method returning false is the default behaviour
|
||||
// We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.
|
||||
//callback.Dispose();
|
||||
//return false;
|
||||
|
||||
//NOTE: When executing the callback in an async fashion need to check to see if it's disposed
|
||||
if (!callback.IsDisposed)
|
||||
{
|
||||
using (callback)
|
||||
{
|
||||
if (request.Method == "POST")
|
||||
{
|
||||
try
|
||||
{
|
||||
string postData = GetPostData(request);
|
||||
bool? result = BeforeResourceLoadEvent?.Invoke(chromiumWebBrowser, request.Url, postData);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteWithTime(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return CefReturnValue.Continue;
|
||||
}
|
||||
|
||||
protected override void OnResourceRedirect(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ResourceRedirectEvent != null)
|
||||
{
|
||||
string postData = GetPostData(request);
|
||||
ResourceRedirectEvent.Invoke(chromiumWebBrowser, request.Url, postData, newUrl);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteWithTime(ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected override bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
|
||||
{
|
||||
return request.Url.StartsWith("mailto");
|
||||
}
|
||||
|
||||
protected override bool OnResourceResponse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
|
||||
{
|
||||
//NOTE: You cannot modify the response, only the request
|
||||
// You can now access the headers
|
||||
//var headers = response.Headers;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override IResponseFilter GetResourceResponseFilter(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response)
|
||||
{
|
||||
try
|
||||
{
|
||||
string contentType = response.Headers["Content-Type"];
|
||||
if (string.IsNullOrEmpty(contentType))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (ResourceContentTypeRegister.Contains(contentType) || ResourceContentTypeRegister.Where(p => contentType.Contains(p)).Any())
|
||||
{
|
||||
if (ResourceLoadCompleteEvent != null)
|
||||
{
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
responseDict.TryAdd(request.Identifier, memoryStream);
|
||||
return new StreamResponseFilter(memoryStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteWithTime(ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (responseDict.ContainsKey(request.Identifier))
|
||||
{
|
||||
MemoryStream memoryStream = null;
|
||||
responseDict.TryRemove(request.Identifier, out memoryStream);
|
||||
|
||||
if (memoryStream != null)
|
||||
{
|
||||
byte[] data = memoryStream.ToArray();
|
||||
|
||||
string charset = GetCharSet(response.Charset);
|
||||
var responseData = Encoding.GetEncoding(charset).GetString(data);
|
||||
|
||||
string postData = GetPostData(request);
|
||||
ResourceLoadCompleteEvent.Invoke(chromiumWebBrowser, request.Url, postData, responseData, request);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteWithTime(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
using CefSharp;
|
||||
using CefSharp.WinForms;
|
||||
using LittleRabbit.LittleRabbitForms.ToolForms;
|
||||
using NaiBa.CefHelper;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LittleRabbit.Helper
|
||||
{
|
||||
|
||||
public enum PopWindowType
|
||||
{
|
||||
NewWindow,
|
||||
SelfWindow,
|
||||
NewTitleWindow,
|
||||
}
|
||||
public class PopData
|
||||
{
|
||||
public string Url { get; set; }
|
||||
}
|
||||
public class LifeSpanHandlerLocal : ILifeSpanHandler
|
||||
{
|
||||
private PopWindowType popWindowType = PopWindowType.NewWindow;
|
||||
public event EventHandler<PopData> OnPop;
|
||||
public ChromiumWebBrowser parent;
|
||||
public LifeSpanHandlerLocal()
|
||||
{
|
||||
}
|
||||
|
||||
public LifeSpanHandlerLocal(PopWindowType _popWindowType)
|
||||
{
|
||||
popWindowType = _popWindowType;
|
||||
}
|
||||
|
||||
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
|
||||
{
|
||||
if (!browser.IsDisposed && browser.IsPopup)
|
||||
{
|
||||
//GlobalFormConfig.MainFormInstance.InvokeOnUiThreadIfRequired(() =>
|
||||
//{
|
||||
// // 修改窗体左上角的图标
|
||||
// IntPtr handle = browser.GetHost().GetWindowHandle();
|
||||
// PInvokeHelper.SendMessage(handle, 0x80, IntPtr.Zero, NaiBaGlobalConfig.SoftwareConfig.LogoIcon.Handle);
|
||||
//});
|
||||
}
|
||||
}
|
||||
|
||||
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
|
||||
{
|
||||
if (popWindowType == PopWindowType.NewWindow)
|
||||
{
|
||||
newBrowser = null;
|
||||
return false;
|
||||
}
|
||||
else if (popWindowType == PopWindowType.NewTitleWindow)
|
||||
{
|
||||
PopData p = new PopData() { Url = targetUrl };
|
||||
if (OnPop != null)
|
||||
OnPop(this, p);
|
||||
newBrowser = null;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不打开新的 tab
|
||||
browser.MainFrame.LoadUrl(targetUrl);
|
||||
newBrowser = null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
+117
@@ -0,0 +1,117 @@
|
||||
namespace LittleRabbit
|
||||
{
|
||||
partial class InitForm
|
||||
{
|
||||
/// <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(InitForm));
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.progressBarX1 = new DevComponents.DotNetBar.Controls.ProgressBarX();
|
||||
this.pbShopLoading = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbShopLoading)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.panel2.Controls.Add(this.progressBarX1);
|
||||
this.panel2.Controls.Add(this.pbShopLoading);
|
||||
this.panel2.Controls.Add(this.label1);
|
||||
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(234, 151);
|
||||
this.panel2.TabIndex = 39;
|
||||
//
|
||||
// progressBarX1
|
||||
//
|
||||
this.progressBarX1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
//
|
||||
//
|
||||
//
|
||||
this.progressBarX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.progressBarX1.Location = new System.Drawing.Point(32, 119);
|
||||
this.progressBarX1.Name = "progressBarX1";
|
||||
this.progressBarX1.Size = new System.Drawing.Size(168, 15);
|
||||
this.progressBarX1.TabIndex = 38;
|
||||
this.progressBarX1.TabStop = false;
|
||||
this.progressBarX1.Text = "progressBarX1";
|
||||
//
|
||||
// pbShopLoading
|
||||
//
|
||||
this.pbShopLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.pbShopLoading.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(247)))), ((int)(((byte)(247)))));
|
||||
this.pbShopLoading.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.pbShopLoading.Image = global::LittleRabbit.Properties.Resources.loading_blue;
|
||||
this.pbShopLoading.Location = new System.Drawing.Point(84, 49);
|
||||
this.pbShopLoading.Name = "pbShopLoading";
|
||||
this.pbShopLoading.Size = new System.Drawing.Size(64, 64);
|
||||
this.pbShopLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pbShopLoading.TabIndex = 37;
|
||||
this.pbShopLoading.TabStop = false;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.label1.Location = new System.Drawing.Point(42, 18);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(150, 21);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "初始化中,请稍候...";
|
||||
//
|
||||
// InitForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(236, 185);
|
||||
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 = "InitForm";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "软件初始化";
|
||||
this.TitleText = "软件初始化";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.InitForm_FormClosed);
|
||||
this.Controls.SetChildIndex(this.panel2, 0);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbShopLoading)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.PictureBox pbShopLoading;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private DevComponents.DotNetBar.Controls.ProgressBarX progressBarX1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit
|
||||
{
|
||||
public partial class InitForm : LRBaseForm
|
||||
{
|
||||
public InitForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Load += InitForm_Load;
|
||||
}
|
||||
|
||||
private void InitForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (!Work.Initialization.IsCheckFilesFinish || !Program.IsInit)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.progressBarX1.Value = Work.Initialization.InitPercent;
|
||||
this.progressBarX1.Maximum = 50;
|
||||
}));
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Work.Initialization.IsCheckFilesSuccesss)
|
||||
{
|
||||
BaseMsgForm.ShowError("文件初始化失败,请检查是否有程序占用并使用管理员权限运行本程序!");
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
|
||||
this.Hide();
|
||||
new MainForm().ShowDialog();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseMsgForm.ShowError(ex.Message);
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
private void InitForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
AAABAAEAgIAQcgAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
|
||||
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>
|
||||
+1177
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectView>ProjectFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,91 @@
|
||||
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.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.BaseForms
|
||||
{
|
||||
public partial class BaseMsgForm : LRBaseForm
|
||||
{
|
||||
public BaseMsgForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.ShowMinimizedBox = false;
|
||||
this.AcceptButton = pnlConfirm;
|
||||
}
|
||||
|
||||
public static BaseMsgForm ShowInfo(string msg, string caption = "", FormLevel fl = FormLevel.MEDIUM)
|
||||
{
|
||||
string title = string.IsNullOrEmpty(caption) ? "系统提示" : caption;
|
||||
BaseMsgForm msgBox = CreateMsgForm(msg, fl, title);
|
||||
msgBox.picTip.Image = global::LittleRabbit.Properties.Resources.BaseMsgInfo;
|
||||
msgBox.ShowDialog();
|
||||
return msgBox;
|
||||
}
|
||||
|
||||
private static BaseMsgForm CreateMsgForm(string msg, FormLevel fl, string title)
|
||||
{
|
||||
BaseMsgForm msgBox = new BaseMsgForm { Text = title, lblMsg = { Text = msg }, TitleText = title };
|
||||
if (fl.Equals(FormLevel.LARGE))
|
||||
{
|
||||
msgBox.Width = (int)FormLevel.LARGE;
|
||||
msgBox.Height = 280;
|
||||
}
|
||||
msgBox.pnlConfirm.Location = msgBox.pnlCancel.Location; // 把确认按钮移到取消按钮上面
|
||||
msgBox.pnlCancel.Visible = false;
|
||||
return msgBox;
|
||||
}
|
||||
|
||||
public static BaseMsgForm ShowError(string msg, string caption = "", FormLevel fl = FormLevel.MEDIUM)
|
||||
{
|
||||
string title = string.IsNullOrEmpty(caption) ? "系统错误" : caption;
|
||||
BaseMsgForm msgBox = CreateMsgForm(msg, fl, title);
|
||||
msgBox.picTip.Image = global::LittleRabbit.Properties.Resources.BaseMsgErr;
|
||||
msgBox.ShowDialog();
|
||||
return msgBox;
|
||||
}
|
||||
|
||||
public static BaseMsgForm ShowConfirm(string msg, string caption = "", FormLevel fl = FormLevel.MEDIUM, bool isTopMost = false)
|
||||
{
|
||||
string title = string.IsNullOrEmpty(caption) ? "系统提示确认" : caption;
|
||||
BaseMsgForm msgBox = new BaseMsgForm
|
||||
{
|
||||
Text = title,
|
||||
lblMsg = { Text = msg },
|
||||
TitleText = title,
|
||||
picTip = { Image = global::LittleRabbit.Properties.Resources.BaseMsgQue },
|
||||
TopMost = isTopMost
|
||||
};
|
||||
if (fl.Equals(FormLevel.LARGE))
|
||||
{
|
||||
msgBox.Width = (int)FormLevel.LARGE;
|
||||
}
|
||||
msgBox.ShowDialog();
|
||||
return msgBox;
|
||||
}
|
||||
|
||||
private void PnlConfirm_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
private void PnlCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
}
|
||||
}
|
||||
|
||||
public enum FormLevel
|
||||
{
|
||||
SMALL,
|
||||
MEDIUM,
|
||||
LARGE = 500
|
||||
}
|
||||
}
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.BaseForms
|
||||
{
|
||||
partial class BaseMsgForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.pnlCancel = new DevComponents.DotNetBar.PanelEx();
|
||||
this.pnlConfirm = new DevComponents.DotNetBar.PanelEx();
|
||||
this.picTip = new System.Windows.Forms.PictureBox();
|
||||
this.lblMsg = new System.Windows.Forms.Label();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picTip)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.White;
|
||||
this.panel2.Controls.Add(this.pnlCancel);
|
||||
this.panel2.Controls.Add(this.pnlConfirm);
|
||||
this.panel2.Controls.Add(this.picTip);
|
||||
this.panel2.Controls.Add(this.lblMsg);
|
||||
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(386, 183);
|
||||
this.panel2.TabIndex = 1;
|
||||
//
|
||||
// pnlCancel
|
||||
//
|
||||
this.pnlCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pnlCancel.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlCancel.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlCancel.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlCancel.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.pnlCancel.Location = new System.Drawing.Point(284, 132);
|
||||
this.pnlCancel.Name = "pnlCancel";
|
||||
this.pnlCancel.Size = new System.Drawing.Size(80, 30);
|
||||
this.pnlCancel.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlCancel.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
|
||||
this.pnlCancel.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
|
||||
this.pnlCancel.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.pnlCancel.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlCancel.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Custom;
|
||||
this.pnlCancel.Style.ForeColor.Color = System.Drawing.Color.Black;
|
||||
this.pnlCancel.Style.GradientAngle = 90;
|
||||
this.pnlCancel.TabIndex = 27;
|
||||
this.pnlCancel.Text = "取 消";
|
||||
this.pnlCancel.Click += new System.EventHandler(this.PnlCancel_Click);
|
||||
//
|
||||
// pnlConfirm
|
||||
//
|
||||
this.pnlConfirm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.pnlConfirm.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlConfirm.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pnlConfirm.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlConfirm.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.pnlConfirm.Location = new System.Drawing.Point(167, 132);
|
||||
this.pnlConfirm.Name = "pnlConfirm";
|
||||
this.pnlConfirm.Size = new System.Drawing.Size(80, 30);
|
||||
this.pnlConfirm.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.pnlConfirm.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlConfirm.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.pnlConfirm.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.pnlConfirm.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.pnlConfirm.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.pnlConfirm.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.pnlConfirm.Style.GradientAngle = 90;
|
||||
this.pnlConfirm.TabIndex = 26;
|
||||
this.pnlConfirm.Text = "确 定";
|
||||
this.pnlConfirm.Click += new System.EventHandler(this.PnlConfirm_Click);
|
||||
//
|
||||
// picTip
|
||||
//
|
||||
this.picTip.Location = new System.Drawing.Point(21, 33);
|
||||
this.picTip.Name = "picTip";
|
||||
this.picTip.Size = new System.Drawing.Size(64, 64);
|
||||
this.picTip.TabIndex = 19;
|
||||
this.picTip.TabStop = false;
|
||||
//
|
||||
// lblMsg
|
||||
//
|
||||
this.lblMsg.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.lblMsg.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.lblMsg.Location = new System.Drawing.Point(110, 17);
|
||||
this.lblMsg.Name = "lblMsg";
|
||||
this.lblMsg.Size = new System.Drawing.Size(254, 100);
|
||||
this.lblMsg.TabIndex = 18;
|
||||
this.lblMsg.Text = "信息";
|
||||
this.lblMsg.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// BaseMsgForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(388, 217);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Name = "BaseMsgForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "BaseMsgForm";
|
||||
this.TitleText = "BaseMsgForm";
|
||||
this.Controls.SetChildIndex(this.panel2, 0);
|
||||
this.panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picTip)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private DevComponents.DotNetBar.PanelEx pnlCancel;
|
||||
private DevComponents.DotNetBar.PanelEx pnlConfirm;
|
||||
private System.Windows.Forms.PictureBox picTip;
|
||||
private System.Windows.Forms.Label lblMsg;
|
||||
}
|
||||
}
|
||||
@@ -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,361 @@
|
||||
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.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.BaseForms
|
||||
{
|
||||
public partial class LRBaseForm : Form
|
||||
{
|
||||
const int WM_NCHITTEST = 0x0084;
|
||||
const int HTLEFT = 10; //左边界
|
||||
const int HTRIGHT = 11; //右边界
|
||||
const int HTTOP = 12; //上边界
|
||||
const int HTTOPLEFT = 13; //左上角
|
||||
const int HTTOPRIGHT = 14; //右上角
|
||||
const int HTBOTTOM = 15; //下边界
|
||||
const int HTBOTTOMLEFT = 0x10; //左下角
|
||||
const int HTBOTTOMRIGHT = 17; //右下角
|
||||
|
||||
public bool Dragable { get; set; } = true;
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
switch (m.Msg)
|
||||
{
|
||||
case WM_NCHITTEST:
|
||||
base.WndProc(ref m);
|
||||
Point vPoint = new Point((int)m.LParam & 0xFFFF,
|
||||
(int)m.LParam >> 16 & 0xFFFF);
|
||||
vPoint = PointToClient(vPoint);
|
||||
if (vPoint.X <= 5)
|
||||
if (vPoint.Y <= 5)
|
||||
m.Result = (IntPtr)HTTOPLEFT;
|
||||
else if (vPoint.Y >= ClientSize.Height - 5)
|
||||
m.Result = (IntPtr)HTBOTTOMLEFT;
|
||||
else m.Result = (IntPtr)HTLEFT;
|
||||
else if (vPoint.X >= ClientSize.Width - 5)
|
||||
if (vPoint.Y <= 5)
|
||||
m.Result = (IntPtr)HTTOPRIGHT;
|
||||
else if (vPoint.Y >= ClientSize.Height - 5)
|
||||
m.Result = (IntPtr)HTBOTTOMRIGHT;
|
||||
else m.Result = (IntPtr)HTRIGHT;
|
||||
else if (vPoint.Y <= 5)
|
||||
m.Result = (IntPtr)HTTOP;
|
||||
else if (vPoint.Y >= ClientSize.Height - 5)
|
||||
m.Result = (IntPtr)HTBOTTOM;
|
||||
break;
|
||||
default:
|
||||
base.WndProc(ref m);
|
||||
break;
|
||||
}
|
||||
|
||||
this.Resize += LRBaseForm_Resize;
|
||||
}
|
||||
|
||||
private void LRBaseForm_Resize(object sender, EventArgs e)
|
||||
{
|
||||
if (WindowState == FormWindowState.Maximized)
|
||||
{
|
||||
pbMaxBase.Visible = false;
|
||||
pbNormalBase.Visible = true;
|
||||
if (showMinimizedBox)
|
||||
pbMinBase.Visible = true;
|
||||
}
|
||||
else if (WindowState == FormWindowState.Minimized)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
if (showMaximizeBox)
|
||||
pbMaxBase.Visible = true;
|
||||
pbNormalBase.Visible = false;
|
||||
if (showMinimizedBox)
|
||||
pbMinBase.Visible = true;
|
||||
}
|
||||
|
||||
if (!showMinimizedBox)
|
||||
this.pbMinBase.Visible = false;
|
||||
if (!showMaximizeBox)
|
||||
{
|
||||
this.pbMaxBase.Visible = false;
|
||||
this.pbNormalBase.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
public LRBaseForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
|
||||
}
|
||||
|
||||
private void LcBaseForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (BaseClass.Ico != null)
|
||||
Iconx = Icon = BaseClass.Ico;
|
||||
else
|
||||
Iconx = this.Icon = BaseClass.Ico = ImageBuild.ConvertToIcon(global::LittleRabbit.Properties.Resources.icon);
|
||||
|
||||
if (!this.ShowIcon)
|
||||
{
|
||||
this.pbLogo.Visible = false;
|
||||
this.lbTitle.Location = new Point(this.pbLogo.Location.X, this.lbTitle.Location.Y);
|
||||
}
|
||||
|
||||
if (this.ShowMaximizeBox)
|
||||
{
|
||||
if (this.WindowState == FormWindowState.Maximized)
|
||||
{
|
||||
this.pbMaxBase.Visible = false;
|
||||
this.pbNormalBase.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.pbMaxBase.Visible = true;
|
||||
this.pbNormalBase.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.TopLevel || DesignMode)
|
||||
{
|
||||
this.Padding = new Padding(1);
|
||||
this.panel1.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Padding = new Padding(0);
|
||||
this.panel1.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void PictureBox2_Click(object sender, EventArgs e)
|
||||
{
|
||||
WindowState = FormWindowState.Minimized;
|
||||
}
|
||||
|
||||
public virtual void PictureBox1_Click(object sender, EventArgs e)
|
||||
{
|
||||
//pictureBox3.Image?.Dispose();
|
||||
Close();
|
||||
}
|
||||
|
||||
private Icon _iconx;
|
||||
public Icon Iconx
|
||||
{
|
||||
set
|
||||
{
|
||||
_iconx = value;
|
||||
if (_iconx == null) return;
|
||||
pbLogo.Image = _iconx.ToBitmap();
|
||||
}
|
||||
}
|
||||
|
||||
private bool showMinimizedBox = true;
|
||||
[Browsable(true), Description("显示最小化按钮"), Category("自定义分组")]
|
||||
public bool ShowMinimizedBox
|
||||
{
|
||||
get
|
||||
{
|
||||
return showMinimizedBox;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.showMinimizedBox = value;
|
||||
}
|
||||
}
|
||||
|
||||
private bool showMaximizeBox = false;
|
||||
[Browsable(true), Description("显示最大化按钮"), Category("自定义分组")]
|
||||
public bool ShowMaximizeBox
|
||||
{
|
||||
get { return showMaximizeBox; }
|
||||
set
|
||||
{
|
||||
showMaximizeBox = value;
|
||||
if (showMaximizeBox)
|
||||
{
|
||||
if (this.WindowState == FormWindowState.Maximized)
|
||||
{
|
||||
this.pbMaxBase.Visible = false;
|
||||
this.pbNormalBase.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.pbMaxBase.Visible = true;
|
||||
this.pbNormalBase.Visible = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.pbMaxBase.Visible = false;
|
||||
this.pbNormalBase.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string TitleText
|
||||
{
|
||||
get
|
||||
{
|
||||
return Text;
|
||||
}
|
||||
set
|
||||
{
|
||||
lbTitle.Text = Text = value;
|
||||
}
|
||||
}
|
||||
private Point mouseOffset;//记录鼠标指针的坐标
|
||||
private bool isMouseDown;//记录鼠标左键是否按下
|
||||
private void Panel1_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (isMouseDown && Dragable)
|
||||
{
|
||||
//获取鼠标的位置
|
||||
Point mousePos = MousePosition;
|
||||
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
|
||||
Location = mousePos;
|
||||
}
|
||||
}
|
||||
|
||||
private void Panel1_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
mouseOffset = new Point(-e.X, -e.Y);
|
||||
isMouseDown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void Panel1_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
isMouseDown = false;
|
||||
}
|
||||
|
||||
private void PictureBox1_MouseHover(object sender, EventArgs e)
|
||||
{
|
||||
this.pbCloseBase.Image = global::LittleRabbit.Properties.Resources.close_hover;
|
||||
this.Cursor = Cursors.Hand;
|
||||
|
||||
}
|
||||
|
||||
private void PictureBox1_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
this.pbCloseBase.Image = global::LittleRabbit.Properties.Resources.close;
|
||||
this.Cursor = Cursors.Default;
|
||||
|
||||
}
|
||||
|
||||
private void PictureBox2_MouseHover(object sender, EventArgs e)
|
||||
{
|
||||
this.pbMinBase.Image = global::LittleRabbit.Properties.Resources.min_hover;
|
||||
this.Cursor = Cursors.Hand;
|
||||
|
||||
}
|
||||
|
||||
private void PictureBox2_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
this.pbMinBase.Image = global::LittleRabbit.Properties.Resources.min;
|
||||
this.Cursor = Cursors.Default;
|
||||
|
||||
}
|
||||
|
||||
public virtual void HideTitle()
|
||||
{
|
||||
this.panel1.Visible = false;
|
||||
}
|
||||
|
||||
#region 窗体提交数据完成事件
|
||||
public event Action<object> SaveComplete;
|
||||
protected virtual void OnSaveComplete(object param)
|
||||
{
|
||||
this.SaveComplete?.Invoke(param);
|
||||
}
|
||||
public event Action<object, object> SaveCompleteWithDescribe;
|
||||
protected virtual void OnSaveComplete(object param, object describe)
|
||||
{
|
||||
this.SaveCompleteWithDescribe?.Invoke(param, describe);
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void pbNormalBase_Click(object sender, EventArgs e)
|
||||
{
|
||||
WindowState = FormWindowState.Normal;
|
||||
this.pbMaxBase.Visible = true;
|
||||
this.pbNormalBase.Visible = false;
|
||||
}
|
||||
|
||||
private void pbNormalBase_MouseHover(object sender, EventArgs e)
|
||||
{
|
||||
this.pbNormalBase.Image = global::LittleRabbit.Properties.Resources.normal_hover;
|
||||
this.Cursor = Cursors.Hand;
|
||||
}
|
||||
|
||||
private void pbNormalBase_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
this.pbNormalBase.Image = global::LittleRabbit.Properties.Resources.normal;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
private void pbMaxBase_Click(object sender, EventArgs e)
|
||||
{
|
||||
WindowState = FormWindowState.Maximized;
|
||||
this.pbMaxBase.Visible = false;
|
||||
this.pbNormalBase.Visible = true;
|
||||
}
|
||||
|
||||
private void pbMaxBase_MouseHover(object sender, EventArgs e)
|
||||
{
|
||||
this.pbMaxBase.Image = global::LittleRabbit.Properties.Resources.max_hover;
|
||||
this.Cursor = Cursors.Hand;
|
||||
}
|
||||
|
||||
private void pbMaxBase_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
this.pbMaxBase.Image = global::LittleRabbit.Properties.Resources.max;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
private void lbTitle_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
mouseOffset = new Point(-e.X, -e.Y);
|
||||
isMouseDown = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void lbTitle_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (isMouseDown && Dragable)
|
||||
{
|
||||
var control = sender as Control;
|
||||
if (control == null)
|
||||
return;
|
||||
|
||||
//获取鼠标的位置
|
||||
Point mousePos = MousePosition;
|
||||
var x = mouseOffset.X;
|
||||
var y = mouseOffset.Y;
|
||||
while (control.Parent != null && control.Parent != this)
|
||||
{
|
||||
x -= control.Location.X;
|
||||
y -= control.Location.Y;
|
||||
control = control.Parent;
|
||||
}
|
||||
mousePos.Offset(x, y);
|
||||
Location = mousePos;
|
||||
}
|
||||
}
|
||||
|
||||
private void lbTitle_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
isMouseDown = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.BaseForms
|
||||
{
|
||||
partial class LRBaseForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.pbMinBase = new System.Windows.Forms.PictureBox();
|
||||
this.pbNormalBase = new System.Windows.Forms.PictureBox();
|
||||
this.pbMaxBase = new System.Windows.Forms.PictureBox();
|
||||
this.pbLogo = new System.Windows.Forms.PictureBox();
|
||||
this.lbTitle = new System.Windows.Forms.Label();
|
||||
this.pbCloseBase = new System.Windows.Forms.PictureBox();
|
||||
this.panel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbMinBase)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbNormalBase)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbMaxBase)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbLogo)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.panel1.Controls.Add(this.pbMinBase);
|
||||
this.panel1.Controls.Add(this.pbNormalBase);
|
||||
this.panel1.Controls.Add(this.pbMaxBase);
|
||||
this.panel1.Controls.Add(this.pbLogo);
|
||||
this.panel1.Controls.Add(this.lbTitle);
|
||||
this.panel1.Controls.Add(this.pbCloseBase);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel1.Location = new System.Drawing.Point(1, 1);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(657, 32);
|
||||
this.panel1.TabIndex = 0;
|
||||
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Panel1_MouseDown);
|
||||
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Panel1_MouseMove);
|
||||
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Panel1_MouseUp);
|
||||
//
|
||||
// pbMinBase
|
||||
//
|
||||
this.pbMinBase.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.pbMinBase.Image = global::LittleRabbit.Properties.Resources.min;
|
||||
this.pbMinBase.Location = new System.Drawing.Point(529, 0);
|
||||
this.pbMinBase.Name = "pbMinBase";
|
||||
this.pbMinBase.Size = new System.Drawing.Size(32, 32);
|
||||
this.pbMinBase.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||
this.pbMinBase.TabIndex = 1;
|
||||
this.pbMinBase.TabStop = false;
|
||||
this.pbMinBase.Click += new System.EventHandler(this.PictureBox2_Click);
|
||||
this.pbMinBase.MouseLeave += new System.EventHandler(this.PictureBox2_MouseLeave);
|
||||
this.pbMinBase.MouseHover += new System.EventHandler(this.PictureBox2_MouseHover);
|
||||
//
|
||||
// pbNormalBase
|
||||
//
|
||||
this.pbNormalBase.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.pbNormalBase.Image = global::LittleRabbit.Properties.Resources.normal;
|
||||
this.pbNormalBase.Location = new System.Drawing.Point(561, 0);
|
||||
this.pbNormalBase.Name = "pbNormalBase";
|
||||
this.pbNormalBase.Size = new System.Drawing.Size(32, 32);
|
||||
this.pbNormalBase.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||
this.pbNormalBase.TabIndex = 6;
|
||||
this.pbNormalBase.TabStop = false;
|
||||
this.pbNormalBase.Visible = false;
|
||||
this.pbNormalBase.Click += new System.EventHandler(this.pbNormalBase_Click);
|
||||
this.pbNormalBase.MouseLeave += new System.EventHandler(this.pbNormalBase_MouseLeave);
|
||||
this.pbNormalBase.MouseHover += new System.EventHandler(this.pbNormalBase_MouseHover);
|
||||
//
|
||||
// pbMaxBase
|
||||
//
|
||||
this.pbMaxBase.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.pbMaxBase.Image = global::LittleRabbit.Properties.Resources.max;
|
||||
this.pbMaxBase.Location = new System.Drawing.Point(593, 0);
|
||||
this.pbMaxBase.Name = "pbMaxBase";
|
||||
this.pbMaxBase.Size = new System.Drawing.Size(32, 32);
|
||||
this.pbMaxBase.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||
this.pbMaxBase.TabIndex = 5;
|
||||
this.pbMaxBase.TabStop = false;
|
||||
this.pbMaxBase.Visible = false;
|
||||
this.pbMaxBase.Click += new System.EventHandler(this.pbMaxBase_Click);
|
||||
this.pbMaxBase.MouseLeave += new System.EventHandler(this.pbMaxBase_MouseLeave);
|
||||
this.pbMaxBase.MouseHover += new System.EventHandler(this.pbMaxBase_MouseHover);
|
||||
//
|
||||
// pbLogo
|
||||
//
|
||||
this.pbLogo.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pbLogo.Image = global::LittleRabbit.Properties.Resources.icon;
|
||||
this.pbLogo.Location = new System.Drawing.Point(5, 4);
|
||||
this.pbLogo.Name = "pbLogo";
|
||||
this.pbLogo.Size = new System.Drawing.Size(23, 23);
|
||||
this.pbLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pbLogo.TabIndex = 3;
|
||||
this.pbLogo.TabStop = false;
|
||||
//
|
||||
// lbTitle
|
||||
//
|
||||
this.lbTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lbTitle.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.lbTitle.ForeColor = System.Drawing.Color.White;
|
||||
this.lbTitle.Location = new System.Drawing.Point(31, 7);
|
||||
this.lbTitle.Name = "lbTitle";
|
||||
this.lbTitle.Size = new System.Drawing.Size(588, 17);
|
||||
this.lbTitle.TabIndex = 2;
|
||||
this.lbTitle.Text = "label1";
|
||||
this.lbTitle.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbTitle_MouseDown);
|
||||
this.lbTitle.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lbTitle_MouseMove);
|
||||
this.lbTitle.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lbTitle_MouseUp);
|
||||
//
|
||||
// pbCloseBase
|
||||
//
|
||||
this.pbCloseBase.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.pbCloseBase.Image = global::LittleRabbit.Properties.Resources.close;
|
||||
this.pbCloseBase.Location = new System.Drawing.Point(625, 0);
|
||||
this.pbCloseBase.Name = "pbCloseBase";
|
||||
this.pbCloseBase.Size = new System.Drawing.Size(32, 32);
|
||||
this.pbCloseBase.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||
this.pbCloseBase.TabIndex = 0;
|
||||
this.pbCloseBase.TabStop = false;
|
||||
this.pbCloseBase.Click += new System.EventHandler(this.PictureBox1_Click);
|
||||
this.pbCloseBase.MouseLeave += new System.EventHandler(this.PictureBox1_MouseLeave);
|
||||
this.pbCloseBase.MouseHover += new System.EventHandler(this.PictureBox1_MouseHover);
|
||||
//
|
||||
// LRBaseForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(98)))), ((int)(((byte)(200)))));
|
||||
this.ClientSize = new System.Drawing.Size(659, 535);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.Name = "LRBaseForm";
|
||||
this.Padding = new System.Windows.Forms.Padding(1);
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "LcBaseForm";
|
||||
this.Load += new System.EventHandler(this.LcBaseForm_Load);
|
||||
this.panel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbMinBase)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbNormalBase)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbMaxBase)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbLogo)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.PictureBox pbMinBase;
|
||||
private System.Windows.Forms.PictureBox pbCloseBase;
|
||||
private System.Windows.Forms.Label lbTitle;
|
||||
private System.Windows.Forms.PictureBox pbLogo;
|
||||
private System.Windows.Forms.PictureBox pbNormalBase;
|
||||
private System.Windows.Forms.PictureBox pbMaxBase;
|
||||
}
|
||||
}
|
||||
@@ -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,598 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
partial class CaiNiXiHuanCollectForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnExport = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx1 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.txtKeyWords = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.btnLoginDouyin = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.btnCollect = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx2 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtRateMax = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtRateMin = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtCommentCountMax = new System.Windows.Forms.TextBox();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.txtTotalPage = new System.Windows.Forms.TextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.txtCommentCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.txtSellCountMax = new System.Windows.Forms.TextBox();
|
||||
this.txtPriceMax = new System.Windows.Forms.TextBox();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.txtPriceMin = new System.Windows.Forms.TextBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.txtSellCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.dgvCollect = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.colImage = new System.Windows.Forms.DataGridViewImageColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSaleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCommentCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colRate = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colDelete = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
((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.ucGroupBoxEx1.SuspendLayout();
|
||||
this.ucGroupBoxEx2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnExport);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnLoginDouyin);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnCollect);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx2);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 121;
|
||||
this.splitContainer1.TabIndex = 377;
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvCollect);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(800, 325);
|
||||
this.splitContainer2.SplitterDistance = 296;
|
||||
this.splitContainer2.SplitterWidth = 1;
|
||||
this.splitContainer2.TabIndex = 7;
|
||||
//
|
||||
// btnExport
|
||||
//
|
||||
this.btnExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnExport.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnExport.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnExport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnExport.ForeColor = System.Drawing.Color.White;
|
||||
this.btnExport.Location = new System.Drawing.Point(720, 84);
|
||||
this.btnExport.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnExport.Name = "btnExport";
|
||||
this.btnExport.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnExport.TabIndex = 394;
|
||||
this.btnExport.Text = "导出数据";
|
||||
this.btnExport.UseVisualStyleBackColor = false;
|
||||
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
|
||||
//
|
||||
// ucGroupBoxEx1
|
||||
//
|
||||
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx1.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtKeyWords);
|
||||
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
|
||||
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
|
||||
this.ucGroupBoxEx1.Size = new System.Drawing.Size(222, 120);
|
||||
this.ucGroupBoxEx1.TabIndex = 393;
|
||||
this.ucGroupBoxEx1.TabStop = false;
|
||||
this.ucGroupBoxEx1.Text = "采集商品 请输入商品ID或为空";
|
||||
//
|
||||
// txtKeyWords
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.txtKeyWords.Border.Class = "TextBoxBorder";
|
||||
this.txtKeyWords.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.txtKeyWords.Location = new System.Drawing.Point(10, 21);
|
||||
this.txtKeyWords.Multiline = true;
|
||||
this.txtKeyWords.Name = "txtKeyWords";
|
||||
this.txtKeyWords.PreventEnterBeep = true;
|
||||
this.txtKeyWords.Size = new System.Drawing.Size(202, 88);
|
||||
this.txtKeyWords.TabIndex = 7;
|
||||
this.txtKeyWords.WatermarkText = "请输入要搜索的商品id或链接\r\n一行一个\r\n\r\n为空采集默认猜你喜欢商品";
|
||||
//
|
||||
// btnLoginDouyin
|
||||
//
|
||||
this.btnLoginDouyin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnLoginDouyin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnLoginDouyin.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnLoginDouyin.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnLoginDouyin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnLoginDouyin.ForeColor = System.Drawing.Color.White;
|
||||
this.btnLoginDouyin.Location = new System.Drawing.Point(720, 20);
|
||||
this.btnLoginDouyin.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnLoginDouyin.Name = "btnLoginDouyin";
|
||||
this.btnLoginDouyin.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnLoginDouyin.TabIndex = 373;
|
||||
this.btnLoginDouyin.Text = "登录抖音";
|
||||
this.btnLoginDouyin.UseVisualStyleBackColor = false;
|
||||
this.btnLoginDouyin.Visible = false;
|
||||
this.btnLoginDouyin.Click += new System.EventHandler(this.btnLoginDouyin_Click);
|
||||
//
|
||||
// btnCollect
|
||||
//
|
||||
this.btnCollect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCollect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnCollect.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCollect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnCollect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCollect.ForeColor = System.Drawing.Color.White;
|
||||
this.btnCollect.Location = new System.Drawing.Point(720, 52);
|
||||
this.btnCollect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCollect.Name = "btnCollect";
|
||||
this.btnCollect.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnCollect.TabIndex = 374;
|
||||
this.btnCollect.Text = "开始采集";
|
||||
this.btnCollect.UseVisualStyleBackColor = false;
|
||||
this.btnCollect.Click += new System.EventHandler(this.btnCollect_Click);
|
||||
//
|
||||
// ucGroupBoxEx2
|
||||
//
|
||||
this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx2.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label4);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label3);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtRateMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label1);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtRateMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label2);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtCommentCountMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label9);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtTotalPage);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label10);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtCommentCountMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label12);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtSellCountMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtPriceMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label13);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtPriceMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label14);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label15);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtSellCountMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label16);
|
||||
this.ucGroupBoxEx2.Location = new System.Drawing.Point(231, 2);
|
||||
this.ucGroupBoxEx2.Name = "ucGroupBoxEx2";
|
||||
this.ucGroupBoxEx2.Size = new System.Drawing.Size(409, 120);
|
||||
this.ucGroupBoxEx2.TabIndex = 395;
|
||||
this.ucGroupBoxEx2.TabStop = false;
|
||||
this.ucGroupBoxEx2.Text = "采集参数";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(183, 58);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(19, 17);
|
||||
this.label4.TabIndex = 401;
|
||||
this.label4.Text = "%";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(115, 58);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(19, 17);
|
||||
this.label3.TabIndex = 400;
|
||||
this.label3.Text = "%";
|
||||
//
|
||||
// txtRateMax
|
||||
//
|
||||
this.txtRateMax.Location = new System.Drawing.Point(139, 54);
|
||||
this.txtRateMax.Name = "txtRateMax";
|
||||
this.txtRateMax.Size = new System.Drawing.Size(40, 23);
|
||||
this.txtRateMax.TabIndex = 399;
|
||||
this.txtRateMax.Text = "100";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(127, 57);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(13, 17);
|
||||
this.label1.TabIndex = 398;
|
||||
this.label1.Text = "-";
|
||||
//
|
||||
// txtRateMin
|
||||
//
|
||||
this.txtRateMin.Location = new System.Drawing.Point(71, 54);
|
||||
this.txtRateMin.Name = "txtRateMin";
|
||||
this.txtRateMin.Size = new System.Drawing.Size(40, 23);
|
||||
this.txtRateMin.TabIndex = 396;
|
||||
this.txtRateMin.Text = "0";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(14, 58);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(44, 17);
|
||||
this.label2.TabIndex = 397;
|
||||
this.label2.Text = "好评率";
|
||||
//
|
||||
// txtCommentCountMax
|
||||
//
|
||||
this.txtCommentCountMax.Location = new System.Drawing.Point(335, 86);
|
||||
this.txtCommentCountMax.Name = "txtCommentCountMax";
|
||||
this.txtCommentCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtCommentCountMax.TabIndex = 391;
|
||||
this.txtCommentCountMax.Text = "99999999";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(323, 89);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(13, 17);
|
||||
this.label9.TabIndex = 390;
|
||||
this.label9.Text = "-";
|
||||
//
|
||||
// txtTotalPage
|
||||
//
|
||||
this.txtTotalPage.Location = new System.Drawing.Point(71, 22);
|
||||
this.txtTotalPage.Name = "txtTotalPage";
|
||||
this.txtTotalPage.Size = new System.Drawing.Size(123, 23);
|
||||
this.txtTotalPage.TabIndex = 376;
|
||||
this.txtTotalPage.Text = "5";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(210, 90);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(56, 17);
|
||||
this.label10.TabIndex = 389;
|
||||
this.label10.Text = "评论数量";
|
||||
//
|
||||
// txtCommentCountMin
|
||||
//
|
||||
this.txtCommentCountMin.Location = new System.Drawing.Point(267, 86);
|
||||
this.txtCommentCountMin.Name = "txtCommentCountMin";
|
||||
this.txtCommentCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtCommentCountMin.TabIndex = 388;
|
||||
this.txtCommentCountMin.Text = "0";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(13, 26);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(56, 17);
|
||||
this.label12.TabIndex = 378;
|
||||
this.label12.Text = "采集页数";
|
||||
//
|
||||
// txtSellCountMax
|
||||
//
|
||||
this.txtSellCountMax.Location = new System.Drawing.Point(335, 54);
|
||||
this.txtSellCountMax.Name = "txtSellCountMax";
|
||||
this.txtSellCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSellCountMax.TabIndex = 387;
|
||||
this.txtSellCountMax.Text = "99999999";
|
||||
//
|
||||
// txtPriceMax
|
||||
//
|
||||
this.txtPriceMax.Location = new System.Drawing.Point(335, 22);
|
||||
this.txtPriceMax.Name = "txtPriceMax";
|
||||
this.txtPriceMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMax.TabIndex = 383;
|
||||
this.txtPriceMax.Text = "99999999";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(323, 57);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(13, 17);
|
||||
this.label13.TabIndex = 386;
|
||||
this.label13.Text = "-";
|
||||
//
|
||||
// txtPriceMin
|
||||
//
|
||||
this.txtPriceMin.Location = new System.Drawing.Point(267, 22);
|
||||
this.txtPriceMin.Name = "txtPriceMin";
|
||||
this.txtPriceMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMin.TabIndex = 379;
|
||||
this.txtPriceMin.Text = "0";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(210, 58);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(56, 17);
|
||||
this.label14.TabIndex = 385;
|
||||
this.label14.Text = "宝贝销量";
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Location = new System.Drawing.Point(210, 26);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(56, 17);
|
||||
this.label15.TabIndex = 380;
|
||||
this.label15.Text = "宝贝价格";
|
||||
//
|
||||
// txtSellCountMin
|
||||
//
|
||||
this.txtSellCountMin.Location = new System.Drawing.Point(267, 54);
|
||||
this.txtSellCountMin.Name = "txtSellCountMin";
|
||||
this.txtSellCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSellCountMin.TabIndex = 384;
|
||||
this.txtSellCountMin.Text = "0";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(323, 25);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(13, 17);
|
||||
this.label16.TabIndex = 382;
|
||||
this.label16.Text = "-";
|
||||
//
|
||||
// dgvCollect
|
||||
//
|
||||
this.dgvCollect.AllowUserToAddRows = false;
|
||||
this.dgvCollect.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvCollect.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvCollect.BackgroundColor = System.Drawing.Color.White;
|
||||
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.dgvCollect.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvCollect.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvCollect.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colImage,
|
||||
this.colPrice,
|
||||
this.colSaleCount,
|
||||
this.colCommentCount,
|
||||
this.colRate,
|
||||
this.colDelete});
|
||||
this.dgvCollect.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvCollect.Location = new System.Drawing.Point(5, 0);
|
||||
this.dgvCollect.Name = "dgvCollect";
|
||||
this.dgvCollect.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvCollect.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvCollect.RowTemplate.Height = 23;
|
||||
this.dgvCollect.Size = new System.Drawing.Size(790, 296);
|
||||
this.dgvCollect.TabIndex = 6;
|
||||
this.dgvCollect.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCollect_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
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;
|
||||
this.colSelect.Visible = false;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 150;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colProductName.Width = 350;
|
||||
//
|
||||
// colImage
|
||||
//
|
||||
this.colImage.HeaderText = "图片";
|
||||
this.colImage.Name = "colImage";
|
||||
this.colImage.ReadOnly = true;
|
||||
this.colImage.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colImage.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colImage.Visible = false;
|
||||
this.colImage.Width = 70;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
this.colPrice.Width = 80;
|
||||
//
|
||||
// colSaleCount
|
||||
//
|
||||
this.colSaleCount.HeaderText = "销量";
|
||||
this.colSaleCount.Name = "colSaleCount";
|
||||
this.colSaleCount.ReadOnly = true;
|
||||
//
|
||||
// colCommentCount
|
||||
//
|
||||
this.colCommentCount.HeaderText = "评论数量";
|
||||
this.colCommentCount.Name = "colCommentCount";
|
||||
this.colCommentCount.ReadOnly = true;
|
||||
//
|
||||
// colRate
|
||||
//
|
||||
this.colRate.HeaderText = "好评率";
|
||||
this.colRate.Name = "colRate";
|
||||
this.colRate.ReadOnly = true;
|
||||
this.colRate.Width = 80;
|
||||
//
|
||||
// colDelete
|
||||
//
|
||||
this.colDelete.HeaderText = "删除";
|
||||
this.colDelete.Name = "colDelete";
|
||||
this.colDelete.ReadOnly = true;
|
||||
this.colDelete.Visible = false;
|
||||
this.colDelete.Width = 81;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(800, 28);
|
||||
this.statusBar.TabIndex = 3;
|
||||
//
|
||||
// CaiNiXiHuanCollectForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "CaiNiXiHuanCollectForm";
|
||||
this.Text = "CaiNiXiHuanCollectForm";
|
||||
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.ucGroupBoxEx1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserControls.ButtonEx btnExport;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx1;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX txtKeyWords;
|
||||
private UserControls.ButtonEx btnLoginDouyin;
|
||||
private UserControls.ButtonEx btnCollect;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx2;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txtRateMax;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox txtRateMin;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox txtCommentCountMax;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.TextBox txtTotalPage;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.TextBox txtCommentCountMin;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.TextBox txtSellCountMax;
|
||||
private System.Windows.Forms.TextBox txtPriceMax;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.TextBox txtPriceMin;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.TextBox txtSellCountMin;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private UserComponent.DataGridViewEx dgvCollect;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewImageColumn colImage;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSaleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCommentCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colRate;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,326 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.ToolForms;
|
||||
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.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
public partial class CaiNiXiHuanCollectForm : Form
|
||||
{
|
||||
decimal priceMin = 0;
|
||||
decimal priceMax = 99999999;
|
||||
long sellCountMin = 0;
|
||||
long sellCountMax = 99999999;
|
||||
long commentCountMin = 0;
|
||||
long commentCountMax = 99999999;
|
||||
int rateMin = 0;
|
||||
int rateMax = 100;
|
||||
List<DouGoodsCollectInfo> lstProduct = new List<DouGoodsCollectInfo>();
|
||||
CancellationTokenSource cancellationTokenSource = null;
|
||||
|
||||
public CaiNiXiHuanCollectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void btnCollect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (btnCollect.Text != "开始采集")
|
||||
{
|
||||
cancellationTokenSource.Cancel();
|
||||
}
|
||||
else
|
||||
{
|
||||
var cookieShop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.LoginStatus == "登录成功");
|
||||
if (cookieShop == null)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请登录店铺账号后搜索");
|
||||
return;
|
||||
}
|
||||
|
||||
priceMin = this.txtPriceMin.Text.ParseToDecimal();
|
||||
priceMax = this.txtPriceMax.Text.ParseToDecimal();
|
||||
sellCountMin = this.txtSellCountMin.Text.ParseToLong();
|
||||
sellCountMax = this.txtSellCountMax.Text.ParseToLong();
|
||||
commentCountMin = this.txtCommentCountMin.Text.ParseToLong();
|
||||
commentCountMax = this.txtCommentCountMax.Text.ParseToLong();
|
||||
rateMin = this.txtRateMin.Text.ParseToInt();
|
||||
rateMax = this.txtRateMax.Text.ParseToInt();
|
||||
|
||||
int pageTotal = txtTotalPage.Text.ParseToInt();
|
||||
if (pageTotal < 1)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请至少查询一页以上数据");
|
||||
return;
|
||||
}
|
||||
var searchTextArr = this.txtKeyWords.Text.Split(new string[] { "\r", "\n", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (searchTextArr.Length == 0)
|
||||
{
|
||||
searchTextArr = new string[] { "" };
|
||||
//BaseForms.BaseMsgForm.ShowError("请至少输入一个商品");
|
||||
//return;
|
||||
}
|
||||
lstProduct.Clear();
|
||||
this.dgvCollect.Rows.Clear();
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
int n = 0;
|
||||
int total = searchTextArr.Count() * pageTotal;
|
||||
this.statusBar.lblTaskStatus.Text = "开始采集...";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
btnCollect.Text = "停止采集";
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (!Directory.Exists("采集导出"))
|
||||
Directory.CreateDirectory("采集导出");
|
||||
var exportFileName = "采集导出\\猜你喜欢采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
StreamWriter writer = new StreamWriter(exportFileName, true, Encoding.GetEncoding("gb2312"));
|
||||
object[] objArray1 = new object[] { "商品ID,", "商品名称,", "价格,", "销量,", "评论数,", "好评率" };
|
||||
writer.WriteLine(string.Concat(objArray1));
|
||||
writer.Close();
|
||||
|
||||
foreach (var searchText in searchTextArr)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var text = searchText;
|
||||
if (text.ParseToLong() == 0)
|
||||
text = BaseRegex.GetMatchRegexString(ref text, "(\\d{10,22})");
|
||||
for (int i = 1; i < pageTotal + 1; i++)
|
||||
{
|
||||
n++;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在采集商品" + text + "猜你喜欢,当前采集到第 " + i + " 页";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
Thread.Sleep(Randomx.GetId(100, 500));
|
||||
int pageNum = i;
|
||||
var cnxhResult = CollectCaiNiXiHuan(cookieShop.Cookies, text, pageNum.ToString());
|
||||
if (!string.IsNullOrEmpty(cnxhResult) && cnxhResult.Contains("\"status_code\":0"))
|
||||
{
|
||||
JObject jObj = JObject.Parse(cnxhResult);
|
||||
if (jObj["item_cards"] == null)
|
||||
return;
|
||||
foreach (JObject pObj in jObj["item_cards"])
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var pStr = JsonHelper.SerializeObject(pObj);
|
||||
var pId = BaseRegex.GetStringJson(ref pStr, "product_id");
|
||||
if (!string.IsNullOrEmpty(pId))
|
||||
{
|
||||
DouGoodsCollectInfo prod = new DouGoodsCollectInfo();
|
||||
prod.Id = pId;
|
||||
prod.GoodsName = BaseRegex.GetStringJson(ref pStr, "title");
|
||||
if (string.IsNullOrEmpty(prod.GoodsName))
|
||||
{
|
||||
}
|
||||
prod.Price = (BaseRegex.GetDecimalJson(ref pStr, "min_price") / 100).ToString();
|
||||
prod.Sales = BaseRegex.GetIntJson(ref pStr, "sales").ToString();
|
||||
|
||||
// 筛选条件
|
||||
if (prod.Price.ParseToDecimal() < this.priceMin || prod.Price.ParseToDecimal() > this.priceMax
|
||||
|| prod.Sales.ParseToDecimal() < this.sellCountMin || prod.Sales.ParseToDecimal() > this.sellCountMax)
|
||||
continue;
|
||||
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
var commentResult = GetComments(GlobalConfig.DouUserCookies, prod.Id);
|
||||
if (!string.IsNullOrEmpty(commentResult) && commentResult.Contains("\"status_code\":0"))
|
||||
{
|
||||
prod.CommentsCount = BaseRegex.GetIntJson(ref commentResult, "total_comments_num");
|
||||
prod.CommentsRate = BaseRegex.GetDecimalJson(ref commentResult, "good_comment_ratio").ParseToDouble() / 100;
|
||||
}
|
||||
|
||||
// 筛选条件
|
||||
if (prod.CommentsRate < this.rateMin || prod.CommentsRate > this.rateMax
|
||||
|| prod.CommentsCount < this.commentCountMin || prod.CommentsCount > this.commentCountMax)
|
||||
continue;
|
||||
|
||||
this.lstProduct.Add(prod);
|
||||
|
||||
try
|
||||
{
|
||||
StreamWriter writer1 = new StreamWriter(exportFileName, true, Encoding.GetEncoding("gb2312"));
|
||||
object[] objArray2 = new object[15];
|
||||
objArray2[1] = "https://haohuo.jinritemai.com/views/product/item2?id=" + prod.Id;
|
||||
objArray2[2] = ",";
|
||||
objArray2[3] = prod.GoodsName;
|
||||
objArray2[4] = ",";
|
||||
objArray2[5] = prod.Price;
|
||||
objArray2[6] = ",";
|
||||
objArray2[7] = prod.Sales;
|
||||
objArray2[8] = ",";
|
||||
objArray2[9] = prod.CommentsCount;
|
||||
objArray2[10] = ",";
|
||||
objArray2[11] = prod.CommentsRate;
|
||||
writer1.WriteLine(string.Concat(objArray2));
|
||||
writer1.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var index = this.dgvCollect.Rows.Add(false, prod.Id, prod.GoodsName, null, prod.Price, prod.Sales, prod.CommentsCount,
|
||||
prod.CommentsRate, "删除");
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
btnCollect.Text = "开始采集";
|
||||
this.statusBar.lblTaskStatus.Text = "采集结束,共采集到商品" + this.lstProduct.Count + "个";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
}
|
||||
|
||||
private string CollectCaiNiXiHuan(string cookies, string productId, string pageNum = "1", string cursor = "20")
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = "https://api5-normal-c-lf.amemv.com/aweme/v2/commerce/favorite/feed?app_name=aweme&channel=App%20Store&slide_guide_has_shown=1&minor_status=0&product_id=" +
|
||||
productId + "&page_num=" + pageNum + "&cursor=" + cursor + "&page_name=product_detail&feedbacks=&count=20&filters=&filter_type=";
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36";
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string GetComments(string cookies, string productId)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = "http://lianmengapi.snssdk.com/ies/v2/decision/getProductComments?product_id=" + productId + "&aid=1128";
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.177";
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
private void btnLoginDouyin_Click(object sender, EventArgs e)
|
||||
{
|
||||
DouUserLoginForm dForm = new DouUserLoginForm();
|
||||
dForm.ShowDialog();
|
||||
}
|
||||
|
||||
private void btnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
|
||||
saveFileDialog1.Filter = "表格文件(*.csv)|*.csv";
|
||||
saveFileDialog1.FileName = "猜你喜欢采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
saveFileDialog1.FilterIndex = 2;
|
||||
saveFileDialog1.RestoreDirectory = true;
|
||||
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("商品ID," + "商品名称," + "价格," + "销量," + "评论数," + "好评率");
|
||||
foreach (var goodsInfo in lstProduct)
|
||||
{
|
||||
sb.AppendLine("https://haohuo.jinritemai.com/views/product/item2?id=" + goodsInfo.Id + "," + goodsInfo.GoodsName + ","
|
||||
+ goodsInfo.Price + "," + goodsInfo.Sales + "," + goodsInfo.CommentsCount + "," + goodsInfo.CommentsRate);
|
||||
}
|
||||
System.IO.File.WriteAllText(saveFileDialog1.FileName, sb.ToString(), Encoding.Default);
|
||||
BaseForms.BaseMsgForm.ShowInfo("导出成功");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvCollect_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.RowIndex < 0 || e.ColumnIndex < 0)
|
||||
return;
|
||||
|
||||
var goodsId = dgvCollect.Rows[e.RowIndex].Cells["colProductId"].Value.ToString();
|
||||
var columnName = dgvCollect.Columns[e.ColumnIndex].Name;
|
||||
if (columnName == "colProductName")
|
||||
{
|
||||
string url = "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsId;
|
||||
GetHtml.OpenUrl(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
<?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="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colImage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSaleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCommentCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colRate.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>
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
partial class CollectForm
|
||||
{
|
||||
/// <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("采集商品", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode1,
|
||||
treeNode2,
|
||||
treeNode3,
|
||||
treeNode4,
|
||||
treeNode5});
|
||||
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.tv = new LittleRabbit.UserComponent.UcTreeView();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
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(659, 450);
|
||||
this.panel1.TabIndex = 4;
|
||||
//
|
||||
// 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(659, 422);
|
||||
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(659, 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";
|
||||
//
|
||||
// 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 = "采集商品";
|
||||
this.tv.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
|
||||
treeNode6});
|
||||
this.tv.OverForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
|
||||
this.tv.Size = new System.Drawing.Size(140, 450);
|
||||
this.tv.TabIndex = 3;
|
||||
this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect);
|
||||
//
|
||||
// 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(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 140;
|
||||
this.splitContainer1.SplitterWidth = 1;
|
||||
this.splitContainer1.TabIndex = 5;
|
||||
//
|
||||
// CollectForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "CollectForm";
|
||||
this.Text = "CollectForm";
|
||||
this.Load += new System.EventHandler(this.CollectForm_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 System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Label lblName;
|
||||
private UserComponent.UcTreeView tv;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
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;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
public partial class CollectForm : Form
|
||||
{
|
||||
public Lazy<HaoWuCollectForm> haoWuCollectForm = new Lazy<HaoWuCollectForm>();
|
||||
public Lazy<FriendShopCollectForm> friendShopCollectForm = new Lazy<FriendShopCollectForm>();
|
||||
public Lazy<KeywordCollectForm> keywordCollectForm = new Lazy<KeywordCollectForm>();
|
||||
public Lazy<CaiNiXiHuanCollectForm> caiNiXiHuanCollectForm = new Lazy<CaiNiXiHuanCollectForm>();
|
||||
public Lazy<ShopProductCollectForm> shopProductCollectForm = new Lazy<ShopProductCollectForm>();
|
||||
|
||||
public CollectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
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(haoWuCollectForm.Value);
|
||||
break;
|
||||
case "同行采集":
|
||||
SetForm(friendShopCollectForm.Value);
|
||||
break;
|
||||
case "整店采集":
|
||||
SetForm(shopProductCollectForm.Value);
|
||||
break;
|
||||
case "关键词采集":
|
||||
SetForm(keywordCollectForm.Value);
|
||||
break;
|
||||
case "猜你喜欢采集":
|
||||
SetForm(caiNiXiHuanCollectForm.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;
|
||||
f.Show();
|
||||
}
|
||||
|
||||
private void CollectForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
tv.SelectedNode = tv.Nodes[0].Nodes[0];
|
||||
tv.ExpandGroup(tv.Nodes[0].Name);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,566 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
partial class FriendShopCollectForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.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.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnExport = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx1 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.txtKeyWords = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.btnLoginDouyin = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.btnCollect = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx2 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.cmbSort = new System.Windows.Forms.ComboBox();
|
||||
this.txtScoreRateMax = new System.Windows.Forms.TextBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.txtTotalPage = new System.Windows.Forms.TextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.txtScoreRateMin = new System.Windows.Forms.TextBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.txtShopSalesMax = new System.Windows.Forms.TextBox();
|
||||
this.txtProductCountMax = new System.Windows.Forms.TextBox();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.txtProductCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.txtShopSalesMin = new System.Windows.Forms.TextBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvCollect = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colKeyword = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colRate = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSaleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colDelete = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.ucGroupBoxEx1.SuspendLayout();
|
||||
this.ucGroupBoxEx2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnExport);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnLoginDouyin);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnCollect);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx2);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 121;
|
||||
this.splitContainer1.TabIndex = 376;
|
||||
//
|
||||
// btnExport
|
||||
//
|
||||
this.btnExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnExport.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnExport.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnExport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnExport.ForeColor = System.Drawing.Color.White;
|
||||
this.btnExport.Location = new System.Drawing.Point(720, 84);
|
||||
this.btnExport.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnExport.Name = "btnExport";
|
||||
this.btnExport.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnExport.TabIndex = 394;
|
||||
this.btnExport.Text = "导出数据";
|
||||
this.btnExport.UseVisualStyleBackColor = false;
|
||||
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
|
||||
//
|
||||
// ucGroupBoxEx1
|
||||
//
|
||||
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx1.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtKeyWords);
|
||||
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
|
||||
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
|
||||
this.ucGroupBoxEx1.Size = new System.Drawing.Size(192, 120);
|
||||
this.ucGroupBoxEx1.TabIndex = 393;
|
||||
this.ucGroupBoxEx1.TabStop = false;
|
||||
this.ucGroupBoxEx1.Text = "采集关键词";
|
||||
//
|
||||
// txtKeyWords
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.txtKeyWords.Border.Class = "TextBoxBorder";
|
||||
this.txtKeyWords.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.txtKeyWords.Location = new System.Drawing.Point(10, 21);
|
||||
this.txtKeyWords.Multiline = true;
|
||||
this.txtKeyWords.Name = "txtKeyWords";
|
||||
this.txtKeyWords.PreventEnterBeep = true;
|
||||
this.txtKeyWords.Size = new System.Drawing.Size(171, 88);
|
||||
this.txtKeyWords.TabIndex = 7;
|
||||
this.txtKeyWords.WatermarkText = "请输入要搜索的商品名称\r\n如垃圾桶,连衣裙等\r\n一行一个";
|
||||
//
|
||||
// btnLoginDouyin
|
||||
//
|
||||
this.btnLoginDouyin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnLoginDouyin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnLoginDouyin.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnLoginDouyin.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnLoginDouyin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnLoginDouyin.ForeColor = System.Drawing.Color.White;
|
||||
this.btnLoginDouyin.Location = new System.Drawing.Point(720, 20);
|
||||
this.btnLoginDouyin.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnLoginDouyin.Name = "btnLoginDouyin";
|
||||
this.btnLoginDouyin.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnLoginDouyin.TabIndex = 373;
|
||||
this.btnLoginDouyin.Text = "登录抖音";
|
||||
this.btnLoginDouyin.UseVisualStyleBackColor = false;
|
||||
this.btnLoginDouyin.Click += new System.EventHandler(this.btnLoginDouyin_Click);
|
||||
//
|
||||
// btnCollect
|
||||
//
|
||||
this.btnCollect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCollect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnCollect.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCollect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnCollect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCollect.ForeColor = System.Drawing.Color.White;
|
||||
this.btnCollect.Location = new System.Drawing.Point(720, 52);
|
||||
this.btnCollect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCollect.Name = "btnCollect";
|
||||
this.btnCollect.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnCollect.TabIndex = 374;
|
||||
this.btnCollect.Text = "开始采集";
|
||||
this.btnCollect.UseVisualStyleBackColor = false;
|
||||
this.btnCollect.Click += new System.EventHandler(this.btnCollect_Click);
|
||||
//
|
||||
// ucGroupBoxEx2
|
||||
//
|
||||
this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx2.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx2.Controls.Add(this.cmbSort);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtScoreRateMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.checkBox1);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label9);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtTotalPage);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label10);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label11);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtScoreRateMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label12);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtShopSalesMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtProductCountMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label13);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtProductCountMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label14);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label15);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtShopSalesMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label16);
|
||||
this.ucGroupBoxEx2.Location = new System.Drawing.Point(196, 2);
|
||||
this.ucGroupBoxEx2.Name = "ucGroupBoxEx2";
|
||||
this.ucGroupBoxEx2.Size = new System.Drawing.Size(357, 120);
|
||||
this.ucGroupBoxEx2.TabIndex = 395;
|
||||
this.ucGroupBoxEx2.TabStop = false;
|
||||
this.ucGroupBoxEx2.Text = "采集参数";
|
||||
//
|
||||
// cmbSort
|
||||
//
|
||||
this.cmbSort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbSort.FormattingEnabled = true;
|
||||
this.cmbSort.Items.AddRange(new object[] {
|
||||
"综合",
|
||||
"销量"});
|
||||
this.cmbSort.Location = new System.Drawing.Point(68, 22);
|
||||
this.cmbSort.Name = "cmbSort";
|
||||
this.cmbSort.Size = new System.Drawing.Size(85, 25);
|
||||
this.cmbSort.TabIndex = 375;
|
||||
//
|
||||
// txtScoreRateMax
|
||||
//
|
||||
this.txtScoreRateMax.Location = new System.Drawing.Point(287, 86);
|
||||
this.txtScoreRateMax.Name = "txtScoreRateMax";
|
||||
this.txtScoreRateMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtScoreRateMax.TabIndex = 391;
|
||||
this.txtScoreRateMax.Text = "5";
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(13, 87);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(99, 21);
|
||||
this.checkBox1.TabIndex = 392;
|
||||
this.checkBox1.Text = "显示商品图片";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.Visible = false;
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(275, 89);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(13, 17);
|
||||
this.label9.TabIndex = 390;
|
||||
this.label9.Text = "-";
|
||||
//
|
||||
// txtTotalPage
|
||||
//
|
||||
this.txtTotalPage.Location = new System.Drawing.Point(68, 54);
|
||||
this.txtTotalPage.Name = "txtTotalPage";
|
||||
this.txtTotalPage.Size = new System.Drawing.Size(85, 23);
|
||||
this.txtTotalPage.TabIndex = 376;
|
||||
this.txtTotalPage.Text = "5";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(162, 90);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(56, 17);
|
||||
this.label10.TabIndex = 389;
|
||||
this.label10.Text = "体验分数";
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(11, 26);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(56, 17);
|
||||
this.label11.TabIndex = 377;
|
||||
this.label11.Text = "排 序";
|
||||
//
|
||||
// txtScoreRateMin
|
||||
//
|
||||
this.txtScoreRateMin.Location = new System.Drawing.Point(219, 86);
|
||||
this.txtScoreRateMin.Name = "txtScoreRateMin";
|
||||
this.txtScoreRateMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtScoreRateMin.TabIndex = 388;
|
||||
this.txtScoreRateMin.Text = "0";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(10, 58);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(56, 17);
|
||||
this.label12.TabIndex = 378;
|
||||
this.label12.Text = "采集页数";
|
||||
//
|
||||
// txtShopSalesMax
|
||||
//
|
||||
this.txtShopSalesMax.Location = new System.Drawing.Point(287, 54);
|
||||
this.txtShopSalesMax.Name = "txtShopSalesMax";
|
||||
this.txtShopSalesMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtShopSalesMax.TabIndex = 387;
|
||||
this.txtShopSalesMax.Text = "99999999";
|
||||
//
|
||||
// txtProductCountMax
|
||||
//
|
||||
this.txtProductCountMax.Location = new System.Drawing.Point(287, 22);
|
||||
this.txtProductCountMax.Name = "txtProductCountMax";
|
||||
this.txtProductCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtProductCountMax.TabIndex = 383;
|
||||
this.txtProductCountMax.Text = "99999999";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(275, 57);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(13, 17);
|
||||
this.label13.TabIndex = 386;
|
||||
this.label13.Text = "-";
|
||||
//
|
||||
// txtProductCountMin
|
||||
//
|
||||
this.txtProductCountMin.Location = new System.Drawing.Point(219, 22);
|
||||
this.txtProductCountMin.Name = "txtProductCountMin";
|
||||
this.txtProductCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtProductCountMin.TabIndex = 379;
|
||||
this.txtProductCountMin.Text = "0";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(162, 58);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(56, 17);
|
||||
this.label14.TabIndex = 385;
|
||||
this.label14.Text = "店铺月销";
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Location = new System.Drawing.Point(162, 26);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(56, 17);
|
||||
this.label15.TabIndex = 380;
|
||||
this.label15.Text = "宝贝数量";
|
||||
//
|
||||
// txtShopSalesMin
|
||||
//
|
||||
this.txtShopSalesMin.Location = new System.Drawing.Point(219, 54);
|
||||
this.txtShopSalesMin.Name = "txtShopSalesMin";
|
||||
this.txtShopSalesMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtShopSalesMin.TabIndex = 384;
|
||||
this.txtShopSalesMin.Text = "0";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(275, 25);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(13, 17);
|
||||
this.label16.TabIndex = 382;
|
||||
this.label16.Text = "-";
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvCollect);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(800, 325);
|
||||
this.splitContainer2.SplitterDistance = 299;
|
||||
this.splitContainer2.SplitterWidth = 1;
|
||||
this.splitContainer2.TabIndex = 7;
|
||||
//
|
||||
// dgvCollect
|
||||
//
|
||||
this.dgvCollect.AllowUserToAddRows = false;
|
||||
this.dgvCollect.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle4.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvCollect.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.dgvCollect.BackgroundColor = System.Drawing.Color.White;
|
||||
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.dgvCollect.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.dgvCollect.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvCollect.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colKeyword,
|
||||
this.colShopId,
|
||||
this.colShopName,
|
||||
this.colRate,
|
||||
this.colSaleCount,
|
||||
this.colShopCount,
|
||||
this.colProductId,
|
||||
this.colDelete});
|
||||
this.dgvCollect.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvCollect.Location = new System.Drawing.Point(5, 0);
|
||||
this.dgvCollect.Name = "dgvCollect";
|
||||
this.dgvCollect.ReadOnly = true;
|
||||
dataGridViewCellStyle6.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvCollect.RowsDefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.dgvCollect.RowTemplate.Height = 23;
|
||||
this.dgvCollect.Size = new System.Drawing.Size(790, 299);
|
||||
this.dgvCollect.TabIndex = 6;
|
||||
this.dgvCollect.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCollect_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
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;
|
||||
this.colSelect.Visible = false;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colKeyword
|
||||
//
|
||||
this.colKeyword.HeaderText = "关键词";
|
||||
this.colKeyword.Name = "colKeyword";
|
||||
this.colKeyword.ReadOnly = true;
|
||||
//
|
||||
// colShopId
|
||||
//
|
||||
this.colShopId.HeaderText = "店铺Id";
|
||||
this.colShopId.Name = "colShopId";
|
||||
this.colShopId.ReadOnly = true;
|
||||
//
|
||||
// colShopName
|
||||
//
|
||||
this.colShopName.FillWeight = 150F;
|
||||
this.colShopName.HeaderText = "店铺名称";
|
||||
this.colShopName.Name = "colShopName";
|
||||
this.colShopName.ReadOnly = true;
|
||||
this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colShopName.Width = 150;
|
||||
//
|
||||
// colRate
|
||||
//
|
||||
this.colRate.HeaderText = "体验分数";
|
||||
this.colRate.Name = "colRate";
|
||||
this.colRate.ReadOnly = true;
|
||||
this.colRate.Width = 80;
|
||||
//
|
||||
// colSaleCount
|
||||
//
|
||||
this.colSaleCount.HeaderText = "店铺销量";
|
||||
this.colSaleCount.Name = "colSaleCount";
|
||||
this.colSaleCount.ReadOnly = true;
|
||||
this.colSaleCount.Width = 80;
|
||||
//
|
||||
// colShopCount
|
||||
//
|
||||
this.colShopCount.FillWeight = 150F;
|
||||
this.colShopCount.HeaderText = "店铺宝贝数量";
|
||||
this.colShopCount.Name = "colShopCount";
|
||||
this.colShopCount.ReadOnly = true;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品链接";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 300;
|
||||
//
|
||||
// colDelete
|
||||
//
|
||||
this.colDelete.HeaderText = "删除";
|
||||
this.colDelete.Name = "colDelete";
|
||||
this.colDelete.ReadOnly = true;
|
||||
this.colDelete.Visible = false;
|
||||
this.colDelete.Width = 81;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(800, 25);
|
||||
this.statusBar.TabIndex = 4;
|
||||
//
|
||||
// FriendShopCollectForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "FriendShopCollectForm";
|
||||
this.Text = "同行采集";
|
||||
this.Load += new System.EventHandler(this.FriendShopCollectForm_Load);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.PerformLayout();
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserControls.ButtonEx btnExport;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx1;
|
||||
private UserControls.ButtonEx btnLoginDouyin;
|
||||
private UserControls.ButtonEx btnCollect;
|
||||
private UserComponent.DataGridViewEx dgvCollect;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx2;
|
||||
private System.Windows.Forms.ComboBox cmbSort;
|
||||
private System.Windows.Forms.TextBox txtScoreRateMax;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.TextBox txtTotalPage;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private System.Windows.Forms.TextBox txtScoreRateMin;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.TextBox txtShopSalesMax;
|
||||
private System.Windows.Forms.TextBox txtProductCountMax;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.TextBox txtProductCountMin;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.TextBox txtShopSalesMin;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX txtKeyWords;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colKeyword;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colRate;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSaleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,357 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using LittleRabbit.LittleRabbitForms.ToolForms;
|
||||
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.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
public partial class FriendShopCollectForm : Form
|
||||
{
|
||||
List<DouGoodsCollectInfo> lstProduct = new List<DouGoodsCollectInfo>();
|
||||
CancellationTokenSource cancellationTokenSource = null;
|
||||
long productCountMin = 0;
|
||||
long productCountMax = 99999999;
|
||||
long shopSaleCountMin = 0;
|
||||
long shopSaleCountMax = 99999999;
|
||||
/// <summary>
|
||||
/// 体验分数最小值
|
||||
/// </summary>
|
||||
decimal scoreMin = 0;
|
||||
/// <summary>
|
||||
/// 体验分数最大值
|
||||
/// </summary>
|
||||
decimal scoreMax = 100;
|
||||
|
||||
public FriendShopCollectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="cookies"></param>
|
||||
/// <param name="searchText">搜索关键字</param>
|
||||
/// <param name="cursor">当前搜索的游标</param>
|
||||
/// <param name="count">要搜索的总数</param>
|
||||
/// <param name="sort">排序依据 0:综合 2:销量</param>
|
||||
/// <returns></returns>
|
||||
private string GetFriendShops(string cookies, string searchText, string cursor = "0", string count = "50", string sort = "0")
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = "https://lianmengapi-lf.snssdk.com/selection/search/shop?channel=App%20Store&slide_guide_has_shown=1&minor_status=0"
|
||||
+ "&cursor=" + cursor + "&count=" + count + "&search_text=" + GetHtml.UrlEncodeUtf8(searchText) + "&request_tag_from=m&order_by=&sort=" + sort;
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
//https://lianmengapi-lf.snssdk.com/selection/search/shop?channel=App%20Store&slide_guide_has_shown=1&minor_status=0&cursor=0&count=50&search_text=%e8%bf%9e%e8%a1%a3%e8%a3%99&request_tag_from=m&order_by=&sort=0
|
||||
//https://lianmengapi-lf.snssdk.com/selection/search/shop?channel=App%20Store&slide_guide_has_shown=1&minor_status=0&cursor=80&count=100&search_text=%E8%BF%9E%E8%A1%A3%E8%A3%99&request_tag_from=m&order_by=&sort=0");
|
||||
//gfsitesid=MTI1NzAyNzU1NHwxNjI2MDc2NDI1NDN8fDQyOTIxMTA1Mjk2MDgzNzUHBwcHBwcH; gfsitesid=MTI1NzAyNzU1NHwxNjI2MDc2NDI1NDN8fDQyOTIxMTA1Mjk2MDgzNzUHBwcHBwcH; gfsitesid=MTI1NzAyNzU1NHwxNjI2MDc2NDI1NDN8fDQyOTIxMTA1Mjk2MDgzNzUHBwcHBwcH; gfsitesid=MTI1NzAyNzU1NHwxNjI2MDc2NDI1NDN8fDQyOTIxMTA1Mjk2MDgzNzUHBwcHBwcH; gftoken=MTI1NzAyNzU1NHwxNjI2MDc2NDI1NDN8fDAGBgYGBgY; Hm_lvt_b6520b076191ab4b36812da4c90f7a5e=1626076426; MONITOR_WEB_ID=ff46fe79-c1bd-4d03-b18d-39e78c59e3cf; passport_csrf_token_default=7565758120670bc073d791d6c2516599; passport_csrf_token=7565758120670bc073d791d6c2516599; ttcid=84ce6ad7a7c54817876bc354ce50e63998; ttwid=1%7C6M4WENwiVxCUI00v2KqThQe4VmQM34O0AXRdgU3S7ns%7C1626076427%7C6238c10c68cd01bf99c1a8fa834c4250f32a8b2ccc2adc1029ef451cab53cd60; n_mh=7LrrRmeUceh3vjPZWa4C3h7B_APxodsUr7zuYy75V90; sso_uid_tt=2ef4d6078ca6ad08e04251ff869d1454; sso_uid_tt_ss=2ef4d6078ca6ad08e04251ff869d1454; toutiao_sso_user=1f5ff878e13850a8a76d1c5002053dbb; toutiao_sso_user_ss=1f5ff878e13850a8a76d1c5002053dbb; odin_tt=fa6e9e56199abc6fe54781e77c689540450d6e2513913a8b02ae5b1253072129714f9118b1da0c09bfb9397d4dc5c318604bae278e4cf15e9845340f22d65e69; uidpasaddaehruigqreajf=0; tt_scid=rx5XfMYxzTA66ZKDdmoMcC4qrQQzNeZh-wTo-K3sfH8pDdVFgiS9pBpGCcVx2ORX5bdd; ucas_sso_c0_ss=CkEKBTEuMC4wEJ6Ihe7Jof31YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CT6q-HBkiTnuyJBlCOvKLE77ansWBYbhIU5OPHMBH5sjM45bXzqY54qXYF2OY; ucas_sso_c0=CkEKBTEuMC4wEJ6Ihe7Jof31YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CT6q-HBkiTnuyJBlCOvKLE77ansWBYbhIU5OPHMBH5sjM45bXzqY54qXYF2OY; ucas_c0_ss=CkEKBTEuMC4wEKSIhsLaof31YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CT6q-HBkiTnuyJBlCOvKLE77ansWBYbhIUpAxRIGvlmWnW3egoiY9Qkn_jA-M; sid_guard=0f3e1676339ab15de4697e624ff85b58%7C1626076435%7C5184000%7CFri%2C+10-Sep-2021+07%3A53%3A55+GMT; uid_tt=40ce5c67070509846fb296d5d132a38a; uid_tt_ss=40ce5c67070509846fb296d5d132a38a; sid_tt=0f3e1676339ab15de4697e624ff85b58; sessionid=0f3e1676339ab15de4697e624ff85b58; sessionid_ss=0f3e1676339ab15de4697e624ff85b58; ucas_c0=CkEKBTEuMC4wEKSIhsLaof31YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CT6q-HBkiTnuyJBlCOvKLE77ansWBYbhIUpAxRIGvlmWnW3egoiY9Qkn_jA-M; PHPSESSID=ff529a6f01eaf19e6a00245e676d1fa0; PHPSESSID_SS=ff529a6f01eaf19e6a00245e676d1fa0; need_choose_shop=0; Hm_lpvt_b6520b076191ab4b36812da4c90f7a5e=1626076436; login_info=%7B%22for_im_reply%22%3A%22ff529a6f01eaf19e6a00245e676d1fa0%22%7D
|
||||
//passport_csrf_token_default=b45f8a5deab82f55ee0a9b2452c78a2d; passport_csrf_token=b45f8a5deab82f55ee0a9b2452c78a2d; n_mh=7LrrRmeUceh3vjPZWa4C3h7B_APxodsUr7zuYy75V90; sso_uid_tt=77d4f2eb5023c34a6a9a7cebb2b382db; sso_uid_tt_ss=77d4f2eb5023c34a6a9a7cebb2b382db; toutiao_sso_user=a884ccbcc49dad835d33cdc613c62438; toutiao_sso_user_ss=a884ccbcc49dad835d33cdc613c62438; odin_tt=ef6c903d84d840d6849ac89bba2da6f261fd3ae8b722c34f3e85ac154b69709e145deb2aef4fa2dbb777d1d6c53146dcc3ade71ffb17f315e410d911b0eff5db; ucas_sso_c0_ss=CkEKBTEuMC4wEKSIiN6mnor2YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CG0rCHBkiGhu2JBlCOvKLE77ansWBYbhIUtfYvQwb4NE052EdbcrL95yHsFrs; ucas_sso_c0=CkEKBTEuMC4wEKSIiN6mnor2YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CG0rCHBkiGhu2JBlCOvKLE77ansWBYbhIUtfYvQwb4NE052EdbcrL95yHsFrs; ucas_c0_ss=CkEKBTEuMC4wEKSIid6mnor2YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CG0rCHBkiGhu2JBlCOvKLE77ansWBYbhIU-APRWpBUAsOmIf4repethZ5coPw; sid_guard=630400240480860367e63fa726e7238f%7C1626089734%7C5184000%7CFri%2C+10-Sep-2021+11%3A35%3A34+GMT; uid_tt=1b1612b50857532656f4f623275adb40; uid_tt_ss=1b1612b50857532656f4f623275adb40; sid_tt=630400240480860367e63fa726e7238f; sessionid=630400240480860367e63fa726e7238f; sessionid_ss=630400240480860367e63fa726e7238f; ucas_c0=CkEKBTEuMC4wEKSIid6mnor2YBjmJiC9k9DP4oyUBCiwITC39dDb7fTPB0CG0rCHBkiGhu2JBlCOvKLE77ansWBYbhIU-APRWpBUAsOmIf4repethZ5coPw; PHPSESSID=840c94272b784072021cecf2aefccb30; PHPSESSID_SS=840c94272b784072021cecf2aefccb30; MONITOR_WEB_ID=e8b18a1d-c085-4692-bba2-3972f9dc16e7; buyin_shop_type=24; ttwid=1%7CuycbM01qMO-TgJUFec3jiZ_znHlSLKDYKGuzE_vWz90%7C1626242695%7C4bccbd38df4bd7ff3265ca69959cdc6a6dd7df547437ab4e891149ff37a464cf; SASID=SID2_3492329951615696327; BUYIN_SASID=SID2_3492329951615696327");
|
||||
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
//request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36";
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
|
||||
private string GetShopDetail(string productId)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = "http://ec.snssdk.com/product/ajaxitem?b_type_new=0&device_id=0&is_outside=1&id=" + productId + "&abParams=0";
|
||||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
request.Referer = "https://haohuo.jinritemai.com/";
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.509";
|
||||
request.Headers.Add("origin", @"https://haohuo.jinritemai.com");
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void btnCollect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (btnCollect.Text != "开始采集")
|
||||
{
|
||||
cancellationTokenSource.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
var cookieShop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.LoginStatus == "登录成功");
|
||||
if (cookieShop == null)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请登录店铺账号后搜索");
|
||||
return;
|
||||
}
|
||||
var searchTextArr = this.txtKeyWords.Text.Split(new string[] { "\r", "\n", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (searchTextArr.Length == 0)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请至少输入一个关键词");
|
||||
return;
|
||||
}
|
||||
productCountMin = txtProductCountMin.Text.ParseToLong();
|
||||
productCountMax = txtProductCountMax.Text.ParseToLong();
|
||||
shopSaleCountMin = txtShopSalesMin.Text.ParseToLong();
|
||||
shopSaleCountMax = txtShopSalesMax.Text.ParseToLong();
|
||||
scoreMin = txtScoreRateMin.Text.ParseToDecimal();
|
||||
scoreMax = txtScoreRateMax.Text.ParseToDecimal();
|
||||
|
||||
int totalPage = txtTotalPage.Text.ParseToInt();
|
||||
lstProduct.Clear();
|
||||
this.dgvCollect.Rows.Clear();
|
||||
var sortType = cmbSort.SelectedIndex <= 0 ? "0" : "2";
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
int n = 0;
|
||||
int total = searchTextArr.Count() * totalPage;
|
||||
this.statusBar.lblTaskStatus.Text = "开始采集...";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
btnCollect.Text = "停止采集";
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var searchText in searchTextArr)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var exportFileName = "采集导出\\抖音同行采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists("采集导出"))
|
||||
Directory.CreateDirectory("采集导出");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("关键词,店铺编号,店铺名称,体验分数,店铺销量,店铺商品总数,商品链接");
|
||||
File.AppendAllText(exportFileName, sb.ToString(), Encoding.Default);
|
||||
}
|
||||
catch (Exception ex) { }
|
||||
|
||||
for (int page = 0; page < totalPage; page++)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
n++;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在采集同行商品:" + searchText + ",当前采集到第 " + (page + 1) + " 页";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
|
||||
//var friendProductResult = GetFriendShops(cookieShop.Cookies, searchText, (page * 10).ToString(), (totalPage * 10).ToString(), sortType);
|
||||
var friendProductResult = GetFriendShops(GlobalConfig.DouUserCookies, searchText, (page * 10).ToString(), (totalPage * 10).ToString(), sortType);
|
||||
if (friendProductResult.Contains("用户未登录"))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
ToolForms.DouUserLoginForm dForm = new ToolForms.DouUserLoginForm();
|
||||
dForm.ShowDialog();
|
||||
}));
|
||||
}
|
||||
friendProductResult = GetFriendShops(GlobalConfig.DouUserCookies, searchText, (page * 10).ToString(), (totalPage * 10).ToString(), sortType);
|
||||
if (friendProductResult.Contains("用户未登录"))
|
||||
{
|
||||
BaseMsgForm.ShowError("用户登录失败,请登录抖音账号后再试!");
|
||||
break;
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(friendProductResult) && friendProductResult.Contains("\"status_code\":0"))
|
||||
{
|
||||
JObject jObj = JObject.Parse(friendProductResult);
|
||||
if (jObj["shops"] == null)
|
||||
continue;
|
||||
|
||||
foreach (var shop in jObj["shops"])
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var shopStr = JsonHelper.SerializeObject(shop);
|
||||
|
||||
DouGoodsCollectInfo good = new DouGoodsCollectInfo();
|
||||
good.Keyword = searchText;
|
||||
good.Id = BaseRegex.GetStringJson(ref shopStr, "product_id");
|
||||
good.ShopName = BaseRegex.GetStringJson(ref shopStr, "name");
|
||||
//good.ShopId = BaseRegex.GetStringJson(ref shopStr, "shop_id");
|
||||
good.CommentsRate = BaseRegex.GetStringJson(ref shopStr, "score").ParseToDouble();
|
||||
good.Sales = BaseRegex.GetStringJson(ref shopStr, "sales");
|
||||
|
||||
// 筛选条件
|
||||
if (good.Sales.ParseToLong() < this.shopSaleCountMin || good.Sales.ParseToLong() > this.shopSaleCountMax
|
||||
|| good.CommentsRate.ParseToDecimal() < scoreMin || good.CommentsRate.ParseToDecimal() > scoreMax)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
string detailResult = GetShopDetail(good.Id);
|
||||
if (string.IsNullOrEmpty(detailResult) || !detailResult.Contains("\"st\":0"))
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(500, 1000));
|
||||
detailResult = GetShopDetail(good.Id);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(detailResult) && detailResult.Contains("\"st\":0"))
|
||||
{
|
||||
good.ShopProductCount = BaseRegex.GetStringJson(ref detailResult, "shop_product_count").ParseToInt();
|
||||
|
||||
// 筛选条件
|
||||
if (good.ShopProductCount < this.productCountMin || good.ShopProductCount > this.productCountMax)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取可用于店铺查询的店铺ID
|
||||
Thread.Sleep(Randomx.GetId(300, 600));
|
||||
string shopResult = Work.BLL.Collect.HaoWuCollectBLL.getHtml("https://ec.snssdk.com/product/fxgajaxstaticitem?" +
|
||||
"b_type_new=0&device_id=0&is_outside=1&id=" + good.Id + "&preview=0", "", "utf8");
|
||||
if (!string.IsNullOrEmpty(shopResult))
|
||||
good.ShopId = BaseRegex.GetStringJson(ref shopResult, "shop_id");
|
||||
|
||||
try
|
||||
{
|
||||
this.lstProduct.Add(good);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine(good.Keyword + "," + good.ShopId + ","
|
||||
+ good.ShopName + "," + good.CommentsRate + "," + good.Sales + "," + good.ShopProductCount + ","
|
||||
+ "https://haohuo.jinritemai.com/views/product/item2?id=" + good.Id);
|
||||
File.AppendAllText(exportFileName, sb.ToString(), Encoding.Default);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var index = this.dgvCollect.Rows.Add(false, good.Keyword, good.ShopId, good.ShopName, good.CommentsRate, good.Sales,
|
||||
good.ShopProductCount, "https://haohuo.jinritemai.com/views/product/item2?id=" + good.Id, "删除");
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
btnCollect.Text = "开始采集";
|
||||
|
||||
this.statusBar.lblTaskStatus.Text = "采集结束,共采集到商品" + this.lstProduct.Count + "个";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
private void btnLoginDouyin_Click(object sender, EventArgs e)
|
||||
{
|
||||
DouUserLoginForm dForm = new DouUserLoginForm();
|
||||
dForm.ShowDialog();
|
||||
}
|
||||
|
||||
private void FriendShopCollectForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.cmbSort.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void dgvCollect_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.RowIndex < 0 || e.ColumnIndex < 0)
|
||||
return;
|
||||
|
||||
var goodsId = dgvCollect.Rows[e.RowIndex].Cells["colProductId"].Value.ToString();
|
||||
var columnName = dgvCollect.Columns[e.ColumnIndex].Name;
|
||||
if (columnName == "colProductId")
|
||||
{
|
||||
string url = goodsId;
|
||||
GetHtml.OpenUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
|
||||
saveFileDialog1.Filter = "表格文件(*.csv)|*.csv";
|
||||
saveFileDialog1.FileName = "抖音同行采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
saveFileDialog1.FilterIndex = 2;
|
||||
saveFileDialog1.RestoreDirectory = true;
|
||||
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("关键词,店铺编号,店铺名称,体验分数,店铺销量,店铺商品总数,商品链接");
|
||||
foreach (var goodsInfo in lstProduct)
|
||||
{
|
||||
sb.AppendLine(goodsInfo.Keyword + "," + goodsInfo.ShopId + ","
|
||||
+ goodsInfo.ShopName + "," + goodsInfo.CommentsRate + "," + goodsInfo.Sales + "," + goodsInfo.ShopProductCount + ","
|
||||
+ "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsInfo.Id);
|
||||
}
|
||||
File.WriteAllText(saveFileDialog1.FileName, sb.ToString(), Encoding.Default);
|
||||
BaseForms.BaseMsgForm.ShowInfo("导出成功");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colKeyword.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="colRate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSaleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShopCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductId.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>
|
||||
@@ -0,0 +1,556 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
partial class HaoWuCollectForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnExport = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx1 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.cmbCategory = new System.Windows.Forms.ComboBox();
|
||||
this.txtRateMax = new System.Windows.Forms.TextBox();
|
||||
this.chkShowImage = new System.Windows.Forms.CheckBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.txtCollectPage = new System.Windows.Forms.TextBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.txtRateMin = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtSaleCountMax = new System.Windows.Forms.TextBox();
|
||||
this.txtPriceMax = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.txtPriceMin = new System.Windows.Forms.TextBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtSaleCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.btnLoginDouyin = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.btnCollect = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvCollect = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.colImage = new System.Windows.Forms.DataGridViewImageColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSaleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colRate = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colDelete = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.ucGroupBoxEx1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnExport);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnLoginDouyin);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnCollect);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(878, 472);
|
||||
this.splitContainer1.SplitterDistance = 121;
|
||||
this.splitContainer1.TabIndex = 375;
|
||||
//
|
||||
// btnExport
|
||||
//
|
||||
this.btnExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnExport.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnExport.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnExport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnExport.ForeColor = System.Drawing.Color.White;
|
||||
this.btnExport.Location = new System.Drawing.Point(798, 84);
|
||||
this.btnExport.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnExport.Name = "btnExport";
|
||||
this.btnExport.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnExport.TabIndex = 394;
|
||||
this.btnExport.Text = "导出数据";
|
||||
this.btnExport.UseVisualStyleBackColor = false;
|
||||
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
|
||||
//
|
||||
// ucGroupBoxEx1
|
||||
//
|
||||
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx1.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx1.Controls.Add(this.cmbCategory);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtRateMax);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.chkShowImage);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label7);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtCollectPage);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label8);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label1);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtRateMin);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label2);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtSaleCountMax);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtPriceMax);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label5);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtPriceMin);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label6);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label3);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtSaleCountMin);
|
||||
this.ucGroupBoxEx1.Controls.Add(this.label4);
|
||||
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
|
||||
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
|
||||
this.ucGroupBoxEx1.Size = new System.Drawing.Size(426, 120);
|
||||
this.ucGroupBoxEx1.TabIndex = 393;
|
||||
this.ucGroupBoxEx1.TabStop = false;
|
||||
this.ucGroupBoxEx1.Text = "采集参数";
|
||||
//
|
||||
// cmbCategory
|
||||
//
|
||||
this.cmbCategory.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCategory.FormattingEnabled = true;
|
||||
this.cmbCategory.Location = new System.Drawing.Point(76, 21);
|
||||
this.cmbCategory.Name = "cmbCategory";
|
||||
this.cmbCategory.Size = new System.Drawing.Size(105, 25);
|
||||
this.cmbCategory.TabIndex = 375;
|
||||
//
|
||||
// txtRateMax
|
||||
//
|
||||
this.txtRateMax.Location = new System.Drawing.Point(330, 86);
|
||||
this.txtRateMax.Name = "txtRateMax";
|
||||
this.txtRateMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtRateMax.TabIndex = 391;
|
||||
this.txtRateMax.Text = "100";
|
||||
//
|
||||
// chkShowImage
|
||||
//
|
||||
this.chkShowImage.AutoSize = true;
|
||||
this.chkShowImage.Location = new System.Drawing.Point(76, 87);
|
||||
this.chkShowImage.Name = "chkShowImage";
|
||||
this.chkShowImage.Size = new System.Drawing.Size(99, 21);
|
||||
this.chkShowImage.TabIndex = 392;
|
||||
this.chkShowImage.Text = "显示商品图片";
|
||||
this.chkShowImage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(314, 89);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(13, 17);
|
||||
this.label7.TabIndex = 390;
|
||||
this.label7.Text = "-";
|
||||
//
|
||||
// txtCollectPage
|
||||
//
|
||||
this.txtCollectPage.Location = new System.Drawing.Point(76, 54);
|
||||
this.txtCollectPage.Name = "txtCollectPage";
|
||||
this.txtCollectPage.Size = new System.Drawing.Size(105, 23);
|
||||
this.txtCollectPage.TabIndex = 376;
|
||||
this.txtCollectPage.Text = "5";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(205, 89);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(44, 17);
|
||||
this.label8.TabIndex = 389;
|
||||
this.label8.Text = "好评率";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(14, 25);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(56, 17);
|
||||
this.label1.TabIndex = 377;
|
||||
this.label1.Text = "采集类目";
|
||||
//
|
||||
// txtRateMin
|
||||
//
|
||||
this.txtRateMin.Location = new System.Drawing.Point(256, 86);
|
||||
this.txtRateMin.Name = "txtRateMin";
|
||||
this.txtRateMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtRateMin.TabIndex = 388;
|
||||
this.txtRateMin.Text = "0";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(14, 57);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(56, 17);
|
||||
this.label2.TabIndex = 378;
|
||||
this.label2.Text = "采集页数";
|
||||
//
|
||||
// txtSaleCountMax
|
||||
//
|
||||
this.txtSaleCountMax.Location = new System.Drawing.Point(330, 54);
|
||||
this.txtSaleCountMax.Name = "txtSaleCountMax";
|
||||
this.txtSaleCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSaleCountMax.TabIndex = 387;
|
||||
this.txtSaleCountMax.Text = "99999999";
|
||||
//
|
||||
// txtPriceMax
|
||||
//
|
||||
this.txtPriceMax.Location = new System.Drawing.Point(330, 22);
|
||||
this.txtPriceMax.Name = "txtPriceMax";
|
||||
this.txtPriceMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMax.TabIndex = 383;
|
||||
this.txtPriceMax.Text = "99999999";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(314, 57);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(13, 17);
|
||||
this.label5.TabIndex = 386;
|
||||
this.label5.Text = "-";
|
||||
//
|
||||
// txtPriceMin
|
||||
//
|
||||
this.txtPriceMin.Location = new System.Drawing.Point(256, 22);
|
||||
this.txtPriceMin.Name = "txtPriceMin";
|
||||
this.txtPriceMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMin.TabIndex = 379;
|
||||
this.txtPriceMin.Text = "0";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(217, 57);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(32, 17);
|
||||
this.label6.TabIndex = 385;
|
||||
this.label6.Text = "销量";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(217, 25);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(32, 17);
|
||||
this.label3.TabIndex = 380;
|
||||
this.label3.Text = "价格";
|
||||
//
|
||||
// txtSaleCountMin
|
||||
//
|
||||
this.txtSaleCountMin.Location = new System.Drawing.Point(256, 54);
|
||||
this.txtSaleCountMin.Name = "txtSaleCountMin";
|
||||
this.txtSaleCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSaleCountMin.TabIndex = 384;
|
||||
this.txtSaleCountMin.Text = "0";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(314, 25);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(13, 17);
|
||||
this.label4.TabIndex = 382;
|
||||
this.label4.Text = "-";
|
||||
//
|
||||
// btnLoginDouyin
|
||||
//
|
||||
this.btnLoginDouyin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnLoginDouyin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnLoginDouyin.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnLoginDouyin.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnLoginDouyin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnLoginDouyin.ForeColor = System.Drawing.Color.White;
|
||||
this.btnLoginDouyin.Location = new System.Drawing.Point(798, 20);
|
||||
this.btnLoginDouyin.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnLoginDouyin.Name = "btnLoginDouyin";
|
||||
this.btnLoginDouyin.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnLoginDouyin.TabIndex = 373;
|
||||
this.btnLoginDouyin.Text = "登录抖音";
|
||||
this.btnLoginDouyin.UseVisualStyleBackColor = false;
|
||||
this.btnLoginDouyin.Click += new System.EventHandler(this.btnLoginDouyin_Click);
|
||||
//
|
||||
// btnCollect
|
||||
//
|
||||
this.btnCollect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCollect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnCollect.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCollect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnCollect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCollect.ForeColor = System.Drawing.Color.White;
|
||||
this.btnCollect.Location = new System.Drawing.Point(798, 52);
|
||||
this.btnCollect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCollect.Name = "btnCollect";
|
||||
this.btnCollect.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnCollect.TabIndex = 374;
|
||||
this.btnCollect.Text = "开始采集";
|
||||
this.btnCollect.UseVisualStyleBackColor = false;
|
||||
this.btnCollect.Click += new System.EventHandler(this.btnCollect_Click);
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvCollect);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(878, 347);
|
||||
this.splitContainer2.SplitterDistance = 318;
|
||||
this.splitContainer2.SplitterWidth = 1;
|
||||
this.splitContainer2.TabIndex = 7;
|
||||
//
|
||||
// dgvCollect
|
||||
//
|
||||
this.dgvCollect.AllowUserToAddRows = false;
|
||||
this.dgvCollect.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvCollect.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvCollect.BackgroundColor = System.Drawing.Color.White;
|
||||
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.dgvCollect.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvCollect.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvCollect.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colImage,
|
||||
this.colPrice,
|
||||
this.colSaleCount,
|
||||
this.colRate,
|
||||
this.colShopId,
|
||||
this.colShopName,
|
||||
this.colShopCount,
|
||||
this.colDelete});
|
||||
this.dgvCollect.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvCollect.Location = new System.Drawing.Point(5, 0);
|
||||
this.dgvCollect.Name = "dgvCollect";
|
||||
this.dgvCollect.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvCollect.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvCollect.RowTemplate.Height = 23;
|
||||
this.dgvCollect.Size = new System.Drawing.Size(868, 318);
|
||||
this.dgvCollect.TabIndex = 6;
|
||||
this.dgvCollect.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
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;
|
||||
this.colSelect.Visible = false;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colProductName.Width = 240;
|
||||
//
|
||||
// colImage
|
||||
//
|
||||
this.colImage.HeaderText = "图片";
|
||||
this.colImage.Name = "colImage";
|
||||
this.colImage.ReadOnly = true;
|
||||
this.colImage.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colImage.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colImage.Visible = false;
|
||||
this.colImage.Width = 70;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
this.colPrice.Width = 80;
|
||||
//
|
||||
// colSaleCount
|
||||
//
|
||||
this.colSaleCount.HeaderText = "销量";
|
||||
this.colSaleCount.Name = "colSaleCount";
|
||||
this.colSaleCount.ReadOnly = true;
|
||||
this.colSaleCount.Width = 80;
|
||||
//
|
||||
// colRate
|
||||
//
|
||||
this.colRate.HeaderText = "好评率";
|
||||
this.colRate.Name = "colRate";
|
||||
this.colRate.ReadOnly = true;
|
||||
this.colRate.Width = 80;
|
||||
//
|
||||
// colShopId
|
||||
//
|
||||
this.colShopId.HeaderText = "店铺Id";
|
||||
this.colShopId.Name = "colShopId";
|
||||
this.colShopId.ReadOnly = true;
|
||||
//
|
||||
// colShopName
|
||||
//
|
||||
this.colShopName.FillWeight = 150F;
|
||||
this.colShopName.HeaderText = "店铺名称";
|
||||
this.colShopName.Name = "colShopName";
|
||||
this.colShopName.ReadOnly = true;
|
||||
this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colShopName.Width = 150;
|
||||
//
|
||||
// colShopCount
|
||||
//
|
||||
this.colShopCount.FillWeight = 150F;
|
||||
this.colShopCount.HeaderText = "店铺商品总数";
|
||||
this.colShopCount.Name = "colShopCount";
|
||||
this.colShopCount.ReadOnly = true;
|
||||
this.colShopCount.Width = 80;
|
||||
//
|
||||
// colDelete
|
||||
//
|
||||
this.colDelete.HeaderText = "删除";
|
||||
this.colDelete.Name = "colDelete";
|
||||
this.colDelete.ReadOnly = true;
|
||||
this.colDelete.Visible = false;
|
||||
this.colDelete.Width = 81;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(878, 28);
|
||||
this.statusBar.TabIndex = 4;
|
||||
//
|
||||
// HaoWuCollectForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(878, 472);
|
||||
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 = "HaoWuCollectForm";
|
||||
this.Text = "好物采集";
|
||||
this.Load += new System.EventHandler(this.HaoWuCollectForm_Load);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx1.PerformLayout();
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private UserControls.ButtonEx btnLoginDouyin;
|
||||
private UserControls.ButtonEx btnCollect;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserComponent.DataGridViewEx dgvCollect;
|
||||
private System.Windows.Forms.ComboBox cmbCategory;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox txtCollectPage;
|
||||
private System.Windows.Forms.TextBox txtRateMax;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.TextBox txtRateMin;
|
||||
private System.Windows.Forms.TextBox txtSaleCountMax;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox txtSaleCountMin;
|
||||
private System.Windows.Forms.TextBox txtPriceMax;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txtPriceMin;
|
||||
private System.Windows.Forms.CheckBox chkShowImage;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx1;
|
||||
private UserControls.ButtonEx btnExport;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewImageColumn colImage;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSaleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colRate;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopCount;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,436 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.ToolForms;
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Work.BLL.Collect;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
public partial class HaoWuCollectForm : Form
|
||||
{
|
||||
CancellationTokenSource cancellationTokenSource = null;
|
||||
/// <summary>
|
||||
/// 商品标题不包含的关键词列表
|
||||
/// </summary>
|
||||
private List<string> lstBanKeyText = new List<string>();
|
||||
|
||||
List<DouGoodsCollectInfo> lstProduct = new List<DouGoodsCollectInfo>();
|
||||
|
||||
/// <summary>
|
||||
/// 商品过滤的最低销量
|
||||
/// </summary>
|
||||
private string minSaleCount = "0";
|
||||
private string maxSaleCount = "99999999";
|
||||
private string minPrice = "0";
|
||||
private string maxPrice = "99999999";
|
||||
/// <summary>
|
||||
/// 好评率
|
||||
/// </summary>
|
||||
private double hplMin = -1;
|
||||
private double hplMax = 100;
|
||||
/// <summary>
|
||||
/// 采集详情推荐中的商品
|
||||
/// </summary>
|
||||
private bool isXqtj = false;
|
||||
/// <summary>
|
||||
/// 是否显示图片
|
||||
/// </summary>
|
||||
private bool isShowImg = false;
|
||||
private string exportFileName = "douyinhaowu_collect.csv";
|
||||
private string[] cates = new string[] { "精选", "食品饮料", "生鲜", "女装", "鞋靴", "彩妆", "护肤", "珠宝文玩", "家电", "数码办公", "男装",
|
||||
"家纺", "家装", "厨具", "图书", "配饰", "母婴", "运动", "百货", "洗护", "票务卡券", "车品", "绿植农资" };
|
||||
|
||||
public HaoWuCollectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void HaoWuCollectForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var item in cates)
|
||||
{
|
||||
this.cmbCategory.Items.Add(item);
|
||||
}
|
||||
this.cmbCategory.SelectedIndex = 0;
|
||||
this.splitContainer2.SplitterWidth = 1;
|
||||
}
|
||||
|
||||
public void Collect(string dyCookies, int totalPage, string cateName, string cateIndex, ref List<DouGoodsCollectInfo> lstGoods, ref int currentPage)
|
||||
{
|
||||
int total = totalPage;
|
||||
string str = "";
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists("采集导出"))
|
||||
Directory.CreateDirectory("采集导出");
|
||||
exportFileName = "采集导出\\抖音好物采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
StreamWriter writer = new StreamWriter(this.exportFileName, true, Encoding.GetEncoding("gb2312"));
|
||||
object[] objArray1 = new object[] { "商品名称,", "价格,", "销量,", "好评率,", "商品ID,", "店铺ID,", "店铺名称,", "店铺商品总数" };
|
||||
writer.WriteLine(string.Concat(objArray1));
|
||||
writer.Close();
|
||||
|
||||
int num = 0;
|
||||
while (num < totalPage)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
currentPage = num + 1;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在采集类目:" + cateName + ",当前采集到第 " + (num + 1) + " 页";
|
||||
this.statusBar.pgbTaskProgress.Value = (num + 1);
|
||||
this.statusBar.pgbTaskProgress.Text = (num + 1) + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
|
||||
str = $"[{DateTime.Now.ToString("MM-dd HH:mm:ss")}] 正在采集类目:{cateName} 第{num + 1}页,成功采集{lstGoods.Count}条。";
|
||||
object[] objArray2 = new object[] { str };
|
||||
//base.BeginInvoke(new showMessageDelegate(this.showMsg), objArray2);
|
||||
int num2 = num * 10;
|
||||
string str2 = "";
|
||||
object[] objArray3 = new object[] { "https://aweme.snssdk.com/aweme/v2/commerce/favorite/feed?feature_version=new_operate_resource&tab_id=", cateIndex, "&entrances&cursor=", num2, "&request_tag_from=lynx&with_tabs=false&filters=2_3481030053603741229%2C2_3484212195024324357%2C1_6971768879194327844%2C2_3479930499084982767%2C2_3470779358002703750%2C1_6971770338224982791%2C2_3476553583086965127%2C2_3478793526744103385%2C1_6971747541322976035%2C2_3480664549739395118&page_num=2&feedbacks&page_name=order_homepage&only_entrance=false&os_api=22&device_type=TAS-AN00&ssmix=a&manifest_version_code=160002&dpi=240&uuid=865166029839340&app_name=aweme&version_name=16.0.1&ts=1623252303&cpu_support64=false&app_type=normal&appTheme=dark&ac=wifi&host_abi=armeabi-v7a&update_version_code=16019900&channel=aweGW&_rticket=1623252304036&device_platform=android&iid=1935603863652935&version_code=160001&cdid=61a31b75-b28a-448f-b688-2803bf62456b&openudid=2292f1eb6ba5f1c1&device_id=68214623104&resolution=1600*900&os_version=5.1.1&language=zh&device_brand=HUAWEI&aid=1128&minor_status=0&mcc_mnc=46000" };
|
||||
string url = string.Concat(objArray3);
|
||||
object[] objArray4 = new object[0x13];
|
||||
objArray4[0] = "https://aweme.snssdk.com/aweme/v2/commerce/favorite/feed?feature_version=new_operate_resource&tab_id=";
|
||||
objArray4[1] = cateIndex;
|
||||
objArray4[2] = "&render_purchase=0&entrances&cursor=";
|
||||
objArray4[3] = num2;
|
||||
objArray4[4] = "&request_tag_from=lynx&with_tabs=false&filters&page_num=";
|
||||
objArray4[5] = num + 1;
|
||||
objArray4[6] = "&feedbacks&page_name=order_homepage&only_entrance=false&os_api=22&device_type=TAS-AN00&ssmix=a&manifest_version_code=160002&dpi=240&uuid=8651";
|
||||
objArray4[7] = DateTime.Now.ToString("ff");
|
||||
objArray4[8] = "02983";
|
||||
objArray4[9] = DateTime.Now.ToString("ss");
|
||||
objArray4[10] = "40&app_name=aweme&version_name=16.0.1&ts=";
|
||||
objArray4[11] = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000L) / 10000000L).ToString(); // Base.ConvertDateTimeToInt();
|
||||
objArray4[12] = "&cpu_support64=false&app_type=normal&appTheme=dark&ac=wifi&host_abi=armeabi-v7a&update_version_code=16019900&channel=aweGW&_rticket=1623515082669&device_platform=android&iid=1935603863652935&version_code=160001&cdid=61a31b75-b28a-448f-b6";
|
||||
objArray4[13] = DateTime.Now.ToString("ss");
|
||||
objArray4[14] = "-2803bf62456b&openudid=22";
|
||||
objArray4[15] = DateTime.Now.ToString("ss");
|
||||
objArray4[16] = "f1eb6ba5f1c1&device_id=682";
|
||||
objArray4[17] = DateTime.Now.ToString("ff");
|
||||
objArray4[18] = "623104&resolution=1600*900&os_version=5.1.1&language=zh&device_brand=HUAWEI&aid=1128&minor_status=0&mcc_mnc=46000";
|
||||
url = string.Concat(objArray4);
|
||||
if (string.IsNullOrWhiteSpace(dyCookies))
|
||||
{
|
||||
dyCookies = "sid_guard=f7fbff5199b1bfe9de6eacb334368979|||";
|
||||
}
|
||||
str2 = GetHtml.GetUtf8(url, AllBase.BaseClass.ChromeUserAgent, dyCookies);
|
||||
int num3 = 0;
|
||||
if (str2.IndexOf("用户未登录") != -1)
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
str = $"[{now.ToString("MM-dd HH:mm:ss")}] 请重新登入抖音.";
|
||||
object[] objArray7 = new object[] { str };
|
||||
//base.BeginInvoke(new showMessageDelegate(this.showMsg), objArray7);
|
||||
//this.int_6 = 0x1_869f;
|
||||
break;
|
||||
}
|
||||
while (true)
|
||||
{
|
||||
if (!(((str2.IndexOf("服务器打瞌睡了") != -1) || ((str2.IndexOf("你搜得太多啦") != -1) || (str2.Trim() == ""))) ? (num3 < 20) : false))
|
||||
{
|
||||
char[] separator = new char[] { 'ㄨ' };
|
||||
string[] strArray = str2.Replace("\"product\":", "ㄨ\"product\":").Split(separator);
|
||||
if (str2.Contains("\"item_cards\":"))
|
||||
{
|
||||
var jobj = Newtonsoft.Json.Linq.JObject.Parse(str2);
|
||||
var sObj = jobj["item_cards"];
|
||||
var sList = new List<string>();
|
||||
foreach (var s in sObj)
|
||||
{
|
||||
sList.Add(JsonHelper.SerializeObject(s));
|
||||
}
|
||||
strArray = sList.ToArray();
|
||||
}
|
||||
int index = 0;
|
||||
while (true)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
if (index >= strArray.Length)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
num++;
|
||||
break;
|
||||
}
|
||||
try
|
||||
{
|
||||
string goodStr = strArray[index];
|
||||
DouGoodsCollectInfo item = new DouGoodsCollectInfo();
|
||||
|
||||
item.Id = AllBase.BaseRegex.GetStringJson(ref goodStr, "product_id");
|
||||
if (!string.IsNullOrEmpty(item.Id) && !lstGoods.Any(g => g.Id == item.Id))
|
||||
{
|
||||
item.GoodsName = AllBase.BaseRegex.GetStringJson(ref goodStr, "title")?.Trim();
|
||||
if (!string.IsNullOrEmpty(item.GoodsName))
|
||||
{
|
||||
if (lstBanKeyText.Count == 0 || !lstBanKeyText.Any(t => item.GoodsName.Contains(t)))
|
||||
{
|
||||
// 销量数据
|
||||
item.Sales = AllBase.BaseRegex.GetStringJson(ref goodStr, "sales");
|
||||
if (string.IsNullOrEmpty(item.Sales))
|
||||
item.Sales = "0";
|
||||
|
||||
// 销量符合筛选条件
|
||||
if (Convert.ToInt32(item.Sales) >= Convert.ToInt32(this.minSaleCount) && Convert.ToInt32(item.Sales) <= Convert.ToInt32(this.maxSaleCount))
|
||||
{
|
||||
string price = BaseRegex.GetStringJson(ref goodStr, "min_price");
|
||||
if (string.IsNullOrEmpty(price))
|
||||
price = "0";
|
||||
item.Price = ((Convert.ToDouble(price) * 1.0) / 100.0).ToString("f2");
|
||||
|
||||
if (Convert.ToDouble(item.Price) >= Convert.ToDouble(this.minPrice) && Convert.ToDouble(item.Price) <= Convert.ToDouble(this.maxPrice))
|
||||
{
|
||||
var img = BaseRegex.GetStringJson(ref goodStr, "url_list");
|
||||
if (item.img == null)
|
||||
img = BaseRegex.GetMatchRegexString(ref goodStr, "\"cover\":[^\\[\\]]+?\"url_list\":\\[([^\\[\\]]+?)\\]");
|
||||
if (!string.IsNullOrEmpty(img))
|
||||
{
|
||||
item.img = img.Split(',')[0].Trim('"');
|
||||
}
|
||||
|
||||
// 获取商品评价
|
||||
item.CommentsCount = this.GetRate(item.Id, ref item.ShopProductCount, ref item.CommentsRate);
|
||||
if (item.CommentsRate >= this.hplMin && item.CommentsRate <= hplMax)
|
||||
{
|
||||
//Application.DoEvents();
|
||||
Thread.Sleep(1000);
|
||||
string content = HaoWuCollectBLL.getHtml(
|
||||
"https://ec.snssdk.com/product/fxgajaxstaticitem?b_type_new=0&device_id=0&is_outside=1&id=" + item.Id + "&preview=0",
|
||||
"", "utf8");
|
||||
item.ShopId = BaseRegex.GetStringJson(ref content, "shop_id");
|
||||
item.ShopName = BaseRegex.GetStringJson(ref content, "shop_name");
|
||||
lstGoods.Add(item);
|
||||
this.ShowData(lstGoods.Count, item);
|
||||
if (this.isXqtj)
|
||||
{
|
||||
//this.method_3(spid);
|
||||
}
|
||||
if (((index % 2) == 0) && (index > 0))
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
index++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
str = $"[{DateTime.Now.ToString("MM-dd HH:mm:ss")}] 服务器打瞌睡了,重试...";
|
||||
object[] objArray5 = new object[] { str };
|
||||
//base.BeginInvoke(new showMessageDelegate(this.showMsg), objArray5);
|
||||
//Application.DoEvents();
|
||||
Thread.Sleep(3000);
|
||||
num3++;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
str = $"[{DateTime.Now.ToString("MM-dd HH:mm:ss")}] 采集结束,成功采集{lstGoods.Count}个.";
|
||||
object[] args = new object[] { str };
|
||||
//base.BeginInvoke(new showMessageDelegate(this.showMsg), args);
|
||||
}
|
||||
|
||||
private int GetRate(string productId, ref int productCount, ref double rate)
|
||||
{
|
||||
int num = 0;
|
||||
string url = "https://ec.snssdk.com/product/ajaxitem?b_type_new=0&device_id=0&is_outside=1&id=" + productId + "&abParams=0";
|
||||
string content = HaoWuCollectBLL.getHtml_fxg_20201220(url, "", "");
|
||||
int num2 = 0;
|
||||
string ip = "";
|
||||
while ((num2 < 10) && (content.Trim().Length < 10))
|
||||
{
|
||||
//Application.DoEvents(); // 刷新界面
|
||||
Thread.Sleep(500);
|
||||
num2++;
|
||||
content = HaoWuCollectBLL.getHtml_fxg_20201220(url, "", ip);
|
||||
}
|
||||
num = BaseRegex.GetIntJson(ref content, "count");
|
||||
productCount = BaseRegex.GetIntJson(ref content, "shop_product_count");
|
||||
rate = (double)BaseRegex.GetDecimalJson(ref content, "value");
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
private void ShowData(int totalCount, DouGoodsCollectInfo goodsInfo)
|
||||
{
|
||||
try
|
||||
{
|
||||
StreamWriter writer = new StreamWriter(this.exportFileName, true, Encoding.GetEncoding("gb2312"));
|
||||
object[] objArray1 = new object[15];
|
||||
objArray1[0] = goodsInfo.GoodsName;
|
||||
objArray1[1] = ",";
|
||||
objArray1[2] = goodsInfo.Price;
|
||||
objArray1[3] = ",";
|
||||
objArray1[4] = goodsInfo.Sales;
|
||||
objArray1[5] = ",";
|
||||
objArray1[6] = goodsInfo.CommentsRate;
|
||||
objArray1[7] = ",";
|
||||
objArray1[8] = "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsInfo.Id;
|
||||
objArray1[9] = ",";
|
||||
objArray1[10] = goodsInfo.ShopId;
|
||||
objArray1[11] = ",";
|
||||
objArray1[12] = goodsInfo.ShopName;
|
||||
objArray1[13] = ",";
|
||||
objArray1[14] = goodsInfo.ShopProductCount;
|
||||
writer.WriteLine(string.Concat(objArray1));
|
||||
writer.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var index = this.dgvCollect.Rows.Add(false, goodsInfo.Id, goodsInfo.GoodsName, null, goodsInfo.Price, goodsInfo.Sales, goodsInfo.CommentsRate,
|
||||
goodsInfo.ShopId, goodsInfo.ShopName, goodsInfo.ShopProductCount, "删除");
|
||||
if (this.isShowImg)
|
||||
{
|
||||
this.dgvCollect.Columns["colImage"].Visible = true;
|
||||
var row = dgvCollect.Rows[index];
|
||||
row.Cells["colImage"].Value = this.GetImage2(goodsInfo.img, 60);
|
||||
row.Height = 70;
|
||||
}
|
||||
else
|
||||
this.dgvCollect.Columns["colImage"].Visible = false;
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
public Image GetImage2(string path, int size = 130)
|
||||
{
|
||||
try
|
||||
{
|
||||
return new Bitmap(Image.FromStream(WebRequest.Create(path).GetResponse().GetResponseStream()), size, size);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnLoginDouyin_Click(object sender, EventArgs e)
|
||||
{
|
||||
DouUserLoginForm dForm = new DouUserLoginForm();
|
||||
dForm.ShowDialog();
|
||||
}
|
||||
|
||||
private void btnCollect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (btnCollect.Text == "开始采集")
|
||||
{
|
||||
var cookie = GlobalConfig.DouUserCookies;
|
||||
var cate = this.cmbCategory.Text;
|
||||
var cid = this.cmbCategory.SelectedIndex.ToString();
|
||||
var collectPage = this.txtCollectPage.Text.Trim().ParseToInt();
|
||||
|
||||
minSaleCount = this.txtSaleCountMin.Text.ParseToInt().ToString();
|
||||
maxSaleCount = this.txtSaleCountMax.Text.ParseToInt().ToString();
|
||||
minPrice = this.txtPriceMin.Text.ParseToDecimal().ToString();
|
||||
maxPrice = this.txtPriceMax.Text.ParseToDecimal().ToString();
|
||||
hplMin = this.txtRateMin.Text.ParseToDouble();
|
||||
hplMax = this.txtRateMax.Text.ParseToDouble();
|
||||
|
||||
isShowImg = this.chkShowImage.Checked;
|
||||
|
||||
this.dgvCollect.Rows.Clear();
|
||||
this.lstProduct.Clear();
|
||||
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
btnCollect.Text = "停止采集";
|
||||
|
||||
int n = 0;
|
||||
int total = collectPage;
|
||||
this.statusBar.lblTaskStatus.Text = "开始采集...";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
Collect(cookie, collectPage, cate, cid, ref lstProduct, ref n);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
btnCollect.Text = "开始采集";
|
||||
|
||||
this.statusBar.lblTaskStatus.Text = "采集结束,共采集到商品" + this.lstProduct.Count + "个";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
else
|
||||
{
|
||||
cancellationTokenSource.Cancel();
|
||||
}
|
||||
}
|
||||
|
||||
private void btnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
|
||||
saveFileDialog1.Filter = "表格文件(*.csv)|*.csv";
|
||||
saveFileDialog1.FileName = "好物采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
saveFileDialog1.FilterIndex = 2;
|
||||
saveFileDialog1.RestoreDirectory = true;
|
||||
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("商品名称," + "价格," + "销量," + "好评率," + "商品ID," + "店铺ID," + "店铺名称," + "店铺商品总数");
|
||||
foreach (var goodsInfo in lstProduct)
|
||||
{
|
||||
sb.AppendLine(goodsInfo.GoodsName + "," + goodsInfo.Price + "," + goodsInfo.Sales + "," + goodsInfo.CommentsRate + ","
|
||||
+ "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsInfo.Id + "," + goodsInfo.ShopId + ","
|
||||
+ goodsInfo.ShopName + "," + goodsInfo.ShopProductCount);
|
||||
}
|
||||
File.WriteAllText(saveFileDialog1.FileName, sb.ToString(), Encoding.Default);
|
||||
BaseForms.BaseMsgForm.ShowInfo("导出成功");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvShop_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.RowIndex < 0 || e.ColumnIndex < 0)
|
||||
return;
|
||||
|
||||
var goodsId = dgvCollect.Rows[e.RowIndex].Cells["colProductId"].Value.ToString();
|
||||
var columnName = dgvCollect.Columns[e.ColumnIndex].Name;
|
||||
if (columnName == "colProductName")
|
||||
{
|
||||
string url = "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsId;
|
||||
GetHtml.OpenUrl(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
<?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="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colImage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSaleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colRate.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="colShopCount.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>
|
||||
@@ -0,0 +1,734 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
partial class KeywordCollectForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnExport = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx1 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.txtKeyWords = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.btnLoginDouyin = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.btnCollect = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx2 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.cmbCategory = new System.Windows.Forms.ComboBox();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.txtCommentRateMax = new System.Windows.Forms.TextBox();
|
||||
this.txtCommentRateMin = new System.Windows.Forms.TextBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.txtCommentCountMax = new System.Windows.Forms.TextBox();
|
||||
this.txtCommentCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.txtScoreMax = new System.Windows.Forms.TextBox();
|
||||
this.txtScoreMin = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.txtYongJinMax = new System.Windows.Forms.TextBox();
|
||||
this.txtYongJinMin = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.txtTotalPage = new System.Windows.Forms.TextBox();
|
||||
this.txtSellCountMax = new System.Windows.Forms.TextBox();
|
||||
this.txtPriceMax = new System.Windows.Forms.TextBox();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.txtPriceMin = new System.Windows.Forms.TextBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.txtSellCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvCollect = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colKeyword = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSaleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colYongJin = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colYongJinLv = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCommentCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCommentRate = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colScore = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopNmae = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colDelete = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.ucGroupBoxEx1.SuspendLayout();
|
||||
this.ucGroupBoxEx2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.BackColor = System.Drawing.Color.White;
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnExport);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnLoginDouyin);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnCollect);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx2);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(852, 468);
|
||||
this.splitContainer1.SplitterDistance = 121;
|
||||
this.splitContainer1.TabIndex = 379;
|
||||
//
|
||||
// btnExport
|
||||
//
|
||||
this.btnExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnExport.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnExport.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnExport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnExport.ForeColor = System.Drawing.Color.White;
|
||||
this.btnExport.Location = new System.Drawing.Point(772, 84);
|
||||
this.btnExport.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnExport.Name = "btnExport";
|
||||
this.btnExport.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnExport.TabIndex = 394;
|
||||
this.btnExport.Text = "导出数据";
|
||||
this.btnExport.UseVisualStyleBackColor = false;
|
||||
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
|
||||
//
|
||||
// ucGroupBoxEx1
|
||||
//
|
||||
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx1.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtKeyWords);
|
||||
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
|
||||
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
|
||||
this.ucGroupBoxEx1.Size = new System.Drawing.Size(277, 120);
|
||||
this.ucGroupBoxEx1.TabIndex = 393;
|
||||
this.ucGroupBoxEx1.TabStop = false;
|
||||
this.ucGroupBoxEx1.Text = "采集关键字";
|
||||
//
|
||||
// txtKeyWords
|
||||
//
|
||||
this.txtKeyWords.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.txtKeyWords.Border.Class = "TextBoxBorder";
|
||||
this.txtKeyWords.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.txtKeyWords.Location = new System.Drawing.Point(10, 21);
|
||||
this.txtKeyWords.Multiline = true;
|
||||
this.txtKeyWords.Name = "txtKeyWords";
|
||||
this.txtKeyWords.PreventEnterBeep = true;
|
||||
this.txtKeyWords.Size = new System.Drawing.Size(257, 88);
|
||||
this.txtKeyWords.TabIndex = 7;
|
||||
this.txtKeyWords.WatermarkText = "请输入要搜索的关键词\r\n一行一个";
|
||||
//
|
||||
// btnLoginDouyin
|
||||
//
|
||||
this.btnLoginDouyin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnLoginDouyin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnLoginDouyin.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnLoginDouyin.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnLoginDouyin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnLoginDouyin.ForeColor = System.Drawing.Color.White;
|
||||
this.btnLoginDouyin.Location = new System.Drawing.Point(772, 20);
|
||||
this.btnLoginDouyin.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnLoginDouyin.Name = "btnLoginDouyin";
|
||||
this.btnLoginDouyin.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnLoginDouyin.TabIndex = 373;
|
||||
this.btnLoginDouyin.Text = "登录抖音";
|
||||
this.btnLoginDouyin.UseVisualStyleBackColor = false;
|
||||
this.btnLoginDouyin.Visible = false;
|
||||
//
|
||||
// btnCollect
|
||||
//
|
||||
this.btnCollect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCollect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnCollect.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCollect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnCollect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCollect.ForeColor = System.Drawing.Color.White;
|
||||
this.btnCollect.Location = new System.Drawing.Point(772, 52);
|
||||
this.btnCollect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCollect.Name = "btnCollect";
|
||||
this.btnCollect.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnCollect.TabIndex = 374;
|
||||
this.btnCollect.Text = "开始采集";
|
||||
this.btnCollect.UseVisualStyleBackColor = false;
|
||||
this.btnCollect.Click += new System.EventHandler(this.btnCollect_Click);
|
||||
//
|
||||
// ucGroupBoxEx2
|
||||
//
|
||||
this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx2.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx2.Controls.Add(this.cmbCategory);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label9);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtCommentRateMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtCommentRateMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label7);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label8);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtCommentCountMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtCommentCountMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label5);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label6);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtScoreMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtScoreMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label3);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label4);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtYongJinMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtYongJinMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label1);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label2);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label10);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtTotalPage);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtSellCountMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtPriceMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label13);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtPriceMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label14);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label15);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtSellCountMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label16);
|
||||
this.ucGroupBoxEx2.Location = new System.Drawing.Point(281, 2);
|
||||
this.ucGroupBoxEx2.Name = "ucGroupBoxEx2";
|
||||
this.ucGroupBoxEx2.Size = new System.Drawing.Size(409, 120);
|
||||
this.ucGroupBoxEx2.TabIndex = 395;
|
||||
this.ucGroupBoxEx2.TabStop = false;
|
||||
this.ucGroupBoxEx2.Text = "采集参数";
|
||||
//
|
||||
// cmbCategory
|
||||
//
|
||||
this.cmbCategory.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbCategory.Font = new System.Drawing.Font("微软雅黑", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.cmbCategory.FormattingEnabled = true;
|
||||
this.cmbCategory.Items.AddRange(new object[] {
|
||||
"综合",
|
||||
"佣金排序",
|
||||
"销量排序",
|
||||
"价格降序",
|
||||
"价格升序"});
|
||||
this.cmbCategory.Location = new System.Drawing.Point(73, 14);
|
||||
this.cmbCategory.Name = "cmbCategory";
|
||||
this.cmbCategory.Size = new System.Drawing.Size(123, 24);
|
||||
this.cmbCategory.TabIndex = 406;
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(16, 18);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(56, 17);
|
||||
this.label9.TabIndex = 407;
|
||||
this.label9.Text = "排 序";
|
||||
//
|
||||
// txtCommentRateMax
|
||||
//
|
||||
this.txtCommentRateMax.Location = new System.Drawing.Point(337, 90);
|
||||
this.txtCommentRateMax.Name = "txtCommentRateMax";
|
||||
this.txtCommentRateMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtCommentRateMax.TabIndex = 405;
|
||||
this.txtCommentRateMax.Text = "100";
|
||||
//
|
||||
// txtCommentRateMin
|
||||
//
|
||||
this.txtCommentRateMin.Location = new System.Drawing.Point(269, 90);
|
||||
this.txtCommentRateMin.Name = "txtCommentRateMin";
|
||||
this.txtCommentRateMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtCommentRateMin.TabIndex = 402;
|
||||
this.txtCommentRateMin.Text = "0";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(224, 93);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(44, 17);
|
||||
this.label7.TabIndex = 403;
|
||||
this.label7.Text = "好评率";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(325, 93);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(13, 17);
|
||||
this.label8.TabIndex = 404;
|
||||
this.label8.Text = "-";
|
||||
//
|
||||
// txtCommentCountMax
|
||||
//
|
||||
this.txtCommentCountMax.Location = new System.Drawing.Point(337, 65);
|
||||
this.txtCommentCountMax.Name = "txtCommentCountMax";
|
||||
this.txtCommentCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtCommentCountMax.TabIndex = 401;
|
||||
this.txtCommentCountMax.Text = "99999999";
|
||||
//
|
||||
// txtCommentCountMin
|
||||
//
|
||||
this.txtCommentCountMin.Location = new System.Drawing.Point(269, 65);
|
||||
this.txtCommentCountMin.Name = "txtCommentCountMin";
|
||||
this.txtCommentCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtCommentCountMin.TabIndex = 398;
|
||||
this.txtCommentCountMin.Text = "0";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(224, 68);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(44, 17);
|
||||
this.label5.TabIndex = 399;
|
||||
this.label5.Text = "评论数";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(325, 68);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(13, 17);
|
||||
this.label6.TabIndex = 400;
|
||||
this.label6.Text = "-";
|
||||
//
|
||||
// txtScoreMax
|
||||
//
|
||||
this.txtScoreMax.Location = new System.Drawing.Point(337, 40);
|
||||
this.txtScoreMax.Name = "txtScoreMax";
|
||||
this.txtScoreMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtScoreMax.TabIndex = 397;
|
||||
this.txtScoreMax.Text = "5";
|
||||
//
|
||||
// txtScoreMin
|
||||
//
|
||||
this.txtScoreMin.Location = new System.Drawing.Point(269, 40);
|
||||
this.txtScoreMin.Name = "txtScoreMin";
|
||||
this.txtScoreMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtScoreMin.TabIndex = 394;
|
||||
this.txtScoreMin.Text = "0";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(212, 43);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(56, 17);
|
||||
this.label3.TabIndex = 395;
|
||||
this.label3.Text = "体验分数";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(325, 43);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(13, 17);
|
||||
this.label4.TabIndex = 396;
|
||||
this.label4.Text = "-";
|
||||
//
|
||||
// txtYongJinMax
|
||||
//
|
||||
this.txtYongJinMax.Location = new System.Drawing.Point(337, 15);
|
||||
this.txtYongJinMax.Name = "txtYongJinMax";
|
||||
this.txtYongJinMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtYongJinMax.TabIndex = 393;
|
||||
this.txtYongJinMax.Text = "99999999";
|
||||
//
|
||||
// txtYongJinMin
|
||||
//
|
||||
this.txtYongJinMin.Location = new System.Drawing.Point(269, 15);
|
||||
this.txtYongJinMin.Name = "txtYongJinMin";
|
||||
this.txtYongJinMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtYongJinMin.TabIndex = 390;
|
||||
this.txtYongJinMin.Text = "0";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(212, 18);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(56, 17);
|
||||
this.label1.TabIndex = 391;
|
||||
this.label1.Text = "宝贝佣金";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(325, 18);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(13, 17);
|
||||
this.label2.TabIndex = 392;
|
||||
this.label2.Text = "-";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(16, 93);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(56, 17);
|
||||
this.label10.TabIndex = 389;
|
||||
this.label10.Text = "采集页数";
|
||||
//
|
||||
// txtTotalPage
|
||||
//
|
||||
this.txtTotalPage.Location = new System.Drawing.Point(73, 90);
|
||||
this.txtTotalPage.Name = "txtTotalPage";
|
||||
this.txtTotalPage.Size = new System.Drawing.Size(123, 23);
|
||||
this.txtTotalPage.TabIndex = 388;
|
||||
this.txtTotalPage.Text = "5";
|
||||
//
|
||||
// txtSellCountMax
|
||||
//
|
||||
this.txtSellCountMax.Location = new System.Drawing.Point(141, 65);
|
||||
this.txtSellCountMax.Name = "txtSellCountMax";
|
||||
this.txtSellCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSellCountMax.TabIndex = 387;
|
||||
this.txtSellCountMax.Text = "99999999";
|
||||
//
|
||||
// txtPriceMax
|
||||
//
|
||||
this.txtPriceMax.Location = new System.Drawing.Point(141, 40);
|
||||
this.txtPriceMax.Name = "txtPriceMax";
|
||||
this.txtPriceMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMax.TabIndex = 383;
|
||||
this.txtPriceMax.Text = "99999999";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(129, 68);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(13, 17);
|
||||
this.label13.TabIndex = 386;
|
||||
this.label13.Text = "-";
|
||||
//
|
||||
// txtPriceMin
|
||||
//
|
||||
this.txtPriceMin.Location = new System.Drawing.Point(73, 40);
|
||||
this.txtPriceMin.Name = "txtPriceMin";
|
||||
this.txtPriceMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMin.TabIndex = 379;
|
||||
this.txtPriceMin.Text = "0";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(16, 68);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(56, 17);
|
||||
this.label14.TabIndex = 385;
|
||||
this.label14.Text = "宝贝销量";
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Location = new System.Drawing.Point(16, 43);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(56, 17);
|
||||
this.label15.TabIndex = 380;
|
||||
this.label15.Text = "宝贝价格";
|
||||
//
|
||||
// txtSellCountMin
|
||||
//
|
||||
this.txtSellCountMin.Location = new System.Drawing.Point(73, 65);
|
||||
this.txtSellCountMin.Name = "txtSellCountMin";
|
||||
this.txtSellCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSellCountMin.TabIndex = 384;
|
||||
this.txtSellCountMin.Text = "0";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(129, 43);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(13, 17);
|
||||
this.label16.TabIndex = 382;
|
||||
this.label16.Text = "-";
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvCollect);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(852, 343);
|
||||
this.splitContainer2.SplitterDistance = 314;
|
||||
this.splitContainer2.SplitterWidth = 1;
|
||||
this.splitContainer2.TabIndex = 7;
|
||||
//
|
||||
// dgvCollect
|
||||
//
|
||||
this.dgvCollect.AllowUserToAddRows = false;
|
||||
this.dgvCollect.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvCollect.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvCollect.BackgroundColor = System.Drawing.Color.White;
|
||||
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.dgvCollect.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvCollect.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvCollect.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colKeyword,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colPrice,
|
||||
this.colSaleCount,
|
||||
this.colYongJin,
|
||||
this.colYongJinLv,
|
||||
this.colCommentCount,
|
||||
this.colCommentRate,
|
||||
this.colScore,
|
||||
this.colShopNmae,
|
||||
this.colDelete});
|
||||
this.dgvCollect.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvCollect.Location = new System.Drawing.Point(5, 0);
|
||||
this.dgvCollect.Name = "dgvCollect";
|
||||
this.dgvCollect.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvCollect.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvCollect.RowTemplate.Height = 23;
|
||||
this.dgvCollect.Size = new System.Drawing.Size(842, 314);
|
||||
this.dgvCollect.TabIndex = 6;
|
||||
this.dgvCollect.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCollect_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
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;
|
||||
this.colSelect.Visible = false;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colKeyword
|
||||
//
|
||||
this.colKeyword.HeaderText = "关键词";
|
||||
this.colKeyword.Name = "colKeyword";
|
||||
this.colKeyword.ReadOnly = true;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 150;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colProductName.Width = 350;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
this.colPrice.Width = 80;
|
||||
//
|
||||
// colSaleCount
|
||||
//
|
||||
this.colSaleCount.HeaderText = "销量";
|
||||
this.colSaleCount.Name = "colSaleCount";
|
||||
this.colSaleCount.ReadOnly = true;
|
||||
//
|
||||
// colYongJin
|
||||
//
|
||||
this.colYongJin.HeaderText = "佣金";
|
||||
this.colYongJin.Name = "colYongJin";
|
||||
this.colYongJin.ReadOnly = true;
|
||||
//
|
||||
// colYongJinLv
|
||||
//
|
||||
this.colYongJinLv.HeaderText = "佣金率";
|
||||
this.colYongJinLv.Name = "colYongJinLv";
|
||||
this.colYongJinLv.ReadOnly = true;
|
||||
//
|
||||
// colCommentCount
|
||||
//
|
||||
this.colCommentCount.HeaderText = "评论数";
|
||||
this.colCommentCount.Name = "colCommentCount";
|
||||
this.colCommentCount.ReadOnly = true;
|
||||
//
|
||||
// colCommentRate
|
||||
//
|
||||
this.colCommentRate.HeaderText = "好评率";
|
||||
this.colCommentRate.Name = "colCommentRate";
|
||||
this.colCommentRate.ReadOnly = true;
|
||||
//
|
||||
// colScore
|
||||
//
|
||||
this.colScore.HeaderText = "体验分数";
|
||||
this.colScore.Name = "colScore";
|
||||
this.colScore.ReadOnly = true;
|
||||
//
|
||||
// colShopNmae
|
||||
//
|
||||
this.colShopNmae.HeaderText = "店铺名称";
|
||||
this.colShopNmae.Name = "colShopNmae";
|
||||
this.colShopNmae.ReadOnly = true;
|
||||
this.colShopNmae.Width = 150;
|
||||
//
|
||||
// colDelete
|
||||
//
|
||||
this.colDelete.HeaderText = "删除";
|
||||
this.colDelete.Name = "colDelete";
|
||||
this.colDelete.ReadOnly = true;
|
||||
this.colDelete.Visible = false;
|
||||
this.colDelete.Width = 81;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(852, 28);
|
||||
this.statusBar.TabIndex = 5;
|
||||
//
|
||||
// KeywordCollectForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(852, 468);
|
||||
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 = "KeywordCollectForm";
|
||||
this.Text = "关键词采集";
|
||||
this.Load += new System.EventHandler(this.KeywordCollectForm_Load);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.PerformLayout();
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserControls.ButtonEx btnExport;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx1;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX txtKeyWords;
|
||||
private UserControls.ButtonEx btnLoginDouyin;
|
||||
private UserControls.ButtonEx btnCollect;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx2;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.TextBox txtTotalPage;
|
||||
private System.Windows.Forms.TextBox txtSellCountMax;
|
||||
private System.Windows.Forms.TextBox txtPriceMax;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.TextBox txtPriceMin;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.TextBox txtSellCountMin;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private UserComponent.DataGridViewEx dgvCollect;
|
||||
private System.Windows.Forms.TextBox txtCommentRateMax;
|
||||
private System.Windows.Forms.TextBox txtCommentRateMin;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.TextBox txtCommentCountMax;
|
||||
private System.Windows.Forms.TextBox txtCommentCountMin;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox txtScoreMax;
|
||||
private System.Windows.Forms.TextBox txtScoreMin;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox txtYongJinMax;
|
||||
private System.Windows.Forms.TextBox txtYongJinMin;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ComboBox cmbCategory;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colKeyword;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSaleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colYongJin;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colYongJinLv;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCommentCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCommentRate;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colScore;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopNmae;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.ToolForms;
|
||||
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.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
public partial class KeywordCollectForm : Form
|
||||
{
|
||||
List<DouGoodsCollectInfo> lstProduct = new List<DouGoodsCollectInfo>();
|
||||
CancellationTokenSource cancellationTokenSource = null;
|
||||
decimal priceMin = 0;
|
||||
decimal priceMax = 99999999;
|
||||
long salesMin = 0;
|
||||
long salesMax = 99999999;
|
||||
decimal yongjinMin = 0;
|
||||
decimal yongjinMax = 99999999;
|
||||
decimal scoreMin = 0;
|
||||
decimal scoreMax = 5;
|
||||
long commentCountMin = 0;
|
||||
long commentCountMax = 99999999;
|
||||
decimal commentRateMin = 0;
|
||||
decimal commentRateMax = 100;
|
||||
|
||||
public KeywordCollectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private string Collect(string cookies, string collectKeyword, string pageNum = "1", string sortText = "", string sortId = "0")
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = "https://lianmengapi.snssdk.com/selection_api/search/pmt?app_name=aweme&channel=App%20Store" +
|
||||
"&slide_guide_has_shown=1&minor_status=0&cursor=" + (pageNum.ParseToInt() * 20 - 20) + "&count=20" +
|
||||
"&search_text=" + AllBase.HttpUtility.UrlEncode(collectKeyword, Encoding.UTF8) + "&request_tag_from=m" +
|
||||
"&aid=1128&order_by=" + sortText + "&sort=" + sortId;
|
||||
url = "https://buyin.jinritemai.com/pc/selection/search/pmt?page=" + pageNum
|
||||
+ "&page_size=20&search_text=" + HttpUtility.UrlEncode(collectKeyword, Encoding.UTF8)
|
||||
+ "&order_by=" + sortText + "&sort=" + sortId;
|
||||
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
//request.Headers.Set(HttpRequestHeader.Cookie, @"sid_tt=e21290832ad2b7efaeceb9cdc6c20935");
|
||||
request.Headers.Set(HttpRequestHeader.Cookie, cookies);
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
private void btnCollect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.btnCollect.Text == "停止采集")
|
||||
{
|
||||
cancellationTokenSource.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
var cookieShop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.LoginStatus == "登录成功");
|
||||
if (cookieShop == null)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请登录店铺账号后搜索");
|
||||
return;
|
||||
}
|
||||
|
||||
priceMin = this.txtPriceMin.Text.ParseToDecimal();
|
||||
priceMax = this.txtPriceMax.Text.ParseToDecimal();
|
||||
salesMin = this.txtSellCountMin.Text.ParseToLong();
|
||||
salesMax = this.txtSellCountMax.Text.ParseToLong();
|
||||
yongjinMin = this.txtYongJinMin.Text.ParseToDecimal();
|
||||
yongjinMax = this.txtYongJinMax.Text.ParseToDecimal();
|
||||
scoreMin = this.txtScoreMin.Text.ParseToDecimal();
|
||||
scoreMax = this.txtScoreMax.Text.ParseToDecimal();
|
||||
commentCountMin = this.txtCommentCountMin.Text.ParseToLong();
|
||||
commentCountMax = this.txtCommentCountMax.Text.ParseToLong();
|
||||
commentRateMin = this.txtCommentRateMin.Text.ParseToDecimal();
|
||||
commentRateMax = this.txtCommentRateMax.Text.ParseToDecimal();
|
||||
var totalPage = this.txtTotalPage.Text.ParseToInt();
|
||||
|
||||
var keywords = this.txtKeyWords.Text.Split(new string[] { "\r", "\n", " ", "," }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string sortText = "";
|
||||
string sort = "0";
|
||||
if (this.cmbCategory.SelectedItem.ToString() == "佣金排序")
|
||||
{
|
||||
sortText = "cos_ratio";
|
||||
sort = "2";
|
||||
}
|
||||
else if (this.cmbCategory.SelectedItem.ToString() == "销量排序")
|
||||
{
|
||||
sortText = "sales";
|
||||
sort = "2";
|
||||
}
|
||||
else if (this.cmbCategory.SelectedItem.ToString() == "价格降序")
|
||||
{
|
||||
sortText = "price";
|
||||
sort = "2";
|
||||
}
|
||||
else if (this.cmbCategory.SelectedItem.ToString() == "价格升序")
|
||||
{
|
||||
sortText = "price";
|
||||
sort = "1";
|
||||
}
|
||||
lstProduct.Clear();
|
||||
this.dgvCollect.Rows.Clear();
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
btnCollect.Text = "停止采集";
|
||||
|
||||
int n = 0;
|
||||
int total = totalPage * keywords.Count();
|
||||
this.statusBar.lblTaskStatus.Text = "开始采集...";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
var exportFileName = "采集导出\\爆款关键词采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv"; try
|
||||
{
|
||||
if (!Directory.Exists("采集导出"))
|
||||
Directory.CreateDirectory("采集导出");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("关键词,商品ID,商品标题,价格,销量,佣金,佣金率,评论数,好评率,体验分数,店铺名称");
|
||||
File.AppendAllText(exportFileName, sb.ToString(), Encoding.Default);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
};
|
||||
|
||||
foreach (var keyword in keywords)
|
||||
{
|
||||
for (int i = 0; i < totalPage; i++)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
n++;
|
||||
int page = i + 1;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在采集关键词:\"" + keyword + "\",当前采集到第 " + page + " 页";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
|
||||
var listCollectResult = Collect(GlobalConfig.DouBuyinCookies, keyword, page.ToString(), sortText, sort);
|
||||
if (listCollectResult.Contains("用户未登录") || listCollectResult.Contains("当前网络不稳定") || listCollectResult.Contains("操作异常"))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
DouUserLoginForm douLoginForm = new DouUserLoginForm("https://buyin.jinritemai.com/mpa/account/login?log_out=1&type=24");
|
||||
//DouUserLoginForm douLoginForm = new DouUserLoginForm("https://buyin.jinritemai.com/dashboard/servicehall/daren-square");
|
||||
douLoginForm.ShowDialog();
|
||||
}));
|
||||
cancellationTokenSource.Cancel();
|
||||
break;
|
||||
}
|
||||
|
||||
Thread.Sleep(Randomx.GetId(1000, 3000));
|
||||
|
||||
if (listCollectResult.Contains("\"code\":0"))
|
||||
{
|
||||
|
||||
// todo
|
||||
|
||||
JObject jObj = JObject.Parse(listCollectResult);
|
||||
if (jObj["data"] != null && jObj["data"]["promotions"] != null)
|
||||
{
|
||||
foreach (JObject obj in jObj["data"]["promotions"])
|
||||
{
|
||||
DouGoodsCollectInfo goodsInfo = new DouGoodsCollectInfo();
|
||||
string goodStr = JsonHelper.SerializeObject(obj);
|
||||
goodsInfo.Keyword = keyword;
|
||||
goodsInfo.GoodsName = BaseRegex.GetStringJson(ref goodStr, "title");
|
||||
goodsInfo.Id = BaseRegex.GetStringJson(ref goodStr, "product_id");
|
||||
goodsInfo.Price = (BaseRegex.GetDecimalJson(ref goodStr, "price") / 100).ToString();
|
||||
goodsInfo.yj = (BaseRegex.GetDecimalJson(ref goodStr, "cos_fee") / 100).ToString();
|
||||
goodsInfo.yjl = (BaseRegex.GetDecimalJson(ref goodStr, "cos_ratio") / 100).ToString();
|
||||
goodsInfo.Sales = BaseRegex.GetStringJson(ref goodStr, "month_sales"); // 月销量
|
||||
goodsInfo.ShopId = BaseRegex.GetStringJson(ref goodStr, "shop_id");
|
||||
goodsInfo.ShopName = BaseRegex.GetStringJson(ref goodStr, "shop_name");
|
||||
goodsInfo.Score = BaseRegex.GetDecimalJson(ref goodStr, "exp_score").ParseToDouble();
|
||||
|
||||
if (goodsInfo.Price.ParseToDecimal() < priceMin || goodsInfo.Price.ParseToDecimal() > priceMax)
|
||||
continue;
|
||||
if (goodsInfo.yj.ParseToDecimal() < yongjinMin || goodsInfo.yj.ParseToDecimal() > yongjinMax)
|
||||
continue;
|
||||
if (goodsInfo.Sales.ParseToDecimal() < salesMin || goodsInfo.Sales.ParseToDecimal() > salesMax)
|
||||
continue;
|
||||
if (goodsInfo.Score.ParseToDecimal() < scoreMin || goodsInfo.Score.ParseToDecimal() > scoreMax)
|
||||
continue;
|
||||
|
||||
var commentResult = CaiNiXiHuanCollectForm.GetComments(GlobalConfig.DouBuyinCookies, goodsInfo.Id);
|
||||
|
||||
Thread.Sleep(Randomx.GetId(400, 600));
|
||||
if (!string.IsNullOrEmpty(commentResult) && commentResult.Contains("\"status_code\":0"))
|
||||
{
|
||||
goodsInfo.CommentsCount = BaseRegex.GetIntJson(ref commentResult, "total_comments_num");
|
||||
goodsInfo.CommentsRate = BaseRegex.GetDecimalJson(ref commentResult, "good_comment_ratio").ParseToDouble() / 100;
|
||||
}
|
||||
|
||||
// 筛选条件
|
||||
if (goodsInfo.CommentsRate < this.commentRateMin.ParseToDouble() || goodsInfo.CommentsRate > this.commentRateMax.ParseToDouble()
|
||||
|| goodsInfo.CommentsCount < this.commentCountMin || goodsInfo.CommentsCount > this.commentCountMax)
|
||||
continue;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.dgvCollect.Rows.Add(false, keyword, goodsInfo.Id, goodsInfo.GoodsName, goodsInfo.Price, goodsInfo.Sales, goodsInfo.yj, goodsInfo.yjl,
|
||||
goodsInfo.CommentsCount, goodsInfo.CommentsRate, goodsInfo.Score, goodsInfo.ShopName);
|
||||
|
||||
}));
|
||||
try
|
||||
{
|
||||
lstProduct.Add(goodsInfo);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine(goodsInfo.Keyword + ",https://haohuo.jinritemai.com/views/product/item2?id=" + goodsInfo.Id + "," + goodsInfo.GoodsName + ","
|
||||
+ goodsInfo.Price + "," + goodsInfo.Sales + "," + goodsInfo.yj + "," + goodsInfo.yjl + "," + goodsInfo.CommentsCount + ","
|
||||
+ goodsInfo.CommentsRate + "," + goodsInfo.Score + "," + goodsInfo.ShopName);
|
||||
System.IO.File.WriteAllText(exportFileName, sb.ToString(), Encoding.Default);
|
||||
}
|
||||
catch (Exception ex) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
btnCollect.Text = "开始采集";
|
||||
|
||||
this.statusBar.lblTaskStatus.Text = "采集结束,共采集到商品" + this.lstProduct.Count + "个";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
private void btnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
|
||||
saveFileDialog1.Filter = "表格文件(*.csv)|*.csv";
|
||||
saveFileDialog1.FileName = "爆款关键词采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
saveFileDialog1.FilterIndex = 2;
|
||||
saveFileDialog1.RestoreDirectory = true;
|
||||
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("关键词,商品ID,商品标题,价格,销量,佣金,佣金率,评论数,好评率,体验分数,店铺名称");
|
||||
foreach (var goodsInfo in lstProduct)
|
||||
{
|
||||
sb.AppendLine(goodsInfo.Keyword + ",https://haohuo.jinritemai.com/views/product/item2?id=" + goodsInfo.Id + "," + goodsInfo.GoodsName + ","
|
||||
+ goodsInfo.Price + "," + goodsInfo.Sales + "," + goodsInfo.yj + "," + goodsInfo.yjl + "," + goodsInfo.CommentsCount + ","
|
||||
+ goodsInfo.CommentsRate + "," + goodsInfo.Score + "," + goodsInfo.ShopName);
|
||||
}
|
||||
System.IO.File.WriteAllText(saveFileDialog1.FileName, sb.ToString(), Encoding.Default);
|
||||
BaseForms.BaseMsgForm.ShowInfo("导出成功");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void KeywordCollectForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.cmbCategory.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void dgvCollect_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.RowIndex < 0 || e.ColumnIndex < 0)
|
||||
return;
|
||||
|
||||
var goodsId = dgvCollect.Rows[e.RowIndex].Cells["colProductId"].Value.ToString();
|
||||
var columnName = dgvCollect.Columns[e.ColumnIndex].Name;
|
||||
if (columnName == "colProductName")
|
||||
{
|
||||
string url = "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsId;
|
||||
GetHtml.OpenUrl(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
<?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="colKeyword.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSaleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colYongJin.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colYongJinLv.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCommentCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCommentRate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colScore.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShopNmae.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>
|
||||
@@ -0,0 +1,506 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
partial class ShopProductCollectForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnExport = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx1 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.txtKeyWords = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.btnLoginDouyin = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.btnCollect = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.ucGroupBoxEx2 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.txtFilter = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.txtTotalPage = new System.Windows.Forms.TextBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.txtSellCountMax = new System.Windows.Forms.TextBox();
|
||||
this.txtPriceMax = new System.Windows.Forms.TextBox();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.txtPriceMin = new System.Windows.Forms.TextBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.txtSellCountMin = new System.Windows.Forms.TextBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvCollect = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.colImage = new System.Windows.Forms.DataGridViewImageColumn();
|
||||
this.colShopNmae = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSaleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colDelete = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.ucGroupBoxEx1.SuspendLayout();
|
||||
this.ucGroupBoxEx2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnExport);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnLoginDouyin);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnCollect);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx2);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 121;
|
||||
this.splitContainer1.TabIndex = 378;
|
||||
//
|
||||
// btnExport
|
||||
//
|
||||
this.btnExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnExport.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnExport.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnExport.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnExport.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnExport.ForeColor = System.Drawing.Color.White;
|
||||
this.btnExport.Location = new System.Drawing.Point(720, 84);
|
||||
this.btnExport.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnExport.Name = "btnExport";
|
||||
this.btnExport.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnExport.TabIndex = 394;
|
||||
this.btnExport.Text = "导出数据";
|
||||
this.btnExport.UseVisualStyleBackColor = false;
|
||||
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
|
||||
//
|
||||
// ucGroupBoxEx1
|
||||
//
|
||||
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx1.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx1.Controls.Add(this.txtKeyWords);
|
||||
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
|
||||
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
|
||||
this.ucGroupBoxEx1.Size = new System.Drawing.Size(277, 120);
|
||||
this.ucGroupBoxEx1.TabIndex = 393;
|
||||
this.ucGroupBoxEx1.TabStop = false;
|
||||
this.ucGroupBoxEx1.Text = "采集店铺";
|
||||
//
|
||||
// txtKeyWords
|
||||
//
|
||||
this.txtKeyWords.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.txtKeyWords.Border.Class = "TextBoxBorder";
|
||||
this.txtKeyWords.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.txtKeyWords.Location = new System.Drawing.Point(10, 21);
|
||||
this.txtKeyWords.Multiline = true;
|
||||
this.txtKeyWords.Name = "txtKeyWords";
|
||||
this.txtKeyWords.PreventEnterBeep = true;
|
||||
this.txtKeyWords.Size = new System.Drawing.Size(257, 88);
|
||||
this.txtKeyWords.TabIndex = 7;
|
||||
this.txtKeyWords.WatermarkText = "请输入要搜索的店铺id或链接\r\n一行一个";
|
||||
//
|
||||
// btnLoginDouyin
|
||||
//
|
||||
this.btnLoginDouyin.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnLoginDouyin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnLoginDouyin.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnLoginDouyin.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnLoginDouyin.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnLoginDouyin.ForeColor = System.Drawing.Color.White;
|
||||
this.btnLoginDouyin.Location = new System.Drawing.Point(720, 20);
|
||||
this.btnLoginDouyin.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnLoginDouyin.Name = "btnLoginDouyin";
|
||||
this.btnLoginDouyin.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnLoginDouyin.TabIndex = 373;
|
||||
this.btnLoginDouyin.Text = "登录抖音";
|
||||
this.btnLoginDouyin.UseVisualStyleBackColor = false;
|
||||
this.btnLoginDouyin.Click += new System.EventHandler(this.btnLoginDouyin_Click);
|
||||
//
|
||||
// btnCollect
|
||||
//
|
||||
this.btnCollect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCollect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnCollect.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnCollect.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.btnCollect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnCollect.ForeColor = System.Drawing.Color.White;
|
||||
this.btnCollect.Location = new System.Drawing.Point(720, 52);
|
||||
this.btnCollect.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnCollect.Name = "btnCollect";
|
||||
this.btnCollect.Size = new System.Drawing.Size(66, 26);
|
||||
this.btnCollect.TabIndex = 374;
|
||||
this.btnCollect.Text = "开始采集";
|
||||
this.btnCollect.UseVisualStyleBackColor = false;
|
||||
this.btnCollect.Click += new System.EventHandler(this.btnCollect_Click);
|
||||
//
|
||||
// ucGroupBoxEx2
|
||||
//
|
||||
this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx2.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtFilter);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label10);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtTotalPage);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label12);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtSellCountMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtPriceMax);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label13);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtPriceMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label14);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label15);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.txtSellCountMin);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label16);
|
||||
this.ucGroupBoxEx2.Location = new System.Drawing.Point(281, 2);
|
||||
this.ucGroupBoxEx2.Name = "ucGroupBoxEx2";
|
||||
this.ucGroupBoxEx2.Size = new System.Drawing.Size(409, 120);
|
||||
this.ucGroupBoxEx2.TabIndex = 395;
|
||||
this.ucGroupBoxEx2.TabStop = false;
|
||||
this.ucGroupBoxEx2.Text = "采集参数";
|
||||
//
|
||||
// txtFilter
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
this.txtFilter.Border.Class = "TextBoxBorder";
|
||||
this.txtFilter.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.txtFilter.Location = new System.Drawing.Point(16, 47);
|
||||
this.txtFilter.Multiline = true;
|
||||
this.txtFilter.Name = "txtFilter";
|
||||
this.txtFilter.PreventEnterBeep = true;
|
||||
this.txtFilter.Size = new System.Drawing.Size(176, 62);
|
||||
this.txtFilter.TabIndex = 392;
|
||||
this.txtFilter.WatermarkText = "请输入关键字,输入多个请用逗号隔开";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(210, 90);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(56, 17);
|
||||
this.label10.TabIndex = 389;
|
||||
this.label10.Text = "采集页数";
|
||||
//
|
||||
// txtTotalPage
|
||||
//
|
||||
this.txtTotalPage.Location = new System.Drawing.Point(267, 86);
|
||||
this.txtTotalPage.Name = "txtTotalPage";
|
||||
this.txtTotalPage.Size = new System.Drawing.Size(123, 23);
|
||||
this.txtTotalPage.TabIndex = 388;
|
||||
this.txtTotalPage.Text = "5";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(13, 26);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(104, 17);
|
||||
this.label12.TabIndex = 378;
|
||||
this.label12.Text = "包含以下关键字:";
|
||||
//
|
||||
// txtSellCountMax
|
||||
//
|
||||
this.txtSellCountMax.Location = new System.Drawing.Point(335, 54);
|
||||
this.txtSellCountMax.Name = "txtSellCountMax";
|
||||
this.txtSellCountMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSellCountMax.TabIndex = 387;
|
||||
this.txtSellCountMax.Text = "99999999";
|
||||
//
|
||||
// txtPriceMax
|
||||
//
|
||||
this.txtPriceMax.Location = new System.Drawing.Point(335, 22);
|
||||
this.txtPriceMax.Name = "txtPriceMax";
|
||||
this.txtPriceMax.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMax.TabIndex = 383;
|
||||
this.txtPriceMax.Text = "99999999";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(323, 57);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(13, 17);
|
||||
this.label13.TabIndex = 386;
|
||||
this.label13.Text = "-";
|
||||
//
|
||||
// txtPriceMin
|
||||
//
|
||||
this.txtPriceMin.Location = new System.Drawing.Point(267, 22);
|
||||
this.txtPriceMin.Name = "txtPriceMin";
|
||||
this.txtPriceMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtPriceMin.TabIndex = 379;
|
||||
this.txtPriceMin.Text = "0";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(210, 58);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(56, 17);
|
||||
this.label14.TabIndex = 385;
|
||||
this.label14.Text = "宝贝销量";
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Location = new System.Drawing.Point(210, 26);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(56, 17);
|
||||
this.label15.TabIndex = 380;
|
||||
this.label15.Text = "宝贝价格";
|
||||
//
|
||||
// txtSellCountMin
|
||||
//
|
||||
this.txtSellCountMin.Location = new System.Drawing.Point(267, 54);
|
||||
this.txtSellCountMin.Name = "txtSellCountMin";
|
||||
this.txtSellCountMin.Size = new System.Drawing.Size(55, 23);
|
||||
this.txtSellCountMin.TabIndex = 384;
|
||||
this.txtSellCountMin.Text = "0";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(323, 25);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(13, 17);
|
||||
this.label16.TabIndex = 382;
|
||||
this.label16.Text = "-";
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvCollect);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(800, 325);
|
||||
this.splitContainer2.SplitterDistance = 299;
|
||||
this.splitContainer2.SplitterWidth = 1;
|
||||
this.splitContainer2.TabIndex = 7;
|
||||
//
|
||||
// dgvCollect
|
||||
//
|
||||
this.dgvCollect.AllowUserToAddRows = false;
|
||||
this.dgvCollect.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvCollect.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvCollect.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvCollect.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.dgvCollect.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvCollect.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvCollect.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colImage,
|
||||
this.colShopNmae,
|
||||
this.colSaleCount,
|
||||
this.colPrice,
|
||||
this.colDelete});
|
||||
this.dgvCollect.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvCollect.Location = new System.Drawing.Point(5, 0);
|
||||
this.dgvCollect.Name = "dgvCollect";
|
||||
this.dgvCollect.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvCollect.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvCollect.RowTemplate.Height = 23;
|
||||
this.dgvCollect.Size = new System.Drawing.Size(790, 299);
|
||||
this.dgvCollect.TabIndex = 6;
|
||||
this.dgvCollect.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvCollect_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
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;
|
||||
this.colSelect.Visible = false;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 150;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colProductName.Width = 350;
|
||||
//
|
||||
// colImage
|
||||
//
|
||||
this.colImage.HeaderText = "图片";
|
||||
this.colImage.Name = "colImage";
|
||||
this.colImage.ReadOnly = true;
|
||||
this.colImage.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colImage.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colImage.Visible = false;
|
||||
this.colImage.Width = 70;
|
||||
//
|
||||
// colShopNmae
|
||||
//
|
||||
this.colShopNmae.HeaderText = "店铺名称";
|
||||
this.colShopNmae.Name = "colShopNmae";
|
||||
this.colShopNmae.ReadOnly = true;
|
||||
this.colShopNmae.Width = 150;
|
||||
//
|
||||
// colSaleCount
|
||||
//
|
||||
this.colSaleCount.HeaderText = "销量";
|
||||
this.colSaleCount.Name = "colSaleCount";
|
||||
this.colSaleCount.ReadOnly = true;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
this.colPrice.Width = 80;
|
||||
//
|
||||
// colDelete
|
||||
//
|
||||
this.colDelete.HeaderText = "删除";
|
||||
this.colDelete.Name = "colDelete";
|
||||
this.colDelete.ReadOnly = true;
|
||||
this.colDelete.Visible = false;
|
||||
this.colDelete.Width = 81;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(800, 25);
|
||||
this.statusBar.TabIndex = 6;
|
||||
//
|
||||
// ShopProductCollectForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "ShopProductCollectForm";
|
||||
this.Text = "抖音整店采集";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.PerformLayout();
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvCollect)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserControls.ButtonEx btnExport;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx1;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX txtKeyWords;
|
||||
private UserControls.ButtonEx btnLoginDouyin;
|
||||
private UserControls.ButtonEx btnCollect;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx2;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.TextBox txtTotalPage;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.TextBox txtSellCountMax;
|
||||
private System.Windows.Forms.TextBox txtPriceMax;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.TextBox txtPriceMin;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.TextBox txtSellCountMin;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private UserComponent.DataGridViewEx dgvCollect;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX txtFilter;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewImageColumn colImage;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopNmae;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSaleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn colDelete;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,358 @@
|
||||
using AllBase;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.ToolForms;
|
||||
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.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Work.BLL.Collect;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.CollectForms
|
||||
{
|
||||
public partial class ShopProductCollectForm : Form
|
||||
{
|
||||
List<string> lstFilterKeyword = new List<string>();
|
||||
List<DouGoodsCollectInfo> lstProduct = new List<DouGoodsCollectInfo>();
|
||||
decimal priceMin = 0;
|
||||
decimal priceMax = 99999999;
|
||||
long salesMin = 0;
|
||||
long salesMax = 99999999;
|
||||
int totalPage = 5;
|
||||
|
||||
CancellationTokenSource cancellationTokenSource = null;
|
||||
|
||||
public ShopProductCollectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void btnCollect_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (btnCollect.Text != "开始采集")
|
||||
{
|
||||
cancellationTokenSource.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
priceMin = this.txtPriceMin.Text.ParseToDecimal();
|
||||
priceMax = this.txtPriceMax.Text.ParseToDecimal();
|
||||
salesMin = this.txtSellCountMin.Text.ParseToLong();
|
||||
salesMax = this.txtSellCountMax.Text.ParseToLong();
|
||||
totalPage = this.txtTotalPage.Text.ParseToInt();
|
||||
lstFilterKeyword = this.txtFilter.Text.Trim().Split(new string[] { "\r", "\n", " ", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
|
||||
if (string.IsNullOrWhiteSpace(txtKeyWords.Text))
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请输入要搜索的Id或链接");
|
||||
return;
|
||||
}
|
||||
if (totalPage < 1)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请至少查询一页以上数据");
|
||||
return;
|
||||
}
|
||||
var searchTextArr = this.txtKeyWords.Text.Split(new string[] { "\r", "\n", ",", " " }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
lstProduct.Clear();
|
||||
this.dgvCollect.Rows.Clear();
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
btnCollect.Text = "停止采集";
|
||||
int n = 0;
|
||||
int total = searchTextArr.Count() * totalPage;
|
||||
this.statusBar.lblTaskStatus.Text = "开始采集...";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
var exportFileName = "采集导出\\抖音整店采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
try
|
||||
{
|
||||
if (!Directory.Exists("采集导出"))
|
||||
Directory.CreateDirectory("采集导出");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("商品Id,商品名称,店铺名称,商品销量,商品价格");
|
||||
File.AppendAllText(exportFileName, sb.ToString(), Encoding.Default);
|
||||
}
|
||||
catch (Exception ex) { }
|
||||
|
||||
foreach (var searchText in searchTextArr)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
DouGoodsCollectInfo goodShop = new DouGoodsCollectInfo();
|
||||
var text = searchText;
|
||||
var goodId = BaseRegex.GetMatchRegexString(ref text, "(\\d{15,25})");
|
||||
if (goodId != null && goodId.ParseToLong() > 0)
|
||||
goodShop.Id = goodId;
|
||||
else
|
||||
{
|
||||
var shopId = searchText;
|
||||
if (searchText.Contains("shop/index?id="))
|
||||
{
|
||||
shopId = searchText.Substring(shopId.IndexOf("shop/index?id=") + "shop/index?id=".Length);
|
||||
}
|
||||
goodShop.ShopId = shopId;
|
||||
}
|
||||
|
||||
if (goodShop.Id != null && goodShop.Id.ParseToLong() > 0)
|
||||
{
|
||||
string douShopResult = CollectDouShopDetailByProduct(goodShop.Id);
|
||||
goodShop.ShopId = BaseRegex.GetStringJson(ref douShopResult, "shop_id");
|
||||
goodShop.ShopName = BaseRegex.GetStringJson(ref douShopResult, "shop_name");
|
||||
}
|
||||
else
|
||||
{
|
||||
string douShopResult = CollectDouShopDetail(goodShop.ShopId);
|
||||
goodShop.ShopName = BaseRegex.GetStringJson(ref douShopResult, "shop_name");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(goodShop.ShopName) && !string.IsNullOrEmpty(goodShop.ShopId))
|
||||
{
|
||||
for (int i = 0; i < this.totalPage; i++)
|
||||
{
|
||||
if (i >= 19)
|
||||
{
|
||||
|
||||
}
|
||||
try
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
n++;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在采集店铺:" + goodShop.ShopId + ",当前采集到第 " + (i + 1) + " 页";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
|
||||
var goodsListResult = CollectShopGoodsList(goodShop.ShopId, i.ToString());
|
||||
|
||||
if (!string.IsNullOrEmpty(goodsListResult) && goodsListResult.Contains("用户未登录"))
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError("请先未登录!");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(goodsListResult) && goodsListResult.Contains("\"st\":0"))
|
||||
{
|
||||
if (goodsListResult.Contains("\"list\":[]"))
|
||||
break;
|
||||
|
||||
JObject jObj = JObject.Parse(goodsListResult);
|
||||
if (jObj["data"]?["list"] != null)
|
||||
{
|
||||
foreach (JObject pObj in jObj["data"]?["list"])
|
||||
{
|
||||
string pStr = JsonHelper.SerializeObject(pObj);
|
||||
|
||||
DouGoodsCollectInfo good = new DouGoodsCollectInfo();
|
||||
good.GoodsName = BaseRegex.GetStringJson(ref pStr, "goods_name");
|
||||
good.Id = BaseRegex.GetStringJson(ref pStr, "product_id");
|
||||
good.ShopName = goodShop.ShopName;
|
||||
good.Sales = BaseRegex.GetStringJson(ref pStr, "sell_num");
|
||||
good.Price = BaseRegex.GetDecimalJson(ref pStr, "goods_price").ToString();
|
||||
|
||||
var salesLong = good.Sales.Replace("+", "").Replace("万", "").ParseToDecimal();
|
||||
if (good.Sales.Contains("万"))
|
||||
salesLong = salesLong * 10000;
|
||||
if (good.Price.ParseToDecimal() < priceMin || good.Price.ParseToDecimal() > priceMax
|
||||
|| salesLong < salesMin || salesLong > salesMax)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (lstFilterKeyword.Count > 0 && !lstFilterKeyword.Any(k => good.GoodsName.Contains(k)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
this.lstProduct.Add(good);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("https://haohuo.jinritemai.com/views/product/item2?id=" + good.Id + "," + good.GoodsName + "," + good.ShopName + ","
|
||||
+ good.Sales + "," + good.Price);
|
||||
File.AppendAllText(exportFileName, sb.ToString(), Encoding.Default);
|
||||
}
|
||||
catch (Exception ex) { }
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var index = this.dgvCollect.Rows.Add(false, good.Id, good.GoodsName, null, good.ShopName, good.Sales, good.Price, "删除");
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
|
||||
Thread.Sleep(Randomx.GetId(3000, 4000));
|
||||
}
|
||||
}
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
btnCollect.Text = "开始采集";
|
||||
|
||||
this.statusBar.lblTaskStatus.Text = "采集结束,共采集到商品" + this.lstProduct.Count + "个";
|
||||
this.statusBar.pgbTaskProgress.Value = n;
|
||||
this.statusBar.pgbTaskProgress.Text = n + "/" + total;
|
||||
this.statusBar.pgbTaskProgress.Maximum = total;
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
private void btnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
|
||||
saveFileDialog1.Filter = "表格文件(*.csv)|*.csv";
|
||||
saveFileDialog1.FileName = "抖音整店采集" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
saveFileDialog1.FilterIndex = 2;
|
||||
saveFileDialog1.RestoreDirectory = true;
|
||||
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("商品Id,商品名称,店铺名称,商品销量,商品价格");
|
||||
foreach (var good in lstProduct)
|
||||
{
|
||||
sb.AppendLine("https://haohuo.jinritemai.com/views/product/item2?id=" + good.Id + "," + good.GoodsName + "," + good.ShopName + ","
|
||||
+ good.Sales + "," + good.Price);
|
||||
}
|
||||
File.WriteAllText(saveFileDialog1.FileName, sb.ToString(), Encoding.Default);
|
||||
BaseForms.BaseMsgForm.ShowInfo("导出成功");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseForms.BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取店铺名称等信息
|
||||
/// </summary>
|
||||
/// <param name="shopId"></param>
|
||||
/// <returns></returns>
|
||||
private string CollectDouShopDetail(string shopId)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://ec.snssdk.com/shop/getInfo?id=" + shopId + "&b_type_new=0&device_id=0&is_outside=1");
|
||||
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36";
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据店铺商品获取店铺名称等信息
|
||||
/// </summary>
|
||||
/// <param name="shopId"></param>
|
||||
/// <returns></returns>
|
||||
private string CollectDouShopDetailByProduct(string productId)
|
||||
{
|
||||
return HaoWuCollectBLL.getHtml("https://ec.snssdk.com/product/fxgajaxstaticitem?b_type_new=0&device_id=0&is_outside=1&id=" + productId + "&preview=0", "", "utf8");
|
||||
}
|
||||
|
||||
private string CollectShopGoodsList(string shopId, string page)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = "https://ec.snssdk.com/shop/goodsList?shop_id=" + shopId + "&pageSize=20&page=" + page;
|
||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.ContentType = "application/x-www-form-urlencoded";
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36";
|
||||
request.Headers.Add("Cookie", AllBase.Helper.GlobalConfig.DouUserCookies);
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
if (response != null) response.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
private void dgvCollect_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.RowIndex < 0 || e.ColumnIndex < 0)
|
||||
return;
|
||||
|
||||
var goodsId = dgvCollect.Rows[e.RowIndex].Cells["colProductId"].Value.ToString();
|
||||
var columnName = dgvCollect.Columns[e.ColumnIndex].Name;
|
||||
if (columnName == "colProductId" || columnName == "colProductName")
|
||||
{
|
||||
string url = "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsId;
|
||||
GetHtml.OpenUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnLoginDouyin_Click(object sender, EventArgs e)
|
||||
{
|
||||
DouUserLoginForm dForm = new DouUserLoginForm();
|
||||
dForm.ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colImage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShopNmae.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSaleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.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>
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.OrderForms
|
||||
{
|
||||
partial class OrderForm
|
||||
{
|
||||
/// <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 treeNode3 = new System.Windows.Forms.TreeNode("添加子节点");
|
||||
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("订单管理", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode3});
|
||||
this.tv = new LittleRabbit.UserComponent.UcTreeView();
|
||||
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.panel1.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tv
|
||||
//
|
||||
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";
|
||||
treeNode3.Name = "添加子节点";
|
||||
treeNode3.Text = "添加子节点";
|
||||
treeNode4.Name = "订单管理";
|
||||
treeNode4.Text = "订单管理";
|
||||
this.tv.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
|
||||
treeNode4});
|
||||
this.tv.OverForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
|
||||
this.tv.Size = new System.Drawing.Size(140, 460);
|
||||
this.tv.TabIndex = 2;
|
||||
this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect);
|
||||
//
|
||||
// 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, 460);
|
||||
this.panel1.TabIndex = 3;
|
||||
//
|
||||
// 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, 432);
|
||||
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, 460);
|
||||
this.splitContainer1.SplitterDistance = 140;
|
||||
this.splitContainer1.SplitterWidth = 1;
|
||||
this.splitContainer1.TabIndex = 4;
|
||||
//
|
||||
// OrderForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(933, 460);
|
||||
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 = "OrderForm";
|
||||
this.Text = "OrderForm";
|
||||
this.Load += new System.EventHandler(this.OrderForm_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 panel3;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Label lblName;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
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 LittleRabbit.LittleRabbitForms.OrderForms
|
||||
{
|
||||
public partial class OrderForm : Form
|
||||
{
|
||||
public OrderForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OrderForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
tv.SelectedNode = tv.Nodes[0].Nodes[0];
|
||||
tv.ExpandGroup(tv.Nodes[0].Name);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private void tv_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
MainForm.sCurrentModule = e.Node.Name;
|
||||
this.lblName.Text = e.Node.Text;
|
||||
|
||||
// todo: 参考 LittleCatDouDian.LittleCatForms.ShopForms.Shopform
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
+1341
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,630 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using CefSharp;
|
||||
using CefSharp.WinForms;
|
||||
using LittleRabbit.Extension;
|
||||
using LittleRabbit.Helper;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
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.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class CouponForm : Form
|
||||
{
|
||||
private CheckBox chkSelectAll = null;
|
||||
public ChromiumWebBrowser webBrowser = null;
|
||||
private List<string> lstShopId = new List<string>();
|
||||
public List<string> keywords = null;
|
||||
public List<string> filterWords = null;
|
||||
public CancellationTokenSource cancellationTokenSource = null;
|
||||
|
||||
public CouponForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void CouponForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.ucTabControl1.TabPages.Clear();
|
||||
|
||||
chkSelectAll = dgvShop.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
dgvShop.Columns["colSelect"].HeaderText = "";
|
||||
chkSelectAll.Width = chkSelectAll.Height = 13;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
|
||||
this.cmbType.SelectedIndex = 0;
|
||||
this.cmbUserCountLimited.SelectedIndex = 0;
|
||||
this.dtpStartApplyTime.Value = DateTime.Now.Date;
|
||||
this.dtpEndApplyTime.Value = this.dtpStartApplyTime.Value.AddDays(1).AddSeconds(-1);
|
||||
}
|
||||
|
||||
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!chkSelectAll.Checked)
|
||||
{
|
||||
lstShopId.Clear();
|
||||
foreach (DataGridViewRow row in dgvShop.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lstShopId.Clear();
|
||||
var list = GlobalConfig.DouShopLoginList.Where(s => s.ApiAuthStatus == "授权成功" && s.LoginStatus == "登录成功").Select(ss => ss.ShopAccountId);
|
||||
lstShopId.AddRange(list);
|
||||
foreach (DataGridViewRow row in dgvShop.Rows)
|
||||
{
|
||||
if (list.Any(l => l == row.Cells["colShopId"]?.Value?.ToString()))
|
||||
row.Cells["colSelect"].Value = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CouponForm_VisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Visible == true)
|
||||
RefreshShop();
|
||||
}
|
||||
|
||||
private void btnRefreshShop_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshShop();
|
||||
}
|
||||
|
||||
private void RefreshShop()
|
||||
{
|
||||
// 更新选中的上货店铺Id
|
||||
lstShopId = lstShopId.Where(id => GlobalConfig.DouShopLoginList.Any(s => s.ShopAccountId == id && s.LoginStatus == "已授权")).ToList();
|
||||
// 获取被删除的店铺
|
||||
List<DataGridViewRow> dgvRowList = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
|
||||
=> !GlobalConfig.DouShopLoginList.Any(s => s.ShopAccountId == row.Cells["colShopId"]?.Value?.ToString())).ToList();
|
||||
// 更新被删除的店铺列表
|
||||
foreach (var row in dgvRowList)
|
||||
{
|
||||
dgvShop.Rows.Remove(row);
|
||||
}
|
||||
// 绑定其他店铺(含新导入的店铺)
|
||||
foreach (DouShopLoginInfo shopEntity in GlobalConfig.DouShopLoginList)
|
||||
{
|
||||
BindShop(shopEntity);
|
||||
}
|
||||
}
|
||||
|
||||
private void BindShop(DouShopLoginInfo shopEntity)
|
||||
{
|
||||
if (shopEntity == null)
|
||||
return;
|
||||
|
||||
bool canUse = shopEntity.ApiAuthStatus == "授权成功" && shopEntity.LoginStatus == "登录成功";
|
||||
var row = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(p => p.Cells.GetCellValueFromColumnName("colShopId").ParseToString() == shopEntity.ShopAccountId);
|
||||
if (row == null)
|
||||
{
|
||||
this.dgvShop.Rows.Add(
|
||||
lstShopId.Contains(shopEntity.ShopAccountId) && canUse,
|
||||
shopEntity.ShopAccountId,
|
||||
shopEntity.ShopAccount,
|
||||
shopEntity.ApiAuthStatus,
|
||||
shopEntity.LoginStatus,
|
||||
canUse,
|
||||
string.Empty
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Cells["colSelect"].Value = lstShopId.Contains(shopEntity.ShopAccountId) && canUse;
|
||||
row.Cells["colShopName"].Value = shopEntity.ShopAccount;
|
||||
row.Cells["colAuthStatus"].Value = shopEntity.ApiAuthStatus;
|
||||
row.Cells["colLoginStatus"].Value = shopEntity.LoginStatus;
|
||||
row.Cells["colCanUse"].Value = canUse;
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvShop_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string headerText = dgvShop.Columns[e.ColumnIndex].HeaderText;
|
||||
string columnName = dgvShop.Columns[e.ColumnIndex].Name;
|
||||
long shopId = dgvShop.Rows[e.RowIndex].Cells["colShopId"].Value.ParseToLong();
|
||||
string shopName = dgvShop.Rows[e.RowIndex].Cells["colShopId"].Value.ToString();
|
||||
var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.ShopAccountId == shopId.ToString());
|
||||
var row = dgvShop.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
if (row.Cells["colCanUse"].Value.ParseToBool())
|
||||
{
|
||||
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
if (dgvShop.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool())
|
||||
lstShopId.Add(shopId.ToString());
|
||||
else
|
||||
lstShopId.Remove(shopId.ToString());
|
||||
if (dgvShop.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
chkSelectAll.Checked = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseMsgForm.ShowInfo("店铺未授权或未登录!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnGetProduct_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lstShopId.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择店铺!");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
this.keywords = txtProductName.Text.Trim().Split(new string[] { "\r", "\n", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
this.filterWords = txtFilter.Text.Trim().Split(new string[] { "\r", "\n", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var shopId in lstShopId)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.ShopAccountId == shopId);
|
||||
if (shop == null)
|
||||
continue;
|
||||
|
||||
CouponShopForm couponShopForm = null;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var tab = this.ucTabControl1.TabPages.Cast<TabPage>().FirstOrDefault(t => t.Text == shop.ShopAccount && t.Name == "tab" + shop.ShopAccountId);
|
||||
if (tab == null)
|
||||
{
|
||||
tab = new TabPage();
|
||||
tab.Name = "tab" + shop.ShopAccountId;
|
||||
tab.Text = shop.ShopAccount;
|
||||
this.ucTabControl1.TabPages.Add(tab);
|
||||
|
||||
var form = new CouponShopForm(shop);
|
||||
form.couponForm = this;
|
||||
form.TopLevel = false;
|
||||
form.Left = 0;
|
||||
form.Top = 0;
|
||||
form.FormBorderStyle = FormBorderStyle.None;
|
||||
form.AutoSize = true;
|
||||
form.Dock = DockStyle.Fill;
|
||||
form.Show();
|
||||
tab.Controls.Add(form);
|
||||
}
|
||||
|
||||
if (tab.Controls.Count > 0)
|
||||
couponShopForm = tab.Controls[0] as CouponShopForm;
|
||||
}));
|
||||
|
||||
if (couponShopForm != null)
|
||||
{
|
||||
couponShopForm.GetProduct(
|
||||
txtPriceMin.Text.ParseToDecimal(),
|
||||
txtPriceMax.Text.ParseToDecimal(),
|
||||
txtSaleMin.Text.ParseToInt(),
|
||||
txtSaleMax.Text.ParseToInt(),
|
||||
this.keywords,
|
||||
this.filterWords);
|
||||
}
|
||||
}
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
public void GetSales(DouShopLoginInfo shop, bool isSales = true)
|
||||
{
|
||||
if (webBrowser == null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
webBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
|
||||
webBrowser.KeyboardHandler = new KeyboardHandler();
|
||||
webBrowser.Dock = DockStyle.Fill;
|
||||
CustomResourceRequestHandlerLocal resourceRequestHandler = new Helper.CustomResourceRequestHandlerLocal();
|
||||
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadCompleteEvent;
|
||||
webBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
|
||||
webBrowser.LifeSpanHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
|
||||
webBrowser.SendToBack();
|
||||
this.splitContainer1.Panel2.Controls.Add(webBrowser);
|
||||
}));
|
||||
}
|
||||
|
||||
while (webBrowser.Tag != null)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
}
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
webBrowser.Tag = shop;
|
||||
|
||||
while (!webBrowser.IsBrowserInitialized || webBrowser.IsLoading)
|
||||
continue;
|
||||
|
||||
var cookie = shop.Cookies;
|
||||
CEFBrowser.DeleteCookie(webBrowser.RequestContext.GetCookieManager(null));
|
||||
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, webBrowser.RequestContext.GetCookieManager(null));
|
||||
t.Wait(2000);
|
||||
Thread.Sleep(500);
|
||||
|
||||
var targetUrl = "https://fxg.jinritemai.com/ffa/g/list";
|
||||
webBrowser.Load(targetUrl);
|
||||
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(3000);
|
||||
|
||||
if (!isSales)
|
||||
{
|
||||
Thread.Sleep(3000);
|
||||
var jsStrBase = "function clickProductAnalysis(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_element';\r\n"
|
||||
+ "}\r\n";
|
||||
var jsStr = jsStrBase + "clickProductAnalysis('电商罗盘');\r\n";
|
||||
t = webBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
|
||||
t.Wait();
|
||||
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2500));
|
||||
|
||||
jsStr = jsStrBase + "clickProductAnalysis('商品概览');\r\n";
|
||||
t = webBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
|
||||
t.Wait();
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2500));
|
||||
}
|
||||
while (webBrowser.Tag != null)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
}
|
||||
Thread.Sleep(3000);
|
||||
}
|
||||
|
||||
private void RequestHandler_ResourceLoadCompleteEvent(object sender, string url, string postData, string responseData, CefSharp.IRequest iRequest)
|
||||
{
|
||||
if (url.StartsWith("https://fxg.jinritemai.com/product/tproduct/list?page=0") && url.Contains("&pay_type="))
|
||||
{
|
||||
var listUrl = url;
|
||||
var referrerUrl = iRequest.ReferrerUrl;
|
||||
var result = responseData;
|
||||
Dictionary<string, string> Headers = new Dictionary<string, string>();
|
||||
foreach (var hk in iRequest.Headers.AllKeys)
|
||||
{
|
||||
Headers[hk] = iRequest.Headers[hk];
|
||||
}
|
||||
if (webBrowser.Tag != null)
|
||||
{
|
||||
var shop = webBrowser.Tag as DouShopLoginInfo;
|
||||
var tab = this.ucTabControl1.TabPages.Cast<TabPage>().FirstOrDefault(t => t.Text == shop.ShopAccount && t.Name == "tab" + shop.ShopAccountId);
|
||||
var clearForm = tab.Controls[0] as CouponShopForm;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
int total = -1;
|
||||
int number = 0;
|
||||
for (int i = 0; i < 10000; i++)
|
||||
{
|
||||
number += 20;
|
||||
result = "";
|
||||
for (int j = 0; j < 3 && !result.Contains("\"st\":0"); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
if (Headers.ContainsKey("Accept"))
|
||||
simRequest.Accept = Headers["Accept"];
|
||||
if (Headers.ContainsKey("UserAgent"))
|
||||
simRequest.UserAgent = Headers["UserAgent"];
|
||||
var cookie = shop.Cookies;
|
||||
|
||||
var rUrl = listUrl.Replace("page=0", "page=" + i)
|
||||
.Replace("&pay_type=", "&pay_type=&sell_num_min=1");
|
||||
|
||||
result = simRequest.Request_Get(rUrl, referrerUrl, new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(2000, 3000));
|
||||
}
|
||||
}
|
||||
|
||||
if (result.Contains("\"st\":0") && !cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
clearForm.isGetProductSalesSuccess = true;
|
||||
|
||||
if (total == -1)
|
||||
{
|
||||
total = BaseRegex.GetIntJson(ref result, "total");
|
||||
}
|
||||
var jObj = JObject.Parse(result);
|
||||
var jArr = jObj["data"] as JArray;
|
||||
foreach (var productObj in jArr)
|
||||
{
|
||||
var prod = JsonHelper.SerializeObject(productObj);
|
||||
var pId = BaseRegex.GetStringJson(ref prod, "product_id");
|
||||
var sales = BaseRegex.GetIntJson(ref prod, "sell_num");
|
||||
if (sales == 0)
|
||||
{
|
||||
number = 99999999;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
clearForm.dicProductSales[pId] = sales;
|
||||
}
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(2000, 3000));
|
||||
}
|
||||
else
|
||||
{
|
||||
clearForm.isGetProductSalesSuccess = false;
|
||||
webBrowser.Tag = null;
|
||||
break;
|
||||
}
|
||||
|
||||
if (number >= total)
|
||||
break;
|
||||
}
|
||||
|
||||
webBrowser.Tag = null;
|
||||
Thread.Sleep(1000);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
webBrowser.Tag = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void lblProductName_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.webBrowser != null)
|
||||
{
|
||||
webBrowser.SendToBack();
|
||||
}
|
||||
}
|
||||
|
||||
private void lblProductName_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (this.webBrowser != null)
|
||||
{
|
||||
webBrowser.BringToFront();
|
||||
}
|
||||
}
|
||||
|
||||
private void btnSet_Click(object sender, EventArgs e)
|
||||
{
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
int periodType = this.rbUseTypePeriod.Checked ? 1 : 2;
|
||||
int favouredType = 41;
|
||||
if (this.cmbType.Text == "商品直减券")
|
||||
favouredType = 42;
|
||||
else if (this.cmbType.Text == "商品满减券")
|
||||
favouredType = 43;
|
||||
int days = this.nudDays.Text.ParseToInt();
|
||||
int startApplyTime = BaseClass.DateTimeToTimestampSeconds(this.dtpStartApplyTime.Value);
|
||||
int endApplyTime = BaseClass.DateTimeToTimestampSeconds(this.dtpEndApplyTime.Value);
|
||||
int startUseTime = BaseClass.DateTimeToTimestampSeconds(this.dtpStartUseTime.Value.Date);
|
||||
int endUseTime = BaseClass.DateTimeToTimestampSeconds(this.dtpEndUseTime.Value.Date.AddDays(1).AddSeconds(-1));
|
||||
int totalCount = nudTotalCount.Value.ParseToInt();
|
||||
int countLimit = 1;
|
||||
decimal discount = this.nudCredit.Value.ParseToDecimal(); // 折扣
|
||||
int thresHold = this.nudThresHold.Value.ParseToInt(); // 满x元 单位元
|
||||
int credit = this.nudCredit.Value.ParseToInt(); // 减x元 单位元
|
||||
bool igonre = rbNotReckonIn.Checked;
|
||||
bool oneProductEachCoupon = this.rbOneProductEachCoupon.Checked;
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
int i = 0;
|
||||
List<Task> tList = new List<Task>();
|
||||
foreach (TabPage tp in ucTabControl1.TabPages)
|
||||
{
|
||||
i++;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在设置优惠券";
|
||||
this.statusBar.pgbTaskProgress.Value = i;
|
||||
this.statusBar.pgbTaskProgress.Text = i + "/" + ucTabControl1.TabPages.Count;
|
||||
this.statusBar.pgbTaskProgress.Maximum = ucTabControl1.TabPages.Count;
|
||||
}));
|
||||
|
||||
if (tp.Controls.Count > 0)
|
||||
{
|
||||
var cForm = tp.Controls[0] as CouponShopForm;
|
||||
if (cForm != null)
|
||||
{
|
||||
var t = Task.Run(() =>
|
||||
{
|
||||
cForm.SetCoupon(periodType, favouredType, startApplyTime, endApplyTime, startUseTime, endUseTime, days, totalCount, countLimit, discount, thresHold, credit, igonre, oneProductEachCoupon);
|
||||
});
|
||||
tList.Add(t);
|
||||
if (tList.Count >= 10)
|
||||
Task.WaitAny(tList.ToArray());
|
||||
|
||||
var ts = tList.Where(t1 => t1.IsCompleted || t1.IsCanceled || t1.IsFaulted);
|
||||
foreach (var t1 in ts)
|
||||
{
|
||||
tList.Remove(t1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Task.WaitAll(tList.ToArray());
|
||||
tList.Clear();
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "设置中断";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "设置完成";
|
||||
}
|
||||
this.statusBar.pgbTaskProgress.Value = 0;
|
||||
this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
||||
this.statusBar.pgbTaskProgress.Maximum = 0;
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
private void btnStopOperate_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cancellationTokenSource != null)
|
||||
cancellationTokenSource.Cancel();
|
||||
}
|
||||
|
||||
private void btnStopGetProduct_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cancellationTokenSource != null)
|
||||
cancellationTokenSource.Cancel();
|
||||
}
|
||||
|
||||
private void rbUseTypePeriod_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rbUseTypePeriod.Checked)
|
||||
{
|
||||
pnlTimePeriod.Visible = true;
|
||||
lblUseTypeText.Text = "日期范围";
|
||||
}
|
||||
else
|
||||
{
|
||||
pnlTimePeriod.Visible = false;
|
||||
lblUseTypeText.Text = "领券当日起";
|
||||
}
|
||||
}
|
||||
|
||||
private void pbPaste1_Click(object sender, EventArgs e)
|
||||
{
|
||||
IDataObject iData = Clipboard.GetDataObject();
|
||||
if (iData != null && iData.GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
txtProductName.Text = (string)iData.GetData(DataFormats.Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void pbPaste2_Click(object sender, EventArgs e)
|
||||
{
|
||||
IDataObject iData = Clipboard.GetDataObject();
|
||||
if (iData != null && iData.GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
txtFilter.Text = (string)iData.GetData(DataFormats.Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (BaseMsgForm.ShowConfirm("确定要清空结果吗?清空后需要重新获取!").DialogResult == DialogResult.OK)
|
||||
{
|
||||
foreach (TabPage tp in ucTabControl1.TabPages)
|
||||
{
|
||||
if (tp.Controls.Count > 0)
|
||||
{
|
||||
if (tp.Text.Contains("活动管理"))
|
||||
{
|
||||
//var managerActiveForm = tp.Controls[0] as LimitedSalesManagerActiveForm;
|
||||
//if (managerActiveForm != null)
|
||||
// managerActiveForm.ClearData();
|
||||
//if (splitContainer4.Panel1.Controls.Count == 2)
|
||||
// splitContainer4.Panel1.Controls.RemoveAt(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var salesForm = tp.Controls[0] as CouponShopForm;
|
||||
if (salesForm != null)
|
||||
salesForm.ClearData();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void cmbType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cmbType.Text == "商品折扣券")
|
||||
{
|
||||
this.lblDiscountText.Text = " 折扣";
|
||||
nudCredit.Minimum = 0.1M;
|
||||
nudCredit.Increment = 0.1M;
|
||||
nudCredit.Maximum = 9.9M;
|
||||
nudCredit.DecimalPlaces = 1;
|
||||
nudCredit.Value = 9.9M;
|
||||
lblCreditText.Text = "折";
|
||||
nudThresHold.Visible = false;
|
||||
lblThresHold.Visible = false;
|
||||
}
|
||||
else if (cmbType.Text == "商品直减券")
|
||||
{
|
||||
this.lblDiscountText.Text = "直减面额";
|
||||
nudCredit.Minimum = 1;
|
||||
nudCredit.Increment = 1;
|
||||
nudCredit.Maximum = 1000;
|
||||
nudCredit.DecimalPlaces = 0;
|
||||
nudCredit.Value = 1;
|
||||
lblCreditText.Text = "元";
|
||||
nudThresHold.Visible = false;
|
||||
lblThresHold.Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.lblDiscountText.Text = "满减 满";
|
||||
nudCredit.Minimum = 1;
|
||||
nudCredit.Increment = 1;
|
||||
nudCredit.Maximum = 99999;
|
||||
nudCredit.DecimalPlaces = 0;
|
||||
nudCredit.Value = 1;
|
||||
lblCreditText.Text = "元";
|
||||
nudThresHold.Visible = true;
|
||||
lblThresHold.Visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<?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="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAuthStatus.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="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,335 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class CouponMulitAddForm
|
||||
{
|
||||
/// <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(CouponMulitAddForm));
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.panel4 = new System.Windows.Forms.Panel();
|
||||
this.rbUseTypeDays = new System.Windows.Forms.RadioButton();
|
||||
this.rbUseTypePeriod = new System.Windows.Forms.RadioButton();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.rbAllProductEachCoupon = new System.Windows.Forms.RadioButton();
|
||||
this.rbOneProductEachCoupon = new System.Windows.Forms.RadioButton();
|
||||
this.btnSet = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.lblUseTypeText = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.lblAdd = new System.Windows.Forms.LinkLabel();
|
||||
this.ucCouponAddParam = new LittleRabbit.LittleRabbitForms.SalesCenterForms.UcCouponAddParam();
|
||||
this.panel2.SuspendLayout();
|
||||
this.panel4.SuspendLayout();
|
||||
this.panel3.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.White;
|
||||
this.panel2.Controls.Add(this.panel4);
|
||||
this.panel2.Controls.Add(this.label17);
|
||||
this.panel2.Controls.Add(this.rbAllProductEachCoupon);
|
||||
this.panel2.Controls.Add(this.rbOneProductEachCoupon);
|
||||
this.panel2.Controls.Add(this.btnSet);
|
||||
this.panel2.Controls.Add(this.label2);
|
||||
this.panel2.Controls.Add(this.label1);
|
||||
this.panel2.Controls.Add(this.label10);
|
||||
this.panel2.Controls.Add(this.label9);
|
||||
this.panel2.Controls.Add(this.label8);
|
||||
this.panel2.Controls.Add(this.lblUseTypeText);
|
||||
this.panel2.Controls.Add(this.label4);
|
||||
this.panel2.Controls.Add(this.label13);
|
||||
this.panel2.Controls.Add(this.label11);
|
||||
this.panel2.Controls.Add(this.label6);
|
||||
this.panel2.Controls.Add(this.panel3);
|
||||
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(1198, 666);
|
||||
this.panel2.TabIndex = 1;
|
||||
//
|
||||
// panel4
|
||||
//
|
||||
this.panel4.Controls.Add(this.rbUseTypeDays);
|
||||
this.panel4.Controls.Add(this.rbUseTypePeriod);
|
||||
this.panel4.Location = new System.Drawing.Point(621, 14);
|
||||
this.panel4.Name = "panel4";
|
||||
this.panel4.Size = new System.Drawing.Size(174, 21);
|
||||
this.panel4.TabIndex = 575;
|
||||
//
|
||||
// rbUseTypeDays
|
||||
//
|
||||
this.rbUseTypeDays.AutoSize = true;
|
||||
this.rbUseTypeDays.Location = new System.Drawing.Point(81, 0);
|
||||
this.rbUseTypeDays.Name = "rbUseTypeDays";
|
||||
this.rbUseTypeDays.Size = new System.Drawing.Size(74, 21);
|
||||
this.rbUseTypeDays.TabIndex = 466;
|
||||
this.rbUseTypeDays.Text = "有效天数";
|
||||
this.rbUseTypeDays.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbUseTypePeriod
|
||||
//
|
||||
this.rbUseTypePeriod.AutoSize = true;
|
||||
this.rbUseTypePeriod.Checked = true;
|
||||
this.rbUseTypePeriod.Location = new System.Drawing.Point(4, 0);
|
||||
this.rbUseTypePeriod.Name = "rbUseTypePeriod";
|
||||
this.rbUseTypePeriod.Size = new System.Drawing.Size(74, 21);
|
||||
this.rbUseTypePeriod.TabIndex = 465;
|
||||
this.rbUseTypePeriod.TabStop = true;
|
||||
this.rbUseTypePeriod.Text = "日期范围";
|
||||
this.rbUseTypePeriod.UseVisualStyleBackColor = true;
|
||||
this.rbUseTypePeriod.CheckedChanged += new System.EventHandler(this.rbUseTypePeriod_CheckedChanged);
|
||||
//
|
||||
// label17
|
||||
//
|
||||
this.label17.AutoSize = true;
|
||||
this.label17.Location = new System.Drawing.Point(562, 16);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(68, 17);
|
||||
this.label17.TabIndex = 574;
|
||||
this.label17.Text = "使用时间:";
|
||||
//
|
||||
// rbAllProductEachCoupon
|
||||
//
|
||||
this.rbAllProductEachCoupon.AutoSize = true;
|
||||
this.rbAllProductEachCoupon.Checked = true;
|
||||
this.rbAllProductEachCoupon.Location = new System.Drawing.Point(212, 14);
|
||||
this.rbAllProductEachCoupon.Name = "rbAllProductEachCoupon";
|
||||
this.rbAllProductEachCoupon.Size = new System.Drawing.Size(307, 21);
|
||||
this.rbAllProductEachCoupon.TabIndex = 570;
|
||||
this.rbAllProductEachCoupon.TabStop = true;
|
||||
this.rbAllProductEachCoupon.Text = "所有商品设置同一组优惠券(每200件商品一组优惠券)";
|
||||
this.rbAllProductEachCoupon.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rbOneProductEachCoupon
|
||||
//
|
||||
this.rbOneProductEachCoupon.AutoSize = true;
|
||||
this.rbOneProductEachCoupon.Location = new System.Drawing.Point(52, 14);
|
||||
this.rbOneProductEachCoupon.Name = "rbOneProductEachCoupon";
|
||||
this.rbOneProductEachCoupon.Size = new System.Drawing.Size(146, 21);
|
||||
this.rbOneProductEachCoupon.TabIndex = 569;
|
||||
this.rbOneProductEachCoupon.Text = "每件商品单独置优惠券";
|
||||
this.rbOneProductEachCoupon.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnSet
|
||||
//
|
||||
this.btnSet.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSet.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSet.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSet.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSet.Location = new System.Drawing.Point(23, 621);
|
||||
this.btnSet.Name = "btnSet";
|
||||
this.btnSet.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnSet.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSet.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSet.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSet.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSet.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSet.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSet.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSet.Style.GradientAngle = 90;
|
||||
this.btnSet.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSet.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSet.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSet.TabIndex = 565;
|
||||
this.btnSet.Text = "批量设置";
|
||||
this.btnSet.Click += new System.EventHandler(this.btnGetProduct_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(32, 45);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(68, 17);
|
||||
this.label2.TabIndex = 558;
|
||||
this.label2.Text = "优惠券名称";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(1127, 45);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(56, 17);
|
||||
this.label1.TabIndex = 557;
|
||||
this.label1.Text = "设置状态";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(851, 45);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(56, 17);
|
||||
this.label10.TabIndex = 554;
|
||||
this.label10.Text = "优惠条件";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(748, 45);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(56, 17);
|
||||
this.label9.TabIndex = 553;
|
||||
this.label9.Text = "优惠内容";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(640, 45);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(80, 17);
|
||||
this.label8.TabIndex = 552;
|
||||
this.label8.Text = "价格风险预警";
|
||||
//
|
||||
// lblUseTypeText
|
||||
//
|
||||
this.lblUseTypeText.AutoSize = true;
|
||||
this.lblUseTypeText.Location = new System.Drawing.Point(453, 45);
|
||||
this.lblUseTypeText.Name = "lblUseTypeText";
|
||||
this.lblUseTypeText.Size = new System.Drawing.Size(56, 17);
|
||||
this.lblUseTypeText.TabIndex = 550;
|
||||
this.lblUseTypeText.Text = "日期范围";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(126, 45);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(56, 17);
|
||||
this.label4.TabIndex = 549;
|
||||
this.label4.Text = "领取开始";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(1057, 45);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(56, 17);
|
||||
this.label13.TabIndex = 556;
|
||||
this.label13.Text = "每人限领";
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(990, 45);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(44, 17);
|
||||
this.label11.TabIndex = 555;
|
||||
this.label11.Text = "发放量";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(289, 45);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(56, 17);
|
||||
this.label6.TabIndex = 551;
|
||||
this.label6.Text = "领取结束";
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.AutoScroll = true;
|
||||
this.panel3.Controls.Add(this.lblAdd);
|
||||
this.panel3.Controls.Add(this.ucCouponAddParam);
|
||||
this.panel3.Location = new System.Drawing.Point(10, 70);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Size = new System.Drawing.Size(1180, 545);
|
||||
this.panel3.TabIndex = 1;
|
||||
//
|
||||
// lblAdd
|
||||
//
|
||||
this.lblAdd.AutoSize = true;
|
||||
this.lblAdd.Location = new System.Drawing.Point(22, 56);
|
||||
this.lblAdd.Name = "lblAdd";
|
||||
this.lblAdd.Size = new System.Drawing.Size(92, 17);
|
||||
this.lblAdd.TabIndex = 1;
|
||||
this.lblAdd.TabStop = true;
|
||||
this.lblAdd.Text = "增加优惠券设置";
|
||||
this.lblAdd.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lblAdd_LinkClicked);
|
||||
//
|
||||
// ucCouponAddParam
|
||||
//
|
||||
this.ucCouponAddParam.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.ucCouponAddParam.Location = new System.Drawing.Point(0, 0);
|
||||
this.ucCouponAddParam.Name = "ucCouponAddParam";
|
||||
this.ucCouponAddParam.Size = new System.Drawing.Size(1180, 40);
|
||||
this.ucCouponAddParam.TabIndex = 0;
|
||||
this.ucCouponAddParam.OnClose += new LittleRabbit.LittleRabbitForms.SalesCenterForms.UcCouponAddParam.CloseCouponAdd(this.couponAddParamControl1_OnClose);
|
||||
//
|
||||
// CouponMulitAddForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(1200, 700);
|
||||
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 = "CouponMulitAddForm";
|
||||
this.Text = "批量设置";
|
||||
this.TitleText = "批量设置";
|
||||
this.Controls.SetChildIndex(this.panel2, 0);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
this.panel4.ResumeLayout(false);
|
||||
this.panel4.PerformLayout();
|
||||
this.panel3.ResumeLayout(false);
|
||||
this.panel3.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private UcCouponAddParam ucCouponAddParam;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
private System.Windows.Forms.LinkLabel lblAdd;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Label lblUseTypeText;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private DevComponents.DotNetBar.PanelEx btnSet;
|
||||
private System.Windows.Forms.RadioButton rbAllProductEachCoupon;
|
||||
private System.Windows.Forms.RadioButton rbOneProductEachCoupon;
|
||||
private System.Windows.Forms.Panel panel4;
|
||||
private System.Windows.Forms.RadioButton rbUseTypeDays;
|
||||
private System.Windows.Forms.RadioButton rbUseTypePeriod;
|
||||
private System.Windows.Forms.Label label17;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
using AllBase;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util.Extension;
|
||||
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;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class CouponMulitAddForm : LRBaseForm
|
||||
{
|
||||
int number = 1;
|
||||
public CouponShopForm couponShopForm = null;
|
||||
|
||||
public CouponMulitAddForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void couponAddParamControl1_OnClose(object obj)
|
||||
{
|
||||
int i = 0;
|
||||
foreach (var c in panel3.Controls)
|
||||
{
|
||||
var couponControl = c as UcCouponAddParam;
|
||||
if (couponControl == null)
|
||||
continue;
|
||||
|
||||
couponControl.Location = new Point(0, i * (couponControl.Height + 2));
|
||||
lblAdd.Location = new Point(20, (i + 1) * (couponControl.Height + 2) + 10);
|
||||
i++;
|
||||
}
|
||||
|
||||
if (panel3.Controls.Count == 1)
|
||||
lblAdd.Location = new Point(20, 12);
|
||||
}
|
||||
|
||||
private void lblAdd_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
this.number++;
|
||||
|
||||
UcCouponAddParam co = new UcCouponAddParam(number);
|
||||
if (rbUseTypePeriod.Checked)
|
||||
co.pnlTimePeriod.Visible = true;
|
||||
else
|
||||
co.pnlTimePeriod.Visible = false;
|
||||
|
||||
panel3.Controls.Add(co);
|
||||
co.OnClose += couponAddParamControl1_OnClose;
|
||||
|
||||
int i = 0;
|
||||
foreach (var c in panel3.Controls)
|
||||
{
|
||||
var couponControl = c as UcCouponAddParam;
|
||||
if (couponControl == null)
|
||||
continue;
|
||||
|
||||
couponControl.Location = new Point(0, i * (couponControl.Height + 2));
|
||||
lblAdd.Location = new Point(20, (i + 1) * (couponControl.Height + 2) + 10);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnGetProduct_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (couponShopForm == null)
|
||||
return;
|
||||
|
||||
this.btnSet.Enabled = false;
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var c in this.panel3.Controls)
|
||||
{
|
||||
var couponControl = c as UcCouponAddParam;
|
||||
if (couponControl == null)
|
||||
continue;
|
||||
|
||||
int periodType = this.rbUseTypePeriod.Checked ? 1 : 2;
|
||||
int favouredType = 41;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (couponControl.cmbType.Text == "商品直减券")
|
||||
favouredType = 42;
|
||||
else if (couponControl.cmbType.Text == "商品满减券")
|
||||
favouredType = 43;
|
||||
}));
|
||||
int days = couponControl.nudDays.Text.ParseToInt();
|
||||
int startApplyTime = BaseClass.DateTimeToTimestampSeconds(couponControl.dtpStartApplyTime.Value);
|
||||
int endApplyTime = BaseClass.DateTimeToTimestampSeconds(couponControl.dtpEndApplyTime.Value);
|
||||
int startUseTime = BaseClass.DateTimeToTimestampSeconds(couponControl.dtpStartUseTime.Value.Date);
|
||||
int endUseTime = BaseClass.DateTimeToTimestampSeconds(couponControl.dtpEndUseTime.Value.Date.AddDays(1).AddSeconds(-1));
|
||||
int totalCount = couponControl.nudTotalCount.Value.ParseToInt();
|
||||
int countLimit = 1;
|
||||
decimal discount = couponControl.nudCredit.Value.ParseToDecimal();
|
||||
int thresHold = couponControl.nudThresHold.Value.ParseToInt(); // 满x元 单位元
|
||||
int credit = couponControl.nudCredit.Value.ParseToInt(); // 减x元 单位元
|
||||
bool ignore = couponControl.rbNotReckonIn.Checked;
|
||||
string couponName = couponControl.txtName.Text;
|
||||
bool oneProductEachCoupon = this.rbOneProductEachCoupon.Checked;
|
||||
|
||||
var result = couponShopForm.SetCoupon(periodType, favouredType, startApplyTime, endApplyTime, startUseTime, endUseTime, days, totalCount, countLimit, discount, thresHold, credit, ignore, oneProductEachCoupon, couponName);
|
||||
//if (result.Contains("\"msg\":\"成功\""))
|
||||
// Invoke(new Action(() => { couponControl.lblMsg.Text = "设置成功"; }));
|
||||
//else
|
||||
// Invoke(new Action(() => { couponControl.lblMsg.Text = "设置失败"; }));
|
||||
if (result.Contains("success") && !result.Contains("error"))
|
||||
Invoke(new Action(() => { couponControl.lblMsg.Text = "设置成功"; }));
|
||||
else if (result.Contains("success") && result.Contains("error"))
|
||||
Invoke(new Action(() => { couponControl.lblMsg.Text = "部分成功"; }));
|
||||
else
|
||||
Invoke(new Action(() => { couponControl.lblMsg.Text = "设置失败"; }));
|
||||
|
||||
if ("18565722666,13928836672,18565722666,13928836672,18937517772,18135637272,18888888888".Contains(BaseClass.UserName))
|
||||
Thread.Sleep(Randomx.GetId(200, 700));
|
||||
else
|
||||
Thread.Sleep(Randomx.GetId(1000, 2000));
|
||||
}
|
||||
BaseMsgForm.ShowInfo("优惠券批量设置结束!");
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.btnSet.Enabled = true;
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
private void rbUseTypePeriod_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (rbUseTypePeriod.Checked)
|
||||
{
|
||||
lblUseTypeText.Text = "日期范围";
|
||||
|
||||
foreach (var c in this.panel3.Controls)
|
||||
{
|
||||
var couponControl = c as UcCouponAddParam;
|
||||
if (couponControl == null)
|
||||
continue;
|
||||
|
||||
couponControl.pnlTimePeriod.Visible = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lblUseTypeText.Text = "领券当日起";
|
||||
|
||||
foreach (var c in this.panel3.Controls)
|
||||
{
|
||||
var couponControl = c as UcCouponAddParam;
|
||||
if (couponControl == null)
|
||||
continue;
|
||||
|
||||
couponControl.pnlTimePeriod.Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
AAABAAEAgIAQcwAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
|
||||
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>
|
||||
@@ -0,0 +1,296 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class CouponShopForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvProduct = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.编辑ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSales = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCreateTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colOrderCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShowCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShowPeopleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colClickCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colClickPeopleCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvProduct)).BeginInit();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvProduct);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1201, 634);
|
||||
this.splitContainer2.SplitterDistance = 604;
|
||||
this.splitContainer2.TabIndex = 9;
|
||||
//
|
||||
// dgvProduct
|
||||
//
|
||||
this.dgvProduct.AllowUserToAddRows = false;
|
||||
this.dgvProduct.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvProduct.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvProduct.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.dgvProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colSales,
|
||||
this.colPrice,
|
||||
this.colCreateTime,
|
||||
this.colOrderCount,
|
||||
this.colShowCount,
|
||||
this.colShowPeopleCount,
|
||||
this.colClickCount,
|
||||
this.colClickPeopleCount,
|
||||
this.colMessage});
|
||||
this.dgvProduct.ContextMenuStrip = this.contextMenuStrip1;
|
||||
this.dgvProduct.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvProduct.Location = new System.Drawing.Point(4, 4);
|
||||
this.dgvProduct.Name = "dgvProduct";
|
||||
this.dgvProduct.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvProduct.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvProduct.RowTemplate.Height = 23;
|
||||
this.dgvProduct.Size = new System.Drawing.Size(1193, 600);
|
||||
this.dgvProduct.TabIndex = 6;
|
||||
this.dgvProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellContentClick);
|
||||
this.dgvProduct.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgvProduct_CellMouseDown);
|
||||
this.dgvProduct.CellMouseEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellMouseEnter);
|
||||
this.dgvProduct.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgvProduct_CellMouseUp);
|
||||
//
|
||||
// contextMenuStrip1
|
||||
//
|
||||
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.编辑ToolStripMenuItem});
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(209, 26);
|
||||
//
|
||||
// 编辑ToolStripMenuItem
|
||||
//
|
||||
this.编辑ToolStripMenuItem.Name = "编辑ToolStripMenuItem";
|
||||
this.编辑ToolStripMenuItem.Size = new System.Drawing.Size(208, 22);
|
||||
this.编辑ToolStripMenuItem.Text = "选中商品批量设置优惠券";
|
||||
this.编辑ToolStripMenuItem.Click += new System.EventHandler(this.编辑ToolStripMenuItem_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.MidnightBlue;
|
||||
this.label1.Location = new System.Drawing.Point(656, 2);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(43, 17);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "label1";
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1201, 26);
|
||||
this.statusBar.TabIndex = 2;
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 150;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.Width = 250;
|
||||
//
|
||||
// colSales
|
||||
//
|
||||
this.colSales.HeaderText = "销量";
|
||||
this.colSales.Name = "colSales";
|
||||
this.colSales.ReadOnly = true;
|
||||
this.colSales.Width = 60;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
this.colPrice.Width = 60;
|
||||
//
|
||||
// colCreateTime
|
||||
//
|
||||
this.colCreateTime.HeaderText = "创建时间";
|
||||
this.colCreateTime.Name = "colCreateTime";
|
||||
this.colCreateTime.ReadOnly = true;
|
||||
//
|
||||
// colOrderCount
|
||||
//
|
||||
this.colOrderCount.HeaderText = "成交订单数";
|
||||
this.colOrderCount.Name = "colOrderCount";
|
||||
this.colOrderCount.ReadOnly = true;
|
||||
this.colOrderCount.Visible = false;
|
||||
this.colOrderCount.Width = 90;
|
||||
//
|
||||
// colShowCount
|
||||
//
|
||||
this.colShowCount.HeaderText = "商品曝光次数";
|
||||
this.colShowCount.Name = "colShowCount";
|
||||
this.colShowCount.ReadOnly = true;
|
||||
this.colShowCount.Visible = false;
|
||||
this.colShowCount.Width = 90;
|
||||
//
|
||||
// colShowPeopleCount
|
||||
//
|
||||
this.colShowPeopleCount.HeaderText = "商品曝光人数";
|
||||
this.colShowPeopleCount.Name = "colShowPeopleCount";
|
||||
this.colShowPeopleCount.ReadOnly = true;
|
||||
this.colShowPeopleCount.Visible = false;
|
||||
this.colShowPeopleCount.Width = 90;
|
||||
//
|
||||
// colClickCount
|
||||
//
|
||||
this.colClickCount.HeaderText = "商品点击次数";
|
||||
this.colClickCount.Name = "colClickCount";
|
||||
this.colClickCount.ReadOnly = true;
|
||||
this.colClickCount.Visible = false;
|
||||
this.colClickCount.Width = 90;
|
||||
//
|
||||
// colClickPeopleCount
|
||||
//
|
||||
this.colClickPeopleCount.HeaderText = "商品点击人数";
|
||||
this.colClickPeopleCount.Name = "colClickPeopleCount";
|
||||
this.colClickPeopleCount.ReadOnly = true;
|
||||
this.colClickPeopleCount.Visible = false;
|
||||
this.colClickPeopleCount.Width = 90;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 200;
|
||||
//
|
||||
// CouponShopForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1201, 634);
|
||||
this.Controls.Add(this.splitContainer2);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "CouponShopForm";
|
||||
this.Text = "CouponShopForm";
|
||||
this.Load += new System.EventHandler(this.CouponShopForm_Load);
|
||||
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.dgvProduct)).EndInit();
|
||||
this.contextMenuStrip1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvProduct;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem 编辑ToolStripMenuItem;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSales;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCreateTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colOrderCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShowCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShowPeopleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colClickCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colClickPeopleCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,518 @@
|
||||
using AllBase;
|
||||
using AllBase.Extension;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.Extension;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
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.Windows.Forms;
|
||||
using Work.BLL.Product;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class CouponShopForm : Form
|
||||
{
|
||||
private CheckBox chkSelectAll = null;
|
||||
|
||||
DouShopLoginInfo shop = null;
|
||||
public CouponForm couponForm = null;
|
||||
public bool isGetProductSalesSuccess = false;
|
||||
public Dictionary<string, int> dicProductSales = new Dictionary<string, int>();
|
||||
public List<DouProductWithSalesListInfo> productList = new List<DouProductWithSalesListInfo>();
|
||||
|
||||
public CouponShopForm(DouShopLoginInfo _shop)
|
||||
{
|
||||
InitializeComponent();
|
||||
shop = _shop;
|
||||
}
|
||||
|
||||
private void CouponShopForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
chkSelectAll = dgvProduct.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
dgvProduct.Columns["colSelect"].HeaderText = "";
|
||||
|
||||
chkSelectAll.Width = chkSelectAll.Height = 13;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
|
||||
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!chkSelectAll.Checked)
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void GetProduct(decimal priceMin, decimal priceMax, int salesMin, int salesMax, List<string> productName = null, List<string> filterWords = null)
|
||||
{
|
||||
if (shop == null)
|
||||
return;
|
||||
|
||||
ShowVisitorMessage("");
|
||||
foreach (DataGridViewRow r in this.dgvProduct.Rows)
|
||||
{
|
||||
r.Cells["colSales"].Value = "获取中";
|
||||
}
|
||||
foreach (var p in productList)
|
||||
{
|
||||
p.sell_num = null;
|
||||
}
|
||||
|
||||
List<Task> tList = new List<Task>();
|
||||
|
||||
var t1 = Task.Run(() =>
|
||||
{
|
||||
int page = 0;
|
||||
int pageSize = 100;
|
||||
int totalNum = 99999;
|
||||
while (page < 100)
|
||||
{
|
||||
if (couponForm == null || couponForm.cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
page++;
|
||||
var html = new ShopProductBLL().GetShopProductListData(shop, 0, page, pageSize);
|
||||
//测试查找商品详情
|
||||
//Work.DouyinApiClass.DouyinApi api = new Work.DouyinApiClass.DouyinApi(shop);
|
||||
//api.JsonData = new Dictionary<string, string>();
|
||||
//api.JsonData["product_id"] = "3558439046600598747";
|
||||
//var detail = api.GetProductDetail();
|
||||
|
||||
while (!html.Contains("\"code\":10000"))
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
html = new ShopProductBLL().GetShopProductListData(shop, 0, page, pageSize);
|
||||
}
|
||||
totalNum = BaseRegex.GetIntJson(ref html, "total");
|
||||
|
||||
try
|
||||
{
|
||||
JObject jObj = JObject.Parse(html);
|
||||
var jObjDataStr = jObj["data"]?["data"]?.ToString();
|
||||
if (!string.IsNullOrEmpty(jObjDataStr))
|
||||
{
|
||||
var addList = JsonHelper.DeserializeJsonToList<DouProductWithSalesListInfo>(jObjDataStr);
|
||||
if (addList != null)
|
||||
{
|
||||
// 有关键词或商品id的,过滤符合关键词
|
||||
if (productName != null && productName.Any())
|
||||
addList = addList.Where(p => productName.Any(n => p.name.Contains(n) || p.product_id.ToString().Contains(n))).ToList();
|
||||
|
||||
if (filterWords != null && filterWords.Any())
|
||||
addList = addList.Where(p => !filterWords.Any(f => p.name.Contains(f) || p.product_id.ToString().Contains(f))).ToList();
|
||||
|
||||
productList.AddRange(addList);
|
||||
productList = productList.DistinctBy(p => p.product_id).ToList();
|
||||
}
|
||||
foreach (var prod in addList)
|
||||
{
|
||||
var row = dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == prod.product_id.ToString());
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (row == null)
|
||||
{
|
||||
dgvProduct.Rows.Add(
|
||||
false,
|
||||
prod.product_id,
|
||||
prod.name,
|
||||
"获取中",
|
||||
prod.discount_price / 100,
|
||||
BaseClass.StampToDateTime((int)prod.create_time));
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Cells["colSales"].Value = "获取中";
|
||||
row.Cells["colPrice"].Value = prod.discount_price / 100;
|
||||
row.Cells["colCreateTime"].Value = BaseClass.StampToDateTime((int)prod.create_time);
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
var totalPage = Math.Ceiling(totalNum / (pageSize * 1M));
|
||||
var message = "已获取:" + page + "页,共" + Math.Ceiling(totalNum / (pageSize * 1M)) + "页,商品获取中...";
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = message;
|
||||
this.statusBar.pgbTaskProgress.Value = page;
|
||||
this.statusBar.pgbTaskProgress.Text = page + "/" + totalPage;
|
||||
this.statusBar.pgbTaskProgress.Maximum = (int)totalPage;
|
||||
}));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseMsgForm.ShowError("获取商品发生错误:" + ex.Message);
|
||||
}
|
||||
|
||||
if (page * pageSize >= totalNum)
|
||||
break;
|
||||
}
|
||||
});
|
||||
tList.Add(t1);
|
||||
|
||||
if (ShopForms.ShopListForm.Instance == null)
|
||||
ShopForms.ShopListForm.Instance = new ShopForms.ShopListForm();
|
||||
ShopForms.ShopListForm.Instance.CheckShopLogin(new string[] { shop.ShopAccount }, false);
|
||||
|
||||
var t2 = Task.Run(() =>
|
||||
{
|
||||
if (shop.LoginStatus == "登录成功")
|
||||
couponForm.GetSales(this.shop);
|
||||
|
||||
var rowsTemp = dgvProduct.Rows.Cast<DataGridViewRow>().ToList();
|
||||
rowsTemp.Reverse();
|
||||
foreach (var r in rowsTemp)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (r.Cells["colPrice"].Value.ParseToDecimal() < priceMin || r.Cells["colPrice"].Value.ParseToDecimal() > priceMax
|
||||
|| r.Cells["colSales"].Value.ParseToDecimal() < salesMin || r.Cells["colSales"].Value.ParseToDecimal() > salesMax
|
||||
|| (productName?.Count > 0 && !productName.Any(n => r.Cells["colProductName"].Value.ToString().Contains(n) || r.Cells["colProductId"].Value.ToString().Contains(n)))
|
||||
|| (filterWords?.Count > 0 && filterWords.Any(f => r.Cells["colProductName"].Value.ToString().Contains(f) || r.Cells["colProductId"].Value.ToString().Contains(f))))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
dgvProduct.Rows.Remove(r);
|
||||
}));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
});
|
||||
tList.Add(t2);
|
||||
t2.Wait();
|
||||
|
||||
SetSalesCount();
|
||||
//SetVisitorCount();
|
||||
|
||||
productList = productList.Where(p => p.discount_price >= priceMin && p.discount_price <= priceMax && p.sell_num >= salesMin && p.sell_num <= salesMax
|
||||
&& (productName?.Count > 0 == false || productName.Any(n => p.name.Contains(n) || p.product_id.ToString().Contains(n)))
|
||||
&& (filterWords?.Count > 0 == false || !filterWords.Any(f => p.name.Contains(f) || p.product_id.ToString().Contains(f)))).ToList();
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (couponForm == null || couponForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取中断";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取完成";
|
||||
}
|
||||
this.statusBar.pgbTaskProgress.Value = 0;
|
||||
this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
||||
this.statusBar.pgbTaskProgress.Maximum = 0;
|
||||
}));
|
||||
var errMsg = "";
|
||||
if (shop.LoginStatus != "登录成功")
|
||||
errMsg += " 店铺掉线,请重新登录!";
|
||||
if (shop.ApiAuthStatus != "授权成功")
|
||||
errMsg += " 授权过期,请重新授权!";
|
||||
ShowVisitorMessage(errMsg);
|
||||
}
|
||||
|
||||
public void ShowVisitorMessage(string msg)
|
||||
{
|
||||
Invoke(new Action(() => { this.label1.Text = msg; }));
|
||||
}
|
||||
|
||||
public void SetSalesCount()
|
||||
{
|
||||
foreach (var key in dicProductSales.Keys)
|
||||
{
|
||||
var row = this.dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == key);
|
||||
if (row != null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colSales"].Value = dicProductSales[key];
|
||||
}));
|
||||
}
|
||||
var product = this.productList.Find(p => p.product_id.ToString() == key);
|
||||
if (product != null)
|
||||
product.sell_num = dicProductSales[key];
|
||||
}
|
||||
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
if (row.Cells["colSales"].Value.ToString() == "获取中")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (isGetProductSalesSuccess)
|
||||
{
|
||||
row.Cells["colSales"].Value = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Cells["colSales"].Value = "获取失败";
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
if (isGetProductSalesSuccess)
|
||||
{
|
||||
foreach (var prod in this.productList)
|
||||
{
|
||||
if (prod.sell_num == null)
|
||||
prod.sell_num = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string headerText = dgvProduct.Columns[e.ColumnIndex].HeaderText;
|
||||
string columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
var row = dgvProduct.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
//row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
//chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
||||
//if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
// chkSelectAll.Checked = true;
|
||||
//else
|
||||
// chkSelectAll.Checked = false;
|
||||
//chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool isSelecting = false;
|
||||
bool isCheck = true;
|
||||
private void dgvProduct_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
|
||||
var columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
if (MouseButtons == MouseButtons.Left)
|
||||
{
|
||||
if (columnName == "colSelect")
|
||||
{
|
||||
dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value = !dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool();
|
||||
|
||||
isSelecting = true;
|
||||
isCheck = dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool();
|
||||
|
||||
chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
||||
if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
chkSelectAll.Checked = false;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvProduct_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
|
||||
{
|
||||
isSelecting = false;
|
||||
}
|
||||
|
||||
private void dgvProduct_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
|
||||
var row = dgvProduct.Rows[e.RowIndex];
|
||||
if (MouseButtons == MouseButtons.Left)
|
||||
{
|
||||
var columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
if (isSelecting)
|
||||
{
|
||||
dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value = isCheck;
|
||||
|
||||
chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
||||
if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
chkSelectAll.Checked = false;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string SetCoupon(int periodType,
|
||||
int favouredType,
|
||||
long startApplyStamps,
|
||||
long endApplyStamps,
|
||||
long startUseStamps,
|
||||
long endUseStamps,
|
||||
int validDays,
|
||||
int totalCount,
|
||||
int countLimit,
|
||||
decimal discount, // (折扣券的)折扣
|
||||
int threshold, // 满x元
|
||||
int credit, // 减x元
|
||||
bool ignore,
|
||||
bool oneProductEachCoupon,
|
||||
string couponName = "")
|
||||
{
|
||||
List<DataGridViewRow> rows = this.dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value?.ParseToBool() == true).ToList();
|
||||
var goodsIdList = rows.Select(r => r.Cells["colProductId"].Value?.ToString()).ToList();
|
||||
var goodsIds = "\"" + string.Join("\",\"", goodsIdList) + "\"";
|
||||
if (!oneProductEachCoupon)
|
||||
{
|
||||
var goodsIdListTemp = new List<string>();
|
||||
goodsIdListTemp.AddRange(goodsIdList);
|
||||
goodsIdList.Clear();
|
||||
int numCount = 0;
|
||||
goodsIds = "";
|
||||
foreach (var goodsId in goodsIdListTemp)
|
||||
{
|
||||
numCount++;
|
||||
goodsIds += "\"" + goodsId + "\",";
|
||||
if (numCount % 200 == 0 || numCount >= goodsIdListTemp.Count)
|
||||
{
|
||||
goodsIdList.Add(goodsIds.Trim(','));
|
||||
goodsIds = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (string.IsNullOrEmpty(couponName))
|
||||
couponName = DateTime.Now.ToString("yyMMddHHmm");
|
||||
string setResult = "";
|
||||
|
||||
foreach (var id in goodsIdList)
|
||||
{
|
||||
// 指定商品折扣券
|
||||
//string body = @"{""support_type"":4,""shop_omp_activity_id"":"""",""channel"":3,""coupon_name"":""优惠123"",""period_type"":2,""ignore"":false,""favoured_type"":41,""total_amount"":13,""max_apply_times"":1,""valid_period"":""3"",""discount"":95,""goods"":[""3552987839555832450"",""3552273829277663255"",""3552271209347574338""],""start_apply_time"":1654531200,""end_apply_time"":1654617599,""jump_type"":4}";
|
||||
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""111"",""period_type"":1,""ignore"":false,""favoured_type"":41,""total_amount"":1,""max_apply_times"":1,""goods"":[""3554315317469660534"",""3553784680702692298""],""discount"":90,""start_time"":1655395200,""expire_time"":1655481599,""start_apply_time"":1655395200,""end_apply_time"":1655481599,""jump_type"":4}";
|
||||
// 指定商品直减券
|
||||
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""2131"",""period_type"":1,""ignore"":false,""favoured_type"":42,""total_amount"":1,""max_apply_times"":1,""goods"":[""3557115286081690584""],""credit"":200,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":2,""jump_product_id"":""3557115286081690584""}";
|
||||
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""1223"",""period_type"":1,""ignore"":false,""favoured_type"":42,""total_amount"":1,""max_apply_times"":1,""goods"":[""3554511661782200678""],""credit"":200,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":2,""jump_product_id"":""3554511661782200678""}";
|
||||
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""2311"",""period_type"":1,""ignore"":false,""favoured_type"":42,""total_amount"":1,""max_apply_times"":1,""goods"":[""3554333221040862310"",""3554511661782200678""],""credit"":200,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":4}";
|
||||
// 指定商品满减券
|
||||
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""1ad"",""period_type"":1,""ignore"":false,""favoured_type"":43,""total_amount"":1,""max_apply_times"":1,""goods"":[""3556136493124815095"",""3558423829472753852""],""threshold"":9900,""credit"":1100,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":4}";
|
||||
|
||||
string body = "{\"support_type\":4," +
|
||||
"\"shop_omp_activity_id\":\"\"," +
|
||||
"\"channel\":3," +
|
||||
"\"coupon_name\":\"" + couponName + "\"," + // 优惠券名称
|
||||
"\"period_type\":" + periodType + "," + // 使用时间 1=限制日期范围 2=限制有效天数
|
||||
"\"ignore\":" + ignore.ToString().ToLower() + "," + // 价格风险预警 true=不计入 false=计入
|
||||
"\"favoured_type\":" + favouredType + "," + // 优惠内容 41=指定商品折扣券 42=指定商品直减券 43=指定商品满减券
|
||||
"\"total_amount\":" + totalCount + "," + // 发放量
|
||||
"\"max_apply_times\":" + countLimit + ","; // 每人限领
|
||||
if (periodType == 2)
|
||||
body += "\"valid_period\":\"" + validDays + "\","; // 有效期天数
|
||||
if (periodType == 1)
|
||||
{
|
||||
body += "\"start_time\":" + startUseStamps + ","; // 开始日期
|
||||
body += "\"expire_time\":" + endUseStamps + ","; // 结束日期
|
||||
}
|
||||
if (favouredType == 41)
|
||||
{
|
||||
body += "\"discount\":" + (int)(10 * discount) + ","; // 折扣
|
||||
}
|
||||
else if (favouredType == 42)
|
||||
{
|
||||
body += "\"credit\":" + 100 * credit + ","; // 减x元 单位分
|
||||
}
|
||||
else if (favouredType == 43)
|
||||
{
|
||||
body += "\"threshold\":" + 100 * threshold + ","; // 满x元 单位分
|
||||
body += "\"credit\":" + 100 * credit + ","; // 减x元 单位分
|
||||
}
|
||||
body += "\"goods\":[" + id + "]," + // 商品编号
|
||||
"\"start_apply_time\":" + startApplyStamps + "," + // 领取开始时间
|
||||
"\"end_apply_time\":" + endApplyStamps + "," + // 领取结束时间
|
||||
"\"jump_type\":4}";
|
||||
|
||||
string url = "https://fxg.jinritemai.com/marketing/coupons/v1/check?_bid=ecom_market_shop&appid=1&_=" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now);
|
||||
string referer = "https://fxg.jinritemai.com/market/center/coupon/detail?type=4";
|
||||
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
simRequest.ContentType = "application/json";
|
||||
|
||||
var result = simRequest.Request_Post(url, referer, new Dictionary<string, string>(), shop.Cookies, body);
|
||||
if (!result.Contains("成功") && !result.Contains("Gateway Timeout"))
|
||||
{
|
||||
foreach (DataGridViewRow row in rows)
|
||||
{
|
||||
if (id.Contains(row.Cells["colProductId"].Value.ToString()))
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "优惠券 " + couponName + " 规则校验失败,无法设置。"; }));
|
||||
}
|
||||
setResult += id + "|error^";
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("18565722666|13928836672,18565722666,13928836672,18937517772,18135637272,18888888888".Contains(BaseClass.UserName))
|
||||
Thread.Sleep(Randomx.GetId(10, 20));
|
||||
else
|
||||
Thread.Sleep(Randomx.GetId(100, 500));
|
||||
url = "https://fxg.jinritemai.com/marketing/coupons/v1/shopcoupons?_bid=ecom_market_shop&appid=1&_=" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now);
|
||||
result = simRequest.Request_Post(url, referer, new Dictionary<string, string>(), shop.Cookies, body);
|
||||
if (!result.Contains("成功"))
|
||||
{
|
||||
var msg = BaseRegex.GetStringJson(ref result, "msg");
|
||||
foreach (DataGridViewRow row in rows)
|
||||
{
|
||||
if (id.Contains(row.Cells["colProductId"].Value.ToString()))
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "优惠券 " + couponName + " 设置失败。" + msg; }));
|
||||
}
|
||||
setResult += id + "|error^";
|
||||
continue;
|
||||
}
|
||||
foreach (DataGridViewRow row in rows)
|
||||
{
|
||||
if (id.Contains(row.Cells["colProductId"].Value.ToString()))
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "优惠券 " + couponName + " 设置成功。"; }));
|
||||
}
|
||||
setResult += id + "|success^";
|
||||
|
||||
if (goodsIdList.Count > 1)
|
||||
{
|
||||
if ("18565722666|13928836672,18565722666,13928836672,18937517772,18135637272,18888888888".Contains(BaseClass.UserName))
|
||||
Thread.Sleep(Randomx.GetId(50, 150));
|
||||
else
|
||||
Thread.Sleep(Randomx.GetId(200, 700));
|
||||
}
|
||||
}
|
||||
return setResult;
|
||||
}
|
||||
|
||||
private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
List<DataGridViewRow> rows = this.dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value?.ParseToBool() == true).ToList();
|
||||
var goodsIdList = rows.Select(r => r.Cells["colProductId"].Value?.ToString()).ToList();
|
||||
var goodsIds = "\"" + string.Join("\",\"", goodsIdList) + "\"";
|
||||
|
||||
CouponMulitAddForm form = new CouponMulitAddForm();
|
||||
form.couponShopForm = this;
|
||||
form.Show();
|
||||
}
|
||||
|
||||
public void ClearData()
|
||||
{
|
||||
this.dgvProduct.Rows.Clear();
|
||||
this.productList.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
<?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="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSales.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCreateTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colOrderCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShowCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShowPeopleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colClickCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colClickPeopleCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
+293
@@ -0,0 +1,293 @@
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class DouProductProPromotionListSkuInfoForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colSkuId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSku = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colOldPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSetPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colNowStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colActiveStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colLimited = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnSave = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel6 = new System.Windows.Forms.Panel();
|
||||
this.cmbLimit = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.lblLimit = new System.Windows.Forms.Label();
|
||||
this.panel5 = new System.Windows.Forms.Panel();
|
||||
this.txtStock = new System.Windows.Forms.TextBox();
|
||||
this.lblStock = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.panel6.SuspendLayout();
|
||||
this.panel5.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1084, 521);
|
||||
this.splitContainer2.SplitterDistance = 492;
|
||||
this.splitContainer2.TabIndex = 10;
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选择";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 45;
|
||||
//
|
||||
// colSkuId
|
||||
//
|
||||
this.colSkuId.HeaderText = "SkuId";
|
||||
this.colSkuId.Name = "colSkuId";
|
||||
this.colSkuId.ReadOnly = true;
|
||||
this.colSkuId.Visible = false;
|
||||
this.colSkuId.Width = 150;
|
||||
//
|
||||
// colSku
|
||||
//
|
||||
this.colSku.HeaderText = "SKU";
|
||||
this.colSku.Name = "colSku";
|
||||
this.colSku.ReadOnly = true;
|
||||
this.colSku.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colSku.Width = 300;
|
||||
//
|
||||
// colOldPrice
|
||||
//
|
||||
this.colOldPrice.HeaderText = "原价";
|
||||
this.colOldPrice.Name = "colOldPrice";
|
||||
this.colOldPrice.ReadOnly = true;
|
||||
this.colOldPrice.Width = 90;
|
||||
//
|
||||
// colSetPrice
|
||||
//
|
||||
this.colSetPrice.HeaderText = "打折";
|
||||
this.colSetPrice.Name = "colSetPrice";
|
||||
this.colSetPrice.ReadOnly = true;
|
||||
this.colSetPrice.Width = 80;
|
||||
//
|
||||
// colNowStock
|
||||
//
|
||||
this.colNowStock.HeaderText = "当前库存";
|
||||
this.colNowStock.Name = "colNowStock";
|
||||
this.colNowStock.ReadOnly = true;
|
||||
this.colNowStock.Width = 90;
|
||||
//
|
||||
// colActiveStock
|
||||
//
|
||||
this.colActiveStock.HeaderText = "活动库存";
|
||||
this.colActiveStock.Name = "colActiveStock";
|
||||
this.colActiveStock.ReadOnly = true;
|
||||
this.colActiveStock.Width = 80;
|
||||
//
|
||||
// colLimited
|
||||
//
|
||||
this.colLimited.HeaderText = "每人限购";
|
||||
this.colLimited.Name = "colLimited";
|
||||
this.colLimited.ReadOnly = true;
|
||||
this.colLimited.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colLimited.Width = 80;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息提示";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 200;
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnSave);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel6);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblLimit);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel5);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblStock);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1084, 561);
|
||||
this.splitContainer1.SplitterDistance = 36;
|
||||
this.splitContainer1.TabIndex = 12;
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.btnSave.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSave.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSave.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSave.Location = new System.Drawing.Point(654, 7);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnSave.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSave.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSave.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSave.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSave.Style.GradientAngle = 90;
|
||||
this.btnSave.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.TabIndex = 561;
|
||||
this.btnSave.Text = "保存";
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// panel6
|
||||
//
|
||||
this.panel6.Controls.Add(this.cmbLimit);
|
||||
this.panel6.Location = new System.Drawing.Point(476, 6);
|
||||
this.panel6.Name = "panel6";
|
||||
this.panel6.Size = new System.Drawing.Size(60, 24);
|
||||
this.panel6.TabIndex = 547;
|
||||
//
|
||||
// cmbLimit
|
||||
//
|
||||
this.cmbLimit.DisplayMember = "Text";
|
||||
this.cmbLimit.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbLimit.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbLimit.FormattingEnabled = true;
|
||||
this.cmbLimit.ItemHeight = 18;
|
||||
this.cmbLimit.Location = new System.Drawing.Point(0, 0);
|
||||
this.cmbLimit.Name = "cmbLimit";
|
||||
this.cmbLimit.Size = new System.Drawing.Size(57, 24);
|
||||
this.cmbLimit.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbLimit.TabIndex = 520;
|
||||
//
|
||||
// lblLimit
|
||||
//
|
||||
this.lblLimit.AutoSize = true;
|
||||
this.lblLimit.Location = new System.Drawing.Point(421, 13);
|
||||
this.lblLimit.Name = "lblLimit";
|
||||
this.lblLimit.Size = new System.Drawing.Size(53, 12);
|
||||
this.lblLimit.TabIndex = 546;
|
||||
this.lblLimit.Text = "每人限购";
|
||||
//
|
||||
// panel5
|
||||
//
|
||||
this.panel5.Controls.Add(this.txtStock);
|
||||
this.panel5.Location = new System.Drawing.Point(322, 8);
|
||||
this.panel5.Name = "panel5";
|
||||
this.panel5.Size = new System.Drawing.Size(82, 21);
|
||||
this.panel5.TabIndex = 543;
|
||||
//
|
||||
// txtStock
|
||||
//
|
||||
this.txtStock.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtStock.Name = "txtStock";
|
||||
this.txtStock.Size = new System.Drawing.Size(80, 21);
|
||||
this.txtStock.TabIndex = 481;
|
||||
//
|
||||
// lblStock
|
||||
//
|
||||
this.lblStock.AutoSize = true;
|
||||
this.lblStock.Location = new System.Drawing.Point(263, 13);
|
||||
this.lblStock.Name = "lblStock";
|
||||
this.lblStock.Size = new System.Drawing.Size(53, 12);
|
||||
this.lblStock.TabIndex = 542;
|
||||
this.lblStock.Text = "活动库存";
|
||||
//
|
||||
// DouProductProPromotionListSkuInfoForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1084, 561);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "DouProductProPromotionListSkuInfoForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "设置单个SKU";
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.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.panel6.ResumeLayout(false);
|
||||
this.panel5.ResumeLayout(false);
|
||||
this.panel5.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.Panel panel5;
|
||||
private System.Windows.Forms.TextBox txtStock;
|
||||
private System.Windows.Forms.Label lblStock;
|
||||
private System.Windows.Forms.Panel panel6;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbLimit;
|
||||
private System.Windows.Forms.Label lblLimit;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSku;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colOldPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSetPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colNowStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActiveStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colLimited;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
private DevComponents.DotNetBar.PanelEx btnSave;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using AllBase;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class DouProductProPromotionListSkuInfoForm : Form
|
||||
{
|
||||
public List<DouProductProPromotionListSkuInfo> skuList = null;
|
||||
private List<string> strList = new List<string>();
|
||||
|
||||
public DouProductProPromotionListSkuInfoForm(string data, string shop_stype = "3", string setPrice = "95", int StockNum = 1, string limited = "1")
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.DialogResult = DialogResult.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
+454
@@ -0,0 +1,454 @@
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class DouProductPromotionListSkuInfoEditForm
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnSave = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnFill = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel6 = new System.Windows.Forms.Panel();
|
||||
this.cmbLimit = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.lblLimit = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.txtSetPrice = new System.Windows.Forms.TextBox();
|
||||
this.panel5 = new System.Windows.Forms.Panel();
|
||||
this.txtStock = new System.Windows.Forms.TextBox();
|
||||
this.lblStock = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.btnDelete = new DevComponents.DotNetBar.PanelEx();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvActiveSku = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colSkuId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSku = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colOldPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSetPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colNowStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colActiveStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colLeftStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colLimited = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.panel6.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel5.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvActiveSku)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnSave);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnFill);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel6);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblLimit);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label3);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel5);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblStock);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label2);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnDelete);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1084, 561);
|
||||
this.splitContainer1.SplitterDistance = 36;
|
||||
this.splitContainer1.TabIndex = 13;
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.btnSave.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSave.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSave.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSave.Location = new System.Drawing.Point(654, 7);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnSave.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSave.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSave.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSave.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSave.Style.GradientAngle = 90;
|
||||
this.btnSave.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.TabIndex = 561;
|
||||
this.btnSave.Text = "保存";
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// btnFill
|
||||
//
|
||||
this.btnFill.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.btnFill.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnFill.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnFill.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnFill.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnFill.Location = new System.Drawing.Point(557, 7);
|
||||
this.btnFill.Name = "btnFill";
|
||||
this.btnFill.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnFill.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnFill.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnFill.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnFill.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnFill.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnFill.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnFill.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnFill.Style.GradientAngle = 90;
|
||||
this.btnFill.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnFill.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnFill.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnFill.TabIndex = 551;
|
||||
this.btnFill.Text = "批量填充";
|
||||
this.btnFill.Click += new System.EventHandler(this.btnFill_Click);
|
||||
//
|
||||
// panel6
|
||||
//
|
||||
this.panel6.Controls.Add(this.cmbLimit);
|
||||
this.panel6.Location = new System.Drawing.Point(476, 6);
|
||||
this.panel6.Name = "panel6";
|
||||
this.panel6.Size = new System.Drawing.Size(60, 24);
|
||||
this.panel6.TabIndex = 547;
|
||||
//
|
||||
// cmbLimit
|
||||
//
|
||||
this.cmbLimit.DisplayMember = "Text";
|
||||
this.cmbLimit.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbLimit.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbLimit.FormattingEnabled = true;
|
||||
this.cmbLimit.ItemHeight = 18;
|
||||
this.cmbLimit.Location = new System.Drawing.Point(0, 0);
|
||||
this.cmbLimit.Name = "cmbLimit";
|
||||
this.cmbLimit.Size = new System.Drawing.Size(57, 24);
|
||||
this.cmbLimit.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbLimit.TabIndex = 520;
|
||||
//
|
||||
// lblLimit
|
||||
//
|
||||
this.lblLimit.AutoSize = true;
|
||||
this.lblLimit.Location = new System.Drawing.Point(421, 13);
|
||||
this.lblLimit.Name = "lblLimit";
|
||||
this.lblLimit.Size = new System.Drawing.Size(53, 12);
|
||||
this.lblLimit.TabIndex = 546;
|
||||
this.lblLimit.Text = "每人限购";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(103, 13);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(29, 12);
|
||||
this.label3.TabIndex = 545;
|
||||
this.label3.Text = "优惠";
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.txtSetPrice);
|
||||
this.panel1.Location = new System.Drawing.Point(138, 8);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(83, 21);
|
||||
this.panel1.TabIndex = 544;
|
||||
//
|
||||
// txtSetPrice
|
||||
//
|
||||
this.txtSetPrice.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtSetPrice.Name = "txtSetPrice";
|
||||
this.txtSetPrice.Size = new System.Drawing.Size(83, 21);
|
||||
this.txtSetPrice.TabIndex = 0;
|
||||
//
|
||||
// panel5
|
||||
//
|
||||
this.panel5.Controls.Add(this.txtStock);
|
||||
this.panel5.Location = new System.Drawing.Point(322, 8);
|
||||
this.panel5.Name = "panel5";
|
||||
this.panel5.Size = new System.Drawing.Size(82, 21);
|
||||
this.panel5.TabIndex = 543;
|
||||
//
|
||||
// txtStock
|
||||
//
|
||||
this.txtStock.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtStock.Name = "txtStock";
|
||||
this.txtStock.Size = new System.Drawing.Size(80, 21);
|
||||
this.txtStock.TabIndex = 481;
|
||||
//
|
||||
// lblStock
|
||||
//
|
||||
this.lblStock.AutoSize = true;
|
||||
this.lblStock.Location = new System.Drawing.Point(263, 13);
|
||||
this.lblStock.Name = "lblStock";
|
||||
this.lblStock.Size = new System.Drawing.Size(53, 12);
|
||||
this.lblStock.TabIndex = 542;
|
||||
this.lblStock.Text = "追加库存";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(226, 13);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(17, 12);
|
||||
this.label2.TabIndex = 541;
|
||||
this.label2.Text = "折";
|
||||
//
|
||||
// btnDelete
|
||||
//
|
||||
this.btnDelete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||
this.btnDelete.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnDelete.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnDelete.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnDelete.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnDelete.Location = new System.Drawing.Point(902, 7);
|
||||
this.btnDelete.Name = "btnDelete";
|
||||
this.btnDelete.Size = new System.Drawing.Size(90, 23);
|
||||
this.btnDelete.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnDelete.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnDelete.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnDelete.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnDelete.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnDelete.Style.GradientAngle = 90;
|
||||
this.btnDelete.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnDelete.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.TabIndex = 536;
|
||||
this.btnDelete.Text = "删除";
|
||||
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvActiveSku);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1084, 521);
|
||||
this.splitContainer2.SplitterDistance = 492;
|
||||
this.splitContainer2.TabIndex = 10;
|
||||
//
|
||||
// dgvActiveSku
|
||||
//
|
||||
this.dgvActiveSku.AllowUserToAddRows = false;
|
||||
this.dgvActiveSku.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvActiveSku.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvActiveSku.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvActiveSku.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.dgvActiveSku.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvActiveSku.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvActiveSku.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colSkuId,
|
||||
this.colSku,
|
||||
this.colOldPrice,
|
||||
this.colSetPrice,
|
||||
this.colNowStock,
|
||||
this.colActiveStock,
|
||||
this.colLeftStock,
|
||||
this.colLimited,
|
||||
this.colMessage});
|
||||
this.dgvActiveSku.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvActiveSku.Location = new System.Drawing.Point(4, 0);
|
||||
this.dgvActiveSku.Name = "dgvActiveSku";
|
||||
this.dgvActiveSku.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvActiveSku.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvActiveSku.RowTemplate.Height = 23;
|
||||
this.dgvActiveSku.Size = new System.Drawing.Size(1076, 492);
|
||||
this.dgvActiveSku.TabIndex = 6;
|
||||
this.dgvActiveSku.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvActiveSku_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选择";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 45;
|
||||
//
|
||||
// colSkuId
|
||||
//
|
||||
this.colSkuId.HeaderText = "SkuId";
|
||||
this.colSkuId.Name = "colSkuId";
|
||||
this.colSkuId.ReadOnly = true;
|
||||
this.colSkuId.Visible = false;
|
||||
this.colSkuId.Width = 150;
|
||||
//
|
||||
// colSku
|
||||
//
|
||||
this.colSku.HeaderText = "SKU";
|
||||
this.colSku.Name = "colSku";
|
||||
this.colSku.ReadOnly = true;
|
||||
this.colSku.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colSku.Width = 300;
|
||||
//
|
||||
// colOldPrice
|
||||
//
|
||||
this.colOldPrice.HeaderText = "原价";
|
||||
this.colOldPrice.Name = "colOldPrice";
|
||||
this.colOldPrice.ReadOnly = true;
|
||||
this.colOldPrice.Width = 75;
|
||||
//
|
||||
// colSetPrice
|
||||
//
|
||||
this.colSetPrice.HeaderText = "打折";
|
||||
this.colSetPrice.Name = "colSetPrice";
|
||||
this.colSetPrice.ReadOnly = true;
|
||||
this.colSetPrice.Width = 80;
|
||||
//
|
||||
// colNowStock
|
||||
//
|
||||
this.colNowStock.HeaderText = "当前库存";
|
||||
this.colNowStock.Name = "colNowStock";
|
||||
this.colNowStock.ReadOnly = true;
|
||||
this.colNowStock.Width = 75;
|
||||
//
|
||||
// colActiveStock
|
||||
//
|
||||
this.colActiveStock.HeaderText = "活动库存";
|
||||
this.colActiveStock.Name = "colActiveStock";
|
||||
this.colActiveStock.ReadOnly = true;
|
||||
this.colActiveStock.Width = 80;
|
||||
//
|
||||
// colLeftStock
|
||||
//
|
||||
this.colLeftStock.HeaderText = "活动剩余库存";
|
||||
this.colLeftStock.Name = "colLeftStock";
|
||||
this.colLeftStock.ReadOnly = true;
|
||||
this.colLeftStock.Width = 90;
|
||||
//
|
||||
// colLimited
|
||||
//
|
||||
this.colLimited.HeaderText = "每人限购";
|
||||
this.colLimited.Name = "colLimited";
|
||||
this.colLimited.ReadOnly = true;
|
||||
this.colLimited.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colLimited.Width = 80;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息提示";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 150;
|
||||
//
|
||||
// DouProductPromotionListSkuInfoEditForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1084, 561);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "DouProductPromotionListSkuInfoEditForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "活动编辑";
|
||||
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.panel6.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.panel5.ResumeLayout(false);
|
||||
this.panel5.PerformLayout();
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvActiveSku)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private DevComponents.DotNetBar.PanelEx btnSave;
|
||||
private DevComponents.DotNetBar.PanelEx btnFill;
|
||||
private System.Windows.Forms.Panel panel6;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbLimit;
|
||||
private System.Windows.Forms.Label lblLimit;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.TextBox txtSetPrice;
|
||||
private System.Windows.Forms.Panel panel5;
|
||||
private System.Windows.Forms.TextBox txtStock;
|
||||
private System.Windows.Forms.Label lblStock;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private DevComponents.DotNetBar.PanelEx btnDelete;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvActiveSku;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSku;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colOldPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSetPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colNowStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActiveStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colLeftStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colLimited;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,315 @@
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class DouProductPromotionListSkuInfoEditForm : Form
|
||||
{
|
||||
public List<Promotion_Skus> skuList = null;
|
||||
private List<string> strList = new List<string>();
|
||||
private TextBox textBox = null;
|
||||
private ComboBox comboBox = null;
|
||||
|
||||
public DouProductPromotionListSkuInfoEditForm(Promotion_Goods goods, string shop_stype)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
if (shop_stype == "3")
|
||||
{
|
||||
this.dgvActiveSku.Columns["colSetPrice"].HeaderText = "打折";
|
||||
this.label2.Text = "折";
|
||||
}
|
||||
else if (shop_stype == "2")
|
||||
{
|
||||
this.dgvActiveSku.Columns["colSetPrice"].HeaderText = "直降";
|
||||
this.label2.Text = "元";
|
||||
}
|
||||
else if (shop_stype == "1")
|
||||
{
|
||||
this.dgvActiveSku.Columns["colSetPrice"].HeaderText = "一口价";
|
||||
this.label2.Text = "元";
|
||||
}
|
||||
|
||||
this.txtSetPrice.Text = "";
|
||||
this.txtStock.Text = "";
|
||||
//设置限购数
|
||||
for (int x = 1; x <= 20; x++)
|
||||
{
|
||||
cmbLimit.Items.Add(x);
|
||||
if (x == goods.promotion_skus[0].user_limit.ParseToInt())
|
||||
cmbLimit.SelectedIndex = x - 1;
|
||||
}
|
||||
|
||||
foreach (var sku in goods.promotion_skus)
|
||||
{
|
||||
if (shop_stype == "3")
|
||||
this.dgvActiveSku.Rows.Add(false, sku.id, sku.specification, sku.origin_price.ParseToDecimal() / 100, sku.shop_svalue.ParseToDecimal() / 10, sku.stock, sku.camp_stock_num, sku.camp_left_stock_num, sku.user_limit);
|
||||
else
|
||||
this.dgvActiveSku.Rows.Add(false, sku.id, sku.specification, sku.origin_price.ParseToDecimal() / 100, sku.shop_svalue.ParseToDecimal() / 100, sku.stock, sku.camp_stock_num, sku.camp_left_stock_num, sku.user_limit);
|
||||
}
|
||||
dgvActiveSku.Sort(dgvActiveSku.Columns["colSkuId"], System.ComponentModel.ListSortDirection.Descending);
|
||||
skuList = goods.promotion_skus;
|
||||
}
|
||||
|
||||
private void dgvActiveSku_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string headerText = dgvActiveSku.Columns[e.ColumnIndex].HeaderText;
|
||||
string columnName = dgvActiveSku.Columns[e.ColumnIndex].Name;
|
||||
long SkuId = dgvActiveSku.Rows[e.RowIndex].Cells["colSkuId"].Value.ParseToLong();
|
||||
var row = dgvActiveSku.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
if (dgvActiveSku.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool())
|
||||
{
|
||||
if (strList.Any(p => p == SkuId.ToString()))
|
||||
strList.RemoveAll(p => p == SkuId.ToString());
|
||||
strList.Add(SkuId.ToString());
|
||||
}
|
||||
else
|
||||
strList.Remove(SkuId.ToString());
|
||||
break;
|
||||
case "colSetPrice":
|
||||
getTextBox();
|
||||
textBox.Visible = true;
|
||||
textBox.Location = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Location;
|
||||
textBox.Location.Offset(0, 1);
|
||||
textBox.Width = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Width - 2;
|
||||
textBox.Height = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Height - 2;
|
||||
textBox.Text = row.Cells["colSetPrice"].Value.ToString();
|
||||
textBox.Focus();
|
||||
textBox.LostFocus += new EventHandler((obj, ex) => {
|
||||
var setPriceRes = (obj as TextBox).Text.Trim();
|
||||
if(setPriceRes != "")
|
||||
{
|
||||
var SetPrice = returnPrice(setPriceRes);
|
||||
Promotion_Skus skuInfo = skuList.Where(x => x.id == SkuId.ToString()).FirstOrDefault();
|
||||
if (skuInfo != null)
|
||||
skuInfo.shop_svalue = SetPrice.ParseToInt();
|
||||
row.Cells["colSetPrice"].Value = setPriceRes;
|
||||
}
|
||||
if (textBox != null)
|
||||
{
|
||||
dgvActiveSku.Controls.Remove(textBox);
|
||||
textBox = null;
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "colActiveStock":
|
||||
getTextBox();
|
||||
textBox.Visible = true;
|
||||
textBox.Location = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Location;
|
||||
textBox.Location.Offset(0, 1);
|
||||
textBox.Width = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Width - 2;
|
||||
textBox.Height = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Height - 2;
|
||||
textBox.Text = row.Cells["colActiveStock"].Value.ToString();
|
||||
textBox.Focus();
|
||||
textBox.LostFocus += new EventHandler((obj, ex) => {
|
||||
var Stock = (obj as TextBox).Text.Trim();
|
||||
if (Stock != "")
|
||||
{
|
||||
Promotion_Skus skuInfo = skuList.Where(x => x.id == SkuId.ToString()).FirstOrDefault();
|
||||
if (skuInfo != null)
|
||||
skuInfo.camp_stock_num = Stock.ParseToInt();
|
||||
row.Cells["colActiveStock"].Value = skuInfo.camp_stock_num;
|
||||
}
|
||||
if (textBox != null)
|
||||
{
|
||||
dgvActiveSku.Controls.Remove(textBox);
|
||||
textBox = null;
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "colLimited":
|
||||
getComboBox();
|
||||
comboBox.Visible = true;
|
||||
comboBox.Location = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Location;
|
||||
comboBox.Width = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Width - 2;
|
||||
comboBox.Height = dgvActiveSku.GetCellDisplayRectangle(dgvActiveSku.CurrentCell.ColumnIndex, dgvActiveSku.CurrentCell.RowIndex, true).Height - 2;
|
||||
for (int a = 0; a < comboBox.Items.Count; a++)
|
||||
{
|
||||
if (comboBox.Items[a].ToString() == row.Cells["colLimited"].Value.ToString())
|
||||
{
|
||||
comboBox.SelectedIndex = a;
|
||||
break;
|
||||
}
|
||||
}
|
||||
comboBox.ItemHeight = 20;
|
||||
comboBox.Focus();
|
||||
try
|
||||
{
|
||||
comboBox.LostFocus += new EventHandler((obj, ex) => {
|
||||
var setLimit = (obj as ComboBox).Text;
|
||||
Promotion_Skus skuInfo = skuList.Where(x => x.id == SkuId.ToString()).FirstOrDefault();
|
||||
if (skuInfo != null)
|
||||
skuInfo.user_limit = setLimit;
|
||||
if (comboBox != null)
|
||||
{
|
||||
dgvActiveSku.Controls.Remove(comboBox);
|
||||
comboBox = null;
|
||||
}
|
||||
row.Cells["colLimited"].Value = setLimit;
|
||||
});
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
if (comboBox != null)
|
||||
{
|
||||
dgvActiveSku.Controls.Remove(comboBox);
|
||||
comboBox = null;
|
||||
}
|
||||
Promotion_Skus skuInfo = skuList.Where(x => x.id == SkuId.ToString()).FirstOrDefault();
|
||||
row.Cells["colLimited"].Value = skuInfo.user_limit;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (textBox != null)
|
||||
{
|
||||
dgvActiveSku.Controls.Remove(textBox);
|
||||
textBox = null;
|
||||
}
|
||||
if (comboBox != null)
|
||||
{
|
||||
dgvActiveSku.Controls.Remove(comboBox);
|
||||
comboBox = null;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnFill_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
var setPriceRes = txtSetPrice.Text.Trim();
|
||||
var ActiveStock = txtStock.Text.Trim();
|
||||
var LimitedNum = cmbLimit.Text;
|
||||
foreach (DataGridViewRow row in dgvActiveSku.Rows)
|
||||
{
|
||||
var skuId = row.Cells["colSkuId"].Value.ToString();
|
||||
Promotion_Skus skuInfo = skuList.Where(x => x.id == skuId).FirstOrDefault();
|
||||
if (skuInfo != null)
|
||||
{
|
||||
if (setPriceRes != "")
|
||||
{
|
||||
row.Cells["colSetPrice"].Value = setPriceRes;
|
||||
skuInfo.shop_svalue = returnPrice(setPriceRes).ParseToInt();
|
||||
}
|
||||
if (ActiveStock != "")
|
||||
{
|
||||
skuInfo.camp_stock_num = skuInfo.camp_stock_num + ActiveStock.ParseToInt();
|
||||
row.Cells["colActiveStock"].Value = skuInfo.camp_stock_num;
|
||||
}
|
||||
row.Cells["colLimited"].Value = LimitedNum;
|
||||
skuInfo.user_limit = LimitedNum;
|
||||
}
|
||||
}
|
||||
}
|
||||
public string returnPrice(string price)
|
||||
{
|
||||
var SetPrice = "";
|
||||
if (label2.Text == "折")
|
||||
SetPrice = (price.ParseToDouble() * 10).ToString(); //打折精确到小数点后一位(0-10之间)
|
||||
else if (label2.Text == "元")
|
||||
SetPrice = (price.ParseToDouble() * 100).ToString(); //直降、一口价精确到小数点后两位(0-原价之间)
|
||||
return SetPrice;
|
||||
}
|
||||
|
||||
private void btnDelete_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
if (strList.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择待删除的单品!");
|
||||
return;
|
||||
}
|
||||
if (BaseMsgForm.ShowConfirm("确定要删除吗?").DialogResult == DialogResult.OK)
|
||||
{
|
||||
for (int i = 0; i < dgvActiveSku.Rows.Count; i++)
|
||||
{
|
||||
DataGridViewRow row = dgvActiveSku.Rows[i];
|
||||
long SkuId = row.Cells["colSkuId"].Value.ParseToLong();
|
||||
if (strList.Any(p => p == SkuId.ToString()))
|
||||
{
|
||||
dgvActiveSku.Rows.Remove(row);
|
||||
strList.Remove(SkuId.ToString());
|
||||
skuList.Remove(skuList.Where(x => x.id == SkuId.ToString()).FirstOrDefault());
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void getTextBox()
|
||||
{
|
||||
textBox = new TextBox();
|
||||
textBox.Visible = false;
|
||||
dgvActiveSku.Controls.Add(textBox);
|
||||
}
|
||||
|
||||
public void getComboBox()
|
||||
{
|
||||
comboBox = new ComboBox();
|
||||
for (int i = 1; i <= 20; i++)
|
||||
{
|
||||
comboBox.Items.Add(i);
|
||||
}
|
||||
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBox.Visible = false;
|
||||
dgvActiveSku.Controls.Add(comboBox);
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
this.DialogResult = DialogResult.OK;
|
||||
}
|
||||
|
||||
}
|
||||
public class ActiveInfoEdit
|
||||
{
|
||||
public string campaign_id { get; set; }
|
||||
public int sub_stype { get; set; }
|
||||
/// <summary>
|
||||
/// 活动名称
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
public string pre_begin_time { get; set; }
|
||||
public string begin_time { get; set; }
|
||||
public string end_time { get; set; }
|
||||
public string order_expire_time { get; set; }
|
||||
/// <summary>
|
||||
/// 优惠方式
|
||||
/// </summary>
|
||||
public string shop_stype { get; set; }
|
||||
public string time_set_type { get; set; }
|
||||
public int status { get; set; }
|
||||
public string stock_type { get; set; }
|
||||
public string sold_out_type { get; set; }
|
||||
public List<Promotion_Goods> promotion_goods { get; set; }
|
||||
}
|
||||
public class Promotion_Goods
|
||||
{
|
||||
public string product_id { get; set; }
|
||||
public string title { get; set; }
|
||||
public string cover { get; set; }
|
||||
public int config_scope { get; set; }
|
||||
public List<Promotion_Skus> promotion_skus { get; set; }
|
||||
}
|
||||
public class Promotion_Skus
|
||||
{
|
||||
public string id { get; set; }
|
||||
public int camp_stock_num { get; set; }
|
||||
public int camp_left_stock_num { get; set; }
|
||||
public int price { get; set; }
|
||||
public string user_limit { get; set; }
|
||||
public int origin_price { get; set; }
|
||||
public int stock { get; set; }
|
||||
public string specification { get; set; }
|
||||
public int shop_svalue { get; set; }
|
||||
public int redline_price { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="colLeftStock.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,437 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class FullMinusActiveForm
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.cmbActState = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.comboItem1 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem2 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem3 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem4 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem5 = new DevComponents.Editors.ComboItem();
|
||||
this.btnFailed = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnSearch = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.panel4 = new System.Windows.Forms.Panel();
|
||||
this.txtActName = new System.Windows.Forms.TextBox();
|
||||
this.lblActivity = new System.Windows.Forms.Label();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvActive = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colActiveId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colActiveName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPreStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrefereType = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colEndTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colActiveState = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel4.SuspendLayout();
|
||||
((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();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvActive)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.cmbActState);
|
||||
this.panel1.Location = new System.Drawing.Point(368, 7);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(76, 24);
|
||||
this.panel1.TabIndex = 522;
|
||||
//
|
||||
// cmbActState
|
||||
//
|
||||
this.cmbActState.DisplayMember = "Text";
|
||||
this.cmbActState.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbActState.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbActState.FormattingEnabled = true;
|
||||
this.cmbActState.ItemHeight = 18;
|
||||
this.cmbActState.Items.AddRange(new object[] {
|
||||
this.comboItem1,
|
||||
this.comboItem2,
|
||||
this.comboItem3,
|
||||
this.comboItem4,
|
||||
this.comboItem5});
|
||||
this.cmbActState.Location = new System.Drawing.Point(0, 0);
|
||||
this.cmbActState.Name = "cmbActState";
|
||||
this.cmbActState.Size = new System.Drawing.Size(75, 24);
|
||||
this.cmbActState.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbActState.TabIndex = 520;
|
||||
//
|
||||
// comboItem1
|
||||
//
|
||||
this.comboItem1.Text = "全部";
|
||||
//
|
||||
// comboItem2
|
||||
//
|
||||
this.comboItem2.Text = "未开始";
|
||||
this.comboItem2.Value = "1";
|
||||
//
|
||||
// comboItem3
|
||||
//
|
||||
this.comboItem3.Text = "进行中";
|
||||
this.comboItem3.Value = "2";
|
||||
//
|
||||
// comboItem4
|
||||
//
|
||||
this.comboItem4.Text = "已结束";
|
||||
this.comboItem4.Value = "3";
|
||||
//
|
||||
// comboItem5
|
||||
//
|
||||
this.comboItem5.Text = "已失效";
|
||||
this.comboItem5.Value = "4";
|
||||
//
|
||||
// btnFailed
|
||||
//
|
||||
this.btnFailed.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnFailed.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnFailed.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnFailed.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnFailed.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnFailed.Location = new System.Drawing.Point(692, 9);
|
||||
this.btnFailed.Name = "btnFailed";
|
||||
this.btnFailed.Size = new System.Drawing.Size(75, 21);
|
||||
this.btnFailed.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnFailed.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnFailed.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnFailed.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnFailed.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnFailed.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnFailed.Style.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(8)))), ((int)(((byte)(55)))), ((int)(((byte)(114)))));
|
||||
this.btnFailed.Style.GradientAngle = 90;
|
||||
this.btnFailed.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnFailed.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnFailed.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnFailed.TabIndex = 546;
|
||||
this.btnFailed.Text = "失效";
|
||||
this.btnFailed.Click += new System.EventHandler(this.btnFailed_Click);
|
||||
//
|
||||
// btnSearch
|
||||
//
|
||||
this.btnSearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSearch.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSearch.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSearch.Location = new System.Drawing.Point(596, 9);
|
||||
this.btnSearch.Name = "btnSearch";
|
||||
this.btnSearch.Size = new System.Drawing.Size(80, 21);
|
||||
this.btnSearch.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSearch.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSearch.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSearch.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSearch.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSearch.Style.GradientAngle = 90;
|
||||
this.btnSearch.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSearch.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.TabIndex = 536;
|
||||
this.btnSearch.Text = "查询/刷新";
|
||||
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(314, 11);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(56, 17);
|
||||
this.label2.TabIndex = 521;
|
||||
this.label2.Text = "活动状态";
|
||||
//
|
||||
// panel4
|
||||
//
|
||||
this.panel4.Controls.Add(this.txtActName);
|
||||
this.panel4.Location = new System.Drawing.Point(195, 8);
|
||||
this.panel4.Name = "panel4";
|
||||
this.panel4.Size = new System.Drawing.Size(96, 23);
|
||||
this.panel4.TabIndex = 516;
|
||||
//
|
||||
// txtActName
|
||||
//
|
||||
this.txtActName.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtActName.Name = "txtActName";
|
||||
this.txtActName.Size = new System.Drawing.Size(95, 23);
|
||||
this.txtActName.TabIndex = 481;
|
||||
//
|
||||
// lblActivity
|
||||
//
|
||||
this.lblActivity.AutoSize = true;
|
||||
this.lblActivity.Location = new System.Drawing.Point(141, 11);
|
||||
this.lblActivity.Name = "lblActivity";
|
||||
this.lblActivity.Size = new System.Drawing.Size(56, 17);
|
||||
this.lblActivity.TabIndex = 515;
|
||||
this.lblActivity.Text = "活动名称";
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.btnFailed);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnSearch);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label2);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.panel4);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblActivity);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1034, 459);
|
||||
this.splitContainer1.SplitterDistance = 38;
|
||||
this.splitContainer1.TabIndex = 12;
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvActive);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1034, 417);
|
||||
this.splitContainer2.SplitterDistance = 386;
|
||||
this.splitContainer2.TabIndex = 10;
|
||||
//
|
||||
// dgvActive
|
||||
//
|
||||
this.dgvActive.AllowUserToAddRows = false;
|
||||
this.dgvActive.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvActive.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvActive.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvActive.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.dgvActive.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvActive.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvActive.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colActiveId,
|
||||
this.colActiveName,
|
||||
this.colPreStartTime,
|
||||
this.colPrefereType,
|
||||
this.colStartTime,
|
||||
this.colEndTime,
|
||||
this.colActiveState,
|
||||
this.colMessage});
|
||||
this.dgvActive.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvActive.Location = new System.Drawing.Point(4, 0);
|
||||
this.dgvActive.Name = "dgvActive";
|
||||
this.dgvActive.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvActive.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvActive.RowTemplate.Height = 23;
|
||||
this.dgvActive.Size = new System.Drawing.Size(1026, 386);
|
||||
this.dgvActive.TabIndex = 6;
|
||||
this.dgvActive.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvActive_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 30;
|
||||
//
|
||||
// colActiveId
|
||||
//
|
||||
this.colActiveId.HeaderText = "活动Id";
|
||||
this.colActiveId.Name = "colActiveId";
|
||||
this.colActiveId.ReadOnly = true;
|
||||
this.colActiveId.Visible = false;
|
||||
//
|
||||
// colActiveName
|
||||
//
|
||||
this.colActiveName.HeaderText = "活动名称";
|
||||
this.colActiveName.Name = "colActiveName";
|
||||
this.colActiveName.ReadOnly = true;
|
||||
this.colActiveName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colActiveName.Width = 75;
|
||||
//
|
||||
// colPreStartTime
|
||||
//
|
||||
this.colPreStartTime.HeaderText = "优惠信息";
|
||||
this.colPreStartTime.Name = "colPreStartTime";
|
||||
this.colPreStartTime.ReadOnly = true;
|
||||
this.colPreStartTime.Width = 250;
|
||||
//
|
||||
// colPrefereType
|
||||
//
|
||||
this.colPrefereType.HeaderText = "活动商品";
|
||||
this.colPrefereType.Name = "colPrefereType";
|
||||
this.colPrefereType.ReadOnly = true;
|
||||
this.colPrefereType.Width = 240;
|
||||
//
|
||||
// colStartTime
|
||||
//
|
||||
this.colStartTime.HeaderText = "活动开始时间";
|
||||
this.colStartTime.Name = "colStartTime";
|
||||
this.colStartTime.ReadOnly = true;
|
||||
this.colStartTime.Width = 110;
|
||||
//
|
||||
// colEndTime
|
||||
//
|
||||
this.colEndTime.HeaderText = "活动结束时间";
|
||||
this.colEndTime.Name = "colEndTime";
|
||||
this.colEndTime.ReadOnly = true;
|
||||
this.colEndTime.Width = 110;
|
||||
//
|
||||
// colActiveState
|
||||
//
|
||||
this.colActiveState.HeaderText = "活动状态";
|
||||
this.colActiveState.Name = "colActiveState";
|
||||
this.colActiveState.ReadOnly = true;
|
||||
this.colActiveState.Width = 65;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息提示";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 240;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.MidnightBlue;
|
||||
this.label1.Location = new System.Drawing.Point(651, 5);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(43, 17);
|
||||
this.label1.TabIndex = 5;
|
||||
this.label1.Text = "label1";
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1034, 27);
|
||||
this.statusBar.TabIndex = 4;
|
||||
//
|
||||
// FullMinusActiveForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1034, 459);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "FullMinusActiveForm";
|
||||
this.Text = "FullMinusActiveForm";
|
||||
this.Load += new System.EventHandler(this.FullMinusActiveForm_Load);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel4.ResumeLayout(false);
|
||||
this.panel4.PerformLayout();
|
||||
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.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.dgvActive)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbActState;
|
||||
private DevComponents.Editors.ComboItem comboItem1;
|
||||
private DevComponents.Editors.ComboItem comboItem2;
|
||||
private DevComponents.Editors.ComboItem comboItem3;
|
||||
private DevComponents.Editors.ComboItem comboItem4;
|
||||
private DevComponents.Editors.ComboItem comboItem5;
|
||||
private DevComponents.DotNetBar.PanelEx btnFailed;
|
||||
private DevComponents.DotNetBar.PanelEx btnSearch;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Panel panel4;
|
||||
private System.Windows.Forms.TextBox txtActName;
|
||||
private System.Windows.Forms.Label lblActivity;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvActive;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActiveId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActiveName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPreStartTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrefereType;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colStartTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colEndTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActiveState;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,353 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util.Extension;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class FullMinusActiveForm : Form
|
||||
{
|
||||
private DouShopLoginInfo shop = null;
|
||||
public List<long> lstActiveId = new List<long>();
|
||||
public FullMinusForm fullMinusForm = null;
|
||||
private string _signature = "";
|
||||
private string _underline = "";
|
||||
public bool isGetActiveSuccess = false;
|
||||
public List<FullMinusActiveInfo> activeList = new List<FullMinusActiveInfo>();
|
||||
|
||||
public FullMinusActiveForm(DouShopLoginInfo _shop = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
shop = _shop;
|
||||
}
|
||||
|
||||
private void FullMinusActiveForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
cmbActState.SelectedIndex = 0;
|
||||
txtActName.Focus();
|
||||
}
|
||||
|
||||
private void dgvActive_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string columnName = dgvActive.Columns[e.ColumnIndex].Name;
|
||||
long ActiveId = dgvActive.Rows[e.RowIndex].Cells["colActiveId"].Value.ParseToLong();
|
||||
var row = dgvActive.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
if (dgvActive.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool())
|
||||
{
|
||||
if (lstActiveId.Any(p => p == ActiveId))
|
||||
lstActiveId.RemoveAll(p => p == ActiveId);
|
||||
lstActiveId.Add(ActiveId);
|
||||
}
|
||||
else
|
||||
lstActiveId.Remove(ActiveId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void GetActive()
|
||||
{
|
||||
if (shop == null)
|
||||
return;
|
||||
|
||||
ShowVisitorMessage("");
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (shop.LoginStatus == "登录成功")
|
||||
fullMinusForm.GetActiveByCef(this.shop);
|
||||
|
||||
var rowsTemp = dgvActive.Rows.Cast<DataGridViewRow>().ToList();
|
||||
rowsTemp.Reverse();
|
||||
});
|
||||
}
|
||||
|
||||
public void GetActiveSim(string listUrl, string referrerUrl, Dictionary<string, string> headers, string firstPageData = "")
|
||||
{
|
||||
ShowVisitorMessage("");
|
||||
|
||||
int total = -1;
|
||||
int number = 0;
|
||||
string result = "";
|
||||
if (!string.IsNullOrEmpty(firstPageData))
|
||||
result = firstPageData;
|
||||
|
||||
//获取所有活动
|
||||
if (string.IsNullOrEmpty(_underline))
|
||||
_underline = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_underline))
|
||||
_underline = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)");
|
||||
if (string.IsNullOrEmpty(_underline))
|
||||
_underline = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now).ToString();
|
||||
if (string.IsNullOrEmpty(_signature))
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl, "&_signature=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_signature))
|
||||
{
|
||||
var listUrl2 = listUrl + "&";
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl2, "&_signature=([\\s\\S]+?)&");
|
||||
}
|
||||
listUrl = "https://fxg.jinritemai.com/marketing/activity/v1/query_full_discount_activity?activity_status=0&page=1&pageSize=20&_bid=ecom_market_shop&appid=1&_=" + _underline + "&_signature=" + _signature;
|
||||
for (int i = 1; i < 9999; i++)
|
||||
{
|
||||
number += 20;
|
||||
for (int j = 0; j < 3 && !result.Contains("\"st\":0"); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
if (headers.ContainsKey("Accept"))
|
||||
simRequest.Accept = headers["Accept"];
|
||||
if (headers.ContainsKey("UserAgent"))
|
||||
simRequest.UserAgent = headers["UserAgent"];
|
||||
var cookie = shop.Cookies;
|
||||
|
||||
var rUrl = listUrl.Replace("page=1", "page=" + i);
|
||||
result = simRequest.Request_Get(rUrl, referrerUrl, new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(2000, 3000));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (result.Contains(",\"msg\":\"成功\",\"st\":0") && !fullMinusForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.isGetActiveSuccess = true;
|
||||
|
||||
if (total == -1)
|
||||
{
|
||||
total = BaseRegex.GetIntJson(ref result, "total");
|
||||
}
|
||||
|
||||
var jObj = JObject.Parse(result);
|
||||
var aList = JsonHelper.DeserializeJsonToList<FullMinusActiveInfo>(jObj["data"]["data"]?.ToString());
|
||||
foreach (var info in aList)
|
||||
{
|
||||
if (this.activeList.Any(p => p.activity_id == info.activity_id))
|
||||
this.activeList.RemoveAll(p => p.activity_id == info.activity_id);
|
||||
this.activeList.Add(info);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2000));
|
||||
}
|
||||
else
|
||||
{
|
||||
isGetActiveSuccess = false;
|
||||
break;
|
||||
}
|
||||
result = "";
|
||||
if (number >= total)
|
||||
break;
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (fullMinusForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取中断";
|
||||
}
|
||||
else if (!isGetActiveSuccess)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取活动信息失败";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取完成";
|
||||
}
|
||||
this.statusBar.pgbTaskProgress.Value = 0;
|
||||
this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
||||
this.statusBar.pgbTaskProgress.Maximum = 0;
|
||||
}));
|
||||
}
|
||||
|
||||
public void ShowVisitorMessage(string msg)
|
||||
{
|
||||
Invoke(new Action(() => { this.label1.Text = msg; }));
|
||||
}
|
||||
|
||||
private void btnSearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShowVisitorMessage("");
|
||||
ShowVisitorMessage("查询开始");
|
||||
if (this.activeList.Count == 0)
|
||||
{
|
||||
if (fullMinusForm.cancellationTokenSource.IsCancellationRequested)
|
||||
fullMinusForm.cancellationTokenSource = new CancellationTokenSource();
|
||||
GetActiveSim("https://fxg.jinritemai.com/marketing/activity/v1/query_full_discount_activity?page=1&pageSize=20&activity_status=0&_bid=ecom_market_shop&appid=1&_=" + _underline + "&_signature=" + _signature, "https://fxg.jinritemai.com/market/center/tools/moneyoff", new Dictionary<string, string>());
|
||||
}
|
||||
var name = txtActName.Text.Trim();
|
||||
var stateText = cmbActState.SelectedItem.ToString();
|
||||
var stateVal = stateText == "全部" ? "0" : (stateText == "进行中" ? "2" : (stateText == "已结束" ? "3" : (stateText == "未开始" ? "1" : "4")));
|
||||
if ((name == "" && stateVal == "0" && this.dgvActive.Rows.Count == this.activeList.Count) || this.activeList.Count == 0)
|
||||
{
|
||||
ShowVisitorMessage("查询完成!");
|
||||
return;
|
||||
}
|
||||
Task.Run(() => {
|
||||
List<FullMinusActiveInfo> infos = new List<FullMinusActiveInfo>();
|
||||
infos = this.activeList;
|
||||
if (!string.IsNullOrEmpty(name))
|
||||
infos = infos.Where(x => x.activity_name == name).ToList();
|
||||
if (stateVal != "0")
|
||||
infos = infos.Where(x => x.activity_status == stateVal.ParseToInt()).ToList();
|
||||
int totals = infos.Count;
|
||||
Invoke(new Action(() => {
|
||||
this.dgvActive.Rows.Clear();
|
||||
for (int j = 0; j < totals; j++)
|
||||
{
|
||||
var info = infos[j];
|
||||
var status = info.activity_status == 3 ? "已结束" : (info.activity_status == 2 ? "进行中" : (info.activity_status == 1 ? "未开始" : "已失效"));
|
||||
string activeOff = string.Empty;
|
||||
if (info.discounts != null)
|
||||
{
|
||||
if (info.activity_type == 1)
|
||||
{
|
||||
foreach (var dis in info.discounts)
|
||||
{
|
||||
activeOff += "满" + dis.condition_value.ParseToDecimal() / 100 + "元减" + dis.discount.ParseToDecimal() / 100 + "元;";
|
||||
}
|
||||
}
|
||||
else if (info.discount_type == 1)
|
||||
{
|
||||
foreach (var dis in info.discounts)
|
||||
{
|
||||
activeOff += "满" + dis.condition_value + "件打" + dis.discount.ParseToDecimal() / 10 + "折;";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var dis in info.discounts)
|
||||
{
|
||||
activeOff += "满" + dis.condition_value + "件减" + dis.discount.ParseToDecimal() / 100 + "元;";
|
||||
}
|
||||
}
|
||||
activeOff = activeOff.TrimEnd(';');
|
||||
}
|
||||
string activePro = string.Empty;
|
||||
if (info.activity_products != null)
|
||||
{
|
||||
foreach (var pro in info.activity_products)
|
||||
{
|
||||
activePro += pro.name + ";";
|
||||
}
|
||||
activePro = activePro.TrimEnd(';');
|
||||
}
|
||||
if (lstActiveId.Contains(info.activity_id.ParseToLong()))
|
||||
this.dgvActive.Rows.Add(true, info.activity_id, info.activity_name, activeOff, activePro, BaseClass.StampToDateTime(info.start_time.ParseToInt()), BaseClass.StampToDateTime(info.end_time.ParseToInt()), status);
|
||||
else
|
||||
this.dgvActive.Rows.Add(false, info.activity_id, info.activity_name, activeOff, activePro, BaseClass.StampToDateTime(info.start_time.ParseToInt()), BaseClass.StampToDateTime(info.end_time.ParseToInt()), status);
|
||||
}
|
||||
}));
|
||||
ShowVisitorMessage("查询完成!");
|
||||
});
|
||||
}
|
||||
|
||||
private void btnFailed_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (dgvActive.Rows.Count == 0 || lstActiveId.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择待失效的活动!");
|
||||
return;
|
||||
}
|
||||
if (BaseMsgForm.ShowConfirm("确定将该活动设置为失效?").DialogResult == DialogResult.OK)
|
||||
{
|
||||
var failUrl = "https://fxg.jinritemai.com/marketing/activity/v1/disable_product_activity?activity_id={0}&_bid=ecom_market_shop&appid=1&_=" + _underline + "&_signature=" + _signature;
|
||||
var cookies = shop.Cookies;
|
||||
Task.Run(() =>
|
||||
{
|
||||
for (int i = 0; i < dgvActive.Rows.Count; i++)
|
||||
{
|
||||
DataGridViewRow row = dgvActive.Rows[i];
|
||||
long ActiveId = row.Cells["colActiveId"].Value.ParseToLong();
|
||||
if (lstActiveId.Any(p => p == ActiveId))
|
||||
{
|
||||
string name = row.Cells["colActiveName"].Value.ToString();
|
||||
var colActiveState = row.Cells["colActiveState"].Value.ToString();
|
||||
if (colActiveState != "进行中" && colActiveState != "未开始")
|
||||
{
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = name + "活动" + colActiveState + ",无需设置失效!"; }));
|
||||
continue;
|
||||
}
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
var reqUrl = string.Format(failUrl, ActiveId);
|
||||
string result = request.Request_Get(reqUrl, "https://fxg.jinritemai.com/market/center/tools/moneyoff", dicts, cookies);
|
||||
if (result.Contains(",\"msg\":\"成功\",\"st\":0"))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var activeInfo = activeList.Where(x => x.activity_id == ActiveId.ToString()).FirstOrDefault();
|
||||
if (activeInfo != null)
|
||||
{
|
||||
activeInfo.activity_status = 4;
|
||||
row.Cells["colActiveState"].Value = "已失效";
|
||||
row.Cells["colMessage"].Value = "设置失效已完成!";
|
||||
}
|
||||
}));
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
else
|
||||
{
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "设置失效失败 :" + BaseRegex.GetStringJson(ref result, "msg"); }));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearData()
|
||||
{
|
||||
this.lstActiveId.Clear();
|
||||
this.activeList.Clear();
|
||||
this.dgvActive.Rows.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
public class FullMinusActiveInfo
|
||||
{
|
||||
public string activity_id { get; set; }
|
||||
public int activity_type { get; set; }
|
||||
public string activity_name { get; set; }
|
||||
public long start_time { get; set; }
|
||||
public long end_time { get; set; }
|
||||
public int discount_type { get; set; }
|
||||
public int activity_status { get; set; }
|
||||
public string enable_use_coupon { get; set; }
|
||||
public List<ActiveDiscounts> discounts { get; set; }
|
||||
public List<ActiveProducts> activity_products { get; set; }
|
||||
}
|
||||
public class ActiveDiscounts
|
||||
{
|
||||
public long activity_id { get; set; }
|
||||
public long discount_id { get; set; }
|
||||
public int condition_type { get; set; }
|
||||
public string condition_value { get; set; }
|
||||
public int discount_type { get; set; }
|
||||
public string discount { get; set; }
|
||||
public int discount_level { get; set; }
|
||||
}
|
||||
public class ActiveProducts
|
||||
{
|
||||
public string activity_id { get; set; }
|
||||
public long shop_id { get; set; }
|
||||
public string product_id { get; set; }
|
||||
public int status { get; set; }
|
||||
public string name { get; set; }
|
||||
public string img { get; set; }
|
||||
public long stock_num { get; set; }
|
||||
public long max_price { get; set; }
|
||||
public long min_price { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
+2016
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,138 @@
|
||||
<?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="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAuthStatus.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="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,206 @@
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class FullMinusShopForm
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvProduct = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvProduct)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvProduct);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1021, 469);
|
||||
this.splitContainer2.SplitterDistance = 439;
|
||||
this.splitContainer2.TabIndex = 10;
|
||||
//
|
||||
// dgvProduct
|
||||
//
|
||||
this.dgvProduct.AllowUserToAddRows = false;
|
||||
this.dgvProduct.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvProduct.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvProduct.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.dgvProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colStock,
|
||||
this.colPrice,
|
||||
this.colMessage});
|
||||
this.dgvProduct.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvProduct.Location = new System.Drawing.Point(4, 4);
|
||||
this.dgvProduct.Name = "dgvProduct";
|
||||
this.dgvProduct.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvProduct.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvProduct.RowTemplate.Height = 23;
|
||||
this.dgvProduct.Size = new System.Drawing.Size(1013, 435);
|
||||
this.dgvProduct.TabIndex = 6;
|
||||
this.dgvProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellContentClick);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.MidnightBlue;
|
||||
this.label1.Location = new System.Drawing.Point(536, 2);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(41, 12);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "label1";
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1021, 26);
|
||||
this.statusBar.TabIndex = 2;
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 150;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.Width = 450;
|
||||
//
|
||||
// colStock
|
||||
//
|
||||
this.colStock.HeaderText = "库存";
|
||||
this.colStock.Name = "colStock";
|
||||
this.colStock.ReadOnly = true;
|
||||
this.colStock.Width = 60;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格(¥)";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "提示消息";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 300;
|
||||
//
|
||||
// FullMinusShopForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1021, 469);
|
||||
this.Controls.Add(this.splitContainer2);
|
||||
this.Name = "FullMinusShopForm";
|
||||
this.Text = "FullMinusShopForm";
|
||||
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.dgvProduct)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvProduct;
|
||||
private System.Windows.Forms.Label label1;
|
||||
public UserControls.StatusBarUserControl statusBar;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,307 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.Extension;
|
||||
using NaiBa.Util.Extension;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class FullMinusShopForm : Form
|
||||
{
|
||||
private DouShopLoginInfo shop = null;
|
||||
private CheckBox chkSelectAll = null;
|
||||
public List<string> lstProductId = new List<string>();
|
||||
public FullMinusForm fullMinusForm = null;
|
||||
public List<DouProductPromotionListInfo> productList = new List<DouProductPromotionListInfo>();
|
||||
private string _signature = "";
|
||||
private string _underline = "";
|
||||
public bool isGetProductSuccess = false;
|
||||
|
||||
public FullMinusShopForm(DouShopLoginInfo _shop = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
shop = _shop;
|
||||
//设置全选按钮
|
||||
chkSelectAll = dgvProduct.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
dgvProduct.Columns["colSelect"].HeaderText = "";
|
||||
chkSelectAll.Width = chkSelectAll.Height = 13;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged; //全选事件
|
||||
}
|
||||
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!chkSelectAll.Checked)
|
||||
{
|
||||
lstProductId.Clear();
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lstProductId.Clear(); //先清空,然后把id加入list
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = true;
|
||||
long ProductId = row.Cells["colProductId"].Value.ParseToLong();
|
||||
lstProductId.Add(ProductId.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
public void ShowVisitorMessage(string msg)
|
||||
{
|
||||
Invoke(new Action(() => { this.label1.Text = msg; }));
|
||||
}
|
||||
|
||||
public void GetProduct()
|
||||
{
|
||||
if (shop == null)
|
||||
return;
|
||||
|
||||
ShowVisitorMessage("");
|
||||
foreach (DataGridViewRow r in dgvProduct.Rows)
|
||||
{
|
||||
r.Cells["colStock"].Value = "获取中";
|
||||
r.Cells["colMessage"].Value = "";
|
||||
}
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (shop.LoginStatus == "登录成功")
|
||||
fullMinusForm.GetProductByCef(shop);
|
||||
|
||||
var rowsTemp = dgvProduct.Rows.Cast<DataGridViewRow>().ToList();
|
||||
rowsTemp.Reverse();
|
||||
}).Wait();
|
||||
}
|
||||
|
||||
public void GetProductSim(string listUrl, string referrerUrl, Dictionary<string, string> headers, string firstPageData = "", string campaign_start_time = "", string campaign_end_time = "")
|
||||
{
|
||||
ShowVisitorMessage("");
|
||||
foreach (DataGridViewRow r in dgvProduct.Rows)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
r.Cells["colStock"].Value = "获取中";
|
||||
r.Cells["colMessage"].Value = "";
|
||||
}));
|
||||
}
|
||||
|
||||
ShowVisitorMessage("正在准备获取商品");
|
||||
int total = -1;
|
||||
int number = 0;
|
||||
string result = "";
|
||||
if (!string.IsNullOrEmpty(firstPageData))
|
||||
result = firstPageData;
|
||||
|
||||
referrerUrl = "https://fxg.jinritemai.com/market/center/tools/moneyoff";
|
||||
_underline = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_underline))
|
||||
_underline = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)");
|
||||
if (string.IsNullOrEmpty(_underline))
|
||||
_underline = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now).ToString();
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl, "&_signature=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_signature))
|
||||
{
|
||||
var listUrl2 = listUrl + "&";
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl2, "&_signature=([\\s\\S]+?)&");
|
||||
}
|
||||
listUrl = "https://fxg.jinritemai.com/marketing/activity/v1/query_product?name=&page=1&pageSize=15&start_time=" + BaseClass.DateTimeToTimestampSeconds(campaign_start_time.ParseToDateTime()) + "&end_time=" + BaseClass.DateTimeToTimestampSeconds(campaign_end_time.ParseToDateTime()) + "&_bid=ecom_market_shop&appid=1&_=" + _underline + "&_signature=" + _signature;
|
||||
|
||||
for (int i = 1; i < 9999; i++)
|
||||
{
|
||||
if (i == 666)
|
||||
{
|
||||
}
|
||||
result = "";
|
||||
number += 15;
|
||||
for (int j = 0; j < 3 && !result.Contains("\"st\":0"); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
if (headers.ContainsKey("Accept"))
|
||||
simRequest.Accept = headers["Accept"];
|
||||
if (headers.ContainsKey("UserAgent"))
|
||||
simRequest.UserAgent = headers["UserAgent"];
|
||||
|
||||
var cookie = shop.Cookies;
|
||||
var rUrl = listUrl.Replace("page=1", "page=" + i);
|
||||
int pageSize = 15;
|
||||
if (number > 10000)
|
||||
{
|
||||
pageSize = 15 - (number - 10000);
|
||||
if (pageSize < 0)
|
||||
pageSize = 0;
|
||||
rUrl = rUrl.Replace("pageSize=15", "pageSize=" + pageSize);
|
||||
}
|
||||
result = simRequest.Request_Get(rUrl, referrerUrl, new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
}
|
||||
ShowVisitorMessage("正在获取商品第" + i + "页");
|
||||
}
|
||||
|
||||
if (result.Contains("\"st\":0") && !fullMinusForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.isGetProductSuccess = true;
|
||||
if (total == -1)
|
||||
total = BaseRegex.GetIntJson(ref result, "total");
|
||||
|
||||
int totalPage = Math.Ceiling(total / 15M).ParseToInt();
|
||||
string message = "正在获取商品第" + i + "页,共" + totalPage + "页";
|
||||
ShowVisitorMessage("");
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = message;
|
||||
this.statusBar.pgbTaskProgress.Value = i;
|
||||
this.statusBar.pgbTaskProgress.Text = i + "/" + totalPage;
|
||||
this.statusBar.pgbTaskProgress.Maximum = totalPage;
|
||||
}));
|
||||
|
||||
try
|
||||
{
|
||||
var jObj = JObject.Parse(result);
|
||||
var pList = JsonHelper.DeserializeJsonToList<DouProductPromotionListInfo>(jObj["data"]["data"]?.ToString());
|
||||
|
||||
foreach (var product in pList)
|
||||
{
|
||||
if (product.allow == false)
|
||||
continue;
|
||||
|
||||
if (productList.Any(p => p.product_id == product.product_id))
|
||||
productList.RemoveAll(p => p.product_id == product.product_id);
|
||||
productList.Add(product);
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (this.dgvProduct.Rows.Count >= productList.Count)
|
||||
{
|
||||
DataGridViewRow row = dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(x => x.Cells["colProductId"].Value.ToString() == product.product_id);
|
||||
if (row != null)
|
||||
{
|
||||
row.Cells["colStock"].Value = product.stock_num;
|
||||
row.Cells["colMessage"].Value = "";
|
||||
}
|
||||
else
|
||||
dgvProduct.Rows.Add(false, product.product_id, product.name, product.stock_num,
|
||||
product.min_price / 100M + " - " + product.max_price / 100M);
|
||||
}
|
||||
else
|
||||
dgvProduct.Rows.Add(false, product.product_id, product.name, product.stock_num,
|
||||
product.min_price / 100M + " - " + product.max_price / 100M);
|
||||
}));
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
isGetProductSuccess = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
isGetProductSuccess = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (number >= total)
|
||||
break;
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (fullMinusForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取中断";
|
||||
}
|
||||
else if (!isGetProductSuccess)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取商品信息失败";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取完成";
|
||||
}
|
||||
//this.statusBar.pgbTaskProgress.Value = 0;
|
||||
//this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
||||
//this.statusBar.pgbTaskProgress.Maximum = 0;
|
||||
}));
|
||||
}
|
||||
|
||||
private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
long ProductId = dgvProduct.Rows[e.RowIndex].Cells["colProductId"].Value.ParseToLong();
|
||||
var row = dgvProduct.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
if (dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool())
|
||||
lstProductId.Add(ProductId.ToString());
|
||||
else
|
||||
lstProductId.Remove(ProductId.ToString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearData()
|
||||
{
|
||||
this.productList.Clear();
|
||||
this.lstProductId.Clear();
|
||||
this.dgvProduct.Rows.Clear();
|
||||
}
|
||||
|
||||
public string checkFullDiscountActivity(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/marketing/activity/v1/check_full_discount_activity?_bid=ecom_market_shop&appid=1&_=" + _underline + "&_signature=" + _signature;
|
||||
string result = request.Request_PostByBigLength(reqUrl, "https://fxg.jinritemai.com/market/center/tools/moneyoffCreate?refer=1&newFeature=true", dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string createFullDiscountActivity(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/marketing/activity/v1/create_full_discount_activity?_bid=ecom_market_shop&appid=1&_=" + _underline + "&_signature=" + _signature;
|
||||
string result = request.Request_PostByBigLength(reqUrl, "https://fxg.jinritemai.com/market/center/tools/moneyoffCreate?refer=1&newFeature=true", dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void RefreshdgvProduct(List<string> strList)
|
||||
{
|
||||
if (strList != null && strList.Count > 0)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
for (int i = 0; i < dgvProduct.Rows.Count; i++)
|
||||
{
|
||||
DataGridViewRow row = dgvProduct.Rows[i];
|
||||
long ActiveId = row.Cells["colProductId"].Value.ParseToLong();
|
||||
if (strList.Any(p => p == ActiveId.ToString()))
|
||||
{
|
||||
dgvProduct.Rows.Remove(row);
|
||||
lstProductId.Remove(ActiveId.ToString());
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<?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="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colStock.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
+131
@@ -0,0 +1,131 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class GroupBuyCustomActivityNameForm
|
||||
{
|
||||
/// <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(GroupBuyCustomActivityNameForm));
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.labelX1 = new DevComponents.DotNetBar.LabelX();
|
||||
this.textBoxX1 = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.btnSave = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.White;
|
||||
this.panel2.Controls.Add(this.labelX1);
|
||||
this.panel2.Controls.Add(this.textBoxX1);
|
||||
this.panel2.Controls.Add(this.btnSave);
|
||||
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(383, 416);
|
||||
this.panel2.TabIndex = 1;
|
||||
//
|
||||
// labelX1
|
||||
//
|
||||
this.labelX1.AutoSize = true;
|
||||
//
|
||||
//
|
||||
//
|
||||
this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.labelX1.ForeColor = System.Drawing.Color.Gray;
|
||||
this.labelX1.Location = new System.Drawing.Point(16, 11);
|
||||
this.labelX1.Name = "labelX1";
|
||||
this.labelX1.Size = new System.Drawing.Size(359, 18);
|
||||
this.labelX1.TabIndex = 462;
|
||||
this.labelX1.Text = "请输入自定义活动名称,一行一个(长度1-5个字,必须为中文):";
|
||||
//
|
||||
// textBoxX1
|
||||
//
|
||||
this.textBoxX1.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.textBoxX1.Border.Class = "TextBoxBorder";
|
||||
this.textBoxX1.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.textBoxX1.Location = new System.Drawing.Point(16, 35);
|
||||
this.textBoxX1.Multiline = true;
|
||||
this.textBoxX1.Name = "textBoxX1";
|
||||
this.textBoxX1.PreventEnterBeep = true;
|
||||
this.textBoxX1.Size = new System.Drawing.Size(351, 338);
|
||||
this.textBoxX1.TabIndex = 461;
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSave.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSave.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSave.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSave.Location = new System.Drawing.Point(309, 379);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(58, 23);
|
||||
this.btnSave.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSave.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSave.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSave.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSave.Style.GradientAngle = 90;
|
||||
this.btnSave.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.TabIndex = 460;
|
||||
this.btnSave.Text = "保存";
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// GroupBuyCustomActivityNameForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(385, 450);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "GroupBuyCustomActivityNameForm";
|
||||
this.Text = "自定义拼团活动名称";
|
||||
this.TitleText = "自定义拼团活动名称";
|
||||
this.Controls.SetChildIndex(this.panel2, 0);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private DevComponents.DotNetBar.LabelX labelX1;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX textBoxX1;
|
||||
private DevComponents.DotNetBar.PanelEx btnSave;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util;
|
||||
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 LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class GroupBuyCustomActivityNameForm : LRBaseForm
|
||||
{
|
||||
public GroupBuyCustomActivityNameForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Load += GroupBuyCustomActivityNameForm_Load;
|
||||
}
|
||||
|
||||
private void GroupBuyCustomActivityNameForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.textBoxX1.Text = string.Join("\r\n", GroupBuyForm.CustomActivityNames) + "\r\n";
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
GroupBuyForm.CustomActivityNames = this.textBoxX1.Text.Trim().Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig<List<string>>("group_buy_custom_names", GroupBuyForm.CustomActivityNames);
|
||||
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>
|
||||
AAABAAEAgIAQcgAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
|
||||
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>
|
||||
+1446
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,902 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using CefSharp;
|
||||
using CefSharp.WinForms;
|
||||
using LittleRabbit.Extension;
|
||||
using LittleRabbit.Helper;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using LittleRabbit.LittleRabbitForms.ShopForms;
|
||||
using NaiBa.CefHelper;
|
||||
using NaiBa.CefHelper.Handler;
|
||||
using NaiBa.Util;
|
||||
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.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class GroupBuyForm : Form
|
||||
{
|
||||
public static List<string> CustomActivityNames = new List<string>();
|
||||
|
||||
private CheckBox chkSelectAll = null;
|
||||
public ChromiumWebBrowser webBrowser = null;
|
||||
private List<string> lstShopId = new List<string>();
|
||||
public List<string> keywords = null;
|
||||
public List<string> filterWords = null;
|
||||
public decimal priceMin;
|
||||
public decimal priceMax;
|
||||
public int saleMin;
|
||||
public int saleMax;
|
||||
public int getPage;
|
||||
|
||||
public CancellationTokenSource cancellationTokenSource = null;
|
||||
|
||||
public GroupBuyForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void GroupBuyFrom_Load(object sender, EventArgs e)
|
||||
{
|
||||
dtpStartTime.Value = DateTime.Now;
|
||||
dtpEndTime.Value = dtpStartTime.Value.AddDays(1);
|
||||
|
||||
CustomActivityNames = NaiBa.Util.Helper.ConfigHelper.LoadConfig<List<string>>("group_buy_custom_names");
|
||||
if (CustomActivityNames == null)
|
||||
{
|
||||
CustomActivityNames = new List<string>();
|
||||
}
|
||||
|
||||
for (int i = 1; i <= 20; i++)
|
||||
{
|
||||
this.cmbLimitCount.Items.Add(i + "个");
|
||||
}
|
||||
this.cmbLimitCount.SelectedIndex = 0;
|
||||
this.cmbCancelTime.SelectedIndex = 1;
|
||||
this.cmbStockType.SelectedIndex = 1;
|
||||
this.cmbDiscountType.SelectedIndex = 0;
|
||||
this.cmbSkuOptionType.SelectedIndex = 0;
|
||||
|
||||
this.ucTabControl1.TabPages.Clear();
|
||||
|
||||
chkSelectAll = dgvShop.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
dgvShop.Columns["colSelect"].HeaderText = "";
|
||||
chkSelectAll.Width = chkSelectAll.Height = 13;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
|
||||
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!chkSelectAll.Checked)
|
||||
{
|
||||
lstShopId.Clear();
|
||||
foreach (DataGridViewRow row in dgvShop.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lstShopId.Clear();
|
||||
var list = GlobalConfig.DouShopLoginList.Where(s => s.ApiAuthStatus == "授权成功" && s.LoginStatus == "登录成功").Select(ss => ss.ShopAccountId);
|
||||
lstShopId.AddRange(list);
|
||||
foreach (DataGridViewRow row in dgvShop.Rows)
|
||||
{
|
||||
if (list.Any(l => l == row.Cells["colShopId"]?.Value?.ToString()))
|
||||
row.Cells["colSelect"].Value = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void chkAutoGroup_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void cmbDiscountType_SelectedValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void GroupBuyForm_VisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Visible == true)
|
||||
RefreshShop();
|
||||
}
|
||||
|
||||
private void btnRefreshShop_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshShop();
|
||||
}
|
||||
|
||||
|
||||
private void RefreshShop()
|
||||
{
|
||||
// 更新选中的上货店铺Id
|
||||
lstShopId = lstShopId.Where(id => GlobalConfig.DouShopLoginList.Any(s => s.ShopAccountId == id && s.LoginStatus == "已授权")).ToList();
|
||||
// 获取被删除的店铺
|
||||
List<DataGridViewRow> dgvRowList = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
|
||||
=> !GlobalConfig.DouShopLoginList.Any(s => s.ShopAccountId == row.Cells["colShopId"]?.Value?.ToString())).ToList();
|
||||
// 更新被删除的店铺列表
|
||||
foreach (var row in dgvRowList)
|
||||
{
|
||||
dgvShop.Rows.Remove(row);
|
||||
}
|
||||
// 绑定其他店铺(含新导入的店铺)
|
||||
foreach (DouShopLoginInfo shopEntity in GlobalConfig.DouShopLoginList)
|
||||
{
|
||||
BindShop(shopEntity);
|
||||
}
|
||||
}
|
||||
|
||||
private void BindShop(DouShopLoginInfo shopEntity)
|
||||
{
|
||||
if (shopEntity == null)
|
||||
return;
|
||||
|
||||
bool canUse = shopEntity.ApiAuthStatus == "授权成功" && shopEntity.LoginStatus == "登录成功";
|
||||
var row = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(p => p.Cells.GetCellValueFromColumnName("colShopId").ParseToString() == shopEntity.ShopAccountId);
|
||||
if (row == null)
|
||||
{
|
||||
this.dgvShop.Rows.Add(
|
||||
lstShopId.Contains(shopEntity.ShopAccountId) && canUse,
|
||||
shopEntity.ShopAccountId,
|
||||
shopEntity.ShopAccount,
|
||||
shopEntity.ApiAuthStatus,
|
||||
shopEntity.LoginStatus,
|
||||
canUse,
|
||||
string.Empty
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Cells["colSelect"].Value = lstShopId.Contains(shopEntity.ShopAccountId) && canUse;
|
||||
row.Cells["colShopName"].Value = shopEntity.ShopAccount;
|
||||
row.Cells["colAuthStatus"].Value = shopEntity.ApiAuthStatus;
|
||||
row.Cells["colLoginStatus"].Value = shopEntity.LoginStatus;
|
||||
row.Cells["colCanUse"].Value = canUse;
|
||||
}
|
||||
}
|
||||
|
||||
private void cmbDiscountType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cmbDiscountType.Text == "打折")
|
||||
{
|
||||
nudDiscountValue.Maximum = 9.9m;
|
||||
nudDiscountValue.Minimum = 0.1m;
|
||||
nudDiscountValue.Increment = 0.1m;
|
||||
nudDiscountValue.DecimalPlaces = 1;
|
||||
nudDiscountValue.Value = 9.9m;
|
||||
}
|
||||
else if (cmbDiscountType.Text == "直降")
|
||||
{
|
||||
nudDiscountValue.Maximum = 10000m;
|
||||
nudDiscountValue.Minimum = 0.00m;
|
||||
nudDiscountValue.Increment = 1m;
|
||||
nudDiscountValue.DecimalPlaces = 2;
|
||||
nudDiscountValue.Value = 1m;
|
||||
}
|
||||
else if (cmbDiscountType.Text == "一口价")
|
||||
{
|
||||
BaseMsgForm.ShowInfo("确定所有商品及Sku价格都按照统一价格设置,请谨慎操作!");
|
||||
nudDiscountValue.Maximum = 10000m;
|
||||
nudDiscountValue.Minimum = 0.00m;
|
||||
nudDiscountValue.Increment = 1m;
|
||||
nudDiscountValue.DecimalPlaces = 2;
|
||||
nudDiscountValue.Value = 100m;
|
||||
}
|
||||
}
|
||||
|
||||
private void cmbStockType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (cmbStockType.Text == "全部库存")
|
||||
{
|
||||
nudStockValue.Enabled = false;
|
||||
nudStockValue.Value = 100;
|
||||
nudStockValue.Width = 48;
|
||||
lblPercentSign.Visible = true;
|
||||
}
|
||||
else if (cmbStockType.Text == "百分比库存")
|
||||
{
|
||||
nudStockValue.Enabled = true;
|
||||
nudStockValue.Maximum = 100m;
|
||||
nudStockValue.Minimum = 1m;
|
||||
nudStockValue.Increment = 1m;
|
||||
nudStockValue.DecimalPlaces = 0;
|
||||
nudStockValue.Value = 50m;
|
||||
nudStockValue.Width = 48;
|
||||
lblPercentSign.Visible = true;
|
||||
}
|
||||
else if (cmbStockType.Text == "统一库存")
|
||||
{
|
||||
nudStockValue.Enabled = true;
|
||||
nudStockValue.Maximum = 10000m;
|
||||
nudStockValue.Minimum = 1m;
|
||||
nudStockValue.Increment = 1m;
|
||||
nudStockValue.DecimalPlaces = 0;
|
||||
nudStockValue.Value = 100m;
|
||||
nudStockValue.Width = 65;
|
||||
lblPercentSign.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnGetProduct_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lstShopId.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择店铺!");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
this.keywords = txtProductName.Text.Trim().Split(new string[] { "\r", "\n", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
this.filterWords = txtFilter.Text.Trim().Split(new string[] { "\r", "\n", ",", "," }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
this.priceMin = txtPriceMin.Text.ParseToDecimal();
|
||||
this.priceMax = txtPriceMax.Text.ParseToDecimal();
|
||||
this.saleMin = txtSaleMin.Text.ParseToInt();
|
||||
this.saleMax = txtSaleMax.Text.ParseToInt();
|
||||
this.getPage = txtGetPage.Text.ParseToInt();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseMsgForm.ShowError("请正确填写搜索参数!");
|
||||
return;
|
||||
}
|
||||
|
||||
btnGetProduct.Enabled = false;
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var shopId in lstShopId)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.ShopAccountId == shopId);
|
||||
if (shop == null)
|
||||
continue;
|
||||
|
||||
if (ShopListForm.Instance == null)
|
||||
ShopListForm.Instance = new ShopListForm();
|
||||
ShopListForm.Instance.CheckShopLogin(new string[] { shop.ShopAccount }, false);
|
||||
if (shop.LoginStatus != "登录成功")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var row = this.dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ToString() == shop.ShopAccountId);
|
||||
if (row != null)
|
||||
{
|
||||
row.Cells["colLoginStatus"].Value = "未登录";
|
||||
row.Cells["colCanUse"].Value = false;
|
||||
}
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
|
||||
GroupBuyShopForm groupBuyShopForm = null;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var tab = this.ucTabControl1.TabPages.Cast<TabPage>().FirstOrDefault(t => t.Text == shop.ShopAccount && t.Name == "tab" + shop.ShopAccountId);
|
||||
if (tab == null)
|
||||
{
|
||||
tab = new TabPage();
|
||||
tab.Name = "tab" + shop.ShopAccountId;
|
||||
tab.Text = shop.ShopAccount;
|
||||
this.ucTabControl1.TabPages.Add(tab);
|
||||
|
||||
var form = new GroupBuyShopForm(shop);
|
||||
form.groupBuyForm = this;
|
||||
form.TopLevel = false;
|
||||
form.Left = 0;
|
||||
form.Top = 0;
|
||||
form.FormBorderStyle = FormBorderStyle.None;
|
||||
form.AutoSize = true;
|
||||
form.Dock = DockStyle.Fill;
|
||||
form.Show();
|
||||
tab.Controls.Add(form);
|
||||
}
|
||||
|
||||
if (tab.Controls.Count > 0)
|
||||
{
|
||||
groupBuyShopForm = tab.Controls[0] as GroupBuyShopForm;
|
||||
this.ucTabControl1.SelectedTab = tab;
|
||||
}
|
||||
}));
|
||||
|
||||
if (groupBuyShopForm != null)
|
||||
{
|
||||
groupBuyShopForm.InitGetProduct();
|
||||
GetProductByCef(shop);
|
||||
}
|
||||
}
|
||||
Invoke(new Action(() => { btnGetProduct.Enabled = true; }));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
public void GetSales(DouShopLoginInfo shop, bool isSales = true)
|
||||
{
|
||||
if (webBrowser == null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
webBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
|
||||
webBrowser.KeyboardHandler = new KeyboardHandler();
|
||||
webBrowser.Dock = DockStyle.Fill;
|
||||
Helper.CustomResourceRequestHandlerLocal resourceRequestHandler = new Helper.CustomResourceRequestHandlerLocal();
|
||||
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadCompleteEvent;
|
||||
webBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
|
||||
webBrowser.LifeSpanHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
|
||||
webBrowser.SendToBack();
|
||||
this.splitContainer1.Panel2.Controls.Add(webBrowser);
|
||||
}));
|
||||
}
|
||||
|
||||
while (webBrowser.Tag != null)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
}
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
webBrowser.Tag = shop;
|
||||
|
||||
while (!webBrowser.IsBrowserInitialized || webBrowser.IsLoading)
|
||||
continue;
|
||||
|
||||
var cookie = shop.Cookies;
|
||||
CEFBrowser.DeleteCookie(webBrowser.RequestContext.GetCookieManager(null));
|
||||
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, webBrowser.RequestContext.GetCookieManager(null));
|
||||
t.Wait(2000);
|
||||
Thread.Sleep(500);
|
||||
|
||||
var targetUrl = "https://fxg.jinritemai.com/ffa/g/list";
|
||||
webBrowser.Load(targetUrl);
|
||||
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(3000);
|
||||
|
||||
if (!isSales)
|
||||
{
|
||||
Thread.Sleep(3000);
|
||||
var jsStrBase = "function clickProductAnalysis(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_element';\r\n"
|
||||
+ "}\r\n";
|
||||
var jsStr = jsStrBase + "clickProductAnalysis('电商罗盘');\r\n";
|
||||
t = webBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
|
||||
t.Wait();
|
||||
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2500));
|
||||
|
||||
jsStr = jsStrBase + "clickProductAnalysis('商品概览');\r\n";
|
||||
t = webBrowser.GetMainFrame().EvaluateScriptAsync(jsStr);
|
||||
t.Wait();
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2500));
|
||||
}
|
||||
while (webBrowser.Tag != null)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
}
|
||||
Thread.Sleep(3000);
|
||||
}
|
||||
|
||||
public void GetProductByCef(DouShopLoginInfo shop)
|
||||
{
|
||||
if (webBrowser == null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
webBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", false);
|
||||
webBrowser.KeyboardHandler = new KeyboardHandler();
|
||||
webBrowser.Dock = DockStyle.Fill;
|
||||
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
|
||||
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadCompleteEvent;
|
||||
webBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
|
||||
webBrowser.LifeSpanHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
|
||||
webBrowser.SendToBack();
|
||||
this.splitContainer1.Panel2.Controls.Add(webBrowser);
|
||||
}));
|
||||
}
|
||||
|
||||
while (webBrowser.Tag != null)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
}
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
webBrowser.Tag = shop;
|
||||
|
||||
while (!webBrowser.IsBrowserInitialized || webBrowser.IsLoading)
|
||||
continue;
|
||||
|
||||
var cookie = shop.Cookies;
|
||||
CEFBrowser.DeleteCookie(webBrowser.RequestContext.GetCookieManager(null));
|
||||
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, webBrowser.RequestContext.GetCookieManager(null));
|
||||
t.Wait(2000);
|
||||
Thread.Sleep(500);
|
||||
|
||||
var targetUrl = "https://fxg.jinritemai.com/ffa/g/list";
|
||||
webBrowser.Load(targetUrl);
|
||||
|
||||
while (webBrowser.IsLoading)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
Thread.Sleep(3000);
|
||||
|
||||
while (webBrowser.Tag != null)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
}
|
||||
Thread.Sleep(3000);
|
||||
}
|
||||
|
||||
private void RequestHandler_ResourceLoadCompleteEvent(object sender, string url, string postData, string responseData, CefSharp.IRequest iRequest)
|
||||
{
|
||||
if (url.StartsWith("https://fxg.jinritemai.com/product/tproduct/list?page=0") && url.Contains("&pay_type="))
|
||||
{
|
||||
if (webBrowser.Tag != null)
|
||||
{
|
||||
var listUrl = url;
|
||||
var referrerUrl = iRequest.ReferrerUrl;
|
||||
var result = responseData;
|
||||
|
||||
Dictionary<string, string> headers = new Dictionary<string, string>();
|
||||
foreach (var hk in iRequest.Headers.AllKeys)
|
||||
{
|
||||
headers[hk] = iRequest.Headers[hk];
|
||||
}
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
var cookies = CEFBrowser.GetCookie("", webBrowser.RequestContext.GetCookieManager(null));
|
||||
GroupBuyShopForm salesForm = null;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var shop = webBrowser.Tag as DouShopLoginInfo;
|
||||
var tab = this.ucTabControl1.TabPages.Cast<TabPage>().FirstOrDefault(t => t.Text == shop.ShopAccount && t.Name == "tab" + shop.ShopAccountId);
|
||||
salesForm = tab.Controls[0] as GroupBuyShopForm;
|
||||
}));
|
||||
|
||||
if (salesForm != null)
|
||||
salesForm.GetProductSim(listUrl, referrerUrl, headers, "");
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
webBrowser.Tag = null;
|
||||
}));
|
||||
Thread.Sleep(1000);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnSetName_Click(object sender, EventArgs e)
|
||||
{
|
||||
GroupBuyCustomActivityNameForm customNameForm = new GroupBuyCustomActivityNameForm();
|
||||
customNameForm.ShowDialog();
|
||||
}
|
||||
|
||||
private void label14_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.webBrowser != null)
|
||||
{
|
||||
webBrowser.SendToBack();
|
||||
}
|
||||
}
|
||||
|
||||
private void label14_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
if (this.webBrowser != null)
|
||||
{
|
||||
webBrowser.BringToFront();
|
||||
}
|
||||
}
|
||||
|
||||
private void btnStopGetProduct_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cancellationTokenSource != null)
|
||||
cancellationTokenSource.Cancel();
|
||||
webBrowser.Tag = null;
|
||||
}
|
||||
|
||||
private void dgvShop_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string headerText = dgvShop.Columns[e.ColumnIndex].HeaderText;
|
||||
string columnName = dgvShop.Columns[e.ColumnIndex].Name;
|
||||
long shopId = dgvShop.Rows[e.RowIndex].Cells["colShopId"].Value.ParseToLong();
|
||||
string shopName = dgvShop.Rows[e.RowIndex].Cells["colShopId"].Value.ToString();
|
||||
var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.ShopAccountId == shopId.ToString());
|
||||
var row = dgvShop.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
if (row.Cells["colCanUse"].Value.ParseToBool())
|
||||
{
|
||||
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
if (dgvShop.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool())
|
||||
{
|
||||
if (lstShopId.Any(p => p == shopId.ToString()))
|
||||
lstShopId.RemoveAll(p => p == shopId.ToString());
|
||||
lstShopId.Add(shopId.ToString());
|
||||
}
|
||||
else
|
||||
lstShopId.Remove(shopId.ToString());
|
||||
if (dgvShop.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
chkSelectAll.Checked = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseMsgForm.ShowInfo("店铺未授权或未登录!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnSetActivity_Click(object sender, EventArgs e)
|
||||
{
|
||||
// 每个活动商品数量
|
||||
var eachActivityProductNum = nudEachActivityProductNum.Text.ParseToInt();
|
||||
// 是否使用自定义活动名称
|
||||
var isUseCustomActivityNames = rbCustomNames.Checked;
|
||||
// 自定义活动名称临时列表
|
||||
List<string> customNamesTemp = new List<string>(CustomActivityNames);
|
||||
if (rbCustomNames.Checked && customNamesTemp.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请设置自定义活动名称!");
|
||||
return;
|
||||
}
|
||||
// 开始时间
|
||||
var startTime = dtpStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
// 结束时间
|
||||
var endTime = dtpEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
// 订单取消时间
|
||||
var orderExpireTime = cmbCancelTime.Text.Replace("分钟", "").ParseToInt() * 60;
|
||||
// 成团数量
|
||||
var groupNum = nudGroupCount.Value.ToString();
|
||||
if (nudGroupCount.Value < 5)
|
||||
{
|
||||
nudGroupCount.Value = 5;
|
||||
BaseMsgForm.ShowError("成团数量需大于等于5,已为您自动修改");
|
||||
return;
|
||||
}
|
||||
// 自动成团
|
||||
var autoGroup = this.chkAutoGroup.Checked ? "1" : "0";
|
||||
// 设置单个sku
|
||||
var isSetSkuOption = this.chkSetSkuOption.Checked;
|
||||
var skuOptionType = this.cmbSkuOptionType.Text;
|
||||
// 库存类型
|
||||
var stockType = this.cmbStockType.Text;
|
||||
// 库存数量
|
||||
var stockValue = nudStockValue.Text.ParseToInt();
|
||||
// 每人限购
|
||||
var userLimit = this.cmbLimitCount.Text.Replace("个", "").Replace("不限购", "0");
|
||||
// 折扣类型
|
||||
var discountType = this.cmbDiscountType.Text;
|
||||
// 折扣数值
|
||||
var discountValue = this.nudDiscountValue.Text.ParseToDecimal();
|
||||
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var shopId in lstShopId)
|
||||
{
|
||||
var shop = GlobalConfig.DouShopLoginList.FirstOrDefault(s => s.ShopAccountId == shopId);
|
||||
if (shop == null)
|
||||
continue;
|
||||
|
||||
if (ucTabControl1.TabPages["tab" + shopId] != null && ucTabControl1.TabPages["tab" + shopId].Controls.Count > 0)
|
||||
{
|
||||
var salesForm = ucTabControl1.TabPages["tab" + shopId].Controls[0] as GroupBuyShopForm;
|
||||
if (salesForm == null)
|
||||
continue;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
salesForm.statusBar.lblTaskStatus.Text = "正在创建拼团活动";
|
||||
}));
|
||||
|
||||
List<string> productIdList = salesForm.lstProductId;
|
||||
if (productIdList.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择店铺 " + shop.ShopAccount + " 参加活动的商品!");
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
List<string> pIdListTemp = new List<string>();
|
||||
for (int i = 0; i < productIdList.Count; i++)
|
||||
{
|
||||
var pid = productIdList[i];
|
||||
pIdListTemp.Add(pid);
|
||||
if ((i + 1) % eachActivityProductNum == 0 || i == productIdList.Count - 1)
|
||||
{
|
||||
var pIdsStrTemp = "\"" + string.Join("\",\"", pIdListTemp) + "\"";
|
||||
pIdListTemp.Clear();
|
||||
|
||||
#region 获取活动商品的所有Sku
|
||||
string pIdData = @"{ ""product_ids"":[" + pIdsStrTemp + "]}";
|
||||
var cookies = shop.Cookies;
|
||||
var result = salesForm.GetSkusByProductIds(pIdData, cookies);
|
||||
#endregion
|
||||
|
||||
#region 生成活动名称
|
||||
string activityId = Math.Ceiling((i + 1m) / eachActivityProductNum).ToString();
|
||||
activityId = activityId.Replace("1", "一").Replace("2", "二").Replace("3", "三").Replace("4", "四").Replace("5", "五");
|
||||
activityId = activityId.Replace("6", "六").Replace("7", "七").Replace("8", "八").Replace("9", "九").Replace("0", "零");
|
||||
var actvityName = "活动" + activityId;
|
||||
|
||||
#region 自定义活动
|
||||
if (isUseCustomActivityNames)
|
||||
{
|
||||
if (customNamesTemp != null && customNamesTemp.Count > 0)
|
||||
{
|
||||
actvityName = customNamesTemp[0];
|
||||
customNamesTemp.RemoveAt(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Invoke(new Action(() => { salesForm.ShowVisitorMessage("活动创建中断,自定义名称活动数量不足!"); }));
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
//string postData = "{\"stype\":\"120\",\"title\":\"活动一\",
|
||||
//\"begin_time\":\"2022-06-23 13:49:54\",\"end_time\":\"2022-06-24 13:49:54\",\"order_expire_time\":\"300\",
|
||||
//\"group_num\":\"9\",\"auto_group\":\"1\",\"promotion_goods\":[
|
||||
//{\"product_id\":\"3556136493124815095\",\"promotion_skus\":[
|
||||
// {\"camp_stock_num\":\"33\",\"id\":\"1736394771542030\",\"price\":\"27100\",\"user_limit\":\"19\",\"spec_detail_id1\":\"1736394770390024\",\"spec_detail_id2\":\"1736394770391096\",\"spec_detail_id3\":\"0\"},{\"camp_stock_num\":\"44\",\"id\":\"1736394771275831\",\"price\":\"26100\",\"user_limit\":\"14\",\"spec_detail_id1\":\"1736394770390024\",\"spec_detail_id2\":\"1736394770391080\",\"spec_detail_id3\":\"0\"}]},{\"product_id\":\"3554645628321712559\",\"promotion_skus\":[{\"camp_stock_num\":\"11\",\"id\":\"1735666808135704\",\"price\":\"3700\",\"user_limit\":\"0\",\"spec_detail_id1\":\"1735666809832616\",\"spec_detail_id2\":\"0\",\"spec_detail_id3\":\"0\"},{\"camp_stock_num\":\"22\",\"id\":\"1735666808135688\",\"price\":\"4100\",\"user_limit\":\"0\",\"spec_detail_id1\":\"1735666809832600\",\"spec_detail_id2\":\"0\",\"spec_detail_id3\":\"0\"}]}]}";
|
||||
var postData = "{\"stype\":\"120\",\"title\":\"" + actvityName + "\"," +
|
||||
"\"begin_time\":\"" + startTime + "\",\"end_time\":\"" + endTime + "\",\"order_expire_time\":\"" + orderExpireTime + "\"," +
|
||||
"\"group_num\":\"" + groupNum + "\",\"auto_group\":\"" + autoGroup + "\",\"promotion_goods\":[";
|
||||
|
||||
JObject jObj = JObject.Parse(result);
|
||||
foreach (JProperty jProp in jObj["data"])
|
||||
{
|
||||
var id = jProp.Name;
|
||||
DouProductPromotionListInfo info = salesForm.productList.FirstOrDefault(q => q.product_id == id);
|
||||
if (info != null)
|
||||
{
|
||||
postData = postData + "{\"product_id\":\"" + id + "\",\"promotion_skus\":[";
|
||||
if (isSetSkuOption)
|
||||
{
|
||||
JArray arr = jObj["data"][id] as JArray;
|
||||
var objs = new List<JToken>() { arr.FirstOrDefault(o => o["stock"]?.ParseToInt() > 0) };
|
||||
if (skuOptionType == "最后一个")
|
||||
objs = new List<JToken>() { arr.LastOrDefault(o => o["stock"]?.ParseToInt() > 0) };
|
||||
if (skuOptionType == "最贵")
|
||||
objs = new List<JToken>() { arr.OrderBy(o => o["origin_price"]).LastOrDefault(o => o["stock"]?.ParseToInt() > 0) };
|
||||
if (skuOptionType == "最便宜")
|
||||
objs = new List<JToken>() { arr.OrderBy(o => o["origin_price"]).FirstOrDefault(o => o["stock"]?.ParseToInt() > 0) };
|
||||
if (skuOptionType == "不设置最便宜")
|
||||
{
|
||||
objs = arr.OrderBy(o => o["origin_price"]).Skip(1).ToList();
|
||||
}
|
||||
if (skuOptionType == "不设置最贵")
|
||||
{
|
||||
objs = arr.OrderBy(o => o["origin_price"]).Take(objs.Count).ToList();
|
||||
}
|
||||
foreach (var obj in objs)
|
||||
{
|
||||
var totalStock = obj["stock"].ParseToInt();
|
||||
var stock = totalStock;
|
||||
if (stockType == "百分比库存")
|
||||
{
|
||||
stock = stockValue * totalStock / 100;
|
||||
}
|
||||
else if (stockType == "统一库存")
|
||||
{
|
||||
stock = stockValue;
|
||||
}
|
||||
if (stock <= groupNum.ParseToInt())
|
||||
stock = groupNum.ParseToInt();
|
||||
if (stock > totalStock)
|
||||
stock = totalStock;
|
||||
if (stock < 5) // 跳过库存不足的sku
|
||||
continue;
|
||||
|
||||
var newPrice = obj["origin_price"].ParseToInt() * discountValue / 10; // 打折
|
||||
if (discountType == "直降")
|
||||
{
|
||||
newPrice = obj["origin_price"].ParseToInt() - discountValue * 100;
|
||||
}
|
||||
else if (discountType == "一口价")
|
||||
{
|
||||
newPrice = discountValue * 100;
|
||||
}
|
||||
postData = postData + "{\"camp_stock_num\":\"" + stock +
|
||||
"\",\"id\":\"" + obj["id"] + "\",\"price\":\"" + (int)newPrice +
|
||||
"\",\"user_limit\":\"" + userLimit + "\",\"spec_detail_id1\":\"" + obj["spec_detail_id1"] +
|
||||
"\",\"spec_detail_id2\":\"" + obj["spec_detail_id2"] + "\",\"spec_detail_id3\":\"" + obj["spec_detail_id3"] + "\"},";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
JArray arr = jObj["data"][id] as JArray;
|
||||
foreach (JObject obj in arr)
|
||||
{
|
||||
var totalStock = obj["stock"].ParseToInt();
|
||||
var stock = totalStock;
|
||||
if (stockType == "百分比库存")
|
||||
{
|
||||
stock = stockValue * totalStock / 100;
|
||||
}
|
||||
else if (stockType == "统一库存")
|
||||
{
|
||||
stock = stockValue;
|
||||
}
|
||||
if (stock <= groupNum.ParseToInt())
|
||||
stock = groupNum.ParseToInt();
|
||||
if (stock > totalStock)
|
||||
stock = totalStock;
|
||||
if (stock < 5) // 跳过库存不足的sku
|
||||
continue;
|
||||
|
||||
var newPrice = obj["origin_price"].ParseToInt() * discountValue / 10; // 打折
|
||||
if (discountType == "直降")
|
||||
{
|
||||
newPrice = obj["origin_price"].ParseToInt() - discountValue * 100;
|
||||
}
|
||||
else if (discountType == "一口价")
|
||||
{
|
||||
newPrice = discountValue * 100;
|
||||
}
|
||||
postData = postData + "{\"camp_stock_num\":\"" + stock +
|
||||
"\",\"id\":\"" + obj["id"] + "\",\"price\":\"" + (int)newPrice +
|
||||
"\",\"user_limit\":\"" + userLimit + "\",\"spec_detail_id1\":\"" + obj["spec_detail_id1"] +
|
||||
"\",\"spec_detail_id2\":\"" + obj["spec_detail_id2"] + "\",\"spec_detail_id3\":\"" + obj["spec_detail_id3"] + "\"},";
|
||||
}
|
||||
}
|
||||
postData = postData.TrimEnd(',') + "]},";
|
||||
}
|
||||
}
|
||||
postData = postData.TrimEnd(',') + "]}";
|
||||
|
||||
string checkPro = salesForm.checkGroupBuyGoods(postData, cookies);
|
||||
if (checkPro.Contains("{\"st\":0,\"msg\":\"\",\"code\":0,"))
|
||||
{
|
||||
string createPro = salesForm.createGroupBuyGoods(postData, cookies);
|
||||
if (createPro.Contains("{\"st\":0,\"msg\":\"\",\"code\":0,"))
|
||||
{
|
||||
Invoke(new Action(() => { salesForm.ShowVisitorMessage("活动 " + actvityName + " 创建成功!", pIdsStrTemp); }));
|
||||
}
|
||||
else
|
||||
{
|
||||
Invoke(new Action(() => { salesForm.ShowVisitorMessage(actvityName + "拼团创建失败!原因:" + BaseRegex.GetStringJson(ref createPro, "msg"), pIdsStrTemp); }));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Invoke(new Action(() => { salesForm.ShowVisitorMessage(actvityName + "拼团创建失败!原因:" + BaseRegex.GetStringJson(ref checkPro, "msg"), pIdsStrTemp); }));
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 3500));
|
||||
}
|
||||
}
|
||||
}
|
||||
Invoke(new Action(() => { salesForm.statusBar.lblTaskStatus.Text = "创建拼团活动完成"; }));
|
||||
}
|
||||
}
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
private void dtpStartTime_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (dtpEndTime.Value > dtpStartTime.Value.AddDays(1) || dtpEndTime.Value <= dtpStartTime.Value)
|
||||
dtpEndTime.Value = dtpStartTime.Value.AddDays(1);
|
||||
}
|
||||
|
||||
private void btnClear_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (BaseMsgForm.ShowConfirm("确定要清空结果吗?清空后需要重新获取!").DialogResult == DialogResult.OK)
|
||||
{
|
||||
foreach (TabPage tp in ucTabControl1.TabPages)
|
||||
{
|
||||
if (tp.Controls.Count > 0)
|
||||
{
|
||||
if (tp.Text.Contains("活动管理"))
|
||||
{
|
||||
//var managerActiveForm = tp.Controls[0] as LimitedSalesManagerActiveForm;
|
||||
//if (managerActiveForm != null)
|
||||
// managerActiveForm.ClearData();
|
||||
//if (splitContainer4.Panel1.Controls.Count == 2)
|
||||
// splitContainer4.Panel1.Controls.RemoveAt(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var salesForm = tp.Controls[0] as GroupBuyShopForm;
|
||||
if (salesForm != null)
|
||||
salesForm.ClearData();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnStopOperate_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cancellationTokenSource != null)
|
||||
cancellationTokenSource.Cancel();
|
||||
webBrowser.Tag = null;
|
||||
}
|
||||
|
||||
private void pbPaste1_Click(object sender, EventArgs e)
|
||||
{
|
||||
IDataObject iData = Clipboard.GetDataObject();
|
||||
if (iData != null && iData.GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
txtProductName.Text = (string)iData.GetData(DataFormats.Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void pbPaste2_Click(object sender, EventArgs e)
|
||||
{
|
||||
IDataObject iData = Clipboard.GetDataObject();
|
||||
if (iData != null && iData.GetDataPresent(DataFormats.Text))
|
||||
{
|
||||
txtFilter.Text = (string)iData.GetData(DataFormats.Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void nudGroupCount_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
List<Keys> keyList = new List<Keys>();
|
||||
private void nudGroupCount_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
var x = nudGroupCount.Value;
|
||||
//if (e.KeyData == (Keys.Alt | Keys.Add))
|
||||
//{
|
||||
// this.nudGroupCount.Maximum = 10000m;
|
||||
//}
|
||||
|
||||
if (keyList.LastOrDefault() != e.KeyData)
|
||||
keyList.Clear();
|
||||
|
||||
keyList.Add(e.KeyData);
|
||||
|
||||
if (keyList.Count >= 5 && e.KeyData == (Keys.Menu | Keys.Alt))
|
||||
this.nudGroupCount.Maximum = 10000m;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<?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="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAuthStatus.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="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,906 @@
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class GroupBuyMonitorForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.ucGroupBoxEx2 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.panelEx2 = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.numericUpDown2 = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.cmbSkuOptionType = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.第一个 = new DevComponents.Editors.ComboItem();
|
||||
this.最后一个 = new DevComponents.Editors.ComboItem();
|
||||
this.最便宜 = new DevComponents.Editors.ComboItem();
|
||||
this.最贵 = new DevComponents.Editors.ComboItem();
|
||||
this.不设置最便宜 = new DevComponents.Editors.ComboItem();
|
||||
this.不设置最贵 = new DevComponents.Editors.ComboItem();
|
||||
this.lblPercentSign = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.nudEachActivityProductNum = new System.Windows.Forms.NumericUpDown();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.nudStockValue = new System.Windows.Forms.NumericUpDown();
|
||||
this.cmbDiscountType = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.打折 = new DevComponents.Editors.ComboItem();
|
||||
this.直降 = new DevComponents.Editors.ComboItem();
|
||||
this.一口价 = new DevComponents.Editors.ComboItem();
|
||||
this.cmbStockType = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.全部库存 = new DevComponents.Editors.ComboItem();
|
||||
this.百分比库存 = new DevComponents.Editors.ComboItem();
|
||||
this.统一库存 = new DevComponents.Editors.ComboItem();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.cmbLimitCount = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.不限购 = new DevComponents.Editors.ComboItem();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.nudDiscountValue = new System.Windows.Forms.NumericUpDown();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.nudGroupCount = new System.Windows.Forms.NumericUpDown();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.btnSetActivity = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnStopOperate = new DevComponents.DotNetBar.PanelEx();
|
||||
this.ucGroupBoxEx1 = new LittleRabbit.UserComponent.UcGroupBoxEx(this.components);
|
||||
this.btnRefreshShop = new LittleRabbit.UserControls.ButtonEx();
|
||||
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
this.btnClear = new DevComponents.DotNetBar.PanelEx();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvShop = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colAuthStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colLoginStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.ucGroupBoxEx2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudEachActivityProductNum)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudStockValue)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudDiscountValue)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudGroupCount)).BeginInit();
|
||||
this.ucGroupBoxEx1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
|
||||
this.splitContainer3.Panel1.SuspendLayout();
|
||||
this.splitContainer3.Panel2.SuspendLayout();
|
||||
this.splitContainer3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit();
|
||||
this.splitContainer4.Panel1.SuspendLayout();
|
||||
this.splitContainer4.Panel2.SuspendLayout();
|
||||
this.splitContainer4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.ucGroupBoxEx2);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucGroupBoxEx1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer3);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1246, 552);
|
||||
this.splitContainer1.SplitterDistance = 150;
|
||||
this.splitContainer1.TabIndex = 8;
|
||||
//
|
||||
// ucGroupBoxEx2
|
||||
//
|
||||
this.ucGroupBoxEx2.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.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx2.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx2.Controls.Add(this.panelEx2);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label2);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.numericUpDown2);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label1);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.numericUpDown1);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.checkBox1);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.cmbSkuOptionType);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.lblPercentSign);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label9);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.nudEachActivityProductNum);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label8);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.nudStockValue);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.cmbDiscountType);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.cmbStockType);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label5);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.cmbLimitCount);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label7);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.nudDiscountValue);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label17);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.nudGroupCount);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.label11);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.btnSetActivity);
|
||||
this.ucGroupBoxEx2.Controls.Add(this.btnStopOperate);
|
||||
this.ucGroupBoxEx2.Location = new System.Drawing.Point(147, 2);
|
||||
this.ucGroupBoxEx2.Name = "ucGroupBoxEx2";
|
||||
this.ucGroupBoxEx2.Size = new System.Drawing.Size(1097, 150);
|
||||
this.ucGroupBoxEx2.TabIndex = 469;
|
||||
this.ucGroupBoxEx2.TabStop = false;
|
||||
this.ucGroupBoxEx2.Text = "商品操作";
|
||||
//
|
||||
// panelEx2
|
||||
//
|
||||
this.panelEx2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panelEx2.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.panelEx2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.panelEx2.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.panelEx2.Location = new System.Drawing.Point(153, 56);
|
||||
this.panelEx2.Name = "panelEx2";
|
||||
this.panelEx2.Size = new System.Drawing.Size(84, 23);
|
||||
this.panelEx2.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.panelEx2.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.panelEx2.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.panelEx2.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.panelEx2.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.panelEx2.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.panelEx2.Style.GradientAngle = 90;
|
||||
this.panelEx2.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.panelEx2.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.panelEx2.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.panelEx2.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.panelEx2.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.panelEx2.TabIndex = 602;
|
||||
this.panelEx2.Text = "获取运费模板";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(118, 59);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(20, 17);
|
||||
this.label2.TabIndex = 598;
|
||||
this.label2.Text = "秒";
|
||||
//
|
||||
// numericUpDown2
|
||||
//
|
||||
this.numericUpDown2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.numericUpDown2.Location = new System.Drawing.Point(72, 56);
|
||||
this.numericUpDown2.Maximum = new decimal(new int[] {
|
||||
10000,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown2.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown2.Name = "numericUpDown2";
|
||||
this.numericUpDown2.Size = new System.Drawing.Size(46, 23);
|
||||
this.numericUpDown2.TabIndex = 597;
|
||||
this.numericUpDown2.Value = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(16, 59);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(56, 17);
|
||||
this.label1.TabIndex = 596;
|
||||
this.label1.Text = "刷新间隔";
|
||||
//
|
||||
// numericUpDown1
|
||||
//
|
||||
this.numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.numericUpDown1.Location = new System.Drawing.Point(241, 27);
|
||||
this.numericUpDown1.Maximum = new decimal(new int[] {
|
||||
10000,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown1.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown1.Name = "numericUpDown1";
|
||||
this.numericUpDown1.Size = new System.Drawing.Size(46, 23);
|
||||
this.numericUpDown1.TabIndex = 595;
|
||||
this.numericUpDown1.Value = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.checkBox1.Location = new System.Drawing.Point(153, 28);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(90, 21);
|
||||
this.checkBox1.TabIndex = 594;
|
||||
this.checkBox1.Text = "支付订单>=";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cmbSkuOptionType
|
||||
//
|
||||
this.cmbSkuOptionType.DisplayMember = "Text";
|
||||
this.cmbSkuOptionType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbSkuOptionType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbSkuOptionType.FormattingEnabled = true;
|
||||
this.cmbSkuOptionType.ItemHeight = 18;
|
||||
this.cmbSkuOptionType.Items.AddRange(new object[] {
|
||||
this.第一个,
|
||||
this.最后一个,
|
||||
this.最便宜,
|
||||
this.最贵,
|
||||
this.不设置最便宜,
|
||||
this.不设置最贵});
|
||||
this.cmbSkuOptionType.Location = new System.Drawing.Point(241, 56);
|
||||
this.cmbSkuOptionType.Name = "cmbSkuOptionType";
|
||||
this.cmbSkuOptionType.Size = new System.Drawing.Size(135, 24);
|
||||
this.cmbSkuOptionType.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbSkuOptionType.TabIndex = 587;
|
||||
//
|
||||
// 第一个
|
||||
//
|
||||
this.第一个.Text = "第一个";
|
||||
//
|
||||
// 最后一个
|
||||
//
|
||||
this.最后一个.Text = "最后一个";
|
||||
//
|
||||
// 最便宜
|
||||
//
|
||||
this.最便宜.Text = "最便宜";
|
||||
//
|
||||
// 最贵
|
||||
//
|
||||
this.最贵.Text = "最贵";
|
||||
//
|
||||
// 不设置最便宜
|
||||
//
|
||||
this.不设置最便宜.Text = "不设置最便宜";
|
||||
//
|
||||
// 不设置最贵
|
||||
//
|
||||
this.不设置最贵.Text = "不设置最贵";
|
||||
//
|
||||
// lblPercentSign
|
||||
//
|
||||
this.lblPercentSign.AutoSize = true;
|
||||
this.lblPercentSign.Location = new System.Drawing.Point(826, 120);
|
||||
this.lblPercentSign.Name = "lblPercentSign";
|
||||
this.lblPercentSign.Size = new System.Drawing.Size(19, 17);
|
||||
this.lblPercentSign.TabIndex = 577;
|
||||
this.lblPercentSign.Text = "%";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(972, 120);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(44, 17);
|
||||
this.label9.TabIndex = 569;
|
||||
this.label9.Text = "个商品";
|
||||
//
|
||||
// nudEachActivityProductNum
|
||||
//
|
||||
this.nudEachActivityProductNum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.nudEachActivityProductNum.Location = new System.Drawing.Point(913, 117);
|
||||
this.nudEachActivityProductNum.Maximum = new decimal(new int[] {
|
||||
20,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudEachActivityProductNum.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudEachActivityProductNum.Name = "nudEachActivityProductNum";
|
||||
this.nudEachActivityProductNum.Size = new System.Drawing.Size(56, 23);
|
||||
this.nudEachActivityProductNum.TabIndex = 568;
|
||||
this.nudEachActivityProductNum.Value = new decimal(new int[] {
|
||||
10,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(854, 120);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(56, 17);
|
||||
this.label8.TabIndex = 567;
|
||||
this.label8.Text = "一个活动";
|
||||
//
|
||||
// nudStockValue
|
||||
//
|
||||
this.nudStockValue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.nudStockValue.Location = new System.Drawing.Point(776, 117);
|
||||
this.nudStockValue.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudStockValue.Name = "nudStockValue";
|
||||
this.nudStockValue.Size = new System.Drawing.Size(48, 23);
|
||||
this.nudStockValue.TabIndex = 566;
|
||||
this.nudStockValue.Value = new decimal(new int[] {
|
||||
50,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// cmbDiscountType
|
||||
//
|
||||
this.cmbDiscountType.DisplayMember = "Text";
|
||||
this.cmbDiscountType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbDiscountType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbDiscountType.FormattingEnabled = true;
|
||||
this.cmbDiscountType.ItemHeight = 18;
|
||||
this.cmbDiscountType.Items.AddRange(new object[] {
|
||||
this.打折,
|
||||
this.直降,
|
||||
this.一口价});
|
||||
this.cmbDiscountType.Location = new System.Drawing.Point(686, 85);
|
||||
this.cmbDiscountType.Name = "cmbDiscountType";
|
||||
this.cmbDiscountType.Size = new System.Drawing.Size(84, 24);
|
||||
this.cmbDiscountType.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbDiscountType.TabIndex = 565;
|
||||
//
|
||||
// 打折
|
||||
//
|
||||
this.打折.Text = "打折";
|
||||
//
|
||||
// 直降
|
||||
//
|
||||
this.直降.Text = "直降";
|
||||
//
|
||||
// 一口价
|
||||
//
|
||||
this.一口价.Text = "一口价";
|
||||
//
|
||||
// cmbStockType
|
||||
//
|
||||
this.cmbStockType.DisplayMember = "Text";
|
||||
this.cmbStockType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbStockType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbStockType.FormattingEnabled = true;
|
||||
this.cmbStockType.ItemHeight = 18;
|
||||
this.cmbStockType.Items.AddRange(new object[] {
|
||||
this.全部库存,
|
||||
this.百分比库存,
|
||||
this.统一库存});
|
||||
this.cmbStockType.Location = new System.Drawing.Point(686, 116);
|
||||
this.cmbStockType.Name = "cmbStockType";
|
||||
this.cmbStockType.Size = new System.Drawing.Size(84, 24);
|
||||
this.cmbStockType.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbStockType.TabIndex = 564;
|
||||
//
|
||||
// 全部库存
|
||||
//
|
||||
this.全部库存.Text = "全部库存";
|
||||
//
|
||||
// 百分比库存
|
||||
//
|
||||
this.百分比库存.Text = "百分比库存";
|
||||
//
|
||||
// 统一库存
|
||||
//
|
||||
this.统一库存.Text = "统一库存";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(627, 120);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(56, 17);
|
||||
this.label5.TabIndex = 563;
|
||||
this.label5.Text = "活动库存";
|
||||
//
|
||||
// cmbLimitCount
|
||||
//
|
||||
this.cmbLimitCount.DisplayMember = "Text";
|
||||
this.cmbLimitCount.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbLimitCount.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbLimitCount.FormattingEnabled = true;
|
||||
this.cmbLimitCount.ItemHeight = 18;
|
||||
this.cmbLimitCount.Items.AddRange(new object[] {
|
||||
this.不限购});
|
||||
this.cmbLimitCount.Location = new System.Drawing.Point(889, 85);
|
||||
this.cmbLimitCount.Name = "cmbLimitCount";
|
||||
this.cmbLimitCount.Size = new System.Drawing.Size(123, 24);
|
||||
this.cmbLimitCount.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbLimitCount.TabIndex = 556;
|
||||
//
|
||||
// 不限购
|
||||
//
|
||||
this.不限购.Text = "不限购";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(854, 89);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(32, 17);
|
||||
this.label7.TabIndex = 555;
|
||||
this.label7.Text = "限购";
|
||||
//
|
||||
// nudDiscountValue
|
||||
//
|
||||
this.nudDiscountValue.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.nudDiscountValue.DecimalPlaces = 1;
|
||||
this.nudDiscountValue.Increment = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.nudDiscountValue.Location = new System.Drawing.Point(776, 86);
|
||||
this.nudDiscountValue.Maximum = new decimal(new int[] {
|
||||
99,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.nudDiscountValue.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
this.nudDiscountValue.Name = "nudDiscountValue";
|
||||
this.nudDiscountValue.Size = new System.Drawing.Size(65, 23);
|
||||
this.nudDiscountValue.TabIndex = 554;
|
||||
this.nudDiscountValue.Value = new decimal(new int[] {
|
||||
99,
|
||||
0,
|
||||
0,
|
||||
65536});
|
||||
//
|
||||
// label17
|
||||
//
|
||||
this.label17.AutoSize = true;
|
||||
this.label17.Location = new System.Drawing.Point(627, 89);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(56, 17);
|
||||
this.label17.TabIndex = 542;
|
||||
this.label17.Text = "优惠方式";
|
||||
//
|
||||
// nudGroupCount
|
||||
//
|
||||
this.nudGroupCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.nudGroupCount.Location = new System.Drawing.Point(72, 27);
|
||||
this.nudGroupCount.Maximum = new decimal(new int[] {
|
||||
10000,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudGroupCount.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudGroupCount.Name = "nudGroupCount";
|
||||
this.nudGroupCount.Size = new System.Drawing.Size(46, 23);
|
||||
this.nudGroupCount.TabIndex = 533;
|
||||
this.nudGroupCount.Value = new decimal(new int[] {
|
||||
20,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(18, 30);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(54, 17);
|
||||
this.label11.TabIndex = 525;
|
||||
this.label11.Text = "数量 <=";
|
||||
//
|
||||
// btnSetActivity
|
||||
//
|
||||
this.btnSetActivity.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSetActivity.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSetActivity.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSetActivity.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSetActivity.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSetActivity.Location = new System.Drawing.Point(1007, 22);
|
||||
this.btnSetActivity.Name = "btnSetActivity";
|
||||
this.btnSetActivity.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnSetActivity.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSetActivity.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSetActivity.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSetActivity.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSetActivity.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSetActivity.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSetActivity.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSetActivity.Style.GradientAngle = 90;
|
||||
this.btnSetActivity.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSetActivity.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSetActivity.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSetActivity.TabIndex = 427;
|
||||
this.btnSetActivity.Text = "设置拼团";
|
||||
this.btnSetActivity.Click += new System.EventHandler(this.btnSetActivity_Click);
|
||||
//
|
||||
// btnStopOperate
|
||||
//
|
||||
this.btnStopOperate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnStopOperate.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.btnStopOperate.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnStopOperate.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnStopOperate.Location = new System.Drawing.Point(1007, 52);
|
||||
this.btnStopOperate.Name = "btnStopOperate";
|
||||
this.btnStopOperate.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnStopOperate.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnStopOperate.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnStopOperate.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnStopOperate.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.btnStopOperate.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnStopOperate.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.btnStopOperate.Style.GradientAngle = 90;
|
||||
this.btnStopOperate.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnStopOperate.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnStopOperate.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnStopOperate.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnStopOperate.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnStopOperate.TabIndex = 405;
|
||||
this.btnStopOperate.Text = "停止设置";
|
||||
//
|
||||
// ucGroupBoxEx1
|
||||
//
|
||||
this.ucGroupBoxEx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.ucGroupBoxEx1.BorderStyle = LittleRabbit.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
|
||||
this.ucGroupBoxEx1.Controls.Add(this.btnRefreshShop);
|
||||
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
|
||||
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
|
||||
this.ucGroupBoxEx1.Size = new System.Drawing.Size(144, 150);
|
||||
this.ucGroupBoxEx1.TabIndex = 399;
|
||||
this.ucGroupBoxEx1.TabStop = false;
|
||||
this.ucGroupBoxEx1.Text = "基础";
|
||||
//
|
||||
// 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(16, 30);
|
||||
this.btnRefreshShop.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnRefreshShop.Name = "btnRefreshShop";
|
||||
this.btnRefreshShop.Size = new System.Drawing.Size(112, 26);
|
||||
this.btnRefreshShop.TabIndex = 375;
|
||||
this.btnRefreshShop.Text = "刷新店铺状态";
|
||||
this.btnRefreshShop.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// splitContainer3
|
||||
//
|
||||
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer3.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer3.Name = "splitContainer3";
|
||||
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer3.Panel1
|
||||
//
|
||||
this.splitContainer3.Panel1.Controls.Add(this.splitContainer2);
|
||||
//
|
||||
// splitContainer3.Panel2
|
||||
//
|
||||
this.splitContainer3.Panel2.Controls.Add(this.splitContainer4);
|
||||
this.splitContainer3.Size = new System.Drawing.Size(1246, 398);
|
||||
this.splitContainer3.SplitterDistance = 368;
|
||||
this.splitContainer3.TabIndex = 1;
|
||||
//
|
||||
// splitContainer4
|
||||
//
|
||||
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer4.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer4.Name = "splitContainer4";
|
||||
//
|
||||
// splitContainer4.Panel1
|
||||
//
|
||||
this.splitContainer4.Panel1.Controls.Add(this.statusBar);
|
||||
//
|
||||
// splitContainer4.Panel2
|
||||
//
|
||||
this.splitContainer4.Panel2.Controls.Add(this.btnClear);
|
||||
this.splitContainer4.Size = new System.Drawing.Size(1246, 26);
|
||||
this.splitContainer4.SplitterDistance = 1131;
|
||||
this.splitContainer4.TabIndex = 3;
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1131, 26);
|
||||
this.statusBar.TabIndex = 2;
|
||||
//
|
||||
// btnClear
|
||||
//
|
||||
this.btnClear.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.btnClear.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnClear.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnClear.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnClear.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnClear.Location = new System.Drawing.Point(17, 0);
|
||||
this.btnClear.Name = "btnClear";
|
||||
this.btnClear.Size = new System.Drawing.Size(90, 21);
|
||||
this.btnClear.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnClear.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnClear.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnClear.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnClear.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnClear.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnClear.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnClear.Style.GradientAngle = 90;
|
||||
this.btnClear.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnClear.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnClear.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnClear.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnClear.TabIndex = 440;
|
||||
this.btnClear.Text = "清空结果";
|
||||
//
|
||||
// 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.dgvShop);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 0, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Padding = new System.Windows.Forms.Padding(0, 0, 4, 0);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1246, 368);
|
||||
this.splitContainer2.SplitterDistance = 270;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// dgvShop
|
||||
//
|
||||
this.dgvShop.AllowUserToAddRows = false;
|
||||
this.dgvShop.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
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.colShopId,
|
||||
this.colShopName,
|
||||
this.colAuthStatus,
|
||||
this.colLoginStatus,
|
||||
this.colCanUse,
|
||||
this.colMessage});
|
||||
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.RowHeadersWidth = 30;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvShop.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvShop.RowTemplate.Height = 23;
|
||||
this.dgvShop.Size = new System.Drawing.Size(266, 368);
|
||||
this.dgvShop.TabIndex = 6;
|
||||
this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
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;
|
||||
this.colSelect.Width = 28;
|
||||
//
|
||||
// colShopId
|
||||
//
|
||||
this.colShopId.HeaderText = "店铺";
|
||||
this.colShopId.Name = "colShopId";
|
||||
this.colShopId.ReadOnly = true;
|
||||
this.colShopId.Visible = false;
|
||||
this.colShopId.Width = 55;
|
||||
//
|
||||
// colShopName
|
||||
//
|
||||
this.colShopName.FillWeight = 150F;
|
||||
this.colShopName.HeaderText = "店铺名称";
|
||||
this.colShopName.Name = "colShopName";
|
||||
this.colShopName.ReadOnly = true;
|
||||
this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colShopName.Width = 75;
|
||||
//
|
||||
// colAuthStatus
|
||||
//
|
||||
this.colAuthStatus.HeaderText = "授权状态";
|
||||
this.colAuthStatus.Name = "colAuthStatus";
|
||||
this.colAuthStatus.ReadOnly = true;
|
||||
this.colAuthStatus.Width = 65;
|
||||
//
|
||||
// colLoginStatus
|
||||
//
|
||||
this.colLoginStatus.HeaderText = "登录状态";
|
||||
this.colLoginStatus.Name = "colLoginStatus";
|
||||
this.colLoginStatus.ReadOnly = true;
|
||||
this.colLoginStatus.Width = 65;
|
||||
//
|
||||
// colCanUse
|
||||
//
|
||||
this.colCanUse.HeaderText = "可用";
|
||||
this.colCanUse.Name = "colCanUse";
|
||||
this.colCanUse.ReadOnly = true;
|
||||
this.colCanUse.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colCanUse.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colCanUse.Visible = false;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Visible = false;
|
||||
this.colMessage.Width = 120;
|
||||
//
|
||||
// GroupBuyMonitorForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1246, 552);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "GroupBuyMonitorForm";
|
||||
this.Text = "GroupBuyMonitorForm";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.ResumeLayout(false);
|
||||
this.ucGroupBoxEx2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudEachActivityProductNum)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudStockValue)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudDiscountValue)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.nudGroupCount)).EndInit();
|
||||
this.ucGroupBoxEx1.ResumeLayout(false);
|
||||
this.splitContainer3.Panel1.ResumeLayout(false);
|
||||
this.splitContainer3.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
|
||||
this.splitContainer3.ResumeLayout(false);
|
||||
this.splitContainer4.Panel1.ResumeLayout(false);
|
||||
this.splitContainer4.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit();
|
||||
this.splitContainer4.ResumeLayout(false);
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvShop)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx2;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbSkuOptionType;
|
||||
private DevComponents.Editors.ComboItem 第一个;
|
||||
private DevComponents.Editors.ComboItem 最后一个;
|
||||
private DevComponents.Editors.ComboItem 最便宜;
|
||||
private DevComponents.Editors.ComboItem 最贵;
|
||||
private DevComponents.Editors.ComboItem 不设置最便宜;
|
||||
private DevComponents.Editors.ComboItem 不设置最贵;
|
||||
private System.Windows.Forms.Label lblPercentSign;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.NumericUpDown nudEachActivityProductNum;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.NumericUpDown nudStockValue;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbDiscountType;
|
||||
private DevComponents.Editors.ComboItem 打折;
|
||||
private DevComponents.Editors.ComboItem 直降;
|
||||
private DevComponents.Editors.ComboItem 一口价;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbStockType;
|
||||
private DevComponents.Editors.ComboItem 全部库存;
|
||||
private DevComponents.Editors.ComboItem 百分比库存;
|
||||
private DevComponents.Editors.ComboItem 统一库存;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbLimitCount;
|
||||
private DevComponents.Editors.ComboItem 不限购;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.NumericUpDown nudDiscountValue;
|
||||
private System.Windows.Forms.Label label17;
|
||||
private System.Windows.Forms.NumericUpDown nudGroupCount;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private DevComponents.DotNetBar.PanelEx btnSetActivity;
|
||||
private DevComponents.DotNetBar.PanelEx btnStopOperate;
|
||||
private UserComponent.UcGroupBoxEx ucGroupBoxEx1;
|
||||
private UserControls.ButtonEx btnRefreshShop;
|
||||
private System.Windows.Forms.SplitContainer splitContainer3;
|
||||
private System.Windows.Forms.SplitContainer splitContainer4;
|
||||
private UserControls.StatusBarUserControl statusBar;
|
||||
private DevComponents.DotNetBar.PanelEx btnClear;
|
||||
private System.Windows.Forms.NumericUpDown numericUpDown1;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.NumericUpDown numericUpDown2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private DevComponents.DotNetBar.PanelEx panelEx2;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvShop;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colShopName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colAuthStatus;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colLoginStatus;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colCanUse;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using NaiBa.Util.Extension;
|
||||
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 LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class GroupBuyMonitorForm : Form
|
||||
{
|
||||
public GroupBuyMonitorForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void btnSetActivity_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void dgvShop_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
|
||||
var colName = dgvShop.Columns[e.ColumnIndex].Name;
|
||||
if (colName == "colSelect")
|
||||
{
|
||||
// 只允许单选
|
||||
if (dgvShop.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ParseToBool() == true)
|
||||
{
|
||||
dgvShop.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvShop.Rows)
|
||||
{
|
||||
row.Cells[e.ColumnIndex].Value = false;
|
||||
}
|
||||
dgvShop.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<?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="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAuthStatus.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="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,232 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class GroupBuyShopForm
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvProduct = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProductName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colStock = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSales = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCreateTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvProduct)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvProduct);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1160, 597);
|
||||
this.splitContainer2.SplitterDistance = 567;
|
||||
this.splitContainer2.TabIndex = 10;
|
||||
this.splitContainer2.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer2_SplitterMoved);
|
||||
//
|
||||
// dgvProduct
|
||||
//
|
||||
this.dgvProduct.AllowUserToAddRows = false;
|
||||
this.dgvProduct.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvProduct.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvProduct.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.dgvProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colProductId,
|
||||
this.colProductName,
|
||||
this.colStock,
|
||||
this.colSales,
|
||||
this.colPrice,
|
||||
this.colCreateTime,
|
||||
this.colMessage});
|
||||
this.dgvProduct.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvProduct.Location = new System.Drawing.Point(4, 4);
|
||||
this.dgvProduct.Name = "dgvProduct";
|
||||
this.dgvProduct.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvProduct.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvProduct.RowTemplate.Height = 23;
|
||||
this.dgvProduct.Size = new System.Drawing.Size(1152, 563);
|
||||
this.dgvProduct.TabIndex = 6;
|
||||
this.dgvProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellContentClick);
|
||||
this.dgvProduct.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgvProduct_CellMouseDown);
|
||||
this.dgvProduct.CellMouseEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellMouseEnter);
|
||||
this.dgvProduct.CellMouseUp += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgvProduct_CellMouseUp);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 41;
|
||||
//
|
||||
// colProductId
|
||||
//
|
||||
this.colProductId.HeaderText = "商品Id";
|
||||
this.colProductId.Name = "colProductId";
|
||||
this.colProductId.ReadOnly = true;
|
||||
this.colProductId.Width = 150;
|
||||
//
|
||||
// colProductName
|
||||
//
|
||||
this.colProductName.HeaderText = "商品名称";
|
||||
this.colProductName.Name = "colProductName";
|
||||
this.colProductName.ReadOnly = true;
|
||||
this.colProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colProductName.Width = 350;
|
||||
//
|
||||
// colStock
|
||||
//
|
||||
this.colStock.HeaderText = "库存";
|
||||
this.colStock.Name = "colStock";
|
||||
this.colStock.ReadOnly = true;
|
||||
this.colStock.Width = 60;
|
||||
//
|
||||
// colSales
|
||||
//
|
||||
this.colSales.HeaderText = "销量";
|
||||
this.colSales.Name = "colSales";
|
||||
this.colSales.ReadOnly = true;
|
||||
this.colSales.Width = 60;
|
||||
//
|
||||
// colPrice
|
||||
//
|
||||
this.colPrice.HeaderText = "价格";
|
||||
this.colPrice.Name = "colPrice";
|
||||
this.colPrice.ReadOnly = true;
|
||||
this.colPrice.Width = 60;
|
||||
//
|
||||
// colCreateTime
|
||||
//
|
||||
this.colCreateTime.HeaderText = "创建时间";
|
||||
this.colCreateTime.Name = "colCreateTime";
|
||||
this.colCreateTime.ReadOnly = true;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 300;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.MidnightBlue;
|
||||
this.label1.Location = new System.Drawing.Point(656, 2);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(43, 17);
|
||||
this.label1.TabIndex = 3;
|
||||
this.label1.Text = "label1";
|
||||
this.label1.Click += new System.EventHandler(this.label1_Click);
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1160, 26);
|
||||
this.statusBar.TabIndex = 2;
|
||||
this.statusBar.Load += new System.EventHandler(this.statusBar_Load);
|
||||
//
|
||||
// GroupBuyShopForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1160, 597);
|
||||
this.Controls.Add(this.splitContainer2);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "GroupBuyShopForm";
|
||||
this.Text = "GroupBuyShopForm";
|
||||
this.Load += new System.EventHandler(this.GroupBuyShopForm_Load);
|
||||
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.dgvProduct)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvProduct;
|
||||
private System.Windows.Forms.Label label1;
|
||||
public UserControls.StatusBarUserControl statusBar;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProductName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colStock;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSales;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCreateTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,560 @@
|
||||
using AllBase;
|
||||
using AllBase.Extension;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.Extension;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
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.Windows.Forms;
|
||||
using Work.BLL.Product;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class GroupBuyShopForm : Form
|
||||
{
|
||||
public List<string> lstProductId
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value.ParseToBool() == true && r.Visible == true)
|
||||
.Select(r => r.Cells["colProductId"].Value.ToString()).ToList();
|
||||
}
|
||||
}
|
||||
private CheckBox chkSelectAll = null;
|
||||
|
||||
DouShopLoginInfo shop = null;
|
||||
public GroupBuyForm groupBuyForm = null;
|
||||
public bool isGetProductSuccess = false;
|
||||
public bool isGetSalesSuccess = false;
|
||||
string _signature = "";
|
||||
string _timeSpan = "";
|
||||
public Dictionary<long, int> dicProductSales = new Dictionary<long, int>();
|
||||
public List<DouProductPromotionListInfo> productList = new List<DouProductPromotionListInfo>();
|
||||
|
||||
public GroupBuyShopForm(DouShopLoginInfo _shop = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
shop = _shop;
|
||||
}
|
||||
|
||||
private void GroupBuyShopForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
chkSelectAll = dgvProduct.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
dgvProduct.Columns["colSelect"].HeaderText = "";
|
||||
|
||||
chkSelectAll.Width = chkSelectAll.Height = 13;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
|
||||
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!chkSelectAll.Checked)
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void InitGetProduct()
|
||||
{
|
||||
if (shop == null)
|
||||
return;
|
||||
|
||||
ShowVisitorMessage("");
|
||||
foreach (DataGridViewRow r in this.dgvProduct.Rows)
|
||||
{
|
||||
r.Cells["colSales"].Value = "获取中";
|
||||
r.Cells["colStock"].Value = "获取中";
|
||||
r.Cells["colMessage"].Value = "";
|
||||
}
|
||||
foreach (var p in productList)
|
||||
{
|
||||
p.sell_num = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void GetProductSim(string listUrl, string referrerUrl, Dictionary<string, string> headers, string firstPageData = "", string campaign_start_time = "", string campaign_end_time = "")
|
||||
{
|
||||
ShowVisitorMessage("");
|
||||
var salesUrl = listUrl;
|
||||
foreach (DataGridViewRow r in this.dgvProduct.Rows)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
r.Cells["colSales"].Value = "获取中";
|
||||
r.Cells["colStock"].Value = "获取中";
|
||||
r.Cells["colMessage"].Value = "";
|
||||
}));
|
||||
}
|
||||
foreach (var p in productList)
|
||||
{
|
||||
p.sell_num = null;
|
||||
}
|
||||
|
||||
bool isGetSalesOver = false;
|
||||
|
||||
var t1 = Task.Run(() =>
|
||||
{
|
||||
int totalx = -1;
|
||||
int totalPagex = 0;
|
||||
int numberx = 0;
|
||||
string resultx = "";
|
||||
if (!string.IsNullOrEmpty(firstPageData))
|
||||
resultx = firstPageData;
|
||||
|
||||
ShowVisitorMessage("正在初始化商品获取");
|
||||
|
||||
// 获取有销量的商品
|
||||
for (int i = 0; i < 10000; i++)
|
||||
{
|
||||
numberx += 20;
|
||||
for (int j = 0; j < 3 && !resultx.Contains("\"st\":0"); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
if (headers.ContainsKey("Accept"))
|
||||
simRequest.Accept = headers["Accept"];
|
||||
if (headers.ContainsKey("UserAgent"))
|
||||
simRequest.UserAgent = headers["UserAgent"];
|
||||
var cookie = shop.Cookies;
|
||||
|
||||
ShowVisitorMessage("商品销量获取中,第 " + (i + 1) + " 页");
|
||||
var rUrl = salesUrl.Replace("page=0", "page=" + i).Replace("&pay_type=", "&pay_type=&sell_num_min=1"); // 获取所有有销量的商品,Replace不可注释!!
|
||||
resultx = simRequest.Request_Get(rUrl, referrerUrl, new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(250, 750));
|
||||
Thread.Sleep(Randomx.GetId(250, 750));
|
||||
}
|
||||
}
|
||||
|
||||
if (resultx.Contains("\"st\":0") && !groupBuyForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.isGetSalesSuccess = true;
|
||||
|
||||
if (totalx == -1)
|
||||
{
|
||||
totalx = BaseRegex.GetIntJson(ref resultx, "total");
|
||||
}
|
||||
var jObj = JObject.Parse(resultx);
|
||||
var jArr = jObj["data"] as JArray;
|
||||
foreach (var productObj in jArr)
|
||||
{
|
||||
var prod = JsonHelper.SerializeObject(productObj);
|
||||
|
||||
var product_id = BaseRegex.GetLongJson(ref prod, "product_id");
|
||||
var sell_num = BaseRegex.GetIntJson(ref prod, "sell_num");
|
||||
this.dicProductSales[product_id] = sell_num;
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(250, 750));
|
||||
Thread.Sleep(Randomx.GetId(250, 750));
|
||||
resultx = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
isGetSalesSuccess = false;
|
||||
ShowVisitorMessage("获取商品销量完成");
|
||||
isGetSalesOver = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (numberx >= totalx)
|
||||
{
|
||||
ShowVisitorMessage("获取商品销量完成");
|
||||
isGetSalesOver = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var total = -1;
|
||||
var totalPage = 1;
|
||||
var number = 0;
|
||||
var result = "";
|
||||
referrerUrl = "https://fxg.jinritemai.com/market/center/group/create?type=1";
|
||||
DateTime date = DateTime.Now.Date;
|
||||
if (string.IsNullOrEmpty(campaign_start_time))
|
||||
campaign_start_time = date.ToString("yyyy-MM-dd") + "+00:00:00";
|
||||
if (string.IsNullOrEmpty(campaign_end_time))
|
||||
campaign_end_time = date.ToString("yyyy-MM-dd") + "+23:59:59";
|
||||
_timeSpan = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_timeSpan))
|
||||
_timeSpan = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)");
|
||||
if (string.IsNullOrEmpty(_timeSpan))
|
||||
_timeSpan = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now).ToString();
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl, "&_signature=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_signature))
|
||||
{
|
||||
var listUrl2 = listUrl + "&";
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl2, "&_signature=([\\s\\S]+?)&");
|
||||
}
|
||||
//https://fxg.jinritemai.com/byteshop/promotion/queryAvailableGoods?pageSize=15&page=2&page_size=15&campaign_start_time=2022-06-21+19:14:51&campaign_end_time=2022-06-22+19:14:51&_bid=ecom_market_shop&appid=1&_=1655887384070&_signature=_02B4Z6wo001018eSLdwAAIDCpJjttu0f6uPHlilAAJNfj1ao1TeKBkwmWorJ02UXEJ65nOUW80KDl7BCnks4QRQn4NSiCgbDAn0lDv-DZLnjG2jU-ZN-lFYs9ZV8k8yacuCAeWC7HN1lMk3576");
|
||||
listUrl = "https://fxg.jinritemai.com/byteshop/promotion/queryAvailableGoods?pageSize=15&page=0&page_size=15&campaign_start_time="
|
||||
+ campaign_start_time + "&campaign_end_time=" + campaign_end_time + "&_bid=ecom_market_shop&appid=1"
|
||||
+ "&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
for (int i = 1; i <= groupBuyForm.getPage; i++)
|
||||
{
|
||||
if (i > totalPage)
|
||||
break;
|
||||
|
||||
result = "";
|
||||
number += 15;
|
||||
for (int j = 0; j < 3 && !result.Contains("\"st\":0") || result.Contains("\"msg\":\"账号未登录\""); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
if (headers.ContainsKey("Accept"))
|
||||
simRequest.Accept = headers["Accept"];
|
||||
if (headers.ContainsKey("UserAgent"))
|
||||
simRequest.UserAgent = headers["UserAgent"];
|
||||
var cookie = shop.Cookies;
|
||||
|
||||
var rUrl = listUrl.Replace("page=0", "page=" + i);
|
||||
result = simRequest.Request_Get(rUrl, referrerUrl, new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
}
|
||||
|
||||
ShowVisitorMessage("正在获取商品第" + i + "页");
|
||||
}
|
||||
|
||||
if (result.Contains("\"st\":0") && !groupBuyForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.isGetProductSuccess = true;
|
||||
|
||||
if (total == -1)
|
||||
{
|
||||
total = BaseRegex.GetIntJson(ref result, "total");
|
||||
}
|
||||
|
||||
totalPage = Math.Ceiling(total / 15M).ParseToInt();
|
||||
if (totalPage > groupBuyForm.getPage)
|
||||
totalPage = groupBuyForm.getPage;
|
||||
string message = "正在获取商品第 " + i + " 页,共获取 " + totalPage + " 页";
|
||||
ShowVisitorMessage("");
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = message;
|
||||
this.statusBar.pgbTaskProgress.Value = i;
|
||||
this.statusBar.pgbTaskProgress.Text = i + "/" + totalPage;
|
||||
this.statusBar.pgbTaskProgress.Maximum = totalPage;
|
||||
}));
|
||||
|
||||
try
|
||||
{
|
||||
var jObj = JObject.Parse(result);
|
||||
var pList = JsonHelper.DeserializeJsonToList<DouProductPromotionListInfo>(jObj["data"]?.ToString());
|
||||
|
||||
foreach (var product in pList)
|
||||
{
|
||||
if (product.allow == false)
|
||||
continue;
|
||||
if (dicProductSales.ContainsKey(product.product_id.ParseToLong()))
|
||||
product.sell_num = dicProductSales[product.product_id.ParseToLong()];
|
||||
else if (isGetSalesOver && isGetSalesSuccess)
|
||||
product.sell_num = 0;
|
||||
else if (isGetSalesOver)
|
||||
product.sell_num = -1;
|
||||
|
||||
if (this.productList.Any(p => p.product_id == product.product_id))
|
||||
this.productList.RemoveAll(p => p.product_id == product.product_id);
|
||||
this.productList.Add(product);
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var rowId = -1;
|
||||
var rowExist = this.dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == product.product_id);
|
||||
if (rowExist != null)
|
||||
{
|
||||
rowId = rowExist.Index;
|
||||
dgvProduct.Rows.Insert(rowExist.Index, false, product.product_id, product.name, product.stock_num, product.sell_num,
|
||||
product.min_price / 100M + " - " + product.max_price / 100M);
|
||||
dgvProduct.Rows.Remove(rowExist);
|
||||
}
|
||||
else
|
||||
rowId = dgvProduct.Rows.Add(false, product.product_id, product.name, product.stock_num, product.sell_num,
|
||||
product.min_price / 100M + " - " + product.max_price / 100M);
|
||||
|
||||
// 过滤数据
|
||||
if (groupBuyForm.keywords?.Count > 0 && !groupBuyForm.keywords.Any(k => product.name.Contains(k) || product.product_id.Contains(k)))
|
||||
dgvProduct.Rows[rowId].Visible = false;
|
||||
if (groupBuyForm.filterWords?.Count > 0 && groupBuyForm.filterWords.Any(k => product.name.Contains(k) || product.product_id.Contains(k)))
|
||||
dgvProduct.Rows[rowId].Visible = false;
|
||||
if (groupBuyForm.priceMin > product.max_price || groupBuyForm.priceMax < product.min_price)
|
||||
dgvProduct.Rows[rowId].Visible = false;
|
||||
if (groupBuyForm.saleMin > product.sell_num || groupBuyForm.saleMax < product.sell_num)
|
||||
dgvProduct.Rows[rowId].Visible = false;
|
||||
}));
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
isGetProductSuccess = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
isGetProductSuccess = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (number >= total)
|
||||
break;
|
||||
}
|
||||
|
||||
t1.Wait();
|
||||
|
||||
// 最后填写商品销量
|
||||
foreach (var product in this.productList)
|
||||
{
|
||||
if (dicProductSales.ContainsKey(product.product_id.ParseToLong()))
|
||||
product.sell_num = dicProductSales[product.product_id.ParseToLong()];
|
||||
else if (isGetSalesSuccess)
|
||||
product.sell_num = 0;
|
||||
else
|
||||
product.sell_num = -1;
|
||||
|
||||
var row = this.dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == product.product_id);
|
||||
if (row != null && row.Cells["colSales"].Value?.ToString() == "获取中")
|
||||
{
|
||||
if (product.sell_num >= 0)
|
||||
row.Cells["colSales"].Value = product.sell_num;
|
||||
if (product.sell_num >= 0)
|
||||
row.Cells["colSales"].Value = product.sell_num;
|
||||
}
|
||||
}
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (groupBuyForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取中断";
|
||||
}
|
||||
else if (!isGetSalesSuccess)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取完成,但获取销量信息失败";
|
||||
}
|
||||
else if (!isGetProductSuccess)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取商品信息失败";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取完成";
|
||||
}
|
||||
//this.statusBar.pgbTaskProgress.Value = 0;
|
||||
//this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
||||
//this.statusBar.pgbTaskProgress.Maximum = 0;
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
public void SetSalesCount()
|
||||
{
|
||||
foreach (var key in dicProductSales.Keys)
|
||||
{
|
||||
var row = this.dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == key.ToString());
|
||||
if (row != null)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colSales"].Value = dicProductSales[key];
|
||||
}));
|
||||
}
|
||||
var product = this.productList.Find(p => p.product_id.ToString() == key.ToString());
|
||||
if (product != null)
|
||||
product.sell_num = dicProductSales[key];
|
||||
}
|
||||
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
if (row.Cells["colSales"].Value.ToString() == "获取中")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (isGetSalesSuccess)
|
||||
{
|
||||
row.Cells["colSales"].Value = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
row.Cells["colSales"].Value = "获取失败";
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
if (isGetSalesSuccess)
|
||||
{
|
||||
foreach (var prod in this.productList)
|
||||
{
|
||||
if (prod.sell_num == null)
|
||||
prod.sell_num = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowVisitorMessage(string msg, string ids = "")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.label1.Text = msg;
|
||||
if (!string.IsNullOrEmpty(ids))
|
||||
{
|
||||
var idList = ids.Split(new string[] { "\",\"", "\"" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var rows = this.dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => idList.Contains(r.Cells["colProductId"].Value?.ToString()));
|
||||
foreach (var row in rows)
|
||||
{
|
||||
row.Cells["colMessage"].Value = msg;
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string headerText = dgvProduct.Columns[e.ColumnIndex].HeaderText;
|
||||
string columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
var row = dgvProduct.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void label1_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void splitContainer2_SplitterMoved(object sender, SplitterEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void statusBar_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool isSelecting = false;
|
||||
bool isCheck = true;
|
||||
private void dgvProduct_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
|
||||
var columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
if (MouseButtons == MouseButtons.Left)
|
||||
{
|
||||
if (columnName == "colSelect")
|
||||
{
|
||||
dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value = !dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool();
|
||||
|
||||
isSelecting = true;
|
||||
isCheck = dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool();
|
||||
|
||||
chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
||||
if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
chkSelectAll.Checked = false;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvProduct_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
|
||||
var row = dgvProduct.Rows[e.RowIndex];
|
||||
if (MouseButtons == MouseButtons.Left)
|
||||
{
|
||||
var columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
||||
if (isSelecting)
|
||||
{
|
||||
dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value = isCheck;
|
||||
|
||||
chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
||||
if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
chkSelectAll.Checked = false;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvProduct_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
|
||||
{
|
||||
isSelecting = false;
|
||||
}
|
||||
|
||||
//根据id获取sku
|
||||
public string GetSkusByProductIds(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/batchGetSkuByProductIds?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string referer = "https://fxg.jinritemai.com/market/center/group/create?type=1";
|
||||
string result = request.Request_PostByBigLength(reqUrl, referer, dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string checkGroupBuyGoods(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/checkGroupBuy?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string referer = "https://fxg.jinritemai.com/market/center/group/create?type=1";
|
||||
string result = request.Request_PostByBigLength(reqUrl, referer, dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string createGroupBuyGoods(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/createGroupBuy?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string result = request.Request_PostByBigLength(reqUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?refer=new", dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void ClearData()
|
||||
{
|
||||
this.dgvProduct.Rows.Clear();
|
||||
this.productList.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colStock.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSales.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCreateTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -0,0 +1,131 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class LimitedSalesActivityNameForm
|
||||
{
|
||||
/// <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(LimitedSalesActivityNameForm));
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.labelX1 = new DevComponents.DotNetBar.LabelX();
|
||||
this.textBoxX1 = new DevComponents.DotNetBar.Controls.TextBoxX();
|
||||
this.btnSave = new DevComponents.DotNetBar.PanelEx();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.White;
|
||||
this.panel2.Controls.Add(this.labelX1);
|
||||
this.panel2.Controls.Add(this.textBoxX1);
|
||||
this.panel2.Controls.Add(this.btnSave);
|
||||
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(383, 416);
|
||||
this.panel2.TabIndex = 1;
|
||||
//
|
||||
// labelX1
|
||||
//
|
||||
this.labelX1.AutoSize = true;
|
||||
//
|
||||
//
|
||||
//
|
||||
this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.labelX1.ForeColor = System.Drawing.Color.Gray;
|
||||
this.labelX1.Location = new System.Drawing.Point(16, 11);
|
||||
this.labelX1.Name = "labelX1";
|
||||
this.labelX1.Size = new System.Drawing.Size(303, 18);
|
||||
this.labelX1.TabIndex = 462;
|
||||
this.labelX1.Text = "请输入自定义活动名称,一行一个(长度1-10个字符):";
|
||||
//
|
||||
// textBoxX1
|
||||
//
|
||||
this.textBoxX1.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.textBoxX1.Border.Class = "TextBoxBorder";
|
||||
this.textBoxX1.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.textBoxX1.Location = new System.Drawing.Point(16, 35);
|
||||
this.textBoxX1.Multiline = true;
|
||||
this.textBoxX1.Name = "textBoxX1";
|
||||
this.textBoxX1.PreventEnterBeep = true;
|
||||
this.textBoxX1.Size = new System.Drawing.Size(351, 338);
|
||||
this.textBoxX1.TabIndex = 461;
|
||||
//
|
||||
// btnSave
|
||||
//
|
||||
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSave.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSave.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSave.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSave.Location = new System.Drawing.Point(309, 379);
|
||||
this.btnSave.Name = "btnSave";
|
||||
this.btnSave.Size = new System.Drawing.Size(58, 23);
|
||||
this.btnSave.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSave.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSave.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSave.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSave.Style.GradientAngle = 90;
|
||||
this.btnSave.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSave.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSave.TabIndex = 460;
|
||||
this.btnSave.Text = "保存";
|
||||
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
|
||||
//
|
||||
// LimitedSalesActivityNameForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(385, 450);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "LimitedSalesActivityNameForm";
|
||||
this.Text = "自定义限时限量购活动名称";
|
||||
this.TitleText = "自定义限时限量购活动名称";
|
||||
this.Controls.SetChildIndex(this.panel2, 0);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private DevComponents.DotNetBar.LabelX labelX1;
|
||||
private DevComponents.DotNetBar.Controls.TextBoxX textBoxX1;
|
||||
private DevComponents.DotNetBar.PanelEx btnSave;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util;
|
||||
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 LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class LimitedSalesActivityNameForm : LRBaseForm
|
||||
{
|
||||
public LimitedSalesActivityNameForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.Load += GroupBuyCustomActivityNameForm_Load;
|
||||
}
|
||||
|
||||
private void GroupBuyCustomActivityNameForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
this.textBoxX1.Text = string.Join("\r\n", SeckillingAndLimitedSalesForm.CustomActivityNames) + "\r\n";
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
SeckillingAndLimitedSalesForm.CustomActivityNames = this.textBoxX1.Text.Trim().Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig<List<string>>("limited_sales_custom_names", SeckillingAndLimitedSalesForm.CustomActivityNames);
|
||||
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>
|
||||
AAABAAEAgIAQcgAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
|
||||
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>
|
||||
+576
@@ -0,0 +1,576 @@
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class LimitedSalesManagerActiveForm
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.dgvActive = new LittleRabbit.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.colActivityId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colActivityName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPreStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colEndTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrefereType = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colActiveState = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.statusBar = new LittleRabbit.UserControls.StatusBarUserControl();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.txtProID = new System.Windows.Forms.TextBox();
|
||||
this.cmbType = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.comboItem6 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem7 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem8 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem9 = new DevComponents.Editors.ComboItem();
|
||||
this.cmbActState = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.comboItem1 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem2 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem3 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem4 = new DevComponents.Editors.ComboItem();
|
||||
this.comboItem5 = new DevComponents.Editors.ComboItem();
|
||||
this.txtActivity = new System.Windows.Forms.TextBox();
|
||||
this.btnReload = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnEdit = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnInvalid = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnDelete = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnSearch = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.lblLimit = new System.Windows.Forms.Label();
|
||||
this.lblActivity = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvActive)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
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.Controls.Add(this.dgvActive);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1021, 417);
|
||||
this.splitContainer2.SplitterDistance = 387;
|
||||
this.splitContainer2.TabIndex = 10;
|
||||
//
|
||||
// dgvActive
|
||||
//
|
||||
this.dgvActive.AllowUserToAddRows = false;
|
||||
this.dgvActive.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||
this.dgvActive.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dgvActive.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvActive.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.dgvActive.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.dgvActive.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dgvActive.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colSelect,
|
||||
this.colActivityId,
|
||||
this.colActivityName,
|
||||
this.colPreStartTime,
|
||||
this.colStartTime,
|
||||
this.colEndTime,
|
||||
this.colPrefereType,
|
||||
this.colActiveState,
|
||||
this.colMessage});
|
||||
this.dgvActive.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvActive.Location = new System.Drawing.Point(4, 0);
|
||||
this.dgvActive.Name = "dgvActive";
|
||||
this.dgvActive.ReadOnly = true;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dgvActive.RowsDefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dgvActive.RowTemplate.Height = 23;
|
||||
this.dgvActive.Size = new System.Drawing.Size(1013, 387);
|
||||
this.dgvActive.TabIndex = 6;
|
||||
this.dgvActive.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvActive_CellContentClick);
|
||||
//
|
||||
// colSelect
|
||||
//
|
||||
this.colSelect.FillWeight = 50F;
|
||||
this.colSelect.HeaderText = "选";
|
||||
this.colSelect.Name = "colSelect";
|
||||
this.colSelect.ReadOnly = true;
|
||||
this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||
this.colSelect.Width = 40;
|
||||
//
|
||||
// colActivityId
|
||||
//
|
||||
this.colActivityId.HeaderText = "活动Id";
|
||||
this.colActivityId.Name = "colActivityId";
|
||||
this.colActivityId.ReadOnly = true;
|
||||
this.colActivityId.Visible = false;
|
||||
//
|
||||
// colActivityName
|
||||
//
|
||||
this.colActivityName.HeaderText = "活动名称";
|
||||
this.colActivityName.Name = "colActivityName";
|
||||
this.colActivityName.ReadOnly = true;
|
||||
this.colActivityName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
|
||||
//
|
||||
// colPreStartTime
|
||||
//
|
||||
this.colPreStartTime.HeaderText = "预热开始时间";
|
||||
this.colPreStartTime.Name = "colPreStartTime";
|
||||
this.colPreStartTime.ReadOnly = true;
|
||||
this.colPreStartTime.Width = 130;
|
||||
//
|
||||
// colStartTime
|
||||
//
|
||||
this.colStartTime.HeaderText = "活动开始时间";
|
||||
this.colStartTime.Name = "colStartTime";
|
||||
this.colStartTime.ReadOnly = true;
|
||||
this.colStartTime.Width = 130;
|
||||
//
|
||||
// colEndTime
|
||||
//
|
||||
this.colEndTime.HeaderText = "活动结束时间";
|
||||
this.colEndTime.Name = "colEndTime";
|
||||
this.colEndTime.ReadOnly = true;
|
||||
this.colEndTime.Width = 130;
|
||||
//
|
||||
// colPrefereType
|
||||
//
|
||||
this.colPrefereType.HeaderText = "优惠类型";
|
||||
this.colPrefereType.Name = "colPrefereType";
|
||||
this.colPrefereType.ReadOnly = true;
|
||||
this.colPrefereType.Width = 85;
|
||||
//
|
||||
// colActiveState
|
||||
//
|
||||
this.colActiveState.HeaderText = "活动状态";
|
||||
this.colActiveState.Name = "colActiveState";
|
||||
this.colActiveState.ReadOnly = true;
|
||||
this.colActiveState.Width = 85;
|
||||
//
|
||||
// colMessage
|
||||
//
|
||||
this.colMessage.HeaderText = "消息提示";
|
||||
this.colMessage.Name = "colMessage";
|
||||
this.colMessage.ReadOnly = true;
|
||||
this.colMessage.Width = 250;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.MidnightBlue;
|
||||
this.label1.Location = new System.Drawing.Point(651, 7);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(43, 17);
|
||||
this.label1.TabIndex = 5;
|
||||
this.label1.Text = "label1";
|
||||
//
|
||||
// statusBar
|
||||
//
|
||||
this.statusBar.BackColor = System.Drawing.Color.White;
|
||||
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
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, 0);
|
||||
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.statusBar.Name = "statusBar";
|
||||
this.statusBar.Size = new System.Drawing.Size(1021, 26);
|
||||
this.statusBar.TabIndex = 4;
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
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.txtProID);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.cmbType);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.cmbActState);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.txtActivity);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnReload);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnEdit);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnInvalid);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnDelete);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnSearch);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label3);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label2);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblLimit);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lblActivity);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1021, 459);
|
||||
this.splitContainer1.SplitterDistance = 38;
|
||||
this.splitContainer1.TabIndex = 11;
|
||||
//
|
||||
// txtProID
|
||||
//
|
||||
this.txtProID.Location = new System.Drawing.Point(470, 7);
|
||||
this.txtProID.Name = "txtProID";
|
||||
this.txtProID.Size = new System.Drawing.Size(95, 23);
|
||||
this.txtProID.TabIndex = 481;
|
||||
//
|
||||
// cmbType
|
||||
//
|
||||
this.cmbType.DisplayMember = "Text";
|
||||
this.cmbType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbType.FormattingEnabled = true;
|
||||
this.cmbType.ItemHeight = 18;
|
||||
this.cmbType.Items.AddRange(new object[] {
|
||||
this.comboItem6,
|
||||
this.comboItem7,
|
||||
this.comboItem8,
|
||||
this.comboItem9});
|
||||
this.cmbType.Location = new System.Drawing.Point(348, 6);
|
||||
this.cmbType.Name = "cmbType";
|
||||
this.cmbType.Size = new System.Drawing.Size(75, 24);
|
||||
this.cmbType.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbType.TabIndex = 520;
|
||||
//
|
||||
// comboItem6
|
||||
//
|
||||
this.comboItem6.Text = "全部";
|
||||
//
|
||||
// comboItem7
|
||||
//
|
||||
this.comboItem7.Text = "打折";
|
||||
this.comboItem7.Value = "3";
|
||||
//
|
||||
// comboItem8
|
||||
//
|
||||
this.comboItem8.Text = "直降";
|
||||
this.comboItem8.Value = "2";
|
||||
//
|
||||
// comboItem9
|
||||
//
|
||||
this.comboItem9.Text = "一口价";
|
||||
this.comboItem9.Value = "1";
|
||||
//
|
||||
// cmbActState
|
||||
//
|
||||
this.cmbActState.DisplayMember = "Text";
|
||||
this.cmbActState.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
|
||||
this.cmbActState.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbActState.FormattingEnabled = true;
|
||||
this.cmbActState.ItemHeight = 18;
|
||||
this.cmbActState.Items.AddRange(new object[] {
|
||||
this.comboItem1,
|
||||
this.comboItem2,
|
||||
this.comboItem3,
|
||||
this.comboItem4,
|
||||
this.comboItem5});
|
||||
this.cmbActState.Location = new System.Drawing.Point(218, 6);
|
||||
this.cmbActState.Name = "cmbActState";
|
||||
this.cmbActState.Size = new System.Drawing.Size(75, 24);
|
||||
this.cmbActState.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.cmbActState.TabIndex = 520;
|
||||
//
|
||||
// comboItem1
|
||||
//
|
||||
this.comboItem1.Text = "全部";
|
||||
//
|
||||
// comboItem2
|
||||
//
|
||||
this.comboItem2.Text = "未开始";
|
||||
this.comboItem2.Value = "0";
|
||||
//
|
||||
// comboItem3
|
||||
//
|
||||
this.comboItem3.Text = "进行中";
|
||||
this.comboItem3.Value = "1";
|
||||
//
|
||||
// comboItem4
|
||||
//
|
||||
this.comboItem4.Text = "已结束";
|
||||
this.comboItem4.Value = "2";
|
||||
//
|
||||
// comboItem5
|
||||
//
|
||||
this.comboItem5.Text = "已失效";
|
||||
this.comboItem5.Value = "3";
|
||||
//
|
||||
// txtActivity
|
||||
//
|
||||
this.txtActivity.Location = new System.Drawing.Point(66, 7);
|
||||
this.txtActivity.Name = "txtActivity";
|
||||
this.txtActivity.Size = new System.Drawing.Size(95, 23);
|
||||
this.txtActivity.TabIndex = 481;
|
||||
//
|
||||
// btnReload
|
||||
//
|
||||
this.btnReload.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnReload.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnReload.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnReload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnReload.Location = new System.Drawing.Point(577, 7);
|
||||
this.btnReload.Name = "btnReload";
|
||||
this.btnReload.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnReload.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnReload.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnReload.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnReload.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnReload.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnReload.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnReload.Style.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(8)))), ((int)(((byte)(55)))), ((int)(((byte)(114)))));
|
||||
this.btnReload.Style.GradientAngle = 90;
|
||||
this.btnReload.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnReload.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnReload.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnReload.TabIndex = 575;
|
||||
this.btnReload.Text = "重填";
|
||||
this.btnReload.Click += new System.EventHandler(this.btnReload_Click);
|
||||
//
|
||||
// btnEdit
|
||||
//
|
||||
this.btnEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnEdit.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnEdit.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnEdit.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnEdit.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnEdit.Location = new System.Drawing.Point(767, 7);
|
||||
this.btnEdit.Name = "btnEdit";
|
||||
this.btnEdit.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnEdit.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnEdit.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnEdit.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnEdit.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnEdit.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnEdit.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnEdit.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnEdit.Style.GradientAngle = 90;
|
||||
this.btnEdit.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnEdit.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnEdit.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnEdit.TabIndex = 559;
|
||||
this.btnEdit.Text = "编辑";
|
||||
this.btnEdit.Visible = false;
|
||||
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
|
||||
//
|
||||
// btnInvalid
|
||||
//
|
||||
this.btnInvalid.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnInvalid.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnInvalid.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnInvalid.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnInvalid.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnInvalid.Location = new System.Drawing.Point(935, 7);
|
||||
this.btnInvalid.Name = "btnInvalid";
|
||||
this.btnInvalid.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnInvalid.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnInvalid.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnInvalid.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnInvalid.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnInvalid.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnInvalid.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnInvalid.Style.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(8)))), ((int)(((byte)(55)))), ((int)(((byte)(114)))));
|
||||
this.btnInvalid.Style.GradientAngle = 90;
|
||||
this.btnInvalid.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnInvalid.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnInvalid.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnInvalid.TabIndex = 546;
|
||||
this.btnInvalid.Text = "失效";
|
||||
this.btnInvalid.Click += new System.EventHandler(this.btnInvalid_Click);
|
||||
//
|
||||
// btnDelete
|
||||
//
|
||||
this.btnDelete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnDelete.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnDelete.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnDelete.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnDelete.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnDelete.Location = new System.Drawing.Point(851, 7);
|
||||
this.btnDelete.Name = "btnDelete";
|
||||
this.btnDelete.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnDelete.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnDelete.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnDelete.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnDelete.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnDelete.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnDelete.Style.GradientAngle = 90;
|
||||
this.btnDelete.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnDelete.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnDelete.TabIndex = 536;
|
||||
this.btnDelete.Text = "删除";
|
||||
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
|
||||
//
|
||||
// btnSearch
|
||||
//
|
||||
this.btnSearch.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSearch.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSearch.Location = new System.Drawing.Point(656, 7);
|
||||
this.btnSearch.Name = "btnSearch";
|
||||
this.btnSearch.Size = new System.Drawing.Size(80, 23);
|
||||
this.btnSearch.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSearch.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSearch.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSearch.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSearch.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSearch.Style.GradientAngle = 90;
|
||||
this.btnSearch.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSearch.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSearch.TabIndex = 536;
|
||||
this.btnSearch.Text = "查询/刷新";
|
||||
this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(428, 10);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(45, 17);
|
||||
this.label3.TabIndex = 517;
|
||||
this.label3.Text = "商品ID";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(163, 10);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(56, 17);
|
||||
this.label2.TabIndex = 521;
|
||||
this.label2.Text = "活动状态";
|
||||
//
|
||||
// lblLimit
|
||||
//
|
||||
this.lblLimit.AutoSize = true;
|
||||
this.lblLimit.Location = new System.Drawing.Point(295, 10);
|
||||
this.lblLimit.Name = "lblLimit";
|
||||
this.lblLimit.Size = new System.Drawing.Size(56, 17);
|
||||
this.lblLimit.TabIndex = 517;
|
||||
this.lblLimit.Text = "优惠类型";
|
||||
//
|
||||
// lblActivity
|
||||
//
|
||||
this.lblActivity.AutoSize = true;
|
||||
this.lblActivity.Location = new System.Drawing.Point(11, 10);
|
||||
this.lblActivity.Name = "lblActivity";
|
||||
this.lblActivity.Size = new System.Drawing.Size(56, 17);
|
||||
this.lblActivity.TabIndex = 515;
|
||||
this.lblActivity.Text = "活动名称";
|
||||
//
|
||||
// LimitedSalesManagerActiveForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1021, 459);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Name = "LimitedSalesManagerActiveForm";
|
||||
this.Text = "活动管理";
|
||||
this.Load += new System.EventHandler(this.LimitedSalesManagerActiveForm_Load);
|
||||
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.dgvActive)).EndInit();
|
||||
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.SplitContainer splitContainer2;
|
||||
private UserComponent.DataGridViewEx dgvActive;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.TextBox txtActivity;
|
||||
private System.Windows.Forms.Label lblActivity;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbActState;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private DevComponents.DotNetBar.Controls.ComboBoxEx cmbType;
|
||||
private System.Windows.Forms.Label lblLimit;
|
||||
private System.Windows.Forms.TextBox txtProID;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private DevComponents.DotNetBar.PanelEx btnDelete;
|
||||
private DevComponents.DotNetBar.PanelEx btnSearch;
|
||||
private DevComponents.Editors.ComboItem comboItem1;
|
||||
private DevComponents.Editors.ComboItem comboItem2;
|
||||
private DevComponents.Editors.ComboItem comboItem3;
|
||||
private DevComponents.Editors.ComboItem comboItem4;
|
||||
private DevComponents.Editors.ComboItem comboItem5;
|
||||
private DevComponents.Editors.ComboItem comboItem6;
|
||||
private DevComponents.Editors.ComboItem comboItem7;
|
||||
private DevComponents.Editors.ComboItem comboItem8;
|
||||
private DevComponents.Editors.ComboItem comboItem9;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private DevComponents.DotNetBar.PanelEx btnInvalid;
|
||||
private DevComponents.DotNetBar.PanelEx btnEdit;
|
||||
private DevComponents.DotNetBar.PanelEx btnReload;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActivityId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActivityName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPreStartTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colStartTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colEndTime;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrefereType;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colActiveState;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
|
||||
public UserControls.StatusBarUserControl statusBar;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,694 @@
|
||||
using AllBase;
|
||||
using AllBase.Helper;
|
||||
using AllBase.Model.Result;
|
||||
using LittleRabbit.Extension;
|
||||
using LittleRabbit.LittleRabbitForms.BaseForms;
|
||||
using NaiBa.Util.Extension;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class LimitedSalesManagerActiveForm : Form
|
||||
{
|
||||
private DouShopLoginInfo shop = null;
|
||||
private CheckBox chkSelectAll = null;
|
||||
public List<string> lstActiveId = new List<string>();
|
||||
public SeckillingAndLimitedSalesForm seckillingAndLimitedSalesForm = null;
|
||||
string _signature = "";
|
||||
string _timeSpan = "";
|
||||
public bool isGetActiveSuccess = false;
|
||||
public List<ActiveInfo> activeList = new List<ActiveInfo>();
|
||||
bool isAll = true;
|
||||
|
||||
public LimitedSalesManagerActiveForm(DouShopLoginInfo _shop = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
shop = _shop;
|
||||
cmbActState.SelectedIndex = 0;
|
||||
cmbType.SelectedIndex = 0;
|
||||
txtActivity.Focus();
|
||||
|
||||
//设置全选按钮
|
||||
chkSelectAll = dgvActive.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
dgvActive.Columns["colSelect"].HeaderText = "";
|
||||
chkSelectAll.Width = chkSelectAll.Height = 13;
|
||||
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged; //全选事件
|
||||
}
|
||||
|
||||
private void LimitedSalesManagerActiveForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
this.SearchActivitys();
|
||||
});
|
||||
}
|
||||
|
||||
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!chkSelectAll.Checked)
|
||||
{
|
||||
if (isAll)
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvActive.Rows)
|
||||
{
|
||||
long ActiveId = row.Cells["colActivityId"].Value.ParseToLong();
|
||||
row.Cells["colSelect"].Value = false;
|
||||
lstActiveId.Remove(ActiveId.ToString());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
isAll = true;
|
||||
foreach (DataGridViewRow row in dgvActive.Rows)
|
||||
{
|
||||
long ActiveId = row.Cells["colActivityId"].Value.ParseToLong();
|
||||
if (lstActiveId.Contains(ActiveId.ToString()))
|
||||
row.Cells["colSelect"].Value = true;
|
||||
else
|
||||
row.Cells["colSelect"].Value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvActive.Rows)
|
||||
{
|
||||
row.Cells["colSelect"].Value = true;
|
||||
long ActiveId = row.Cells["colActivityId"].Value.ParseToLong();
|
||||
if (!lstActiveId.Any(p => p == ActiveId.ToString()))
|
||||
lstActiveId.Add(ActiveId.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dgvActive_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
||||
return;
|
||||
string headerText = dgvActive.Columns[e.ColumnIndex].HeaderText;
|
||||
string columnName = dgvActive.Columns[e.ColumnIndex].Name;
|
||||
long ActiveId = dgvActive.Rows[e.RowIndex].Cells["colActivityId"].Value.ParseToLong();
|
||||
var row = dgvActive.Rows[e.RowIndex];
|
||||
switch (columnName)
|
||||
{
|
||||
case "colSelect":
|
||||
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
||||
if (dgvActive.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool())
|
||||
{
|
||||
if (lstActiveId.Any(p => p == ActiveId.ToString()))
|
||||
lstActiveId.RemoveAll(p => p == ActiveId.ToString());
|
||||
lstActiveId.Add(ActiveId.ToString());
|
||||
}
|
||||
else
|
||||
lstActiveId.Remove(ActiveId.ToString());
|
||||
if (dgvActive.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
||||
chkSelectAll.Checked = true;
|
||||
else
|
||||
{
|
||||
isAll = false;
|
||||
chkSelectAll.Checked = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void GetActive()
|
||||
{
|
||||
if (shop == null)
|
||||
return;
|
||||
|
||||
ShowVisitorMessage("");
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (shop.LoginStatus == "登录成功")
|
||||
seckillingAndLimitedSalesForm.GetActiveByCef(this.shop);
|
||||
|
||||
var rowsTemp = dgvActive.Rows.Cast<DataGridViewRow>().ToList();
|
||||
rowsTemp.Reverse();
|
||||
});
|
||||
}
|
||||
|
||||
public void GetActiveSim(string listUrl, string referrerUrl, Dictionary<string, string> headers, string firstPageData = "")
|
||||
{
|
||||
ShowVisitorMessage("");
|
||||
|
||||
int total = -1;
|
||||
int number = 0;
|
||||
string result = "";
|
||||
if (!string.IsNullOrEmpty(firstPageData))
|
||||
result = firstPageData;
|
||||
|
||||
//获取所有活动
|
||||
DateTime date = DateTime.Now.Date;
|
||||
_timeSpan = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_timeSpan))
|
||||
_timeSpan = BaseRegex.GetMatchRegexString(ref listUrl, "&_=([\\s\\S]+?)");
|
||||
if (string.IsNullOrEmpty(_timeSpan))
|
||||
_timeSpan = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now).ToString();
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl, "&_signature=([\\s\\S]+?)&");
|
||||
if (string.IsNullOrEmpty(_signature))
|
||||
{
|
||||
var listUrl2 = listUrl + "&";
|
||||
_signature = BaseRegex.GetMatchRegexString(ref listUrl2, "&_signature=([\\s\\S]+?)&");
|
||||
}
|
||||
listUrl = "https://fxg.jinritemai.com/shop/promotion/listFlashWithTimeLimit?campaign_status=&shop_stype=&page=1&pageSize=20&_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
for (int i = 1; i < 9999; i++)
|
||||
{
|
||||
result = "";
|
||||
number += 20;
|
||||
for (int j = 0; j < 3 && !result.Contains("\"st\":0"); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
if (headers.ContainsKey("Accept"))
|
||||
simRequest.Accept = headers["Accept"];
|
||||
if (headers.ContainsKey("UserAgent"))
|
||||
simRequest.UserAgent = headers["UserAgent"];
|
||||
var cookie = shop.Cookies;
|
||||
|
||||
var rUrl = listUrl.Replace("page=1", "page=" + i);
|
||||
result = simRequest.Request_Get(rUrl, referrerUrl, new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(2000, 3000));
|
||||
}
|
||||
}
|
||||
|
||||
if (result.Contains("\"st\":0,\"msg\":\"\",\"code\":0,") && !seckillingAndLimitedSalesForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.isGetActiveSuccess = true;
|
||||
|
||||
var jObj = JObject.Parse(result);
|
||||
var aList = JsonHelper.DeserializeJsonToList<ActiveInfo>(jObj["data"]["flash_list"]?.ToString());
|
||||
|
||||
foreach (var info in aList)
|
||||
{
|
||||
if (this.activeList.Any(p => p.campaign_id == info.campaign_id))
|
||||
this.activeList.RemoveAll(p => p.campaign_id == info.campaign_id);
|
||||
this.activeList.Add(info);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2000));
|
||||
}
|
||||
else
|
||||
{
|
||||
isGetActiveSuccess = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (number >= total)
|
||||
break;
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (seckillingAndLimitedSalesForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取中断";
|
||||
}
|
||||
else if (!isGetActiveSuccess)
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取活动信息失败";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "获取完成";
|
||||
}
|
||||
this.statusBar.pgbTaskProgress.Value = 0;
|
||||
this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
||||
this.statusBar.pgbTaskProgress.Maximum = 0;
|
||||
}));
|
||||
}
|
||||
|
||||
public void ShowVisitorMessage(string msg, string activityId = "")
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.label1.Text = msg;
|
||||
if (!string.IsNullOrEmpty(activityId))
|
||||
{
|
||||
var row = this.dgvActive.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => activityId == r.Cells["colActivityId"].Value?.ToString());
|
||||
if (row != null)
|
||||
{
|
||||
row.Cells["colMessage"].Value = msg;
|
||||
if (msg.EndsWith("修改成功!")) {
|
||||
row.Cells["colActiveState"].Value = "待查询";
|
||||
row.Cells["colPreStartTime"].Value = "待查询";
|
||||
row.Cells["colStartTime"].Value = "待查询";
|
||||
row.Cells["colEndTime"].Value = "待查询";
|
||||
row.Cells["colPrefereType"].Value = "待查询";
|
||||
}
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
public void ClearData()
|
||||
{
|
||||
this.lstActiveId.Clear();
|
||||
this.activeList.Clear();
|
||||
this.dgvActive.Rows.Clear();
|
||||
}
|
||||
|
||||
private void btnSearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
SearchActivitys();
|
||||
}
|
||||
|
||||
private void SearchActivitys()
|
||||
{
|
||||
ClearData();
|
||||
|
||||
ShowVisitorMessage("");
|
||||
ShowVisitorMessage("查询开始");
|
||||
if (this.activeList.Count == 0)
|
||||
{
|
||||
if (seckillingAndLimitedSalesForm.cancellationTokenSource.IsCancellationRequested)
|
||||
seckillingAndLimitedSalesForm.cancellationTokenSource = new CancellationTokenSource();
|
||||
GetActiveSim("https://fxg.jinritemai.com/shop/promotion/listFlashWithTimeLimit?campaign_status=&shop_stype=&page=1&pageSize=20&_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature, "https://fxg.jinritemai.com/market/center/tools/limitsales", new Dictionary<string, string>());
|
||||
}
|
||||
string name = "", id = "", stateText = "", stateVal = "", typeText = "", typeVal = "";
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
name = txtActivity.Text.Trim();
|
||||
id = txtProID.Text.Trim();
|
||||
stateText = cmbActState.SelectedItem.ToString();
|
||||
stateVal = stateText == "全部" ? "" : (stateText == "进行中" ? "1" : (stateText == "已结束" ? "2" : (stateText == "未开始" ? "0" : "3")));
|
||||
typeText = cmbType.SelectedItem.ToString();
|
||||
typeVal = typeText == "全部" ? "" : (typeText == "打折" ? "3" : (typeText == "直降" ? "2" : "1"));
|
||||
}));
|
||||
if ((name == "" && id == "" && stateVal == "" && typeVal == "" && this.dgvActive.Rows.Count == activeList.Count) || activeList.Count == 0)
|
||||
{
|
||||
ShowVisitorMessage("查询完成!");
|
||||
return;
|
||||
}
|
||||
Task.Run(() =>
|
||||
{
|
||||
List<ActiveInfo> infos = new List<ActiveInfo>();
|
||||
|
||||
var listUrl = "https://fxg.jinritemai.com/shop/promotion/listFlashWithTimeLimit?title=&campaign_status=&shop_stype=&product_id=" + id + "&page=1&pageSize=20&_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
int total = -1;
|
||||
int number = 0;
|
||||
string result = "";
|
||||
for (int i = 1; i < 9999; i++)
|
||||
{
|
||||
result = "";
|
||||
number += 20;
|
||||
for (int j = 0; j < 3 && !result.Contains("\"st\":0"); j++)
|
||||
{
|
||||
CommonSimRequest simRequest = new CommonSimRequest();
|
||||
simRequest.Accept = "application/json, text/plain, */*";
|
||||
var cookie = shop.Cookies;
|
||||
|
||||
var rUrl = listUrl.Replace("page=1", "page=" + i);
|
||||
result = simRequest.Request_Get(rUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales", new Dictionary<string, string>(), cookie);
|
||||
if (j > 0)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(1000, 2000));
|
||||
}
|
||||
}
|
||||
if (result.Contains("\"st\":0") && !seckillingAndLimitedSalesForm.cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
if (total == -1)
|
||||
{
|
||||
total = BaseRegex.GetIntJson(ref result, "total");
|
||||
}
|
||||
|
||||
var jObj = JObject.Parse(result);
|
||||
var aList = JsonHelper.DeserializeJsonToList<ActiveInfo>(jObj["data"]["flash_list"]?.ToString());
|
||||
|
||||
if (!string.IsNullOrEmpty(name))
|
||||
aList = aList.Where(x => x.title == name).ToList();
|
||||
if (!string.IsNullOrEmpty(stateVal))
|
||||
aList = aList.Where(x => x.campaign_status == stateVal).ToList();
|
||||
if (!string.IsNullOrEmpty(typeVal))
|
||||
aList = aList.Where(x => x.shop_stype == typeVal).ToList();
|
||||
int totals = aList.Count;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
//dgvActive.Rows.Clear();
|
||||
isAll = false;
|
||||
for (int j = 0; j < totals; j++)
|
||||
{
|
||||
var info = aList[j];
|
||||
var shop_stype = info.shop_stype == "1" ? "一口价" : (info.shop_stype == "3" ? "打折" : "直降");
|
||||
var status = info.campaign_status == "2" ? "已结束" : (info.campaign_status == "1" ? "进行中" : (info.campaign_status == "0" ? "未开始" : "已失效"));
|
||||
if (lstActiveId.Contains(info.campaign_id))
|
||||
this.dgvActive.Rows.Add(true, info.campaign_id, info.title, info.pre_begin_time, info.begin_time, info.end_time, shop_stype, status);
|
||||
else
|
||||
this.dgvActive.Rows.Add(false, info.campaign_id, info.title, info.pre_begin_time, info.begin_time, info.end_time, shop_stype, status);
|
||||
}
|
||||
}));
|
||||
|
||||
foreach (var info in aList)
|
||||
{
|
||||
infos.Add(info);
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(1500, 2000));
|
||||
}
|
||||
if (number >= total)
|
||||
break;
|
||||
}
|
||||
|
||||
ShowVisitorMessage("查询完成!");
|
||||
});
|
||||
}
|
||||
|
||||
private void btnReload_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.txtActivity.Text = string.Empty;
|
||||
this.txtProID.Text = string.Empty;
|
||||
this.cmbActState.SelectedIndex = 0;
|
||||
this.cmbType.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private void btnDelete_Click(object sender, EventArgs e)
|
||||
{
|
||||
lstActiveId = dgvActive.Rows.Cast<DataGridViewRow>()
|
||||
.Where(r => r.Cells["colSelect"].Value.ParseToBool() == true)
|
||||
.Select(r => r.Cells["colActivityId"].Value.ToString()).ToList();
|
||||
|
||||
if (lstActiveId.Count == 0 || dgvActive.Rows.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择待删除的活动!");
|
||||
return;
|
||||
}
|
||||
if (BaseMsgForm.ShowConfirm("确定要删除活动吗?确认删除后,将永久删除,无法恢复!").DialogResult == DialogResult.OK)
|
||||
{
|
||||
ShowVisitorMessage("");
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
List<string> lstActiveIdTemp = new List<string>();
|
||||
lstActiveIdTemp.AddRange(lstActiveId);
|
||||
foreach (var id in lstActiveIdTemp)
|
||||
{
|
||||
long ActiveId = id.ParseToLong();
|
||||
DelActive(ActiveId);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void DelActive(long ActiveId, bool isRemoveInDgv = true)
|
||||
{
|
||||
var deleteUrl = "https://fxg.jinritemai.com/shop/promotion/setFlashStatus?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
var cookies = shop.Cookies;
|
||||
|
||||
DataGridViewRow row = null;
|
||||
row = dgvActive.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colActivityId"].Value.ParseToLong() == ActiveId);
|
||||
if (row == null)
|
||||
return;
|
||||
|
||||
string name = row.Cells["colActivityName"].Value.ToString();
|
||||
var colActiveState = row.Cells["colActiveState"].Value.ToString();
|
||||
// 未失效活动先设置失效
|
||||
if (colActiveState == "进行中" || colActiveState == "未开始")
|
||||
{
|
||||
//Invoke(new Action(() => { row.Cells["colMessage"].Value = name + "活动" + colActiveState + ",请先设置失效,再删除!"; }));
|
||||
//continue;
|
||||
SetActiveInvalid(ActiveId.ToString());
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
}
|
||||
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
var postData = "{\"campaign_id\":\"" + ActiveId + "\",\"status\":3}";
|
||||
string result = request.Request_PostByBigLength(deleteUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales", dicts, cookies, postData, false);
|
||||
if (result.Contains("{\"st\":0,\"msg\":\"\",\"code\":0,"))
|
||||
{
|
||||
if (isRemoveInDgv)
|
||||
{
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "删除完成,活动已删除!"; }));
|
||||
ShowVisitorMessage("删除完成,活动" + name + "已删除!");
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
if (isRemoveInDgv)
|
||||
{
|
||||
lstActiveId.Remove(ActiveId.ToString());
|
||||
activeList.Remove(activeList.Where(x => x.campaign_id == ActiveId.ToString()).FirstOrDefault());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "删除失败:" + BaseRegex.GetStringJson(ref result, "msg"); }));
|
||||
}
|
||||
}
|
||||
|
||||
private void btnInvalid_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (lstActiveId.Count == 0 || dgvActive.Rows.Count == 0)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("请选择待失效的活动!");
|
||||
return;
|
||||
}
|
||||
if (BaseMsgForm.ShowConfirm("确定要把活动设置为失效吗?").DialogResult == DialogResult.OK)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
for (int i = 0; i < dgvActive.Rows.Count; i++)
|
||||
{
|
||||
DataGridViewRow row = dgvActive.Rows[i];
|
||||
SetActiveInvalid(row.Cells["colActivityId"].Value.ToString());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void SetActiveInvalid(string activityId)
|
||||
{
|
||||
var row = this.dgvActive.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colActivityId"].Value.ToString() == activityId);
|
||||
if (row == null)
|
||||
return;
|
||||
|
||||
var failUrl = "https://fxg.jinritemai.com/shop/promotion/setFlashStatus?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
var cookies = shop.Cookies;
|
||||
|
||||
long ActiveId = row.Cells["colActivityId"].Value.ParseToLong();
|
||||
if (lstActiveId.Any(p => p == ActiveId.ToString()))
|
||||
{
|
||||
string name = row.Cells["colActivityName"].Value.ToString();
|
||||
var colActiveState = row.Cells["colActiveState"].Value.ToString();
|
||||
if (colActiveState != "进行中" && colActiveState != "未开始")
|
||||
{
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = name + "活动" + colActiveState + ",无需再设置失效!"; }));
|
||||
return;
|
||||
}
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
var postData = "{\"campaign_id\":\"" + ActiveId + "\",\"status\":2}";
|
||||
string result = request.Request_PostByBigLength(failUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales", dicts, cookies, postData, false);
|
||||
if (result.Contains("{\"st\":0,\"msg\":\"\",\"code\":0,"))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var activeInfo = activeList.Where(x => x.campaign_id == ActiveId.ToString()).FirstOrDefault();
|
||||
if (activeInfo != null)
|
||||
{
|
||||
activeInfo.campaign_status = "3";
|
||||
row.Cells["colActiveState"].Value = "已失效";
|
||||
row.Cells["colMessage"].Value = "设置失效已完成!";
|
||||
}
|
||||
}));
|
||||
Thread.Sleep(Randomx.GetId(250, 500));
|
||||
}
|
||||
else
|
||||
{
|
||||
Invoke(new Action(() => { row.Cells["colMessage"].Value = "设置失效失败 :" + BaseRegex.GetStringJson(ref result, "msg"); }));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnEdit_Click(object sender, EventArgs e)
|
||||
{
|
||||
//if (dgvActive.Rows.Count == 0)
|
||||
//{
|
||||
// BaseMsgForm.ShowInfo("请先获取活动列表!");
|
||||
// return;
|
||||
//}
|
||||
//if (lstActiveId.Count == 0)
|
||||
//{
|
||||
// BaseMsgForm.ShowInfo("请选择待失效的活动!");
|
||||
// return;
|
||||
//}
|
||||
|
||||
//var cookies = shop.Cookies;
|
||||
//for (int i = 0; i < dgvActive.Rows.Count; i++)
|
||||
//{
|
||||
// DataGridViewRow row = dgvActive.Rows[i];
|
||||
// long ActiveId = row.Cells["colActivityId"].Value.ParseToLong();
|
||||
// if (lstActiveId.Any(p => p == ActiveId.ToString()))
|
||||
// {
|
||||
// string name = row.Cells["colActivityName"].Value.ToString();
|
||||
// var colActiveState = row.Cells["colActiveState"].Value.ToString();
|
||||
// if (colActiveState != "进行中" && colActiveState != "未开始")
|
||||
// {
|
||||
// BaseMsgForm.ShowInfo("只能编辑进行中或者未开始的活动," + name + "活动" + colActiveState + "!");
|
||||
// continue;
|
||||
// }
|
||||
// ShowVisitorMessage("");
|
||||
// var status = 1;
|
||||
// if (colActiveState == "未开始")
|
||||
// status = 0;
|
||||
// CommonSimRequest simRequest = new CommonSimRequest();
|
||||
// var rUrl = "https://fxg.jinritemai.com/byteshop/promotion/detailFlashAndGoods?campaign_id=" + ActiveId + "&filter_unable_product=0&_bid=ecom_market_shop&appid=1&_= " + _underline + " & _signature = " + _signature;
|
||||
// var result = simRequest.Request_Get(rUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?id=" + ActiveId + "&refer=edit&status=" + status, new Dictionary<string, string>(), cookies);
|
||||
// if (result.Contains("{\"st\":0,\"msg\":\"\",\"code\":0,"))
|
||||
// {
|
||||
// ActiveInfoEdit infoEdit = new ActiveInfoEdit();
|
||||
// infoEdit.campaign_id = ActiveId.ToString();
|
||||
// JObject o1 = JObject.Parse(result);
|
||||
// JObject o2 = JObject.Parse(o1["data"]?.ToString());
|
||||
|
||||
// infoEdit.sub_stype = o2["sub_stype"].ToString().ParseToInt();
|
||||
// infoEdit.title = o2["title"].ToString();
|
||||
// infoEdit.pre_begin_time = o2["pre_begin_time"].ToString();
|
||||
// infoEdit.begin_time = o2["begin_time"].ToString();
|
||||
// infoEdit.end_time = o2["end_time"].ToString();
|
||||
// infoEdit.order_expire_time = o2["order_expire_time"].ToString();
|
||||
// infoEdit.shop_stype = o2["shop_stype"].ToString();
|
||||
// infoEdit.time_set_type = o2["time_set_type"].ToString();
|
||||
// infoEdit.status = o2["status"].ToString().ParseToInt();
|
||||
// infoEdit.stock_type = o2["stock_type"].ToString();
|
||||
// infoEdit.sold_out_type = o2["sold_out_type"].ToString();
|
||||
// infoEdit.promotion_goods = new List<Promotion_Goods>();
|
||||
|
||||
// JArray arr = JArray.Parse(o2["promotion_goods"].ToString());
|
||||
// for (int x = 0; x < arr.Count; x++)
|
||||
// {
|
||||
// JObject ox = JObject.Parse(arr[x].ToString());
|
||||
// Promotion_Goods _Goods = new Promotion_Goods();
|
||||
// _Goods.product_id = ox["product_id"].ToString();
|
||||
// _Goods.title = ox["title"].ToString();
|
||||
// _Goods.cover = ox["cover"].ToString();
|
||||
// _Goods.config_scope = ox["config_scope"].ToString().ParseToInt();
|
||||
// _Goods.promotion_skus = new List<Promotion_Skus>();
|
||||
|
||||
// JArray arrSku = JArray.Parse(ox["promotion_skus"].ToString());
|
||||
// for (int j = 0; j < arrSku.Count; j++)
|
||||
// {
|
||||
// JObject oj = JObject.Parse(arrSku[j].ToString());
|
||||
// Promotion_Skus skus = new Promotion_Skus();
|
||||
// skus.id = oj["id"].ToString();
|
||||
// skus.camp_stock_num = oj["camp_stock_num"].ToString().ParseToInt();
|
||||
// skus.camp_left_stock_num = oj["camp_left_stock_num"].ToString().ParseToInt();
|
||||
// skus.price = oj["price"].ToString().ParseToInt();
|
||||
// skus.user_limit = oj["user_limit"].ToString();
|
||||
// skus.origin_price = oj["origin_price"].ToString().ParseToInt();
|
||||
// skus.stock = oj["stock"].ToString().ParseToInt();
|
||||
// skus.specification = oj["specification"].ToString();
|
||||
// skus.shop_svalue = oj["shop_svalue"].ToString().ParseToInt();
|
||||
// skus.redline_price = oj["redline_price"].ToString().ParseToInt();
|
||||
// _Goods.promotion_skus.Add(skus);
|
||||
// }
|
||||
// infoEdit.promotion_goods.Add(_Goods);
|
||||
// }
|
||||
|
||||
// var editUrl = "https://fxg.jinritemai.com/byteshop/promotion/editFlashAndGoods?_bid=ecom_market_shop&appid=1&_= " + _underline + " & _signature = " + _signature;
|
||||
// var postProData = string.Empty;
|
||||
// postProData = postProData + "{\"sub_stype\":\"" + infoEdit.sub_stype + "\",\"shop_stype\":\"" + infoEdit.shop_stype + "\",\"title\":\"" + infoEdit.title + "\",\"time_set_type\":\"" + infoEdit.time_set_type + "\",\"promotion_goods\":[";
|
||||
// foreach (var goods in infoEdit.promotion_goods)
|
||||
// {
|
||||
// postProData = postProData + "{\"product_id\":\"" + goods.product_id + "\",\"title\":\"" + goods.title + "\",\"cover\":\"" + goods.cover + "\",\"config_scope\":\"" + goods.config_scope + "\",\"promotion_skus\":[";
|
||||
// if (goods.promotion_skus.Count > 0)
|
||||
// {
|
||||
// DouProductPromotionListSkuInfoEditForm skuInfoEdit = new DouProductPromotionListSkuInfoEditForm(goods, infoEdit.shop_stype);
|
||||
// skuInfoEdit.ShowDialog();
|
||||
// if (skuInfoEdit.DialogResult == DialogResult.OK)
|
||||
// {
|
||||
// foreach (var skus in skuInfoEdit.skuList)
|
||||
// {
|
||||
// postProData = postProData + "{\"id\":\"" + skus.id + "\",\"camp_stock_num\":\"" + skus.camp_stock_num + "\",\"user_limit\":\"" + skus.user_limit + "\",\"price\":\"" + skus.price + "\",\"shop_svalue\":\"" + skus.shop_svalue + "\"},";
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// postProData = postProData.Trim(',') + "]},";
|
||||
// }
|
||||
// postProData = postProData.Trim(',') + "],\"order_expire_time\":\"" + infoEdit.order_expire_time + "\",\"pre_begin_time\":\"" + infoEdit.pre_begin_time + "\",\"begin_time\":\"" + infoEdit.begin_time + "\",\"end_time\":\"" + infoEdit.end_time + "\",\"sold_out_type\":\"" + infoEdit.sold_out_type + "\",\"create_action_type\":\"0\",\"campaign_id\":\"" + infoEdit.campaign_id + "\"}";
|
||||
|
||||
// CommonSimRequest simRequest1 = new CommonSimRequest();
|
||||
// simRequest1.ContentType = "application/json";
|
||||
// var editResult = simRequest1.Request_PostByBigLength(editUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?id=" + ActiveId + "&refer=edit&status=" + status, new Dictionary<string, string>(), cookies, postProData, false);
|
||||
// if (editResult.Contains("{\"st\":0,\"msg\":\"\",\"code\":0,"))
|
||||
// {
|
||||
// ShowVisitorMessage("修改完成,活动已修改!");
|
||||
// Thread.Sleep(1000);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Invoke(new Action(() => { row.Cells["colMessage"].Value = "修改失败:" + BaseRegex.GetStringJson(ref editResult, "msg"); }));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
public string GetProductByActivityId(string activityId, string cookies)
|
||||
{
|
||||
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/detailFlashAndGoods?campaign_id=" + activityId + "&filter_unable_product=0&_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string refUrl = "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?id=" + activityId + "&refer=edit&status=1";
|
||||
string result = request.Request_Get(reqUrl, refUrl, dicts, cookies);
|
||||
return result;
|
||||
|
||||
//https://fxg.jinritemai.com/byteshop/promotion/detailFlashAndGoods?campaign_id=7129422311865811232&filter_unable_product=0&_bid=ecom_market_shop&appid=1
|
||||
//https://fxg.jinritemai.com/market/center/tools/limitsales/detail?id=7129422311865811232&refer=edit&status=1
|
||||
}
|
||||
|
||||
//根据id获取sku
|
||||
public string GetSkusByProductIds(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/batchGetSkuByProductIds?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string result = request.Request_PostByBigLength(reqUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?refer=new", dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string checkFlashAndGoods(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/checkFlashAndGoods?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string result = request.Request_PostByBigLength(reqUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?refer=new", dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
|
||||
public string createFlashAndGoods(string postData, string cookies)
|
||||
{
|
||||
CommonSimRequest request = new CommonSimRequest();
|
||||
request.ContentType = "application/json";
|
||||
Dictionary<string, string> dicts = new Dictionary<string, string>();
|
||||
string reqUrl = "https://fxg.jinritemai.com/byteshop/promotion/createFlashAndGoods?_bid=ecom_market_shop&appid=1&_=" + _timeSpan + "&_signature=" + _signature;
|
||||
string result = request.Request_PostByBigLength(reqUrl, "https://fxg.jinritemai.com/market/center/tools/limitsales/detail?refer=new", dicts, cookies, postData);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public class ActiveInfo
|
||||
{
|
||||
public string campaign_id { get; set; }
|
||||
public string stype { get; set; }
|
||||
public string title { get; set; }
|
||||
public string pre_begin_time { get; set; }
|
||||
public string begin_time { get; set; }
|
||||
public string end_time { get; set; }
|
||||
public string status { get; set; }
|
||||
public string shop_stype { get; set; }
|
||||
public string intro { get; set; }
|
||||
public string campaign_status { get; set; }
|
||||
public string warm_up { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -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,179 @@
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
partial class SalesCenterForm
|
||||
{
|
||||
/// <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("营销中心", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode1,
|
||||
treeNode2,
|
||||
treeNode3,
|
||||
treeNode4,
|
||||
treeNode5});
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tv = new LittleRabbit.UserComponent.UcTreeView();
|
||||
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();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// 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(800, 450);
|
||||
this.splitContainer1.SplitterDistance = 140;
|
||||
this.splitContainer1.SplitterWidth = 1;
|
||||
this.splitContainer1.TabIndex = 8;
|
||||
//
|
||||
// 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 = "营销中心";
|
||||
this.tv.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
|
||||
treeNode6});
|
||||
this.tv.OverForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
|
||||
this.tv.Size = new System.Drawing.Size(140, 450);
|
||||
this.tv.TabIndex = 4;
|
||||
this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect);
|
||||
//
|
||||
// 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(659, 450);
|
||||
this.panel1.TabIndex = 5;
|
||||
//
|
||||
// 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(659, 422);
|
||||
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(659, 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(47, 12);
|
||||
this.lblName.TabIndex = 0;
|
||||
this.lblName.Text = "lblName";
|
||||
//
|
||||
// SalesCenterForm
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Name = "SalesCenterForm";
|
||||
this.Text = "SalesCenterForm";
|
||||
this.Load += new System.EventHandler(this.SaleCenterForm_Load);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private UserComponent.UcTreeView tv;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Panel panel3;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Label lblName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
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;
|
||||
|
||||
namespace LittleRabbit.LittleRabbitForms.SalesCenterForms
|
||||
{
|
||||
public partial class SalesCenterForm : Form
|
||||
{
|
||||
public Lazy<SeckillingAndLimitedSalesForm> seckillingAndLimitedSalesForm = new Lazy<SeckillingAndLimitedSalesForm>();
|
||||
public Lazy<FullMinusForm> fullMinusForm = new Lazy<FullMinusForm>();
|
||||
public Lazy<GroupBuyForm> groupBuyFrom = new Lazy<GroupBuyForm>();
|
||||
public Lazy<CouponForm> couponForm = new Lazy<CouponForm>();
|
||||
|
||||
public SalesCenterForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void SaleCenterForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
tv.SelectedNode = tv.Nodes[0].Nodes[0];
|
||||
tv.ExpandGroup(tv.Nodes[0].Name);
|
||||
}
|
||||
catch { }
|
||||
|
||||
try
|
||||
{
|
||||
tv.SelectedNode = tv.Nodes[0].Nodes[0];
|
||||
tv.ExpandGroup(tv.Nodes[0].Name);
|
||||
|
||||
List<string> hideName = new List<string>() { "拼团监控"/*, "清理无流量"*/ };
|
||||
|
||||
foreach (var item in hideName)
|
||||
{
|
||||
var n = tv.Nodes[0].Nodes.Find(item, true);
|
||||
if (n.Count() > 0)
|
||||
n[0].Remove();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <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;
|
||||
f.Show();
|
||||
}
|
||||
|
||||
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(couponForm.Value);
|
||||
break;
|
||||
case "限时限量购":
|
||||
SetForm(seckillingAndLimitedSalesForm.Value);
|
||||
break;
|
||||
case "满减":
|
||||
SetForm(fullMinusForm.Value);
|
||||
break;
|
||||
case "拼团":
|
||||
SetForm(groupBuyFrom.Value);
|
||||
break;
|
||||
}
|
||||
}));
|
||||
}).Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
+1696
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,138 @@
|
||||
<?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="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAuthStatus.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="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
Loaded 100 of 694 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user