diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 1922257..d2bd2fe 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -27,7 +27,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 750; + public static int VersionCount = 752; //public static int VersionCount = 613; /// diff --git a/AllBase/JsonHelper.cs b/AllBase/JsonHelper.cs index 5c3c97e..2c58767 100644 --- a/AllBase/JsonHelper.cs +++ b/AllBase/JsonHelper.cs @@ -44,6 +44,17 @@ namespace AllBase return t; } + public static T DeserializeJsonToObjectNullable(string json) where T : class + { + if (string.IsNullOrEmpty(json)) + return json as T; + JsonSerializer serializer = new JsonSerializer(); + StringReader sr = new StringReader(json); + object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T)); + T t = o as T; + return t; + } + public static JObject JObjectParse(string json) { try diff --git a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs index 3c3cd85..c7a1e33 100644 --- a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs +++ b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs @@ -396,6 +396,10 @@ namespace KJD_Web.BLL string size_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "size_json"))?.Replace("'", "\\'"); string original_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "original_json"))?.Replace("'", "\\'"); + if (string.IsNullOrEmpty(id)) + { + return "{\"code\":500,\"msg\":\"没有指定商品\"}"; + } if (string.IsNullOrEmpty(user_name)) { return "{\"code\":500,\"msg\":\"没有用户名\"}"; diff --git a/PackTools/Publish/Publish/Form1.cs b/PackTools/Publish/Publish/Form1.cs index d2ee26e..cbd391c 100644 --- a/PackTools/Publish/Publish/Form1.cs +++ b/PackTools/Publish/Publish/Form1.cs @@ -23,8 +23,10 @@ namespace Publish { try { + int fileId = 0; + List filePathLst = new List(); - string destinationZip = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Update.zip"; + string destinationZip = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Update" + fileId + ".zip"; foreach (var item in this.lstFile.Items) { filePathLst.Add(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + item.ToString()); diff --git a/TEMUKJD/KJD.csproj b/TEMUKJD/KJD.csproj index 1cba96a..d5b38eb 100644 --- a/TEMUKJD/KJD.csproj +++ b/TEMUKJD/KJD.csproj @@ -263,6 +263,12 @@ DbProductCategorySearch.cs + + Form + + + DbProductEditDetailForm.cs + Form @@ -349,11 +355,11 @@ SaleStockUpForm.cs - + Form - - DbProductEditNotesForm.cs + + DbProductEditForm.cs Form @@ -994,6 +1000,9 @@ DbProductCategorySearch.cs + + DbProductEditDetailForm.cs + DbPriceEditForm.cs @@ -1036,8 +1045,8 @@ SaleStockUpForm.cs - - DbProductEditNotesForm.cs + + DbProductEditForm.cs DbProductListForm.cs diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.Designer.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.Designer.cs new file mode 100644 index 0000000..b1952a1 --- /dev/null +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.Designer.cs @@ -0,0 +1,165 @@ + +namespace TemuKJD.KJDForms.ProductSelectForms +{ + partial class DbProductEditDetailForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductEditDetailForm)); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.ucSkuImgListItem1 = new TemuKJD.ToolForms.UcSkuImgListItem(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.btnSave = new DevComponents.DotNetBar.PanelEx(); + this.btnCancel = new DevComponents.DotNetBar.PanelEx(); + this.flowLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.SuspendLayout(); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.AutoScroll = true; + this.flowLayoutPanel1.BackColor = System.Drawing.Color.White; + this.flowLayoutPanel1.Controls.Add(this.ucSkuImgListItem1); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(4); + this.flowLayoutPanel1.Size = new System.Drawing.Size(1198, 555); + this.flowLayoutPanel1.TabIndex = 2; + // + // ucSkuImgListItem1 + // + this.ucSkuImgListItem1.BackColor = System.Drawing.Color.White; + this.ucSkuImgListItem1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ucSkuImgListItem1.Location = new System.Drawing.Point(7, 7); + this.ucSkuImgListItem1.Name = "ucSkuImgListItem1"; + this.ucSkuImgListItem1.Size = new System.Drawing.Size(250, 280); + this.ucSkuImgListItem1.TabIndex = 0; + // + // splitContainer1 + // + this.splitContainer1.BackColor = System.Drawing.Color.White; + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer1.Location = new System.Drawing.Point(1, 33); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.flowLayoutPanel1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.btnCancel); + this.splitContainer1.Panel2.Controls.Add(this.btnSave); + this.splitContainer1.Size = new System.Drawing.Size(1198, 606); + this.splitContainer1.SplitterDistance = 555; + this.splitContainer1.TabIndex = 3; + // + // btnSave + // + 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(1108, 11); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(73, 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 = 435; + this.btnSave.Text = "保存"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnCancel + // + this.btnCancel.CanvasColor = System.Drawing.SystemColors.Control; + this.btnCancel.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnCancel.DisabledBackColor = System.Drawing.Color.Empty; + this.btnCancel.Location = new System.Drawing.Point(1031, 11); + this.btnCancel.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(73, 23); + this.btnCancel.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnCancel.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); + this.btnCancel.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); + this.btnCancel.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.btnCancel.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnCancel.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.btnCancel.Style.GradientAngle = 90; + this.btnCancel.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center; + this.btnCancel.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnCancel.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnCancel.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnCancel.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; + this.btnCancel.TabIndex = 508; + this.btnCancel.Text = "取消"; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // DbProductEditDetailForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1200, 640); + this.Controls.Add(this.splitContainer1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "DbProductEditDetailForm"; + this.Text = "DbProductEditDetailForm"; + this.TitleText = "DbProductEditDetailForm"; + this.Load += new System.EventHandler(this.DbProductEditDetailForm_Load); + this.Controls.SetChildIndex(this.splitContainer1, 0); + this.flowLayoutPanel1.ResumeLayout(false); + 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.FlowLayoutPanel flowLayoutPanel1; + private TemuKJD.ToolForms.UcSkuImgListItem ucSkuImgListItem1; + private System.Windows.Forms.SplitContainer splitContainer1; + private DevComponents.DotNetBar.PanelEx btnSave; + private DevComponents.DotNetBar.PanelEx btnCancel; + } +} \ No newline at end of file diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.cs new file mode 100644 index 0000000..7cff071 --- /dev/null +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.cs @@ -0,0 +1,154 @@ +using AllBase; +using AllBase.Model.Result; +using DevComponents.DotNetBar; +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; +using TemuKJD.BaseForms; +using TemuKJD.ToolForms; +using Work; + +namespace TemuKJD.KJDForms.ProductSelectForms +{ + public partial class DbProductEditDetailForm : LRBaseForm + { + KJDDBProduct dbProd = null; + List lstUcSkuImgListItem = new List(); + int maxIndex = 1; + int minIndex = 1; + + public DbProductEditDetailForm(KJDDBProduct _dbProd) + { + InitializeComponent(); + + if (_dbProd != null) + dbProd = _dbProd; + + this.Width = Math.Min(1600, Screen.PrimaryScreen.Bounds.Width); + this.Height = Math.Min(900, Screen.PrimaryScreen.Bounds.Height); + this.StartPosition = FormStartPosition.CenterScreen; + } + + private void DbProductEditDetailForm_Load(object sender, EventArgs e) + { + if (string.IsNullOrWhiteSpace(dbProd.product_json)) + { + var temuDBProd = DbProductSelectListManageForm.GetProductDetail(dbProd.id.ToString()); + if (temuDBProd == null || temuDBProd.id == 0) + { + BaseMsgForm.ShowError("商品已清除!"); + return; + } + dbProd = temuDBProd; + } + + var prodInfo = JsonHelper.DeserializeJsonToObject(dbProd.product_json); + var mainImgUrls = prodInfo.carouselImageUrls; + flowLayoutPanel1.Controls.Clear(); + lstUcSkuImgListItem.Clear(); + int index = 0; + foreach (var imgUrl in mainImgUrls) + { + index++; + maxIndex = index; + UcSkuImgListItem imgListItem = new UcSkuImgListItem(); + imgListItem.Anchor = AnchorStyles.None; + imgListItem.pictureBox1.ImageLocation = imgUrl.Replace("img.kwcdn.com", "img.cdnfe.com").Replace("https://", "http://"); + imgListItem.pictureBox1.Tag = imgUrl; + imgListItem.txtUseCount.Text = index.ToString(); + imgListItem.txtUseCount.Tag = index; + imgListItem.txtUseCount.ReadOnly = false; + imgListItem.btnDel.Text = "交换"; + imgListItem.btnDel.Tag = imgListItem; + imgListItem.btnDel.Click += BtnDel_Click; + this.flowLayoutPanel1.Controls.Add(imgListItem); + lstUcSkuImgListItem.Add(imgListItem); + } + } + + private void BtnDel_Click(object sender, EventArgs e) + { + PanelEx btnDel = sender as PanelEx; + if (btnDel == null) + return; + UcSkuImgListItem imgListItem = btnDel.Tag as UcSkuImgListItem; + if (imgListItem == null) + return; + + int newIndex = imgListItem.txtUseCount.Text.ParseToInt(); + if (newIndex < minIndex || newIndex > maxIndex) + { + BaseMsgForm.ShowError("图片序号超过范围!"); + return; + } + + try + { + var targetImgListItem = lstUcSkuImgListItem[newIndex - 1]; + var newImgUrl = targetImgListItem.pictureBox1.Tag.ParseToString(); + var oldImgUrl = imgListItem.pictureBox1.Tag.ParseToString(); + imgListItem.txtUseCount.Text = imgListItem.txtUseCount.Tag.ToString(); + targetImgListItem.pictureBox1.Tag = oldImgUrl; + targetImgListItem.pictureBox1.ImageLocation = oldImgUrl.Replace("img.kwcdn.com", "img.cdnfe.com").Replace("https://", "http://"); + imgListItem.pictureBox1.Tag = newImgUrl; + imgListItem.pictureBox1.ImageLocation = newImgUrl.Replace("img.kwcdn.com", "img.cdnfe.com").Replace("https://", "http://"); + } + catch (Exception ex) + { + BaseMsgForm.ShowError(ex.Message); + } + } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btnSave_Click(object sender, EventArgs e) + { + List imgUrlLst = new List(); + foreach(Control control in flowLayoutPanel1.Controls) + { + UcSkuImgListItem imgListItem = control as UcSkuImgListItem; + if (imgListItem == null) + continue; + + var imgUrl = imgListItem.pictureBox1.Tag.ParseToString(); + if (!string.IsNullOrEmpty(imgUrl)) + { + imgUrlLst.Add(imgUrl); + } + } + + var prodInfo = JsonHelper.DeserializeJsonToObjectNullable(dbProd.product_json); + if (dbProd != null && prodInfo != null) + { + var oldMainImgUrls = prodInfo.carouselImageUrls; + dbProd.product_json = dbProd.product_json.Replace(JsonHelper.SerializeObject(oldMainImgUrls), JsonHelper.SerializeObject(imgUrlLst)); + + var url = BaseClass.BuildObjString("product/mdy_db_product"); + var data = UserLogin.GetSignaturex() + "&db_id=" + dbProd.id; + data += "&product_json=" + HttpUtility.UrlEncode(dbProd.product_json, Encoding.UTF8); + var html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + html = GetHtml.PostUtf8(url, data); + if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) + { + string msg = "选品商品更新保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg"); + BaseMsgForm.ShowError(msg); + } + else + { + this.Close(); + } + } + } + } +} diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.resx b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.resx new file mode 100644 index 0000000..2bdeb30 --- /dev/null +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditDetailForm.resx @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAgIAQAAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP// + AAD///8AAAAAAAAAAAAAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMQ + AAAAAAAAAAAAAAAAAAAAAAAAABM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZkzEAAAAAAAAAAAAAAAAAAAAAADOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZMwAAAAAAAAAAAAAAAAAAABOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZkzAAAAAAAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmTEAAAAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAAAA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAADmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAA5mZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAADmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAGZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAJmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZAAAAAA + OZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmT + AAAAAZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmRAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZkwAAAZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZkwAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZMAAJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZEAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkwCZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkRmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZOZmZOZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmP+JmZmZmZmZj/////// + ///4OZmZj/eZmZmZmZmZmPg5OZmZmZuI//iIuZmZmZmZmZmZmZM5mZmZmZmZmZmZmb//+JmZmZmZmP// + //////////OZmP//uZmZmZmZmY//+ZmZOZf///////h5k5mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZ + mZ/////////////4mZ///4mZmZmZmZP///uZmZmP////////+JmZmZmZmZmZkzmZmZmZmZmZmZmZj//4 + mZmZmZmf////////////+Jmf//+JmZmZmZmb///4mZmY//////////+JmZmZmZmZmZM5mZmZmZmZmZmZ + mY//+JmZmZmZn/////////////mZmP//iZmZmZmZk///+5mZj/////iP////+JmZmZmZmZmTOZmZmZmZ + mZmZmZmP//iZmZmZmZ////iIiIiIiIiZOZj//4mZmZmZmZP///uZmf////eZmT////+ZmZmZmZmZkzmZ + mZmZmZmZmZmZj//4mZmZmZmf//+JmZmZmZmZk5mY//+JmZmZmZmT///7mZj///+ZmZmZj///uZmZmZmZ + mZM5mZmZmZmZmZmZmY//+JmZmZmZn///iZmZmZmZmZmZmP//iZmZN5k5k///+5mY///zk5mZOT///4mZ + mZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ///4mZmZmZmZmZmZj//4mZmP/5k5P///uZmP//+ZmZmZmY + //+JmZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf///4iIiIiIg5mZmY//+JOb//+JmT///7mZj//4mZ + mZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///////////85mZmP//iZn///+Jk///+5mf + //+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ////////////+ZmZj//4mY////85v/ + //uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf////////////mZmY//+Jv/// + //+Z///7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///////////+JmZmP// + if//////if//+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ///////////4mZ + mZj//4j///////j///uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf//+JMzMz + MzOZOZmY//////+D///////7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn/// + iZmZmZmZmZmZmP//////mY//////+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZ + mZ///4mZmZmZmZmZmZj/////+5mf//////uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZMzM5j//4 + kzMzmZmf//+JMzMzMzM5mZmY/////4mTk//////7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmP// + /////////4mZn////////////4mZmP////+ZmZmP////+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZ + mY/////////////4mZ/////////////7mZj////7mZmZn/////uZmP//iZmZmZmY///5mZmZmZmZkzmZ + mZmZmZn//////////////5mf////////////+Jmf////iZmZk5P////4mZ///4mZmZmZmP//+ZmZmZmZ + mZM5mZmZmZmZj/////////////iZn/////////////iZmP///5mZmZmZj///+5mY//+JmZmZmZj//4mZ + mZmZmZmTOZmZmZmZmZ/////////////zmZP///////////+JmZP///uTmZmZmZj//4mZm///mZmZmZmZ + //85mZmZmZmZkzmZmZmZmZOZiIiIiIiIiIiImTmZOIiIiIiIiIiImTmZOIi5mZmZmZOZiIuZmZk4iZOZ + mZmZOZiDmZmZmZmZmZM5mZmZmZmZOZmZmZmZmZmZmZOZmZmZmZmZmZmZmZOZmZmZmZmZmZmZOZmZmZmZ + mZk5mZmZmZOZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmTuIiIiIs5mZmZmZmZ + mTu4i7mZmZmZmZmZmTMzmZOZmZkzOZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmTmbj///////+HmT + mZmZk4j/////iJmZmZk4iP////iZOZmZj/mZOZOIiIiIiIiIiDmZmZmZmZmZkzmZmZmZmZmZj/////// + ///4mZk5k4///4iI///4OZOY////////iZOZmb/5mZmP///////////4mZmZmZmZmZM5mZmZmZmZn/// + //////////mZmY///5mZmZP///iZmP////////+ZOZk/iZmY/////////////4mZmZmZmZmTOZmZmZmZ + mZ/////////////5mZ////+JmZmY////iZl/////////+ZmZP4mZP//////////////7mZmZmZmZkzmZ + mZmZmZmb////////////uZP/j///+HM3j/////+ZmYj///////iZmT+JmY//////////////+JmZmZmZ + mZM5mZmZmZmZmY//////////+JmT+Jv///////////iPmTmZOI/4mP//uTk/iZmP//////////////iZ + mZmZmZmTOZmZmZmZmZmf//////////mZmZmZ///////////5mZmZmZmTOZk///mZP4mZj/////////// + ///4mZmZmZmZkzmZmZmZmZmTmP////////+JOZmZOY//////////iZmZmZmZmZk5mf/4mT+JmY////// + ////////+JmZmZmZmZM5mZmZmZmZmZn/////////mZmZmZk//////////zmZmZmZmZmZmTmP/zm/iZmP + //////////////iZmZmZmZmTOZmZmZmZmZk5v///////85OZmZkzmP////////iZmZmZmZmZmZmZn//4 + /4mZj/////hzN4/////4mZmZmZmZkzmZmZmZmZmZmZj//////4mZmTmY/4j////////4mZmZmZmZmZmZ + mZj///+JmY////+JmZmY////+JmZmZmZmZM5mZmZmZmZmZmZ//////+ZmZmZj////////////4mZmZmZ + mZmZmZmb////+ZmP///4mZu5mY////iZmZmZmZmTOZmZmZmZmZmZOb/////4k5mZmP/////////////7 + mZmZmZmZmZmZk/////OZv///+ZmP+Jmf///4mZmZmZmZkzmZmZmZmZmZmZmf////+ZmZmZj////////4 + eI//+JmZmZmZmZmZmZP////4mb///4mY//+JmP//+5mZmZmZmZM5mZmZmZmZmZk5v/////uTmZmb//// + ///4mZmX//iZmZmZmZmZmZmZ////+Jmf//95n///+Zj///OZmZmZmZmTOZmZmZmZmZmZmf//////mZmZ + mY//////+ZOZmZiJmZmZmZmZmZmZmY////+ZmP//+I////iP//+JmZmZmZmZkzmZmZmZmZmZmZj///// + /4mZmZmf/////5k5mZOZmTmZmZmZmZmZmZmP///4mZP/////////////OZmZmZmZmZM5mZmZmZmZmZk/ + ///////zmZmZm/////iZmZmZmZmZmZmZmZmZmZmZj///85mZj///////////+JmZmZmZmZmTOZmZmZmZ + mZmZv///////+5mZmZmP///5mZmZmZmZmZmZmZmZmZmZmZ///3mZmZj//////////4mZmZmZmZmZkzmZ + mZmZmZmZmb///4j///uZmZmZmP//mTmZmZmZmZmZmZmZmZmZmZmY/4OZmZmZeP///////4eZmZmZmZmZ + mZM5mZmZmZmZmZmY/4OZOP+JmZmZmZmIiZOZmZmZmZmZmZmZmZmZmZmZmYiZmZmZmZk4iIiIiIOZmZmZ + mZmZmZmTOZmZmZmZmZmZmTOZmZkzmZmZmZmZmZk5mZmZmZmZmZmZmZmZmZmZmZmZk5mZmZmZmZmZmZmZ + mZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmTGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZkwmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZkwA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZMACZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAABmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTAAADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAJmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmRAAAAA5mZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAACZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAAAAAGZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAOZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkwAAAAAA + AAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTAA + AAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZMAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZkwAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmTAAAAAAAAAAAAAAGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZEAAAAAAAAAAAAAAAA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAAAAAAAATmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZMQAAAAAAAAAAAAAAAAAAABOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZMQAAAAAAAAAAAAAAAAAAAAAAAzmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTMAAAAAAAAAAAAAAAAAAAAAAAAAAAEzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxAAAAAAAAAAAAAAD////////////////////////4AAAA + AAAAAAAAAB//////wAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAAP////wAAAAAAAAAAAAAAAA////w + AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAA + Af//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAA + AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAA + AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA + AAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA + AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA + AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA + AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA + AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA + AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA + AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA + AAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAA+AA + AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAA + AA/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA + AAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAA + AAAAAAAAAAAH///4AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAD////8AAAAAAAAAAAAAAAD///// + wAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAH////////////////////////w== + + + \ No newline at end of file diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.Designer.cs similarity index 91% rename from TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs rename to TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.Designer.cs index 4dfdd6a..1d22cce 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.Designer.cs @@ -1,6 +1,6 @@ namespace TemuKJD.KJDForms.ProductSelectForms { - partial class DbProductEditNotesForm + partial class DbProductEditForm { /// /// Required designer variable. @@ -28,7 +28,7 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductEditNotesForm)); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductEditForm)); this.panel2 = new System.Windows.Forms.Panel(); this.txtStickMarkCharge = new System.Windows.Forms.TextBox(); this.txtDeliveryCharge = new System.Windows.Forms.TextBox(); @@ -59,6 +59,7 @@ this.label12 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); + this.btnMainPicSort = new DevComponents.DotNetBar.PanelEx(); this.panel2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); @@ -66,6 +67,7 @@ // panel2 // this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.Controls.Add(this.btnMainPicSort); this.panel2.Controls.Add(this.txtStickMarkCharge); this.panel2.Controls.Add(this.txtDeliveryCharge); this.panel2.Controls.Add(this.btnSkuAi); @@ -446,6 +448,31 @@ this.label9.TabIndex = 447; this.label9.Text = " 分组"; // + // btnMainPicSort + // + this.btnMainPicSort.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnMainPicSort.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnMainPicSort.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnMainPicSort.DisabledBackColor = System.Drawing.Color.Empty; + this.btnMainPicSort.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnMainPicSort.Location = new System.Drawing.Point(173, 640); + this.btnMainPicSort.Name = "btnMainPicSort"; + this.btnMainPicSort.Size = new System.Drawing.Size(77, 26); + this.btnMainPicSort.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnMainPicSort.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnMainPicSort.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnMainPicSort.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.btnMainPicSort.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.btnMainPicSort.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.btnMainPicSort.Style.ForeColor.Color = System.Drawing.Color.White; + this.btnMainPicSort.Style.GradientAngle = 90; + this.btnMainPicSort.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnMainPicSort.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnMainPicSort.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnMainPicSort.TabIndex = 493; + this.btnMainPicSort.Text = "主图排序"; + this.btnMainPicSort.Click += new System.EventHandler(this.btnMainPicSort_Click); + // // DbProductEditNotesForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; @@ -497,5 +524,6 @@ private System.Windows.Forms.TextBox txtDeliveryCharge; private System.Windows.Forms.Label label11; private System.Windows.Forms.Label label12; + private DevComponents.DotNetBar.PanelEx btnMainPicSort; } } \ No newline at end of file diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.cs similarity index 93% rename from TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs rename to TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.cs index 0c7548f..15e6f89 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.cs @@ -17,11 +17,11 @@ using NaiBa.Util.Extension; namespace TemuKJD.KJDForms.ProductSelectForms { - public partial class DbProductEditNotesForm : LRBaseForm + public partial class DbProductEditForm : LRBaseForm { KJDDBProduct dbProd = null; - public DbProductEditNotesForm(KJDDBProduct prod) + public DbProductEditForm(KJDDBProduct prod) { InitializeComponent(); @@ -111,5 +111,11 @@ namespace TemuKJD.KJDForms.ProductSelectForms this.txtHeadWords.Text = dbProd.head_words; this.txtEndWords.Text = dbProd.end_words; } + + private void btnMainPicSort_Click(object sender, EventArgs e) + { + DbProductEditDetailForm editDetailForm = new DbProductEditDetailForm(dbProd); + editDetailForm.ShowDialog(); + } } } diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.resx b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.resx similarity index 100% rename from TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.resx rename to TEMUKJD/KJDForms/ProductSelectForms/DbProductEditForm.resx diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs index bed5845..3b6d237 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs @@ -376,7 +376,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms DeleteProduct(dbId); break; case "编辑/详情": - DbProductEditNotesForm editForm = new DbProductEditNotesForm(dbProduct); + DbProductEditForm editForm = new DbProductEditForm(dbProduct); editForm.ShowDialog(); dgvDbProduct.Rows[e.RowIndex].Cells["col_notes"].Value = dbProduct.notes; dgvDbProduct.Rows[e.RowIndex].Cells["col_ext_code"].Value = dbProduct.ext_code; diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.cs index b7217bf..4a9af76 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditDetailForm.cs @@ -58,6 +58,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms Task.Run(() => { if (DbProd != null) + DbProdDetail = DbProd; + if (string.IsNullOrWhiteSpace(DbProdDetail?.product_json)) DbProdDetail = PDDDBProdUserSelectForm.GetProductDetail(DbProd.id.ParseToString()); if (DbProdDetail == null) return; diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs index efba97b..26e2450 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdEditForm.cs @@ -46,9 +46,15 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.txtHeadWords.Text = dbProd.head_words; this.txtEndWords.Text = dbProd.end_words; - var prodTmp = GetProductDetail(dbProd.id.ToString()); - dbProd.sku_img_replace_base64 = prodTmp.sku_img_replace_base64; - dbProd.sku_img_replace_url = prodTmp.sku_img_replace_url; + if(string.IsNullOrWhiteSpace(dbProd?.product_json)) + { + var prodTmp = GetProductDetail(dbProd.id.ToString()); + if (prodTmp != null) + dbProd = prodTmp; + } + //var prodTmp = GetProductDetail(dbProd.id.ToString()); + //dbProd.sku_img_replace_base64 = prodTmp.sku_img_replace_base64; + //dbProd.sku_img_replace_url = prodTmp.sku_img_replace_url; if (!string.IsNullOrWhiteSpace(dbProd.sku_img_replace_url)) this.pictureBox2.ImageLocation = dbProd.sku_img_replace_url; else if (!string.IsNullOrWhiteSpace(dbProd.sku_img_replace_base64)) diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs index 165f649..54c153e 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs @@ -38,6 +38,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PDDDBProdListForm)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.btnExportTxt = new DevComponents.DotNetBar.PanelEx(); this.cmbGroupFilter = new System.Windows.Forms.ComboBox(); this.btnSelect = new DevComponents.DotNetBar.PanelEx(); this.btnDelSelect = new DevComponents.DotNetBar.PanelEx(); @@ -70,8 +71,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.txtSKC = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.dgvDbProduct = new TemuKJD.UserComponent.DataGridViewEx(); - this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage(); - this.statusBar = new TemuKJD.UserControls.StatusBarUserControl(); this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.col_db_id = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colFromShopId = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -99,6 +98,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.col_edit = new System.Windows.Forms.DataGridViewLinkColumn(); this.col_delete = new System.Windows.Forms.DataGridViewLinkColumn(); this.col_select_product = new System.Windows.Forms.DataGridViewLinkColumn(); + this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage(); + this.statusBar = new TemuKJD.UserControls.StatusBarUserControl(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -124,6 +125,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // splitContainer1.Panel1 // + this.splitContainer1.Panel1.Controls.Add(this.btnExportTxt); this.splitContainer1.Panel1.Controls.Add(this.cmbGroupFilter); this.splitContainer1.Panel1.Controls.Add(this.btnSelect); this.splitContainer1.Panel1.Controls.Add(this.btnDelSelect); @@ -148,10 +150,35 @@ namespace TemuKJD.PDDForms.ProductSelectForms // splitContainer1.Panel2 // this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); - this.splitContainer1.Size = new System.Drawing.Size(1364, 686); + this.splitContainer1.Size = new System.Drawing.Size(1438, 686); this.splitContainer1.SplitterDistance = 53; this.splitContainer1.TabIndex = 1; // + // btnExportTxt + // + this.btnExportTxt.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnExportTxt.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnExportTxt.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnExportTxt.DisabledBackColor = System.Drawing.Color.Empty; + this.btnExportTxt.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnExportTxt.Location = new System.Drawing.Point(1345, 15); + this.btnExportTxt.Name = "btnExportTxt"; + this.btnExportTxt.Size = new System.Drawing.Size(84, 25); + this.btnExportTxt.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnExportTxt.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnExportTxt.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnExportTxt.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.btnExportTxt.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.btnExportTxt.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.btnExportTxt.Style.ForeColor.Color = System.Drawing.Color.White; + this.btnExportTxt.Style.GradientAngle = 90; + this.btnExportTxt.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnExportTxt.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnExportTxt.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnExportTxt.TabIndex = 672; + this.btnExportTxt.Text = "批量导出"; + this.btnExportTxt.Click += new System.EventHandler(this.btnExportTxt_Click); + // // cmbGroupFilter // this.cmbGroupFilter.FormattingEnabled = true; @@ -419,7 +446,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.splitContainer2.Panel2.Controls.Add(this.ucSplitPage1); this.splitContainer2.Panel2.Controls.Add(this.statusBar); - this.splitContainer2.Size = new System.Drawing.Size(1364, 629); + this.splitContainer2.Size = new System.Drawing.Size(1438, 629); this.splitContainer2.SplitterDistance = 600; this.splitContainer2.TabIndex = 0; // @@ -430,7 +457,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.pnlEditExtCodePrice.Controls.Add(this.lblExtCode); this.pnlEditExtCodePrice.Controls.Add(this.panel2); this.pnlEditExtCodePrice.Controls.Add(this.lblExtCodePrice); - this.pnlEditExtCodePrice.Location = new System.Drawing.Point(445, 96); + this.pnlEditExtCodePrice.Location = new System.Drawing.Point(482, 96); this.pnlEditExtCodePrice.Name = "pnlEditExtCodePrice"; this.pnlEditExtCodePrice.Size = new System.Drawing.Size(474, 146); this.pnlEditExtCodePrice.TabIndex = 434; @@ -525,7 +552,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None; this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue; - this.pbLoading.Location = new System.Drawing.Point(657, 275); + this.pbLoading.Location = new System.Drawing.Point(694, 275); this.pbLoading.Name = "pbLoading"; this.pbLoading.Size = new System.Drawing.Size(50, 50); this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; @@ -602,36 +629,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.dgvDbProduct.Name = "dgvDbProduct"; this.dgvDbProduct.ReadOnly = true; this.dgvDbProduct.RowTemplate.Height = 23; - this.dgvDbProduct.Size = new System.Drawing.Size(1356, 600); + this.dgvDbProduct.Size = new System.Drawing.Size(1430, 600); this.dgvDbProduct.TabIndex = 6; this.dgvDbProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvDbProduct_CellContentClick); this.dgvDbProduct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dgvDbProduct_Scroll); // - // ucSplitPage1 - // - this.ucSplitPage1.CurrentPage = 1; - this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right; - this.ucSplitPage1.IsShowPageSize = false; - this.ucSplitPage1.Location = new System.Drawing.Point(1002, 0); - this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0); - this.ucSplitPage1.Name = "ucSplitPage1"; - this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0); - this.ucSplitPage1.PageSize = 50; - this.ucSplitPage1.Size = new System.Drawing.Size(362, 25); - this.ucSplitPage1.TabIndex = 6; - this.ucSplitPage1.TotalPage = 1; - // - // 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(1364, 25); - this.statusBar.TabIndex = 5; - // // colSelect // this.colSelect.FillWeight = 26F; @@ -843,10 +845,35 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.col_select_product.Resizable = System.Windows.Forms.DataGridViewTriState.True; this.col_select_product.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; // + // ucSplitPage1 + // + this.ucSplitPage1.CurrentPage = 1; + this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitPage1.IsShowPageSize = true; + this.ucSplitPage1.Location = new System.Drawing.Point(1024, 0); + this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0); + this.ucSplitPage1.Name = "ucSplitPage1"; + this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0); + this.ucSplitPage1.PageSize = 50; + this.ucSplitPage1.Size = new System.Drawing.Size(414, 25); + this.ucSplitPage1.TabIndex = 6; + this.ucSplitPage1.TotalPage = 1; + // + // 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(1438, 25); + this.statusBar.TabIndex = 5; + // // PDDDBProdListForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.ClientSize = new System.Drawing.Size(1366, 720); + this.ClientSize = new System.Drawing.Size(1440, 720); this.Controls.Add(this.splitContainer1); 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"))); @@ -940,5 +967,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms private System.Windows.Forms.DataGridViewLinkColumn col_edit; private System.Windows.Forms.DataGridViewLinkColumn col_delete; private System.Windows.Forms.DataGridViewLinkColumn col_select_product; + private DevComponents.DotNetBar.PanelEx btnExportTxt; } } \ No newline at end of file diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs index f8c4f59..35f4f78 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs @@ -12,6 +12,7 @@ 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 TemuKJD.BaseForms; @@ -127,7 +128,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms Task.Run(() => { int pageCount; - var list = GetProductList(out pageCount, page); + int pageSize = 50; + Invoke(new Action(() => { pageSize = this.ucSplitPage1.PageSize; })); + var list = GetProductList(out pageCount, page, pageSize); lstTemuDbProduct.AddRange(list); this.ucSplitPage1.TotalPage = pageCount; @@ -721,5 +724,50 @@ namespace TemuKJD.PDDForms.ProductSelectForms { this.pnlEditExtCodePrice.Visible = false; } + + private void btnExportTxt_Click(object sender, EventArgs e) + { + var lstProdId = dgvDbProduct.Rows.Cast().Where(row + => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["col_spu_id"]?.Value.ToString()).ToList(); + //var prodList = this.lstTemuDbProduct.Where(p => lstProdId.Contains(p.spu_id)).ToArray(); + + FolderBrowserDialog fd = new FolderBrowserDialog(); + if (fd.ShowDialog() == DialogResult.OK) + { + var path = fd.SelectedPath; + this.pbLoading.Visible = true; + this.statusBar.pgbTaskProgress.Maximum = lstProdId.Count; + this.statusBar.UpdateProgressBar(0); + + Task.Run(() => + { + foreach (var pId in lstProdId) + { + var prod = this.lstTemuDbProduct.FirstOrDefault(p => p.spu_id == pId); + if (string.IsNullOrEmpty(prod.product_json)) + { + prod = PDDDBProdUserSelectForm.GetProductDetail(prod.id.ParseToString()); + Thread.Sleep(200); + } + + StreamWriter sw = new StreamWriter(Path.Combine(path, prod.spu_id + ".txt"), true, Encoding.UTF8); + sw.Write(prod.product_json); + sw.Close(); + + Invoke(new Action(() => + { + this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1); + this.statusBar.lblTaskStatus.Text = "正在导出"; + })); + } + Invoke(new Action(() => + { + pbLoading.Visible = false; + this.statusBar.lblTaskStatus.Text = "导出完成"; + BaseMsgForm.ShowInfo("导出完成!"); + })); + }); + } + } } } diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs index 5af8434..315a347 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs @@ -3625,8 +3625,6 @@ Content-Disposition: form-data; name=""pic_operations"" data = UserLogin.GetSignaturex() + "&search_db_ids=" + prodDbId; var html = GetHtml.PostUtf8(url, data); - if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) - html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) diff --git a/TEMUKJD/ToolForms/DouBaoImgListForm.cs b/TEMUKJD/ToolForms/DouBaoImgListForm.cs index accc155..d3df33a 100644 --- a/TEMUKJD/ToolForms/DouBaoImgListForm.cs +++ b/TEMUKJD/ToolForms/DouBaoImgListForm.cs @@ -47,7 +47,7 @@ namespace TemuKJD.ToolForms imgListItem.btnDel.Tag = skuImg; imgListItem.Anchor = AnchorStyles.None; imgListItem.btnDel.Click += BtnDel_Click; - imgListItem.lblUseCount.Text = "共使用 " + skuImg.use_count + " 次"; + imgListItem.txtUseCount.Text = "共使用 " + skuImg.use_count + " 次"; this.flowLayoutPanel1.Controls.Add(imgListItem); } } diff --git a/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs b/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs index d107180..9e1c34c 100644 --- a/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs +++ b/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs @@ -31,7 +31,7 @@ namespace TemuKJD.ToolForms { this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.btnDel = new DevComponents.DotNetBar.PanelEx(); - this.lblUseCount = new System.Windows.Forms.Label(); + this.txtUseCount = new System.Windows.Forms.TextBox(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // @@ -80,20 +80,22 @@ namespace TemuKJD.ToolForms this.btnDel.TabIndex = 525; this.btnDel.Text = "删除图片"; // - // lblUseCount + // txtUseCount // - this.lblUseCount.AutoSize = true; - this.lblUseCount.Location = new System.Drawing.Point(0, 257); - this.lblUseCount.Name = "lblUseCount"; - this.lblUseCount.Size = new System.Drawing.Size(78, 17); - this.lblUseCount.TabIndex = 529; - this.lblUseCount.Text = "lblUseCount"; + this.txtUseCount.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtUseCount.Location = new System.Drawing.Point(0, 253); + this.txtUseCount.Name = "txtUseCount"; + this.txtUseCount.ReadOnly = true; + this.txtUseCount.Size = new System.Drawing.Size(150, 23); + this.txtUseCount.TabIndex = 533; + this.txtUseCount.Text = "txtUseCount"; // // UcSkuImgListItem // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.BackColor = System.Drawing.Color.White; - this.Controls.Add(this.lblUseCount); + this.Controls.Add(this.txtUseCount); this.Controls.Add(this.btnDel); this.Controls.Add(this.pictureBox1); this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); @@ -108,6 +110,6 @@ namespace TemuKJD.ToolForms #endregion public DevComponents.DotNetBar.PanelEx btnDel; public System.Windows.Forms.PictureBox pictureBox1; - public System.Windows.Forms.Label lblUseCount; + public System.Windows.Forms.TextBox txtUseCount; } }