From ec8736b8f9b509c10bbe34b23672962ef6946f57 Mon Sep 17 00:00:00 2001 From: wule Date: Fri, 31 Oct 2025 19:20:38 +0800 Subject: [PATCH] =?UTF-8?q?ai=E5=9B=BE=E7=89=87=E9=9A=8F=E6=9C=BA=E4=BD=9C?= =?UTF-8?q?=E4=B8=BAsku=E5=9B=BE=E6=88=96=E8=80=85=E4=B8=BB=E5=9B=BE?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AllBase/AllBase.csproj | 1 + AllBase/BaseClass.cs | 2 +- AllBase/Model/Result/TemuDetailProductInfo.cs | 6 +- .../Model/Result/TemuResult/AiSkuImgInfo.cs | 24 + .../KJD_WebService/BLL/KJD/ProductManage.cs | 293 +++++++++++- .../KJD_WebService/KJD_WebService.csproj | 1 + .../KJD_WebService/Model/SkuImgResult.cs | 23 + .../KJD_WebService/ProductService.asmx.cs | 44 ++ TEMUKJD/Helper/CustomDownloadHandler.cs | 91 ++++ TEMUKJD/KJD.csproj | 43 +- .../DbProductEditNotesForm.Designer.cs | 20 + .../DbProductEditNotesForm.cs | 7 + .../DbProductSelectListManageForm.Designer.cs | 56 ++- .../DbProductSelectListManageForm.cs | 207 +++++++- .../ToolForms/DouBaoImgCefForm.Designer.cs | 382 +++++++++++++++ TEMUKJD/ToolForms/DouBaoImgCefForm.cs | 449 ++++++++++++++++++ TEMUKJD/ToolForms/DouBaoImgCefForm.resx | 298 ++++++++++++ .../ToolForms/DouBaoImgListForm.Designer.cs | 82 ++++ TEMUKJD/ToolForms/DouBaoImgListForm.cs | 95 ++++ TEMUKJD/ToolForms/DouBaoImgListForm.resx | 298 ++++++++++++ .../ToolForms/{ => Old}/CefForm.Designer.cs | 0 TEMUKJD/ToolForms/{ => Old}/CefForm.cs | 0 TEMUKJD/ToolForms/{ => Old}/CefForm.resx | 0 TEMUKJD/ToolForms/ShowImgForm.Designer.cs | 56 +-- TEMUKJD/ToolForms/ShowImgForm.cs | 11 +- TEMUKJD/ToolForms/UcSkuImgItem.Designer.cs | 306 ++++++++++++ TEMUKJD/ToolForms/UcSkuImgItem.cs | 75 +++ TEMUKJD/ToolForms/UcSkuImgItem.resx | 120 +++++ .../ToolForms/UcSkuImgListItem.Designer.cs | 100 ++++ TEMUKJD/ToolForms/UcSkuImgListItem.cs | 34 ++ TEMUKJD/ToolForms/UcSkuImgListItem.resx | 120 +++++ 31 files changed, 3169 insertions(+), 75 deletions(-) create mode 100644 AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs create mode 100644 KJDService/KJD_WebService/Model/SkuImgResult.cs create mode 100644 TEMUKJD/Helper/CustomDownloadHandler.cs create mode 100644 TEMUKJD/ToolForms/DouBaoImgCefForm.Designer.cs create mode 100644 TEMUKJD/ToolForms/DouBaoImgCefForm.cs create mode 100644 TEMUKJD/ToolForms/DouBaoImgCefForm.resx create mode 100644 TEMUKJD/ToolForms/DouBaoImgListForm.Designer.cs create mode 100644 TEMUKJD/ToolForms/DouBaoImgListForm.cs create mode 100644 TEMUKJD/ToolForms/DouBaoImgListForm.resx rename TEMUKJD/ToolForms/{ => Old}/CefForm.Designer.cs (100%) rename TEMUKJD/ToolForms/{ => Old}/CefForm.cs (100%) rename TEMUKJD/ToolForms/{ => Old}/CefForm.resx (100%) create mode 100644 TEMUKJD/ToolForms/UcSkuImgItem.Designer.cs create mode 100644 TEMUKJD/ToolForms/UcSkuImgItem.cs create mode 100644 TEMUKJD/ToolForms/UcSkuImgItem.resx create mode 100644 TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs create mode 100644 TEMUKJD/ToolForms/UcSkuImgListItem.cs create mode 100644 TEMUKJD/ToolForms/UcSkuImgListItem.resx diff --git a/AllBase/AllBase.csproj b/AllBase/AllBase.csproj index 5afed4d..08bc989 100644 --- a/AllBase/AllBase.csproj +++ b/AllBase/AllBase.csproj @@ -228,6 +228,7 @@ + diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index cd16158..51df077 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -27,7 +27,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 656; + public static int VersionCount = 657; //public static int VersionCount = 613; /// diff --git a/AllBase/Model/Result/TemuDetailProductInfo.cs b/AllBase/Model/Result/TemuDetailProductInfo.cs index f3d34a3..dcf3cfb 100644 --- a/AllBase/Model/Result/TemuDetailProductInfo.cs +++ b/AllBase/Model/Result/TemuDetailProductInfo.cs @@ -408,8 +408,8 @@ namespace AllBase.Model.Result public class TemuProductImageProcessExtVO { - public long? productSkuId { get; set; } - public bool? sensitiveCateProblem { get; set; } - public object sensitiveLimitProblem { get; set; } + public string imgUrl { get; set; } + public int? imgTag { get; set; } + public object isOcr { get; set; } } } diff --git a/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs b/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs new file mode 100644 index 0000000..d064031 --- /dev/null +++ b/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Result.TemuResult +{ + public class AiSkuImgInfo + { + public int id { get; set; } + public int img_base64_db_id { get; set; } + public string img_md5 { get; set; } + public string img_url { get; set; } + public string product_id { get; set; } + public string spec_id { get; set; } + public string spec_name { get; set; } + public string original_img_url { get; set; } + public DateTime add_time { get; set; } + public DateTime mdy_time { get; set; } + public DateTime base64_mdy_time { get; set; } + public string img_base64 { get; set; } + } +} diff --git a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs index 0e75e86..cb70b17 100644 --- a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs +++ b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs @@ -72,7 +72,7 @@ namespace KJD_Web.BLL if (time1 != EncrypUtil.Encryption(time)) return "{\"code\":50000,\"msg\":\"校验失败\"}"; - var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'","\\'"); + var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'"); var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'"); var search_spu = RegexUtils.GetStringQuery(ref inputData, "search_spu")?.Replace("'", "\\'"); var search_skc = RegexUtils.GetStringQuery(ref inputData, "search_skc")?.Replace("'", "\\'"); @@ -86,7 +86,7 @@ namespace KJD_Web.BLL var sort_field = RegexUtils.GetStringQuery(ref inputData, "sort_field")?.Replace("'", "\\'"); int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt(); - int page_size= RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50); + int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50); string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; MysqlUtils mySql = new MysqlUtils(conn); @@ -129,7 +129,7 @@ namespace KJD_Web.BLL "p.add_time,p.mdy_time,p.select_total_count,p.fission_words,p.head_words,p.end_words,COUNT(s.id) AS select_count " + "FROM kjd.product p LEFT JOIN kjd.product_select s ON p.id=s.out_product_id AND s.shop_id='" + select_shop_id + "' " + "WHERE p.is_del=0"; - + //where子句 sql += where; @@ -701,10 +701,10 @@ namespace KJD_Web.BLL if (!string.IsNullOrEmpty(id)) sql += " where id in (" + id + ")"; else if (!string.IsNullOrEmpty(shop_id)) - sql += " where shop_id in ('" + shop_id.Replace(",","','") + "')"; + sql += " where shop_id in ('" + shop_id.Replace(",", "','") + "')"; else sql += " where 1=2"; - if(!string.IsNullOrEmpty(status)) + if (!string.IsNullOrEmpty(status)) sql += " and status='" + status + "';"; var rst = mySql.ExecuteNonQuery(sql); mySql.Close(); @@ -857,23 +857,278 @@ namespace KJD_Web.BLL } return "{\"code\":19999,\"msg\":\"输入为空\"}"; } + + public string AddSkuImg(string inputData) + { + if (!string.IsNullOrEmpty(inputData)) + { + var time = 0; + int.TryParse(RegexUtils.GetStringQuery(ref inputData, "time"), out time); + string time1 = RegexUtils.GetStringQuery(ref inputData, "code"); + if (time1 != EncrypUtil.Encryption(time)) + return "{\"code\":50000,\"msg\":\"校验失败\"}"; + + string user_name = RegexUtils.GetStringQuery(ref inputData, "user_name"); + string img_md5 = RegexUtils.GetStringQuery(ref inputData, "img_md5"); + string img_base64 = RegexUtils.GetStringQuery(ref inputData, "img_base64"); + string product_id = RegexUtils.GetStringQuery(ref inputData, "product_id"); + string spec_id = RegexUtils.GetStringQuery(ref inputData, "spec_id"); + string spec_name = RegexUtils.GetStringQuery(ref inputData, "spec_name"); + string original_img_url = RegexUtils.GetStringQuery(ref inputData, "original_img_url"); + + if (string.IsNullOrEmpty(user_name)) + { + return "{\"code\":500,\"msg\":\"没有用户名\"}"; + } + + int img_base64_db_id = 0; + string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; + MysqlUtils mySql = new MysqlUtils(conn); + string sql = ""; + + sql = "select id from kjd.sku_img_base64 where img_md5='" + img_md5 + "';"; + var nRst = 0L; + var rst = mySql.ExecuteFirstInt(sql).ParseToLong(); + if (rst <= 0) + { + sql = "insert into kjd.sku_img_base64 (img_md5,img_base64) " + + "values ('" + img_md5 + "','" + img_base64 + "');"; + rst = mySql.ExecuteInsertId(sql); + } + if (rst > 0) + { + img_base64_db_id = (int)rst; + sql = "insert kjd.sku_img (img_base64_db_id,product_id,spec_id,spec_name,original_img_url) " + + "values (" + img_base64_db_id + ",'" + product_id + "','" + spec_id + "','" + spec_name + "','" + original_img_url + "');"; + nRst = mySql.ExecuteInsertId(sql); + } + mySql.Close(); + if (nRst > 0) + { + return "{\"code\":200,\"msg\":\"success\",\"sku_img_id\":" + nRst + ",\"sku_img_Base64_id\":" + img_base64_db_id + "}"; + } + + return "{\"code\":500,\"msg\":\"" + mySql.Message + "\"}"; + } + return "{\"code\":19999,\"msg\":\"输入为空\"}"; + } + + public string DelSkuImg(string inputData) + { + if (!string.IsNullOrEmpty(inputData)) + { + var time = 0; + int.TryParse(RegexUtils.GetStringQuery(ref inputData, "time"), out time); + string time1 = RegexUtils.GetStringQuery(ref inputData, "code"); + if (time1 != EncrypUtil.Encryption(time)) + return "{\"code\":50000,\"msg\":\"校验失败\"}"; + + string user_name = RegexUtils.GetStringQuery(ref inputData, "user_name"); + int img_id = RegexUtils.GetStringQuery(ref inputData, "img_id").ParseToInt(); + int img_base64_id = RegexUtils.GetStringQuery(ref inputData, "img_base64_id").ParseToInt(); + + if (string.IsNullOrEmpty(user_name)) + { + return "{\"code\":500,\"msg\":\"没有用户名\"}"; + } + if (img_id == 0 || img_base64_id == 0) + { + return "{\"code\":501,\"msg\":\"图片编号或者图片数据编号为空\"}"; + } + + string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; + MysqlUtils mySql = new MysqlUtils(conn); + string sql = ""; + + sql = "delete from kjd.sku_img where id=" + img_id + ";"; + var bRst = mySql.ExecuteNonQuery(sql); + if (!bRst) + { + mySql.Close(); + return "{\"code\":500,\"msg\":\"" + mySql.Message + "\"}"; + } + sql = "select id from kjd.sku_img where img_base64_db_id=" + img_base64_id + " limit 1;"; + var nRst = mySql.ExecuteRowCount(sql); + //如果已无对图片的引用,则删除原图片 + if (nRst == 0) + { + sql = "delete from kjd.sku_img_base64 where id=" + img_base64_id + ";"; + mySql.ExecuteNonQuery(sql); + } + mySql.Close(); + if (!string.IsNullOrEmpty(mySql.Message)) + return "{\"code\":500,\"msg\":\"" + mySql.Message + "\"}"; + return "{\"code\":200,\"msg\":\"success\"}"; + } + return "{\"code\":19999,\"msg\":\"输入为空\"}"; + } + + public string GetSkuImgList(string inputData, bool isDetail = false) + { + if (!string.IsNullOrEmpty(inputData)) + { + var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt(); + string time1 = RegexUtils.GetStringQuery(ref inputData, "code"); + if (time1 != EncrypUtil.Encryption(time)) + return "{\"code\":50000,\"msg\":\"校验失败\"}"; + + var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'"); + var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'"); + if (string.IsNullOrEmpty(user_name)) + { + return "{\"code\":500,\"msg\":\"没有用户名\"}"; + } + + var search_db_id = RegexUtils.GetStringQuery(ref inputData, "search_db_id")?.Replace("'", "\\'"); + var search_db_ids = RegexUtils.GetStringQuery(ref inputData, "search_db_ids")?.Replace("'", "\\'"); + var search_product_id = RegexUtils.GetStringQuery(ref inputData, "search_product_id")?.Replace("'", "\\'"); + var search_spec_id = RegexUtils.GetStringQuery(ref inputData, "search_spec_id")?.Replace("'", "\\'"); + var search_original_img_url = RegexUtils.GetStringQuery(ref inputData, "search_original_img_url")?.Replace("'", "\\'"); + + int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt(); + int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(200); + + string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; + MysqlUtils mySql = new MysqlUtils(conn); + + string sql = "select count(id) from kjd.sku_img s where 1=1"; + + string where = ""; + if (!string.IsNullOrWhiteSpace(search_db_id)) + where += " and s.id like '%" + search_db_id + "%'"; + if (!string.IsNullOrWhiteSpace(search_product_id)) + where += " and s.product_id like '%" + search_product_id + "%'"; + if (!string.IsNullOrWhiteSpace(search_spec_id)) + where += " and s.spec_id like '%" + search_spec_id + "%'"; + if (!string.IsNullOrWhiteSpace(search_original_img_url)) + where += " and s.original_img_url like '%" + search_original_img_url + "%'"; + if (!string.IsNullOrEmpty(search_db_ids)) + where += " and s.id in (" + search_db_ids + ")"; + sql += where; + + var count = mySql.ExecuteRowCount(sql); + + DataTable dt; + if (count == 0) + { + dt = new DataTable(); + } + else + { + sql = "select s.*,b.img_md5,b.img_base64,b.img_url,b.mdy_time base64_mdy_time from kjd.sku_img s left join kjd.sku_img_base64 b on " + + "s.img_base64_db_id = b.id where 1=1"; + + //where子句 + sql += where; + + sql += " order by s.id desc"; + sql += " limit " + Math.Max(page - 1, 0) * page_size + "," + page_size; + dt = mySql.ExecuteDataTable(sql); + } + mySql.Close(); + if (!string.IsNullOrEmpty(mySql.Message)) + { + return "{\"code\":500,\"msg\":\"" + mySql.Message + "\",\"data\":[],\"count\":" + 0 + "}"; + } + + if (dt != null) + { + try + { + List skuImgLst = new List(); + foreach (DataRow row in dt.Rows) + { + SkuImgResult img = new SkuImgResult + { + id = row["id"].ParseToInt(), + img_base64 = row["img_base64"].ParseToString(), + img_base64_db_id = row["img_base64_db_id"].ParseToInt(), + img_md5 = row["img_md5"].ParseToString(), + img_url = row["img_url"].ParseToString(), + original_img_url = row["original_img_url"].ParseToString(), + add_time = Convert.ToDateTime(row["add_time"]), + mdy_time = Convert.ToDateTime(row["mdy_time"]), + base64_mdy_time = Convert.ToDateTime(row["base64_mdy_time"]), + product_id = row["product_id"].ParseToString(), + spec_id = row["spec_id"].ParseToString(), + spec_name = row["spec_name"].ParseToString(), + }; + if(img.base64_mdy_time.AddDays(2) < DateTime.Now) + { + // 每过两天返回给客户端空图,让客户端重传base64图片 + img.img_url = ""; + } + //if (isDetail) + //{ + // img.img_base64 = row["img_base64"].ToString(); + //} + skuImgLst.Add(img); + } + var data = JsonUtils.SerializerObjectToString(skuImgLst); + return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + count + "}"; + } + catch (Exception ex) + { + return "{\"code\":500,\"msg\":\"" + ex.Message + "\",\"data\":[],\"count\":" + 0 + "}"; + } + } + else + { + return "{\"code\":500,\"msg\":\"" + mySql.Message + "\",\"data\":[],\"count\":" + 0 + "}"; + } + } + return "{\"code\":19999,\"msg\":\"输入为空\"}"; + } + + public string MdyBase64ImgUrl(string inputData) + { + if (!string.IsNullOrEmpty(inputData)) + { + var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt(); + string time1 = RegexUtils.GetStringQuery(ref inputData, "code"); + if (time1 != EncrypUtil.Encryption(time)) + return "{\"code\":50000,\"msg\":\"校验失败\"}"; + + var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'"); + var id = RegexUtils.GetStringQuery(ref inputData, "db_id")?.Replace("'", "\\'"); + var img_url = RegexUtils.GetStringQuery(ref inputData, "img_url")?.Replace("'", "\\'"); + if(string.IsNullOrEmpty(id) || string.IsNullOrEmpty(img_url)) + { + return "{\"code\":500,\"msg\":\"保存失败:缺少图片编号或图片路径\"}"; + } + + string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; + MysqlUtils mySql = new MysqlUtils(conn); + string sql = "update kjd.sku_img_base64 set img_url=\'" + img_url + "\' where id='" + id + "'"; + + var rst = mySql.ExecuteNonQuery(sql); + mySql.Close(); + if (rst) + { + return "{\"code\":200,\"msg\":\"success\"}"; + } + else + return "{\"code\":500,\"msg\":\"保存失败:" + mySql.Message + "\"}"; + } + return "{\"code\":19999,\"msg\":\"输入为空\"}"; + } } } /* List paramLst = new List(); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "spu_id", Value = spu_id, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "skc_id", Value = skc_id, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "cat_id", Value = cat_id, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "cat_name", Value = cat_name, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "product_name", Value = product_name, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "ext_code", Value = ext_code, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "main_img", Value = main_img, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "product_json", Value = product_json, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "size_json", Value = size_json, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "notes", Value = notes.ParseToString(), }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "product_md5", Value = product_md5, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "add_time", Value = add_time, }); - paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "mdy_time", Value = mdy_time, }); - rst = mySql.ExecuteInsertId(sql, paramLst.ToArray());*/ \ No newline at end of file +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "spu_id", Value = spu_id, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "skc_id", Value = skc_id, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "cat_id", Value = cat_id, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "cat_name", Value = cat_name, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "product_name", Value = product_name, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "ext_code", Value = ext_code, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "main_img", Value = main_img, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "product_json", Value = product_json, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "size_json", Value = size_json, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "notes", Value = notes.ParseToString(), }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "product_md5", Value = product_md5, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "add_time", Value = add_time, }); +paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "mdy_time", Value = mdy_time, }); +rst = mySql.ExecuteInsertId(sql, paramLst.ToArray());*/ \ No newline at end of file diff --git a/KJDService/KJD_WebService/KJD_WebService.csproj b/KJDService/KJD_WebService/KJD_WebService.csproj index 6a97c3a..d7af145 100644 --- a/KJDService/KJD_WebService/KJD_WebService.csproj +++ b/KJDService/KJD_WebService/KJD_WebService.csproj @@ -114,6 +114,7 @@ + BXXPriceService.asmx diff --git a/KJDService/KJD_WebService/Model/SkuImgResult.cs b/KJDService/KJD_WebService/Model/SkuImgResult.cs new file mode 100644 index 0000000..212b922 --- /dev/null +++ b/KJDService/KJD_WebService/Model/SkuImgResult.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace KJD_Web.Model +{ + public class SkuImgResult + { + public int id { get; set; } + public int img_base64_db_id { get; set; } + public string img_md5 { get; set; } + public string img_url { get; set; } + public string product_id { get; set; } + public string spec_id { get; set; } + public string spec_name { get; set; } + public string original_img_url { get; set; } + public DateTime add_time { get; set; } + public DateTime mdy_time { get; set; } + public DateTime base64_mdy_time { get; set; } + public string img_base64 { get; set; } + } +} \ No newline at end of file diff --git a/KJDService/KJD_WebService/ProductService.asmx.cs b/KJDService/KJD_WebService/ProductService.asmx.cs index b8a0c8e..d000c21 100644 --- a/KJDService/KJD_WebService/ProductService.asmx.cs +++ b/KJDService/KJD_WebService/ProductService.asmx.cs @@ -229,5 +229,49 @@ namespace KJD_Web Context.Response.Write(result); Context.Response.End(); } + + [WebMethod] + public void add_sku_image() + { + string jsontext = GetRequestJsonString(); + var result = jsontext; + result = new ProductManage().AddSkuImg(jsontext); + + Context.Response.Write(result); + Context.Response.End(); + } + + [WebMethod] + public void del_sku_image() + { + string jsontext = GetRequestJsonString(); + var result = jsontext; + result = new ProductManage().DelSkuImg(jsontext); + + Context.Response.Write(result); + Context.Response.End(); + } + + [WebMethod] + public void get_sku_image_list() + { + string jsontext = GetRequestJsonString(); + var result = jsontext; + result = new ProductManage().GetSkuImgList(jsontext); + + Context.Response.Write(result); + Context.Response.End(); + } + + [WebMethod] + public void mdy_base64_img_url() + { + string jsontext = GetRequestJsonString(); + var result = jsontext; + result = new ProductManage().MdyBase64ImgUrl(jsontext); + + Context.Response.Write(result); + Context.Response.End(); + } } } diff --git a/TEMUKJD/Helper/CustomDownloadHandler.cs b/TEMUKJD/Helper/CustomDownloadHandler.cs new file mode 100644 index 0000000..5ca68cc --- /dev/null +++ b/TEMUKJD/Helper/CustomDownloadHandler.cs @@ -0,0 +1,91 @@ +using CefSharp; +using CefSharp.Handler; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TemuKJD.BaseForms; + +namespace TemuKJD.Helper +{ + public class CustomDownloadHandler : DownloadHandler + { + private string downloadPath; + public Action DownloadCompleteEvent; + + public CustomDownloadHandler(string path = null) + { + // 设置默认下载路径为用户的下载文件夹 + downloadPath = path ?? Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), + "Downloads"); + + // 确保下载目录存在 + if (!Directory.Exists(downloadPath)) + { + Directory.CreateDirectory(downloadPath); + } + } + + protected override bool OnBeforeDownload( + IWebBrowser chromiumWebBrowser, + IBrowser browser, + DownloadItem downloadItem, + IBeforeDownloadCallback callback) + { + // 必须检查回调是否有效 + if (!callback.IsDisposed) + { + // 设置下载路径和显示下载对话框 + string downloadFileName = downloadItem.SuggestedFileName; + if (downloadFileName.Contains('.')) + downloadFileName = downloadFileName.Insert(downloadFileName.LastIndexOf('.'), DateTime.Now.ToString("yyMMddHHmmss")); + else + downloadFileName += DateTime.Now.ToString("yyMMddHHmmss"); + var filePath = Path.Combine(downloadPath, downloadFileName); + using (callback) + { + callback.Continue(filePath, showDialog: true); + } + } + return true; + } + + protected override void OnDownloadUpdated( + IWebBrowser chromiumWebBrowser, + IBrowser browser, + DownloadItem downloadItem, + IDownloadItemCallback callback) + { + // 下载完成时触发 + if (downloadItem.IsComplete) + { + //Console.WriteLine($"下载完成: {downloadItem.FullPath}"); + // 可以在这里触发通知或其他后续操作 + DownloadCompleteEvent?.Invoke(chromiumWebBrowser, downloadItem); + } + // 下载取消时触发 + else if (downloadItem.IsCancelled) + { + //Console.WriteLine($"下载取消: {downloadItem.SuggestedFileName}"); + } + // 正在下载中,更新进度 + else if (downloadItem.IsInProgress) + { + //Console.WriteLine($"下载进度: {downloadItem.PercentComplete}% " + + // $"({FormatFileSize(downloadItem.ReceivedBytes)}/{FormatFileSize(downloadItem.TotalBytes)}) " + + // $"速度: {FormatFileSize(downloadItem.CurrentSpeed)}/s"); + } + } + + // 格式化文件大小显示 + private string FormatFileSize(long bytes) + { + if (bytes < 1024) return $"{bytes} B"; + if (bytes < 1048576) return $"{bytes / 1024:F1} KB"; + return $"{bytes / 1048576:F1} MB"; + } + } +} diff --git a/TEMUKJD/KJD.csproj b/TEMUKJD/KJD.csproj index 478b198..7b41a5a 100644 --- a/TEMUKJD/KJD.csproj +++ b/TEMUKJD/KJD.csproj @@ -124,6 +124,7 @@ + @@ -550,12 +551,24 @@ PDDShopUpdateFddlCookieForm.cs - + Form - + + DouBaoImgListForm.cs + + + Form + + CefForm.cs + + Form + + + DouBaoImgCefForm.cs + Form @@ -722,6 +735,18 @@ ShowImgForm.cs + + UserControl + + + UcSkuImgItem.cs + + + UserControl + + + UcSkuImgListItem.cs + Component @@ -1021,9 +1046,15 @@ PDDShopUpdateFddlCookieForm.cs - + + DouBaoImgListForm.cs + + CefForm.cs + + DouBaoImgCefForm.cs + ChangeIPForm.cs @@ -1107,6 +1138,12 @@ ShowImgForm.cs + + UcSkuImgItem.cs + + + UcSkuImgListItem.cs + StatusBarUserControl.cs diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs index 208ee20..2275305 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.Designer.cs @@ -30,6 +30,7 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductEditNotesForm)); this.panel2 = new System.Windows.Forms.Panel(); + this.btnSkuAi = new TemuKJD.UserControls.ButtonEx(); this.label7 = new System.Windows.Forms.Label(); this.txtFissionWords = new DevComponents.DotNetBar.Controls.TextBoxX(); this.txtEndWords = new System.Windows.Forms.TextBox(); @@ -55,6 +56,7 @@ // panel2 // this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.Controls.Add(this.btnSkuAi); this.panel2.Controls.Add(this.label7); this.panel2.Controls.Add(this.txtFissionWords); this.panel2.Controls.Add(this.txtEndWords); @@ -79,6 +81,23 @@ this.panel2.Size = new System.Drawing.Size(464, 686); this.panel2.TabIndex = 1; // + // btnSkuAi + // + this.btnSkuAi.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSkuAi.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnSkuAi.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnSkuAi.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSkuAi.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnSkuAi.ForeColor = System.Drawing.Color.White; + this.btnSkuAi.Location = new System.Drawing.Point(90, 640); + this.btnSkuAi.Margin = new System.Windows.Forms.Padding(2); + this.btnSkuAi.Name = "btnSkuAi"; + this.btnSkuAi.Size = new System.Drawing.Size(77, 26); + this.btnSkuAi.TabIndex = 404; + this.btnSkuAi.Text = "SKU AI图"; + this.btnSkuAi.UseVisualStyleBackColor = false; + this.btnSkuAi.Click += new System.EventHandler(this.btnSkuAi_Click); + // // label7 // this.label7.AutoSize = true; @@ -318,5 +337,6 @@ private System.Windows.Forms.Label label6; private System.Windows.Forms.TextBox txtHeadWords; private System.Windows.Forms.Label label5; + private UserControls.ButtonEx btnSkuAi; } } \ No newline at end of file diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs index 1327586..b30d6a1 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductEditNotesForm.cs @@ -12,6 +12,7 @@ using System.Threading.Tasks; using System.Windows.Forms; using AllBase; using Work; +using TemuKJD.ToolForms; namespace TemuKJD.KJDForms.ProductSelectForms { @@ -73,5 +74,11 @@ namespace TemuKJD.KJDForms.ProductSelectForms this.Close(); } } + + private void btnSkuAi_Click(object sender, EventArgs e) + { + DouBaoImgCefForm doubaoForm = new DouBaoImgCefForm(dbProd); + doubaoForm.ShowDialog(); + } } } diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs index f67234f..bc5c185 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs @@ -39,6 +39,7 @@ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductSelectListManageForm)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.chkAiSkuAndMainImg = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkLongTitle = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkSameExtcodeRandomMainImg = new TemuKJD.UserComponent.UcCheckBox(this.components); this.lblSkuRandomLetterNotes = new System.Windows.Forms.Label(); @@ -112,7 +113,7 @@ this.chkAddPrice = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkEnglishProdName = new TemuKJD.UserComponent.UcCheckBox(this.components); this.splitContainer2 = new System.Windows.Forms.SplitContainer(); - this.pnlError = new System.Windows.Forms.Panel(); + this.pnlError = new DevComponents.DotNetBar.PanelEx(); this.lblError = new System.Windows.Forms.Label(); this.pbLoading = new System.Windows.Forms.PictureBox(); this.lblCustomImgNum = new System.Windows.Forms.Label(); @@ -189,6 +190,7 @@ // // splitContainer1.Panel1 // + this.splitContainer1.Panel1.Controls.Add(this.chkAiSkuAndMainImg); this.splitContainer1.Panel1.Controls.Add(this.chkLongTitle); this.splitContainer1.Panel1.Controls.Add(this.chkSameExtcodeRandomMainImg); this.splitContainer1.Panel1.Controls.Add(this.lblSkuRandomLetterNotes); @@ -226,14 +228,26 @@ // this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); this.splitContainer1.Size = new System.Drawing.Size(1558, 638); - this.splitContainer1.SplitterDistance = 100; + this.splitContainer1.SplitterDistance = 125; this.splitContainer1.TabIndex = 2; // + // chkAiSkuAndMainImg + // + this.chkAiSkuAndMainImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.chkAiSkuAndMainImg.AutoSize = true; + this.chkAiSkuAndMainImg.Location = new System.Drawing.Point(1410, 98); + this.chkAiSkuAndMainImg.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.chkAiSkuAndMainImg.Name = "chkAiSkuAndMainImg"; + this.chkAiSkuAndMainImg.Size = new System.Drawing.Size(152, 21); + this.chkAiSkuAndMainImg.TabIndex = 680; + this.chkAiSkuAndMainImg.Text = "sku随机AI图+随机转主"; + this.chkAiSkuAndMainImg.UseVisualStyleBackColor = true; + // // chkLongTitle // this.chkLongTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.chkLongTitle.AutoSize = true; - this.chkLongTitle.Location = new System.Drawing.Point(1276, 73); + this.chkLongTitle.Location = new System.Drawing.Point(1126, 98); this.chkLongTitle.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.chkLongTitle.Name = "chkLongTitle"; this.chkLongTitle.Size = new System.Drawing.Size(96, 21); @@ -245,7 +259,7 @@ // this.chkSameExtcodeRandomMainImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.chkSameExtcodeRandomMainImg.AutoSize = true; - this.chkSameExtcodeRandomMainImg.Location = new System.Drawing.Point(1372, 73); + this.chkSameExtcodeRandomMainImg.Location = new System.Drawing.Point(1222, 98); this.chkSameExtcodeRandomMainImg.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.chkSameExtcodeRandomMainImg.Name = "chkSameExtcodeRandomMainImg"; this.chkSameExtcodeRandomMainImg.Size = new System.Drawing.Size(188, 21); @@ -256,12 +270,12 @@ // lblSkuRandomLetterNotes // this.lblSkuRandomLetterNotes.AutoSize = true; - this.lblSkuRandomLetterNotes.Font = new System.Drawing.Font("微软雅黑", 8F); + this.lblSkuRandomLetterNotes.Font = new System.Drawing.Font("微软雅黑", 9F); this.lblSkuRandomLetterNotes.ForeColor = System.Drawing.SystemColors.MenuHighlight; this.lblSkuRandomLetterNotes.Location = new System.Drawing.Point(959, 75); this.lblSkuRandomLetterNotes.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.lblSkuRandomLetterNotes.Name = "lblSkuRandomLetterNotes"; - this.lblSkuRandomLetterNotes.Size = new System.Drawing.Size(138, 16); + this.lblSkuRandomLetterNotes.Size = new System.Drawing.Size(150, 17); this.lblSkuRandomLetterNotes.TabIndex = 641; this.lblSkuRandomLetterNotes.Text = "备注:当前特殊字符包括--"; // @@ -1302,7 +1316,7 @@ // this.chkEnglishProdName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.chkEnglishProdName.AutoSize = true; - this.chkEnglishProdName.Location = new System.Drawing.Point(1203, 73); + this.chkEnglishProdName.Location = new System.Drawing.Point(1053, 98); this.chkEnglishProdName.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.chkEnglishProdName.Name = "chkEnglishProdName"; this.chkEnglishProdName.Size = new System.Drawing.Size(75, 21); @@ -1335,19 +1349,28 @@ // this.splitContainer2.Panel2.Controls.Add(this.ucSplitPage1); this.splitContainer2.Panel2.Controls.Add(this.statusBar); - this.splitContainer2.Size = new System.Drawing.Size(1558, 534); - this.splitContainer2.SplitterDistance = 505; + this.splitContainer2.Size = new System.Drawing.Size(1558, 509); + this.splitContainer2.SplitterDistance = 480; this.splitContainer2.TabIndex = 0; // // pnlError // this.pnlError.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.pnlError.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(244)))), ((int)(((byte)(224))))); + this.pnlError.CanvasColor = System.Drawing.SystemColors.Control; + this.pnlError.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.pnlError.Controls.Add(this.lblError); - this.pnlError.Location = new System.Drawing.Point(650, 95); + this.pnlError.DisabledBackColor = System.Drawing.Color.Empty; + this.pnlError.Location = new System.Drawing.Point(650, 91); this.pnlError.Name = "pnlError"; - this.pnlError.Size = new System.Drawing.Size(259, 120); - this.pnlError.TabIndex = 488; + this.pnlError.Size = new System.Drawing.Size(259, 118); + this.pnlError.Style.Alignment = System.Drawing.StringAlignment.Center; + this.pnlError.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.pnlError.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.pnlError.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.pnlError.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.pnlError.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.pnlError.Style.GradientAngle = 90; + this.pnlError.TabIndex = 492; this.pnlError.Visible = false; // // lblError @@ -1363,7 +1386,7 @@ // this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None; this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue; - this.pbLoading.Location = new System.Drawing.Point(754, 227); + this.pbLoading.Location = new System.Drawing.Point(754, 215); this.pbLoading.Name = "pbLoading"; this.pbLoading.Size = new System.Drawing.Size(50, 50); this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; @@ -1497,7 +1520,7 @@ this.dgvSelectProduct.ReadOnly = true; this.dgvSelectProduct.RowHeadersWidth = 40; this.dgvSelectProduct.RowTemplate.Height = 23; - this.dgvSelectProduct.Size = new System.Drawing.Size(1550, 505); + this.dgvSelectProduct.Size = new System.Drawing.Size(1550, 480); this.dgvSelectProduct.TabIndex = 189; this.dgvSelectProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSelectProduct_CellContentClick); this.dgvSelectProduct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dgvSelectProduct_Scroll); @@ -1896,7 +1919,8 @@ private UserComponent.UcCheckBox chkSameExtcodeRandomMainImg; private UserComponent.UcCheckBox chkLongTitle; private UserComponent.UcCheckBox chkEnglishProdName; - private System.Windows.Forms.Panel pnlError; private System.Windows.Forms.Label lblError; + private UserComponent.UcCheckBox chkAiSkuAndMainImg; + private DevComponents.DotNetBar.PanelEx pnlError; } } \ No newline at end of file diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs index 920f500..3b3f753 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs @@ -27,6 +27,7 @@ using System.Text.RegularExpressions; using TemuKJD.BLL; using TemuKJD.ToolForms; using AllBase.Model.Result.TemuResult.TemuSizeConfigResult; +using AllBase.Model.Result.TemuResult; namespace TemuKJD.KJDForms.ProductSelectForms { @@ -980,6 +981,8 @@ namespace TemuKJD.KJDForms.ProductSelectForms prodParam.carouselImageUrls = prodInfo.carouselImageUrls; List realSkuItems = new List(); + Dictionary aiImgInfoDic = new Dictionary(); + List aiImgInfoList = new List(); List realCarouselImageUrls = new List(); realCarouselImageUrls.AddRange(prodInfo.carouselImageUrls); @@ -999,8 +1002,8 @@ namespace TemuKJD.KJDForms.ProductSelectForms { var sameExtCodeDBProdLst = GetProductSameExtCodeDetailList(dbProd.ext_code); var sameExtCodeProdInfoLst = new List(); - var sameExtCodeMainImgUrlLst = new List(); - var sameExtCodeSkuImgUrlLst = new List(); + var sameExtCodeMainImgUrlLst = new List(); // 同货号商品主图 + var sameExtCodeSkuImgUrlLst = new List(); // 同货号商品sku图 try { foreach(var sameExtCodeDbProd in sameExtCodeDBProdLst) @@ -1410,7 +1413,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms })); } - #region 随机打乱sku顺序 + #region 按顺序抽取sku或抽取随机打乱顺序的sku int id = 0; if (chkRandomSkuOrder.Checked) id = Randomx.GetId(0, skuListTmp.Count); @@ -1606,6 +1609,61 @@ namespace TemuKJD.KJDForms.ProductSelectForms skuItem.thumbUrl = imgUrlRst; Thread.Sleep(Randomx.GetId(50, 100)); } + //自定义ai图(ai图sku) + if (chkAiSkuAndMainImg.Checked) + { + var skuCopy = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuItem)); + realSkuItems.Add(skuCopy); + + AiSkuImgInfo aiSkuImgInfo = null; + // 把每次随出来的图片暂存起来,相同颜色规格的sku直接获取图片地址即可 + if (aiImgInfoDic.Keys.Contains(skuInfo.productSkuSpecList[0].specId.ParseToString())) + aiSkuImgInfo = aiImgInfoDic[skuInfo.productSkuSpecList[0].specId.ParseToString()]; + else + { + var aiSkuImgLst = DouBaoImgCefForm.GetSkuImgList(prodInfo.productId.ParseToString(), skuInfo.productSkuSpecList[0].specId.ParseToString()); + if (aiSkuImgLst.Count > 0) + { + aiImgInfoList.AddRange(aiSkuImgLst); + + int index = Randomx.GetId(aiSkuImgLst.Count + 1); + if (index == aiSkuImgLst.Count) + { + aiSkuImgInfo = new AiSkuImgInfo() + { + product_id = prodInfo.productId.ParseToString(), + spec_id = skuInfo.productSkuSpecList[0].specId.ParseToString(), + spec_name = skuInfo.productSkuSpecList[0].specName, + img_url = skuInfo.thumbUrl, + original_img_url = skuInfo.thumbUrl, + }; + } + else + aiSkuImgInfo = aiSkuImgLst[index]; + aiImgInfoDic[skuInfo.productSkuSpecList[0].specId.ParseToString()] = aiSkuImgInfo; + } + } + + if (aiSkuImgInfo != null) + { + var imgUrlRst = aiSkuImgInfo.img_url; + if (string.IsNullOrEmpty(imgUrlRst)) + { + imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), aiSkuImgInfo.img_base64, aiSkuImgInfo.img_md5); + if (imgUrlRst.Contains("\"success\":false")) + return imgUrlRst; + aiSkuImgInfo.img_url = imgUrlRst; + + var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); + var data = UserLogin.GetSignaturex() + + "&db_id=" + aiSkuImgInfo.img_base64_db_id; + data += "&img_url=" + imgUrlRst; + var rst = GetHtml.PostUtf8(url, data); + } + skuItem.thumbUrl = imgUrlRst; + Thread.Sleep(Randomx.GetId(50, 100)); + } + } skcItem.productSkuReqs.Add(skuItem); } @@ -1613,6 +1671,51 @@ namespace TemuKJD.KJDForms.ProductSelectForms prodParam.productSkcReqs.Add(skcItem); } + // aisku图转主,放在sku处理完之后,这样少读取一次 + if (chkAiSkuAndMainImg.Checked) + { + if (aiImgInfoList.Count > 0) + { + var randomImgLst = new List(); + foreach(var url in prodParam.carouselImageUrls) + { + randomImgLst.Add(new AiSkuImgInfo() { img_url = url }); + } + randomImgLst.AddRange(aiImgInfoList); + randomImgLst = randomImgLst.OrderBy(x => Guid.NewGuid()).Take(prodParam.carouselImageUrls.Count).ToList(); + + foreach (var imgInfo in randomImgLst) + { + if (string.IsNullOrEmpty(imgInfo.img_url)) + { + var imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), imgInfo.img_base64, imgInfo.img_md5); + if (imgUrlRst.Contains("\"success\":false")) + return imgUrlRst; + imgInfo.img_url = imgUrlRst; + + var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); + var data = UserLogin.GetSignaturex() + + "&db_id=" + imgInfo.img_base64_db_id; + data += "&img_url=" + imgUrlRst; + var rst = GetHtml.PostUtf8(url, data); + + Thread.Sleep(Randomx.GetId(100, 300)); + } + } + prodParam.carouselImageUrls = randomImgLst.Select(r => r.img_url).ToList(); + prodParam.materialImgUrl = prodParam.carouselImageUrls[Randomx.GetId(prodParam.carouselImageUrls.Count)]; + + try + { + prodParam.productSkcReqs[0].previewImgUrls[0] = prodParam.carouselImageUrls[0]; + } + catch + { + + } + } + } + if (cancellationTokenSource.IsCancellationRequested) { return "{\"success\":false,\"status\":\"未上传\"," + @@ -2046,6 +2149,104 @@ namespace TemuKJD.KJDForms.ProductSelectForms } } + /// + /// 上传主图或sku等的Ai图片 + /// + /// + /// + /// + /// + /// + string UploadAiSkuImg(ShopLoginInfo shop, string productDraftId, string imgBase64, string imgMd5) + { + var md5CheckRst = CheckImgMd5(shop, productDraftId, "", imgMd5); + if (!md5CheckRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref md5CheckRst, "errorMsg"); + if (string.IsNullOrEmpty(error)) + error = BaseRegex.GetStringJson(ref md5CheckRst, "error_msg"); + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + productDraftId + "\"," + + "\"errMsg\":\"草稿箱上传失败 " + error + "\"}"; + } + var materialId = BaseRegex.GetStringJson(ref md5CheckRst, "id"); + if (string.IsNullOrEmpty(materialId)) + { + var imgUpSignRst = GetImgUpSign(shop, productDraftId); + string signature = BaseRegex.GetStringJson(ref imgUpSignRst, "signature"); + if (string.IsNullOrEmpty(signature)) + { + var error = BaseRegex.GetStringJson(ref imgUpSignRst, "errorMsg"); + if (string.IsNullOrEmpty(error)) + error = BaseRegex.GetStringJson(ref imgUpSignRst, "error_msg"); + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + productDraftId + "\"," + + "\"errMsg\":\"草稿箱上传失败,获取图片上传signature失败 " + error + "\"}"; + } + // 创建临时图片路径 + string sImgPath = ""; + if (DriveInfo.GetDrives().Any(drive => drive.Name.Equals("D:\\", StringComparison.OrdinalIgnoreCase))) + { + sImgPath = "D:\\tmp_img"; + } + else if (DriveInfo.GetDrives().Any(drive => drive.Name.Equals("E:\\", StringComparison.OrdinalIgnoreCase))) + { + sImgPath = "E:\\tmp_img"; + } + else + { + sImgPath = "C:\\tmp_img"; + } + if (!Directory.Exists(sImgPath)) + { + Directory.CreateDirectory(sImgPath); + } + string imgName = "\\图片" + Randomx.GetId(1000, 9999) + ".jpg"; + sImgPath += imgName; + // 使用MemoryStream创建图片对象 + byte[] imageBytes = Convert.FromBase64String(imgBase64); + using (MemoryStream ms = new MemoryStream(imageBytes)) + { + Image image = Image.FromStream(ms); + // 保存图片到文件系统 + try + { + image.Save(sImgPath, System.Drawing.Imaging.ImageFormat.Jpeg); + } + catch (Exception ex) { return "存图失败 " + ex.Message; } + } + var uploadImgRst = UploadImage(shop, productDraftId, sImgPath, signature); + var imgUrl = BaseRegex.GetStringJson(ref uploadImgRst, "url"); + + if (string.IsNullOrEmpty(signature)) + { + var error = BaseRegex.GetStringJson(ref uploadImgRst, "errorMsg"); + if (string.IsNullOrEmpty(error)) + error = BaseRegex.GetStringJson(ref uploadImgRst, "error_msg"); + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + productDraftId + "\"," + + "\"errMsg\":\"草稿箱上传失败,上传图片失败 " + error + "\"}"; + } + + return imgUrl; + } + else + { + var existImgRst = this.GetExistImg(shop, productDraftId, materialId); + string imgUrl = BaseRegex.GetStringJson(ref existImgRst, "imgUrl"); + if (string.IsNullOrEmpty(materialId)) + { + var error = BaseRegex.GetStringJson(ref existImgRst, "errorMsg"); + if (string.IsNullOrEmpty(error)) + error = BaseRegex.GetStringJson(ref existImgRst, "error_msg"); + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + productDraftId + "\"," + + "\"errMsg\":\"草稿箱上传失败,获取已存在图片失败 " + error + "\"}"; + } + return imgUrl; + } + } + private string AddDraft(ShopLoginInfo shop, string catId) { //string url = "https://seller.kuajingmaihuo.com/bg-visage-mms/product/draft/add"; diff --git a/TEMUKJD/ToolForms/DouBaoImgCefForm.Designer.cs b/TEMUKJD/ToolForms/DouBaoImgCefForm.Designer.cs new file mode 100644 index 0000000..2823bcc --- /dev/null +++ b/TEMUKJD/ToolForms/DouBaoImgCefForm.Designer.cs @@ -0,0 +1,382 @@ + +namespace TemuKJD.ToolForms +{ + partial class DouBaoImgCefForm + { + /// + /// 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(DouBaoImgCefForm)); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.btnGoTo = new TemuKJD.UserControls.ButtonEx(); + this.txtUrl = new System.Windows.Forms.TextBox(); + this.splitContainer4 = new System.Windows.Forms.SplitContainer(); + this.panel2 = new System.Windows.Forms.Panel(); + this.pnlMsg = new DevComponents.DotNetBar.PanelEx(); + this.lblMsg = new System.Windows.Forms.Label(); + this.pbLoading = new System.Windows.Forms.PictureBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.txtYSize = new System.Windows.Forms.TextBox(); + this.txtXSize = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.txtYPos = new System.Windows.Forms.TextBox(); + this.txtXPos = new System.Windows.Forms.TextBox(); + this.pbLoading2 = new System.Windows.Forms.PictureBox(); + this.ucImgChange1 = new TemuKJD.ToolForms.UcSkuImgItem(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit(); + this.splitContainer4.Panel1.SuspendLayout(); + this.splitContainer4.Panel2.SuspendLayout(); + this.splitContainer4.SuspendLayout(); + this.panel2.SuspendLayout(); + this.pnlMsg.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbLoading)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbLoading2)).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"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.btnGoTo); + this.splitContainer1.Panel1.Controls.Add(this.txtUrl); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer4); + this.splitContainer1.Size = new System.Drawing.Size(1176, 534); + this.splitContainer1.SplitterDistance = 27; + this.splitContainer1.TabIndex = 3; + // + // btnGoTo + // + this.btnGoTo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnGoTo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnGoTo.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnGoTo.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnGoTo.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnGoTo.ForeColor = System.Drawing.Color.White; + this.btnGoTo.Location = new System.Drawing.Point(1113, 2); + this.btnGoTo.Margin = new System.Windows.Forms.Padding(2); + this.btnGoTo.Name = "btnGoTo"; + this.btnGoTo.Size = new System.Drawing.Size(61, 25); + this.btnGoTo.TabIndex = 375; + this.btnGoTo.Text = "跳转"; + this.btnGoTo.UseVisualStyleBackColor = false; + this.btnGoTo.Click += new System.EventHandler(this.btnGoTo_Click); + // + // txtUrl + // + this.txtUrl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtUrl.Location = new System.Drawing.Point(3, 4); + this.txtUrl.Name = "txtUrl"; + this.txtUrl.Size = new System.Drawing.Size(1108, 23); + this.txtUrl.TabIndex = 0; + // + // 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"; + this.splitContainer4.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer4.Panel1 + // + this.splitContainer4.Panel1.Controls.Add(this.panel2); + // + // splitContainer4.Panel2 + // + this.splitContainer4.Panel2.Controls.Add(this.textBox1); + this.splitContainer4.Size = new System.Drawing.Size(1176, 503); + this.splitContainer4.SplitterDistance = 442; + this.splitContainer4.TabIndex = 2; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.Controls.Add(this.pnlMsg); + this.panel2.Controls.Add(this.pbLoading); + 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(1176, 442); + this.panel2.TabIndex = 1; + // + // pnlMsg + // + this.pnlMsg.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.pnlMsg.CanvasColor = System.Drawing.SystemColors.Control; + this.pnlMsg.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.pnlMsg.Controls.Add(this.lblMsg); + this.pnlMsg.DisabledBackColor = System.Drawing.Color.Empty; + this.pnlMsg.Location = new System.Drawing.Point(388, 72); + this.pnlMsg.Name = "pnlMsg"; + this.pnlMsg.Size = new System.Drawing.Size(401, 110); + this.pnlMsg.Style.Alignment = System.Drawing.StringAlignment.Center; + this.pnlMsg.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground; + this.pnlMsg.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(227)))), ((int)(((byte)(239)))), ((int)(((byte)(255))))); + this.pnlMsg.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.pnlMsg.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.pnlMsg.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.pnlMsg.Style.GradientAngle = 90; + this.pnlMsg.TabIndex = 496; + this.pnlMsg.Visible = false; + // + // lblMsg + // + this.lblMsg.ForeColor = System.Drawing.SystemColors.HotTrack; + this.lblMsg.Location = new System.Drawing.Point(29, 20); + this.lblMsg.Name = "lblMsg"; + this.lblMsg.Size = new System.Drawing.Size(345, 69); + this.lblMsg.TabIndex = 0; + this.lblMsg.Text = "消息tip"; + // + // pbLoading + // + this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue; + this.pbLoading.Location = new System.Drawing.Point(563, 196); + this.pbLoading.Name = "pbLoading"; + this.pbLoading.Size = new System.Drawing.Size(50, 50); + this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pbLoading.TabIndex = 8; + this.pbLoading.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(13, 8); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(1154, 42); + this.textBox1.TabIndex = 0; + this.textBox1.Text = "帮我生成适用于这款鞋的20个不同场景图,不用生成模特的图\r\n帮我生成适用于这款包的20个不同场景图"; + // + // splitContainer2 + // + this.splitContainer2.BackColor = System.Drawing.Color.White; + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer2.Location = new System.Drawing.Point(1, 33); + this.splitContainer2.Name = "splitContainer2"; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.splitContainer3); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.splitContainer1); + this.splitContainer2.Size = new System.Drawing.Size(1364, 534); + this.splitContainer2.SplitterDistance = 184; + this.splitContainer2.TabIndex = 4; + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + 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.txtYSize); + this.splitContainer3.Panel1.Controls.Add(this.txtXSize); + this.splitContainer3.Panel1.Controls.Add(this.label2); + this.splitContainer3.Panel1.Controls.Add(this.label1); + this.splitContainer3.Panel1.Controls.Add(this.txtYPos); + this.splitContainer3.Panel1.Controls.Add(this.txtXPos); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.AutoScroll = true; + this.splitContainer3.Panel2.Controls.Add(this.pbLoading2); + this.splitContainer3.Panel2.Controls.Add(this.ucImgChange1); + this.splitContainer3.Size = new System.Drawing.Size(184, 534); + this.splitContainer3.SplitterDistance = 61; + this.splitContainer3.TabIndex = 0; + // + // txtYSize + // + this.txtYSize.Location = new System.Drawing.Point(120, 31); + this.txtYSize.Name = "txtYSize"; + this.txtYSize.Size = new System.Drawing.Size(42, 23); + this.txtYSize.TabIndex = 14; + this.txtYSize.Text = "50"; + // + // txtXSize + // + this.txtXSize.Location = new System.Drawing.Point(72, 31); + this.txtXSize.Name = "txtXSize"; + this.txtXSize.Size = new System.Drawing.Size(42, 23); + this.txtXSize.TabIndex = 13; + this.txtXSize.Text = "120"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 34); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(56, 17); + this.label2.TabIndex = 12; + this.label2.Text = "打码尺寸"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(56, 17); + this.label1.TabIndex = 11; + this.label1.Text = "打码坐标"; + // + // txtYPos + // + this.txtYPos.Location = new System.Drawing.Point(120, 6); + this.txtYPos.Name = "txtYPos"; + this.txtYPos.Size = new System.Drawing.Size(42, 23); + this.txtYPos.TabIndex = 10; + this.txtYPos.Text = "740"; + // + // txtXPos + // + this.txtXPos.Location = new System.Drawing.Point(72, 6); + this.txtXPos.Name = "txtXPos"; + this.txtXPos.Size = new System.Drawing.Size(42, 23); + this.txtXPos.TabIndex = 9; + this.txtXPos.Text = "670"; + // + // pbLoading2 + // + this.pbLoading2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pbLoading2.Image = global::TemuKJD.Properties.Resources.loading_blue; + this.pbLoading2.Location = new System.Drawing.Point(67, 209); + this.pbLoading2.Name = "pbLoading2"; + this.pbLoading2.Size = new System.Drawing.Size(50, 50); + this.pbLoading2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pbLoading2.TabIndex = 9; + this.pbLoading2.TabStop = false; + // + // ucImgChange1 + // + this.ucImgChange1.BackColor = System.Drawing.SystemColors.MenuHighlight; + this.ucImgChange1.Dock = System.Windows.Forms.DockStyle.Top; + this.ucImgChange1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ucImgChange1.Location = new System.Drawing.Point(0, 0); + this.ucImgChange1.Name = "ucImgChange1"; + this.ucImgChange1.Padding = new System.Windows.Forms.Padding(1); + this.ucImgChange1.Size = new System.Drawing.Size(184, 148); + this.ucImgChange1.TabIndex = 0; + // + // DouBaoImgCefForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(1366, 568); + this.Controls.Add(this.splitContainer2); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "DouBaoImgCefForm"; + this.ShowMaximizeBox = true; + this.Text = "豆包生成SKU图"; + this.TitleText = "豆包生成SKU图"; + this.Load += new System.EventHandler(this.DouBaoCefForm_Load); + this.Controls.SetChildIndex(this.splitContainer2, 0); + 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.splitContainer4.Panel1.ResumeLayout(false); + this.splitContainer4.Panel2.ResumeLayout(false); + this.splitContainer4.Panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit(); + this.splitContainer4.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.pnlMsg.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pbLoading)).EndInit(); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel1.PerformLayout(); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pbLoading2)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private UserControls.ButtonEx btnGoTo; + private System.Windows.Forms.TextBox txtUrl; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.SplitContainer splitContainer2; + private UcSkuImgItem ucImgChange1; + private System.Windows.Forms.PictureBox pbLoading; + private System.Windows.Forms.SplitContainer splitContainer3; + private System.Windows.Forms.PictureBox pbLoading2; + private System.Windows.Forms.TextBox txtYSize; + private System.Windows.Forms.TextBox txtXSize; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtYPos; + private System.Windows.Forms.TextBox txtXPos; + private System.Windows.Forms.SplitContainer splitContainer4; + private System.Windows.Forms.TextBox textBox1; + private DevComponents.DotNetBar.PanelEx pnlMsg; + private System.Windows.Forms.Label lblMsg; + } +} \ No newline at end of file diff --git a/TEMUKJD/ToolForms/DouBaoImgCefForm.cs b/TEMUKJD/ToolForms/DouBaoImgCefForm.cs new file mode 100644 index 0000000..70e0244 --- /dev/null +++ b/TEMUKJD/ToolForms/DouBaoImgCefForm.cs @@ -0,0 +1,449 @@ +using AllBase; +using AllBase.Model.Result; +using AllBase.Model.Result.TemuResult; +using CefSharp; +using CefSharp.WinForms; +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.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; +using TemuKJD.BaseForms; +using TemuKJD.Helper; +using TemuKJD.KJDForms.ProductSelectForms; +using Work; +using Work.BLL.Tools; + +namespace TemuKJD.ToolForms +{ + public partial class DouBaoImgCefForm : LRBaseForm + { + ChromiumWebBrowser cefWebBrowser = null; + KJDDBProduct dbProd = null; + + string Url { get; set; } = "https://www.doubao.com/chat/"; + List Cookies = new List(); + public DouBaoImgCefForm(KJDDBProduct _dbProd, string url = "", List cookies = null) + { + InitializeComponent(); + + if (_dbProd != null) + dbProd = _dbProd; + if (!string.IsNullOrEmpty(url)) + Url = url; + if (cookies != null) + Cookies = cookies; + + this.Width = Math.Min(1600, Screen.PrimaryScreen.Bounds.Width); + this.Height = Math.Min(900, Screen.PrimaryScreen.Bounds.Height); + this.StartPosition = FormStartPosition.CenterScreen; + } + + private void DouBaoCefForm_Load(object sender, EventArgs e) + { + cefWebBrowser = NaiBa.CefHelper.CEFBrowser.CreateChromiumWebBrowser(Url); + cefWebBrowser.AutoSize = true; + cefWebBrowser.Dock = DockStyle.Fill; + //cefWebBrowser.RequestContext = new RequestContext(requestContextSettings); + cefWebBrowser.KeyboardHandler = new KJDForms.ToolForms.CefKeyboardHandler(); + cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd; + cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged; + CustomDownloadHandler downloadHandler = new CustomDownloadHandler(); + downloadHandler.DownloadCompleteEvent += DownloadHandler_DownloadComplete; + cefWebBrowser.DownloadHandler = downloadHandler; + panel2.Controls.Add(cefWebBrowser); + + this.splitContainer3.Panel2.Controls.Clear(); + if (BaseClass.MainPath=="kuajingda") + { + try + { + 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 ucImgChangeList = new List(); + foreach(var sku in prodInfo.productSkcList[0].productSkuList) + { + var imgUrl = sku.thumbUrl.Replace("https://", "http://"); + if (!ucImgChangeList.Any(p=>p.pbSkuOriginalImg.ImageLocation == imgUrl)) + { + UcSkuImgItem skuImgItem = new UcSkuImgItem(prodInfo.productId.ParseToLong(), sku.productSkuSpecList[0].specId.ParseToLong(), + sku.productSkuSpecList[0].specName, imgUrl); + skuImgItem.pbSkuOriginalImg.ImageLocation = imgUrl; + skuImgItem.pbSkuOriginalImg.Tag = "{\"productId\":" + prodInfo.productId + + ",\"skuId\":" + sku.productSkuId + + ",\"specId\":" + sku.productSkuSpecList[0].specId + + ",\"specName\":\"" + sku.productSkuSpecList[0].specName + "\"}"; + skuImgItem.pbSkuOriginalImg.Name = sku.productSkuId.ToString(); + skuImgItem.label1.Text = sku.productSkuSpecList[0].specName; + skuImgItem.panelEx1.Tag = skuImgItem; + skuImgItem.panelEx1.Click += pnlGetOriginalImg_Click; + skuImgItem.panelEx2.Tag = skuImgItem; + skuImgItem.panelEx2.Click += pnlUploadImg_Click; + skuImgItem.Dock = DockStyle.Top; + skuImgItem.pbSkuOriginalImg.Click += pbSkuOriginalImg_Click; + skuImgItem.pbSkuImg.Tag = skuImgItem; + //skuImgItem.pbSkuImg.Click += pbSkuOriginalImg_Click; + skuImgItem.pbSkuImg.Click += PbSkuImg_Click; + ucImgChangeList.Add(skuImgItem); + this.splitContainer3.Panel2.Controls.Add(skuImgItem); + } + } + + pbLoading.Visible = true; + pbLoading.BringToFront(); + pbLoading2.Visible = true; + pbLoading2.BringToFront(); + Task.Run(() => + { + foreach (Control c in this.splitContainer3.Panel2.Controls) + { + var skuImgItem = c as UcSkuImgItem; + if (skuImgItem == null) + continue; + + var skuImgLst = GetSkuImgList(skuImgItem.ProdId.ParseToString(), skuImgItem.SpecId.ParseToString()); + skuImgItem.LstSkuImgInfo = skuImgLst; + if (skuImgLst.Count > 0) + { + var skuImgInfo = skuImgLst.First(); + + Invoke(new Action(() => + { + //if (!string.IsNullOrWhiteSpace(skuImgInfo.img_url)) + // skuImgItem.pbSkuImg.ImageLocation = skuImgInfo.img_url.Replace("img.kwcdn.com", "img.cdnfe.com").Replace("https://", "http://"); + //else + if (!string.IsNullOrWhiteSpace(skuImgInfo.img_base64)) + skuImgItem.pbSkuImg.Image = Base64ChangeImgUrl.Base64ToImage(skuImgInfo.img_base64); + })); + } + } + Invoke(new Action(() => + { + pbLoading.Visible = false; + pbLoading2.Visible = false; + })); + }); + } + catch (Exception ex) + { + BaseMsgForm.ShowError(ex.Message); + } + } + + + } + + private void DownloadHandler_DownloadComplete(object browser, DownloadItem downloadItem) + { + //BaseMsgForm.ShowInfo(downloadItem.FullPath + "下载完成"); + Invoke(new Action(() => + { + this.pnlMsg.Visible = true; + this.lblMsg.Text = downloadItem.FullPath + "下载完成"; + })); + Task.Run(() => + { + Thread.Sleep(2000); + Invoke(new Action(() => + { + this.pnlMsg.Visible = false; + })); + }); + } + + + public static List GetSkuImgList(string prodId, string specId) + { + var url = BaseClass.BuildObjString("product/get_sku_image_list"); + var data = UserLogin.GetSignaturex(); + data += "&search_product_id=" + prodId; + data += "&search_spec_id=" + specId; + + 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")) + { + BaseMsgForm.ShowError("SKU图片查询失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg")); + return new List(); + } + else + { + try + { + JObject jObj = JObject.Parse(html); + return JsonHelper.DeserializeJsonToList(jObj["data"].ToString()); + } + catch(Exception ex) + { + BaseMsgForm.ShowError("SKU图片查询失败,请重试!" + ex.Message); + return new List(); + } + } + } + + private void pbSkuOriginalImg_Click(object sender, EventArgs e) + { + var pb = sender as PictureBox; + + if (!string.IsNullOrEmpty(pb.ImageLocation)) + { + ShowImgForm imgFrom = new ShowImgForm(pb.ImageLocation); + imgFrom.ShowDialog(); + } + else + { + ShowImgForm imgFrom = new ShowImgForm(pb.Image); + imgFrom.ShowDialog(); + } + } + + private void PbSkuImg_Click(object sender, EventArgs e) + { + var pb = sender as PictureBox; + if (pb == null) + return; + var skuImgItem = pb.Tag as UcSkuImgItem; + if (skuImgItem == null) + return; + + DouBaoImgListForm imgLstForm = new DouBaoImgListForm(skuImgItem.LstSkuImgInfo); + imgLstForm.ShowDialog(); + var imgInfo = skuImgItem.LstSkuImgInfo.FirstOrDefault(); + if (imgInfo == null) + { + skuImgItem.pbSkuImg.Image = Properties.Resources.nopic; + } + else + { + if (!string.IsNullOrWhiteSpace(imgInfo.img_url)) + skuImgItem.pbSkuImg.ImageLocation = imgInfo.img_url; + else if (!string.IsNullOrWhiteSpace(imgInfo.img_base64)) + skuImgItem.pbSkuImg.Image = Base64ChangeImgUrl.Base64ToImage(imgInfo.img_base64); + } + } + + private void pnlUploadImg_Click(object sender, EventArgs e) + { + var pnl = sender as DevComponents.DotNetBar.PanelEx; + if (pnl == null) + return; + var skuImgItem = pnl.Tag as UcSkuImgItem; + if (skuImgItem == null) + return; + + OpenFileDialog openFileDialog = new OpenFileDialog(); + openFileDialog.Multiselect = false; + // 设置过滤条件,只显示文本文件 + openFileDialog.Filter = "图片文件 (*.jpeg;*.jpg;*.png)|*.jpeg;*.jpg;*.png|All files (*.*)|*.*"; + // 显示对话框并获取结果 + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + try + { + string filePath = openFileDialog.FileName; + Image image = Image.FromFile(filePath); + ImageBuild ib = null; + using (MemoryStream memoryStream = new MemoryStream()) + { + image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); + byte[] imageBytes = memoryStream.ToArray(); + ib = new ImageBuild(imageBytes); + } + var newImgBytes = ib.BuildNewSize(800, 800, 85); + Bitmap bitmap = null; + using (MemoryStream ms = new MemoryStream(newImgBytes)) + { + //skuImgItem.pictureBox2.Image = Image.FromStream(ms); + // 将image转成bitmap以后使用才能释放生成MemoryStream,否则保存Image对象到文件会产生GDI+中发生一般性错误 + bitmap = new Bitmap(Image.FromStream(ms)); + // 打码,打上马赛克 + var x = txtXPos.Text.ParseToInt(); + var y = txtYPos.Text.ParseToInt(); + var cx = txtXSize.Text.ParseToInt(); + var cy = txtYSize.Text.ParseToInt(); + //bitmap = ApplyMosaicEffect(bitmap, new Rectangle(665, 740, 125, 50), 25); + bitmap = ApplyMosaicEffect(bitmap, new Rectangle(x, y, cx, cy), 60); + //skuImgItem.pictureBox2.Image = bitmap; + } + + string imgBase64 = ""; + using (MemoryStream memoryStream = new MemoryStream()) + { + bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); + byte[] imageBytes = memoryStream.ToArray(); + imgBase64 = Convert.ToBase64String(imageBytes); + } + string img_md5 = BaseClass.GetMd5(imgBase64); + + var url = BaseClass.BuildObjString("product/add_sku_image"); + var data = UserLogin.GetSignaturex(); + data += "&img_base64=" + imgBase64; + data += "&img_md5=" + img_md5; + data += "&product_id=" + skuImgItem.ProdId; + data += "&spec_id=" + skuImgItem.SpecId; + data += "&spec_name=" + skuImgItem.SpecName; + data += "&original_img_url=" + skuImgItem.SpecImgUrl; + data += "&original_img_url_md5=" + BaseClass.GetMd5(skuImgItem.SpecImgUrl); + + 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")) + { + BaseMsgForm.ShowError("SKU图片编辑失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg")); + } + else + { + skuImgItem.LstSkuImgInfo.Insert(0, new AiSkuImgInfo() + { + id = BaseRegex.GetIntJson(ref html, "sku_img_id"), + add_time = DateTime.Now, + mdy_time = DateTime.Now, + img_base64 = imgBase64, + img_base64_db_id = BaseRegex.GetIntJson(ref html, "sku_img_Base64_id"), + img_md5 = img_md5, + img_url = "", + original_img_url = skuImgItem.SpecImgUrl, + product_id = skuImgItem.ProdId.ParseToString(), + spec_id = skuImgItem.SpecId.ParseToString(), + spec_name = skuImgItem.SpecName, + }); + skuImgItem.pbSkuImg.Image = bitmap; + } + } + catch (Exception ex) + { + BaseMsgForm.ShowError("打开自定义图片失败 " + ex.Message); + return; + } + } + } + + private void pnlGetOriginalImg_Click(object sender, EventArgs e) + { + var pnl = sender as DevComponents.DotNetBar.PanelEx; + if (pnl == null) + return; + var skuImgItem = pnl.Tag as UcSkuImgItem; + if (skuImgItem == null) + return; + + var pb = skuImgItem.pbSkuOriginalImg; + if (pb.Image == null) + { + BaseMsgForm.ShowError("图片为空!"); + return; + } + + string fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".jpg"; + if (!string.IsNullOrEmpty(pb.ImageLocation)) + { + fileName = pb.ImageLocation.Replace("://", ".").Replace('/', '.'); + } + SaveFileDialog sfd = new SaveFileDialog(); + sfd.Filter = "JPeg Image|*.jpg;*.jpeg"; + sfd.Title = "保存图片"; + sfd.FileName = fileName; + if (sfd.ShowDialog() == DialogResult.OK) + { + pb.Image.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); + } + } + + private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e) + { + if (this.Created) + { + Invoke(new Action(() => + { + txtUrl.Text = e.Address; + })); + } + } + + private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e) + { + } + + private void btnGoTo_Click(object sender, EventArgs e) + { + this.cefWebBrowser.Load(txtUrl.Text.Trim()); + } + + + + /// + /// 给图片打上马赛克 + /// + /// + /// + /// + /// + public static Bitmap ApplyMosaicEffect(Bitmap original, Rectangle mosaicRect, int mosaicSize) + { + int width = original.Width; + int height = original.Height; + //Bitmap mosaicBitmap = new Bitmap(width, height); + //using (Graphics g = Graphics.FromImage(mosaicBitmap)) + using (Graphics g = Graphics.FromImage(original)) + { + //for (int x = 0; x < width; x += mosaicSize) + //{ + // for (int y = 0; y < height; y += mosaicSize) + // { + // Color c = GetAverageColor(original, x, y, mosaicSize); + // Brush brush = new SolidBrush(c); + // g.FillRectangle(brush, x, y, mosaicSize, mosaicSize); + // brush.Dispose(); + // } + //} + for (int x = mosaicRect.X; x < width && x < mosaicRect.Right; x += mosaicSize) + { + for (int y = mosaicRect.Y; y < height && y < mosaicRect.Bottom; y += mosaicSize) + { + Color c = GetAverageColor(original, x, y, Math.Min(mosaicRect.Right - x, mosaicSize), Math.Min(mosaicRect.Bottom - y, mosaicSize)); + Brush brush = new SolidBrush(c); + g.FillRectangle(brush, x, y, Math.Min(mosaicRect.Right - x, mosaicSize), Math.Min(mosaicRect.Bottom - y, mosaicSize)); + brush.Dispose(); + } + } + } + //return mosaicBitmap; + return original; + } + static Color GetAverageColor(Bitmap bmp, int x, int y, int xsize, int ysize) + { + int r = 0, g = 0, b = 0; + int count = 0; + for (int i = x; i < x + xsize && i < bmp.Width; i++) + { + for (int j = y; j < y + ysize && j < bmp.Height; j++) + { + Color c = bmp.GetPixel(i, j); + r += c.R; g += c.G; b += c.B; count++; + } + } + return Color.FromArgb(r / count, g / count, b / count); + } + } +} diff --git a/TEMUKJD/ToolForms/DouBaoImgCefForm.resx b/TEMUKJD/ToolForms/DouBaoImgCefForm.resx new file mode 100644 index 0000000..2bdeb30 --- /dev/null +++ b/TEMUKJD/ToolForms/DouBaoImgCefForm.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/ToolForms/DouBaoImgListForm.Designer.cs b/TEMUKJD/ToolForms/DouBaoImgListForm.Designer.cs new file mode 100644 index 0000000..6b29ef6 --- /dev/null +++ b/TEMUKJD/ToolForms/DouBaoImgListForm.Designer.cs @@ -0,0 +1,82 @@ + +namespace TemuKJD.ToolForms +{ + partial class DouBaoImgListForm + { + /// + /// 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(DouBaoImgListForm)); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.ucSkuImgListItem1 = new TemuKJD.ToolForms.UcSkuImgListItem(); + this.flowLayoutPanel1.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(1, 33); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(1198, 566); + this.flowLayoutPanel1.TabIndex = 1; + // + // 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(3, 3); + this.ucSkuImgListItem1.Name = "ucSkuImgListItem1"; + this.ucSkuImgListItem1.Size = new System.Drawing.Size(250, 280); + this.ucSkuImgListItem1.TabIndex = 0; + // + // DouBaoImgListForm + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(1200, 600); + this.Controls.Add(this.flowLayoutPanel1); + 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.KeyPreview = true; + this.Name = "DouBaoImgListForm"; + this.Text = "图片列表"; + this.TitleText = "图片列表"; + this.Load += new System.EventHandler(this.DouBaoImgListForm_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.DouBaoImgListForm_KeyDown); + this.Controls.SetChildIndex(this.flowLayoutPanel1, 0); + this.flowLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private UcSkuImgListItem ucSkuImgListItem1; + } +} \ No newline at end of file diff --git a/TEMUKJD/ToolForms/DouBaoImgListForm.cs b/TEMUKJD/ToolForms/DouBaoImgListForm.cs new file mode 100644 index 0000000..41f58b3 --- /dev/null +++ b/TEMUKJD/ToolForms/DouBaoImgListForm.cs @@ -0,0 +1,95 @@ +using AllBase; +using AllBase.Model.Result.TemuResult; +using DevComponents.DotNetBar; +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 Work; +using Work.BLL.Tools; + +namespace TemuKJD.ToolForms +{ + public partial class DouBaoImgListForm : LRBaseForm + { + public List LstSkuImgInfo; + public DouBaoImgListForm(List lstSkuImgInfo) + { + InitializeComponent(); + LstSkuImgInfo = lstSkuImgInfo; + } + + private void DouBaoImgListForm_Load(object sender, EventArgs e) + { + LoadSkuImgList(); + } + + void LoadSkuImgList() + { + this.flowLayoutPanel1.Controls.Clear(); + if (LstSkuImgInfo != null) + { + foreach (var skuImg in LstSkuImgInfo) + { + UcSkuImgListItem imgListItem = new UcSkuImgListItem(); + //if (!string.IsNullOrWhiteSpace(skuImg.img_url)) + // imgListItem.pictureBox1.ImageLocation = skuImg.img_url.Replace("img.kwcdn.com", "img.cdnfe.com").Replace("https://", "http://"); + //else + if (!string.IsNullOrWhiteSpace(skuImg.img_base64)) + imgListItem.pictureBox1.Image = Base64ChangeImgUrl.Base64ToImage(skuImg.img_base64); + imgListItem.btnDel.Tag = skuImg; + imgListItem.Anchor = AnchorStyles.None; + imgListItem.btnDel.Click += BtnDel_Click; + this.flowLayoutPanel1.Controls.Add(imgListItem); + } + } + } + + private void BtnDel_Click(object sender, EventArgs e) + { + var btn = sender as PanelEx; + if (btn != null) + { + var skuImg = btn.Tag as AiSkuImgInfo; + if (skuImg != null) + { + //先删除数据库中的图片 + var url = BaseClass.BuildObjString("product/del_sku_image"); + var data = UserLogin.GetSignaturex() + + "&img_id=" + skuImg.id + "&img_base64_id=" + skuImg.img_base64_db_id; + 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")) + { + BaseMsgForm.ShowError("删除失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg")); + return; + } + + //移除软件显示的图片 + LstSkuImgInfo.Remove(skuImg); + LoadSkuImgList(); + } + } + } + + private void DouBaoImgListForm_KeyDown(object sender, KeyEventArgs e) + { + switch (e.KeyCode) + { + //case Keys.A: MessageBox.Show("您按下的是A"); break; + //case Keys.B: MessageBox.Show("您按下的是B"); break; + case Keys.Enter: break; + case Keys.Escape: this.Close(); break; + } + } + } +} diff --git a/TEMUKJD/ToolForms/DouBaoImgListForm.resx b/TEMUKJD/ToolForms/DouBaoImgListForm.resx new file mode 100644 index 0000000..2bdeb30 --- /dev/null +++ b/TEMUKJD/ToolForms/DouBaoImgListForm.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/ToolForms/CefForm.Designer.cs b/TEMUKJD/ToolForms/Old/CefForm.Designer.cs similarity index 100% rename from TEMUKJD/ToolForms/CefForm.Designer.cs rename to TEMUKJD/ToolForms/Old/CefForm.Designer.cs diff --git a/TEMUKJD/ToolForms/CefForm.cs b/TEMUKJD/ToolForms/Old/CefForm.cs similarity index 100% rename from TEMUKJD/ToolForms/CefForm.cs rename to TEMUKJD/ToolForms/Old/CefForm.cs diff --git a/TEMUKJD/ToolForms/CefForm.resx b/TEMUKJD/ToolForms/Old/CefForm.resx similarity index 100% rename from TEMUKJD/ToolForms/CefForm.resx rename to TEMUKJD/ToolForms/Old/CefForm.resx diff --git a/TEMUKJD/ToolForms/ShowImgForm.Designer.cs b/TEMUKJD/ToolForms/ShowImgForm.Designer.cs index f0c1cc2..87e2685 100644 --- a/TEMUKJD/ToolForms/ShowImgForm.Designer.cs +++ b/TEMUKJD/ToolForms/ShowImgForm.Designer.cs @@ -32,10 +32,10 @@ namespace TemuKJD.ToolForms System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ShowImgForm)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.btnSave = new DevComponents.DotNetBar.PanelEx(); this.btnCopy = new DevComponents.DotNetBar.PanelEx(); this.btnCopyUrl = new DevComponents.DotNetBar.PanelEx(); this.btnClose = new DevComponents.DotNetBar.PanelEx(); - this.btnSave = new DevComponents.DotNetBar.PanelEx(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -77,6 +77,31 @@ namespace TemuKJD.ToolForms this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; // + // 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(366, 4); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(65, 26); + 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 = 505; + this.btnSave.Text = "保存本地"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // // btnCopy // this.btnCopy.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); @@ -152,37 +177,12 @@ namespace TemuKJD.ToolForms this.btnClose.Text = "关闭"; this.btnClose.Click += new System.EventHandler(this.btnClose_Click); // - // 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(366, 4); - this.btnSave.Name = "btnSave"; - this.btnSave.Size = new System.Drawing.Size(65, 26); - 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 = 505; - this.btnSave.Text = "保存本地"; - this.btnSave.Click += new System.EventHandler(this.btnSave_Click); - // // ShowImgForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.ClientSize = new System.Drawing.Size(650, 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"))); this.KeyPreview = true; this.Name = "ShowImgForm"; diff --git a/TEMUKJD/ToolForms/ShowImgForm.cs b/TEMUKJD/ToolForms/ShowImgForm.cs index cb3773f..5a1351d 100644 --- a/TEMUKJD/ToolForms/ShowImgForm.cs +++ b/TEMUKJD/ToolForms/ShowImgForm.cs @@ -98,9 +98,16 @@ namespace TemuKJD.ToolForms sfd.Filter = "JPeg Image|*.jpg;*.jpeg"; sfd.Title = "保存图片"; sfd.FileName = fileName; - if ( sfd.ShowDialog() ==DialogResult.OK) + if (sfd.ShowDialog() == DialogResult.OK) { - pictureBox1.Image.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); + try + { + pictureBox1.Image.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); + } + catch (Exception ex) + { + BaseMsgForm.ShowError(ex.Message); + } } } } diff --git a/TEMUKJD/ToolForms/UcSkuImgItem.Designer.cs b/TEMUKJD/ToolForms/UcSkuImgItem.Designer.cs new file mode 100644 index 0000000..466ef94 --- /dev/null +++ b/TEMUKJD/ToolForms/UcSkuImgItem.Designer.cs @@ -0,0 +1,306 @@ + +namespace TemuKJD.ToolForms +{ + partial class UcSkuImgItem + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.pbSkuOriginalImg = new System.Windows.Forms.PictureBox(); + this.panelEx1 = new DevComponents.DotNetBar.PanelEx(); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.pnlMore = new DevComponents.DotNetBar.PanelEx(); + this.pbSkuImg = new System.Windows.Forms.PictureBox(); + this.panelEx2 = new DevComponents.DotNetBar.PanelEx(); + this.splitContainer4 = new System.Windows.Forms.SplitContainer(); + this.label1 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbSkuOriginalImg)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pbSkuImg)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit(); + this.splitContainer4.Panel1.SuspendLayout(); + this.splitContainer4.Panel2.SuspendLayout(); + this.splitContainer4.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.BackColor = System.Drawing.Color.White; + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.IsSplitterFixed = true; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.splitContainer2); + this.splitContainer1.Panel1.Padding = new System.Windows.Forms.Padding(2, 2, 0, 2); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer3); + this.splitContainer1.Panel2.Padding = new System.Windows.Forms.Padding(0, 2, 2, 2); + this.splitContainer1.Size = new System.Drawing.Size(206, 127); + this.splitContainer1.SplitterDistance = 102; + this.splitContainer1.SplitterWidth = 2; + this.splitContainer1.TabIndex = 0; + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer2.IsSplitterFixed = true; + this.splitContainer2.Location = new System.Drawing.Point(2, 2); + this.splitContainer2.Name = "splitContainer2"; + this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.pbSkuOriginalImg); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.panelEx1); + this.splitContainer2.Size = new System.Drawing.Size(100, 123); + this.splitContainer2.SplitterDistance = 96; + this.splitContainer2.SplitterWidth = 2; + this.splitContainer2.TabIndex = 0; + // + // pbSkuOriginalImg + // + this.pbSkuOriginalImg.Dock = System.Windows.Forms.DockStyle.Fill; + this.pbSkuOriginalImg.Image = global::TemuKJD.Properties.Resources.nopic; + this.pbSkuOriginalImg.Location = new System.Drawing.Point(0, 0); + this.pbSkuOriginalImg.Name = "pbSkuOriginalImg"; + this.pbSkuOriginalImg.Size = new System.Drawing.Size(100, 96); + this.pbSkuOriginalImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pbSkuOriginalImg.TabIndex = 0; + this.pbSkuOriginalImg.TabStop = false; + // + // panelEx1 + // + this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx1.Cursor = System.Windows.Forms.Cursors.Hand; + this.panelEx1.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelEx1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panelEx1.Location = new System.Drawing.Point(0, 0); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Size = new System.Drawing.Size(100, 25); + this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx1.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx1.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx1.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelEx1.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.panelEx1.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.panelEx1.Style.ForeColor.Color = System.Drawing.Color.White; + this.panelEx1.Style.GradientAngle = 90; + this.panelEx1.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx1.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.panelEx1.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.panelEx1.TabIndex = 521; + this.panelEx1.Text = "下载原图"; + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer3.IsSplitterFixed = true; + this.splitContainer3.Location = new System.Drawing.Point(0, 2); + this.splitContainer3.Name = "splitContainer3"; + this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer3.Panel1 + // + this.splitContainer3.Panel1.Controls.Add(this.pnlMore); + this.splitContainer3.Panel1.Controls.Add(this.pbSkuImg); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.Controls.Add(this.panelEx2); + this.splitContainer3.Size = new System.Drawing.Size(100, 123); + this.splitContainer3.SplitterDistance = 96; + this.splitContainer3.SplitterWidth = 2; + this.splitContainer3.TabIndex = 1; + // + // pnlMore + // + this.pnlMore.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.pnlMore.CanvasColor = System.Drawing.Color.Transparent; + this.pnlMore.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.pnlMore.Cursor = System.Windows.Forms.Cursors.Hand; + this.pnlMore.DisabledBackColor = System.Drawing.Color.Empty; + this.pnlMore.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.pnlMore.Location = new System.Drawing.Point(77, 74); + this.pnlMore.Name = "pnlMore"; + this.pnlMore.Size = new System.Drawing.Size(23, 23); + this.pnlMore.Style.Alignment = System.Drawing.StringAlignment.Center; + this.pnlMore.Style.BackColor1.Color = System.Drawing.Color.Transparent; + this.pnlMore.Style.BackColor2.Color = System.Drawing.Color.Transparent; + this.pnlMore.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.pnlMore.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.pnlMore.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.pnlMore.Style.ForeColor.Color = System.Drawing.Color.Black; + this.pnlMore.Style.GradientAngle = 90; + this.pnlMore.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.pnlMore.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.pnlMore.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.pnlMore.TabIndex = 525; + this.pnlMore.Text = "···"; + this.pnlMore.Visible = false; + this.pnlMore.Click += new System.EventHandler(this.pnlMore_Click); + // + // pbSkuImg + // + this.pbSkuImg.Dock = System.Windows.Forms.DockStyle.Fill; + this.pbSkuImg.Image = global::TemuKJD.Properties.Resources.nopic; + this.pbSkuImg.Location = new System.Drawing.Point(0, 0); + this.pbSkuImg.Name = "pbSkuImg"; + this.pbSkuImg.Size = new System.Drawing.Size(100, 96); + this.pbSkuImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pbSkuImg.TabIndex = 0; + this.pbSkuImg.TabStop = false; + this.pbSkuImg.Click += new System.EventHandler(this.pbSkuImg_Click); + // + // panelEx2 + // + this.panelEx2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx2.Cursor = System.Windows.Forms.Cursors.Hand; + this.panelEx2.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelEx2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panelEx2.Location = new System.Drawing.Point(0, 0); + this.panelEx2.Name = "panelEx2"; + this.panelEx2.Size = new System.Drawing.Size(100, 25); + this.panelEx2.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx2.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx2.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx2.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.panelEx2.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.panelEx2.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.panelEx2.Style.ForeColor.Color = System.Drawing.Color.White; + this.panelEx2.Style.GradientAngle = 90; + this.panelEx2.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx2.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.panelEx2.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.panelEx2.TabIndex = 521; + this.panelEx2.Text = "新增AI图"; + // + // splitContainer4 + // + this.splitContainer4.BackColor = System.Drawing.Color.White; + this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer4.IsSplitterFixed = true; + this.splitContainer4.Location = new System.Drawing.Point(1, 1); + this.splitContainer4.Name = "splitContainer4"; + this.splitContainer4.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer4.Panel1 + // + this.splitContainer4.Panel1.Controls.Add(this.label1); + this.splitContainer4.Panel1.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0); + this.splitContainer4.Panel1MinSize = 20; + // + // splitContainer4.Panel2 + // + this.splitContainer4.Panel2.Controls.Add(this.splitContainer1); + this.splitContainer4.Panel2MinSize = 20; + this.splitContainer4.Size = new System.Drawing.Size(206, 154); + this.splitContainer4.SplitterDistance = 25; + this.splitContainer4.SplitterWidth = 2; + this.splitContainer4.TabIndex = 1; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Location = new System.Drawing.Point(0, 2); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(206, 23); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // UcSkuImgItem + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.SystemColors.MenuHighlight; + this.Controls.Add(this.splitContainer4); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Name = "UcSkuImgItem"; + this.Padding = new System.Windows.Forms.Padding(1); + this.Size = new System.Drawing.Size(208, 156); + this.SizeChanged += new System.EventHandler(this.UcImgChange_SizeChanged); + this.Resize += new System.EventHandler(this.UcImgChange_Resize); + 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); + ((System.ComponentModel.ISupportInitialize)(this.pbSkuOriginalImg)).EndInit(); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pbSkuImg)).EndInit(); + this.splitContainer4.Panel1.ResumeLayout(false); + this.splitContainer4.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit(); + this.splitContainer4.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.SplitContainer splitContainer3; + public System.Windows.Forms.PictureBox pbSkuImg; + public DevComponents.DotNetBar.PanelEx panelEx2; + public DevComponents.DotNetBar.PanelEx panelEx1; + public System.Windows.Forms.PictureBox pbSkuOriginalImg; + private System.Windows.Forms.SplitContainer splitContainer4; + public System.Windows.Forms.Label label1; + public DevComponents.DotNetBar.PanelEx pnlMore; + } +} diff --git a/TEMUKJD/ToolForms/UcSkuImgItem.cs b/TEMUKJD/ToolForms/UcSkuImgItem.cs new file mode 100644 index 0000000..7d262ae --- /dev/null +++ b/TEMUKJD/ToolForms/UcSkuImgItem.cs @@ -0,0 +1,75 @@ +using AllBase.Model.Result.TemuResult; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Work.BLL.Tools; + +namespace TemuKJD.ToolForms +{ + public partial class UcSkuImgItem : UserControl + { + public long ProdId; + public long SpecId; + public string SpecName; + public string SpecImgUrl; + public List LstSkuImgInfo = new List(); + + public UcSkuImgItem() + { + InitializeComponent(); + } + + public UcSkuImgItem(long _prodId, long _specId, string _specName, string _specImgUrl) + { + InitializeComponent(); + ProdId = _prodId; + SpecId = _specId; + SpecName = _specName; + SpecImgUrl = _specImgUrl; + } + + private void UcImgChange_SizeChanged(object sender, EventArgs e) + { + this.Height = this.Width / 2 + 56; + } + + private void UcImgChange_Resize(object sender, EventArgs e) + { + //this.Height = this.Width / 2 + 10; + } + + private void pnlMore_Click(object sender, EventArgs e) + { + showSkuAiImgList(); + } + + private void pbSkuImg_Click(object sender, EventArgs e) + { + showSkuAiImgList(); + } + + public void showSkuAiImgList() + { + //DouBaoImgListForm imgLstForm = new DouBaoImgListForm(this.LstSkuImgInfo); + //imgLstForm.ShowDialog(); + //var imgInfo = this.LstSkuImgInfo.FirstOrDefault(); + //if (imgInfo == null) + //{ + // this.pbSkuImg.Image = Properties.Resources.nopic; + //} + //else + //{ + // if (!string.IsNullOrWhiteSpace(imgInfo.img_url)) + // pbSkuImg.ImageLocation = imgInfo.img_url; + // else if (!string.IsNullOrWhiteSpace(imgInfo.img_base64)) + // pbSkuImg.Image = Base64ChangeImgUrl.Base64ToImage(imgInfo.img_base64); + //} + } + } +} diff --git a/TEMUKJD/ToolForms/UcSkuImgItem.resx b/TEMUKJD/ToolForms/UcSkuImgItem.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TEMUKJD/ToolForms/UcSkuImgItem.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs b/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs new file mode 100644 index 0000000..2a81cf8 --- /dev/null +++ b/TEMUKJD/ToolForms/UcSkuImgListItem.Designer.cs @@ -0,0 +1,100 @@ + +namespace TemuKJD.ToolForms +{ + partial class UcSkuImgListItem + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.btnDel = new DevComponents.DotNetBar.PanelEx(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.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.pictureBox1.Image = global::TemuKJD.Properties.Resources.nopic; + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(250, 250); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // btnDel + // + this.btnDel.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.btnDel.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnDel.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnDel.DisabledBackColor = System.Drawing.Color.Empty; + this.btnDel.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnDel.Location = new System.Drawing.Point(77, 253); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(100, 23); + this.btnDel.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnDel.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnDel.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnDel.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.btnDel.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.btnDel.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.btnDel.Style.ForeColor.Color = System.Drawing.Color.White; + this.btnDel.Style.GradientAngle = 90; + this.btnDel.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center; + this.btnDel.StyleMouseDown.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(252)))), ((int)(((byte)(151)))), ((int)(((byte)(61))))); + this.btnDel.StyleMouseDown.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(184)))), ((int)(((byte)(94))))); + this.btnDel.StyleMouseDown.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(140)))), ((int)(((byte)(60))))); + this.btnDel.StyleMouseDown.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.btnDel.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnDel.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnDel.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnDel.StyleMouseOver.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(189)))), ((int)(((byte)(105))))); + this.btnDel.StyleMouseOver.ForeColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.btnDel.TabIndex = 525; + this.btnDel.Text = "删除图片"; + // + // UcSkuImgListItem + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + 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))); + this.Name = "UcSkuImgListItem"; + this.Size = new System.Drawing.Size(250, 280); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + public DevComponents.DotNetBar.PanelEx btnDel; + public System.Windows.Forms.PictureBox pictureBox1; + } +} diff --git a/TEMUKJD/ToolForms/UcSkuImgListItem.cs b/TEMUKJD/ToolForms/UcSkuImgListItem.cs new file mode 100644 index 0000000..611aba3 --- /dev/null +++ b/TEMUKJD/ToolForms/UcSkuImgListItem.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace TemuKJD.ToolForms +{ + public partial class UcSkuImgListItem : UserControl + { + public UcSkuImgListItem() + { + InitializeComponent(); + } + + private void pictureBox1_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(pictureBox1.ImageLocation)) + { + ShowImgForm imgFrom = new ShowImgForm(pictureBox1.ImageLocation); + imgFrom.ShowDialog(); + } + else + { + ShowImgForm imgFrom = new ShowImgForm(pictureBox1.Image); + imgFrom.ShowDialog(); + } + } + } +} diff --git a/TEMUKJD/ToolForms/UcSkuImgListItem.resx b/TEMUKJD/ToolForms/UcSkuImgListItem.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/TEMUKJD/ToolForms/UcSkuImgListItem.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file