diff --git a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml index ba0ab92..2b4becf 100644 --- a/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml +++ b/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml @@ -596,7 +596,7 @@ VerticalAlignment="Center" BorderBrush="{StaticResource mainColorBrush}" Click="chkMapProd_Click" - Content="已关联商品" + Content="选择SKU" FontSize="12" /> oi.BuyMap == null && (oi.BuyMapSkus == null || oi.BuyMapSkus.Count == 0))) + if (chkMapSku.IsChecked == true && order.orderItems.Any(oi => oi.BuyMap == null)) return true; - if (chkMapProd.IsChecked == true && order.orderItems.All(oi => oi.BuyMapSkus == null || oi.BuyMapSkus.Count == 0)) + if (chkMapProd.IsChecked == true && order.orderItems.All(oi => oi.BuyMapSkus == null || oi.BuyMapSkus.Count == 0 || oi.BuyMap != null)) return true; - if (chkNoMapProd.IsChecked == true && order.orderItems.All(oi => oi.BuyMap != null)) + if (chkNoMapProd.IsChecked == true && (order.orderItems.All(oi => oi.BuyMap != null) || order.orderItems.All(oi => oi.BuyMapSkus != null && oi.BuyMapSkus.Count > 0))) return true; } if (filterHeadStr.StartsWith("待发货")) diff --git a/AllBase/Model/DBModel/oms_wei_order_item_info.cs b/AllBase/Model/DBModel/oms_wei_order_item_info.cs index e0f6e6f..0b46931 100644 --- a/AllBase/Model/DBModel/oms_wei_order_item_info.cs +++ b/AllBase/Model/DBModel/oms_wei_order_item_info.cs @@ -276,9 +276,9 @@ namespace AllBase.Model.DBModel else TransitOrderWaybillFromWareHouseStr = ItemTransitOrder.express_2_company + "-" + ItemTransitOrder.express_2_waybill; - if (order_id == "3738461463336072960") + if (order_id == "3739043283864307968") { - + var xx = ShopWaybillExceptionStr; } TransitWarehouseRejectSuccessTimeStr = this.ItemTransitOrderWithVoid?.rejected_time == null ? "" : this.ItemTransitOrderWithVoid.rejected_time.Value.ToString("yy-MM-dd HH:mm"); AddEditTransitWarehouseRejectStr = "申请"; @@ -290,11 +290,12 @@ namespace AllBase.Model.DBModel AddEditTransitWarehouseRejectStr = "申请拒收成功"; if (this.ItemTransitOrderWithVoid?.has_reject == 5) AddEditTransitWarehouseRejectStr = "已取消拒收"; - if (this.ItemTransitOrderWithVoid == null || this.ItemRefund?.type != "REFUND" || // 仅退款 + + if (this.ItemTransitOrderWithVoid == null || (this.ItemRefund?.type != "REFUND" && !this.ItemOrder.isAbnormal) || // 仅退款 + TransitRefundStatusStr.Contains("退款成功") || !(this.ItemRefund?.return_waybill_id).IsNullOrEmpty() || !(this.ItemRefund?.return_detail).IsNullOrEmpty() || (!this.ItemOrder.IsEmergency && !this.ItemOrder.isAbnormal && !this.ItemOrder.IsRefund) || (this.ItemTransitOrderWithVoid.warehouse_status != 0 && this.ItemTransitOrderWithVoid.warehouse_status != 1) || - /*this.ItemTransitOrderWithVoid.platform == "XDYYWC" ||*/ // 义务仓不能申请拒收 string.IsNullOrEmpty(PddBuyerOrder?.order_sn)) { if (AddEditTransitWarehouseRejectStr == "申请") @@ -303,7 +304,7 @@ namespace AllBase.Model.DBModel // AddEditTransitWarehouseRejectStr = "申请拒收失败*"; } - if (order_id == "3738396781943865344") + if (order_id == "3738917560440771584") { } @@ -316,7 +317,8 @@ namespace AllBase.Model.DBModel AddEditTransitWarehouseAfterSaleStr = "拦截成功"; //if (this.ItemTransitOrderAfterSale != null && ItemTransitOrderWithVoid.intercept_return_status == 2) // AddEditTransitWarehouseAfterSaleStr = "拦截失败"; - if (this.ItemTransitOrderWithVoid == null || this.ItemRefund?.type != "REFUND" || + if (this.ItemTransitOrderWithVoid == null || (this.ItemRefund?.type != "REFUND" && !this.ItemOrder.isAbnormal) || + TransitRefundStatusStr.Contains("退款成功") || !(this.ItemRefund?.return_waybill_id).IsNullOrEmpty() || !(this.ItemRefund?.return_detail).IsNullOrEmpty() || (!this.ItemOrder.IsEmergency && !this.ItemOrder.isAbnormal && !this.ItemOrder.IsRefund) || this.ItemTransitOrderWithVoid.warehouse_status == 0 || @@ -326,7 +328,7 @@ namespace AllBase.Model.DBModel AddEditTransitWarehouseAfterSaleStr = ""; } // 退货退款的,不能拦截退回总店。如果是退到退货仓,则退货仓流程,否则店家自行收货退回总店。 - if (!RefundAddressStr.ParseToString().Trim().IsNullOrEmpty() || this.ItemRefund?.type != "REFUND") + if (!RefundAddressStr.ParseToString().Trim().IsNullOrEmpty() || (this.ItemRefund?.type != "REFUND" && !this.ItemOrder.isAbnormal)) { if (AddEditTransitWarehouseAfterSaleStr == "添加") AddEditTransitWarehouseAfterSaleStr = ""; @@ -352,10 +354,20 @@ namespace AllBase.Model.DBModel AddEditTransitWarehouseReturnOrderStr = "创建异常"; if (DistribReturnOrderInfo?.warehouse_status == 3) AddEditTransitWarehouseReturnOrderStr = "处理中"; + if (TransitRefundStatusStr.Contains("退款成功")) + { + if (AddEditTransitWarehouseReturnOrderStr == "添加") + AddEditTransitWarehouseReturnOrderStr = ""; + } } // 云仓买手退货地址 this.PddBuyerAfterSaleAddressStr = this.PddBuyerAfterSale?.afterSaleAddress; + + if (this.order_id == "3739062243856391936") + { + + } // 直发买手退货地址 this.DirectPddBuyerAfterSaleAddressStr = this.DirectPddBuyerAfterSale?.afterSaleAddress; } diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs index 66363de..829231f 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.cs @@ -27,6 +27,7 @@ using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; +using System.Linq.Expressions; using System.Runtime.InteropServices.ComTypes; using System.Security.Policy; using System.Text; @@ -46,10 +47,11 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; namespace TemuKJD.ToolForms { public partial class PddMobileBuyOrderForm : BaseGeneralForm - { - public oms_wei_external_procurement_log_info AbnormalTransitWarehouseOrderInfo { get; set; } = null; + { + public oms_wei_external_procurement_log_info AbnormalTransitWarehouseOrderInfo { get; set; } = null; public pddFrontGoods3Lite pddFrontGoodsLite = new pddFrontGoods3Lite(); + public bool IsClose { get; set; } = false; public bool IsAutoBuy { get; set; } = false; public bool IsFormLoad { get; set; } = false; public bool ShowBuyMask { get; set; } = false; @@ -60,10 +62,14 @@ namespace TemuKJD.ToolForms /// public string BuyType { get; set; } = "transit"; - public int CloseAfterSecond { get; set; } + public int MaxCloseAfterSecond { get; set; } public string InitUrl = ""; public string BuyMapUrl = ""; - private string shopCookieHead = "yangkeduo.com"; + + private static readonly object lockObj = new(); + private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); + + private string shopCookieHead = "yangkeduo.com"; private string shopMainUrl = "https://mobile.yangkeduo.com/index.html"; private ChromiumWebBrowser cefWebBrowser = null; private string currentUrl = ""; @@ -83,7 +89,15 @@ namespace TemuKJD.ToolForms // (拍单后)回调函数,更新拍单余额 private Action updateBalanceAction = null; - public PddMobileBuyOrderForm(Action filterOrder, Action updateBalance, oms_wei_order_item_info orderItemInfo, BuyerLoginInfo buyerInfo, WXBuyMapInfo buy_map = null) + /// + /// 拍单中转地址 + /// + string txtBuyTransitWarehouseStr = ""; + bool IsChangeAddress = false; + bool HasChangeAddress = false; + + + public PddMobileBuyOrderForm(Action filterOrder, Action updateBalance, oms_wei_order_item_info orderItemInfo, BuyerLoginInfo buyerInfo, WXBuyMapInfo buy_map = null) { InitializeComponent(); @@ -117,16 +131,20 @@ namespace TemuKJD.ToolForms GlobalConfig.BuyConfig.IsUseAppBalance = true; if (IsAutoBuy) - CloseAfterSecond = 60; - if (CloseAfterSecond > 0) + MaxCloseAfterSecond = 60; + if (MaxCloseAfterSecond > 0) { Task.Run(() => { - Thread.Sleep(1000 * CloseAfterSecond); - if (this.Created) - { - Invoke(new Action(() => { this.Close(); })); - } + Thread.Sleep(1000 * MaxCloseAfterSecond); + if (this.Created && IsAutoBuy) + { + Invoke(new Action(() => + { + this.IsClose = true; + this.Close(); + })); + } }); } @@ -205,7 +223,6 @@ namespace TemuKJD.ToolForms var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == orderItem.shop_id.ParseToString()); this.txtShopName.Text = shop?.ShopAccount; - foreach (var warehouse in TransitWarehouseData.TransitWarehouseList) { this.cmbTransitWarehouse.Items.Add(warehouse.TransName + " " + warehouse.TransDetailAddress); @@ -218,7 +235,10 @@ namespace TemuKJD.ToolForms LoadCef(); })); }); - IsFormLoad = true; + + this.AotoBuyLoop(); + + IsFormLoad = true; } private void Rb_CheckedChanged(object sender, EventArgs e) @@ -317,16 +337,13 @@ namespace TemuKJD.ToolForms { } - private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e) + private async void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e) { - if (this.Created && !this.Disposing && !this.IsDisposed) - { - Invoke(new Action(() => - { - currentUrl = e.Address; - txtAddress.Text = e.Address; - })); - } + if (!this.IsClose && this.Created && !this.Disposing && !this.IsDisposed) + { + currentUrl = e.Address; + Invoke(() => { txtAddress.Text = e.Address; }); + } } private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e) @@ -381,12 +398,44 @@ namespace TemuKJD.ToolForms } //static int GetAntiContentsTimes = 40; - private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request) + // 处理网页加载信息 + private async void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request) { - Task.Run(() => { DoResourceLoadComplete(url, postData, responseData); }); - } + try + { + await DoResourceLoadComplete(url, postData, responseData); + } + catch (Exception ex) + { + if (!this.IsClose && this.Created) + { + Invoke(new Action(() => + { + if (!IsAutoBuy) + BaseMsgForm.ShowError(ex.Message); + else + lblErrMsg.Text = ex.Message; + })); + if (IsAutoBuy) + { + await (Task.Run(() => + { + Thread.Sleep(10000); + if (!this.IsClose && this.Created) + { + Invoke(new Action(() => + { + this.IsClose = true; + this.Close(); + })); + } + })); + } + } + } + } - public void DoResourceLoadComplete(string url, string postData, string responseData) + public async Task DoResourceLoadComplete(string url, string postData, string responseData) { if (url.StartsWith("https://mobile.yangkeduo.com/order_checkout.html") && responseData.Contains("该商品已下架")) { @@ -396,268 +445,216 @@ namespace TemuKJD.ToolForms // 个人页面 if (url.Contains("https://mobile.yangkeduo.com/personal.html")) { - Task.Run(() => - { - //var data = responseData; - }); } - // 商品页面 获取发货地信息,如果页面没有去客服页面询问 - if (url.StartsWith("https://mobile.yangkeduo.com/goods.html?goods_id=")) - { - Task.Run(() => - { - var sendProvince = ""; - var data = responseData; - var sendProvinceIndex = data.IndexOf("{\"key\":\"发货地\",\"values\":["); - if (sendProvinceIndex > 0) - { - sendProvince = data.Substring(sendProvinceIndex + "{\"key\":\"发货地\",\"values\":[".Length); - sendProvince = sendProvince.Substring(0, sendProvince.IndexOf("]")); - sendProvince = sendProvince.Trim('\"'); - Invoke(new Action(() => { this.txtSendProvince.Text = sendProvince; })); - } + // 商品页面 获取发货地信息,如果页面没有去客服页面询问 + if (url.StartsWith("https://mobile.yangkeduo.com/goods.html?goods_id=")) + { + var sendProvince = ""; + var data = responseData; + var sendProvinceIndex = data.IndexOf("{\"key\":\"发货地\",\"values\":["); + if (sendProvinceIndex > 0) + { + sendProvince = data.Substring(sendProvinceIndex + "{\"key\":\"发货地\",\"values\":[".Length); + sendProvince = sendProvince.Substring(0, sendProvince.IndexOf("]")); + sendProvince = sendProvince.Trim('\"'); + Invoke(new Action(() => { this.txtSendProvince.Text = sendProvince; })); + } - if (!string.IsNullOrEmpty(sendProvince) && this.transitWarehouse == null) - { - MatchTransitWarehouse(sendProvince); - } + if (!string.IsNullOrEmpty(sendProvince) && this.transitWarehouse == null) + { + await MatchTransitWarehouse(sendProvince); + } + MatchProdAllSkus(data); + } - MatchProdAllSkus(data); + // 订单详情页面 获取关联信息和拍单信息(已拍过单但是因某种原因未成功绑定仓库) + if (url.StartsWith("https://mobile.yangkeduo.com/order.html?order_sn=")) + { + var data = responseData; + var goodsId = BaseRegex.GetLongJson(ref data, "goodsId"); + var skuId = BaseRegex.GetLongJson(ref data, "skuId"); + var goodsName = BaseRegex.GetStringJson(ref data, "goodsName"); + var spec = BaseRegex.GetStringJson(ref data, "spec"); + var oneGoodsPrice = BaseRegex.GetIntJson(ref data, "goodsPrice"); + var buyCnt = BaseRegex.GetIntJson(ref data, "goodsNumber"); + var buyPrice = BaseRegex.GetIntJson(ref data, "payAmount"); + if (buyPrice.IsNullOrZero()) + buyPrice = BaseRegex.GetIntJson(ref data, "orderAmount"); + var orderSn = BaseRegex.GetIntJson(ref data, "orderSn"); + Invoke(new Action(() => + { + // 自动填写关联信息界面 + this.txtMapGoodsId.Text = goodsId.ParseToString(); + this.txtMapSkuId.Text = skuId.ParseToString(); + this.txtMapGoodsName.Text = goodsName; + this.txtMapSkuName.Text = spec; + this.txtSendProvince.Text = ""; + this.cmbTransitWarehouse.Text = ""; - }); - } - - // 订单详情页面 获取关联信息和拍单信息(已拍过单但是因某种原因未成功绑定仓库) - if (url.StartsWith("https://mobile.yangkeduo.com/order.html?order_sn=")) - { - Task.Run(() => - { - var data = responseData; - var goodsId = BaseRegex.GetLongJson(ref data, "goodsId"); - var skuId = BaseRegex.GetLongJson(ref data, "skuId"); - var goodsName = BaseRegex.GetStringJson(ref data, "goodsName"); - var spec = BaseRegex.GetStringJson(ref data, "spec"); - var oneGoodsPrice = BaseRegex.GetIntJson(ref data, "goodsPrice"); - var buyCnt = BaseRegex.GetIntJson(ref data, "goodsNumber"); - var buyPrice = BaseRegex.GetIntJson(ref data, "payAmount"); - if (buyPrice.IsNullOrZero()) - buyPrice = BaseRegex.GetIntJson(ref data, "orderAmount"); - var orderSn = BaseRegex.GetIntJson(ref data, "orderSn"); - Invoke(new Action(() => - { - // 自动填写关联信息界面 - this.txtMapGoodsId.Text = goodsId.ParseToString(); - this.txtMapSkuId.Text = skuId.ParseToString(); - this.txtMapGoodsName.Text = goodsName; - this.txtMapSkuName.Text = spec; - this.txtSendProvince.Text = ""; - this.cmbTransitWarehouse.Text = ""; - - // 自动填写拍单信息界面 - if (!goodsId.IsNullOrZero()) this.txtBuyGoodsId.Text = goodsId.ParseToString(); - if (!skuId.IsNullOrZero()) this.txtBuySkuId.Text = skuId.ParseToString(); - if (!goodsName.IsNullOrEmpty()) this.txtBuyGoodsName.Text = goodsName; - if (!spec.IsNullOrEmpty()) this.txtBuySkuName.Text = spec; - if (!buyCnt.IsNullOrZero()) this.txtBuyCnt.Text = buyCnt.ParseToString(); - if (!buyPrice.IsNullOrZero()) this.txtBuyPrice.Text = (buyPrice * 0.01m).ParseToString(); - })); - }); - } + // 自动填写拍单信息界面 + if (!goodsId.IsNullOrZero()) this.txtBuyGoodsId.Text = goodsId.ParseToString(); + if (!skuId.IsNullOrZero()) this.txtBuySkuId.Text = skuId.ParseToString(); + if (!goodsName.IsNullOrEmpty()) this.txtBuyGoodsName.Text = goodsName; + if (!spec.IsNullOrEmpty()) this.txtBuySkuName.Text = spec; + if (!buyCnt.IsNullOrZero()) this.txtBuyCnt.Text = buyCnt.ParseToString(); + if (!buyPrice.IsNullOrZero()) this.txtBuyPrice.Text = (buyPrice * 0.01m).ParseToString(); + })); + } // 待提交订单确认界面,填写拍单信息 两个接口都有可能有值,通过返回值内信息和url是否含有sku_id综合判断 //https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid=8161628055192 //https://mobile.yangkeduo.com/order_checkout.html?sku_id=1917755178967&group_id=168599782729&goods_id=966934985983&goods_number=1&page_from=0&detail_id=27322663212&_oak_rcto=YWJun7Qe7qhenWIlxgKO3uhsoi0WMIkr6Sb3iSrTsNPiwo_AHzvFVWwZ36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_1782220402115_blxn1wofgo&refer_page_sn=10014 //https://mobile.yangkeduo.com/order_checkout.html?sku_id=1914416497946&group_id=168211384489&goods_id=964481496910&goods_number=2&page_from=23&detail_id=27475863056&_oc_refer_ad=0&_oak_rcto=YWJQMioxuzYiHEIW34yn103Toi0WMIkr6SaYUDjBkmkvOAtI8c-ZcKMw36KSfBTSAX-QF_CD92G9rA&order_extra_type=1&refer_page_element=open_btn&source_channel=0&_x_query=%E4%B8%AD%E5%9B%BD%E5%8F%A4%E4%BB%A3%E7%AE%97%E6%9C%AF%E6%B3%95%E8%80%81%E7%89%88%E6%9C%AC%E6%B4%AA%E4%B8%95%E8%B0%9F%E8%91%97%E5%91%BD%E7%90%86%E5%AD%A6%E7%A0%94%E7%A9%B6%E5%85%A5%E9%97%A8%E9%A3%8E%E6%B0%B4%E5%AD%A6%E4%B9%A6%E7%B1%8D%E5%85%A5%E9%97%A8%E5%B1%85%E5%AE%B6&refer_page_name=goods_detail&refer_page_id=10014_1782275100226_pojdmxgpty&refer_page_sn=10014 - - - if (responseData.Contains("984761201312")) - { - - } if (responseData.Contains("\"goods_id\"")) { if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/morgan/confirm/render?pdduid=") || url.Contains("sku_id=")) { - Task.Run(() => + var data = responseData; + + if (data.Contains("\"goods_id\"")) { - var data = responseData; - - if (data.Contains("\"goods_id\"")) + var goodsId = BaseRegex.GetLongJson(ref data, "goods_id"); + var skuId = BaseRegex.GetLongJson(ref data, "sku_id"); + var goodsName = BaseRegex.GetStringJson(ref data, "goods_name"); + if (string.IsNullOrEmpty(goodsName)) + goodsName = BaseRegex.GetStringJson(ref data, "goodsName"); + var specifications = BaseRegex.GetMatchRegexString(ref data, @"""specifications"":\[([^']*?)\]"); + var spec = string.IsNullOrEmpty(specifications) ? "" : specifications; + if (spec.IsNullOrEmpty()) { - var goodsId = BaseRegex.GetLongJson(ref data, "goods_id"); - var skuId = BaseRegex.GetLongJson(ref data, "sku_id"); - var goodsName = BaseRegex.GetStringJson(ref data, "goods_name"); - if (string.IsNullOrEmpty(goodsName)) - goodsName = BaseRegex.GetStringJson(ref data, "goodsName"); - var specifications = BaseRegex.GetMatchRegexString(ref data, @"""specifications"":\[([^']*?)\]"); - var spec = string.IsNullOrEmpty(specifications) ? "" : specifications; - if (spec.IsNullOrEmpty()) + var specMatch = BaseRegex.GetMatchRegex(ref data, @"""spec_value"":""([^']+?)"""); + foreach (var match in specMatch) { - var specMatch = BaseRegex.GetMatchRegex(ref data, @"""spec_value"":""([^']+?)"""); - foreach (var match in specMatch) - { - var matchStr = match.ParseToString(); - spec += ("," + BaseRegex.GetStringJson(ref matchStr, "spec_value")); - } - spec = spec.Trim(','); + var matchStr = match.ParseToString(); + spec += ("," + BaseRegex.GetStringJson(ref matchStr, "spec_value")); } - var oneGoodsPrice = BaseRegex.GetIntJson(ref data, "goodsPrice"); - var buyCnt = BaseRegex.GetIntJson(ref data, "goods_number"); - var buyPrice = BaseRegex.GetIntJson(ref data, "pay_price"); + spec = spec.Trim(','); + } + var oneGoodsPrice = BaseRegex.GetIntJson(ref data, "goodsPrice"); + var buyCnt = BaseRegex.GetIntJson(ref data, "goods_number"); + var buyPrice = BaseRegex.GetIntJson(ref data, "pay_price"); - if (!this.Created) - return; - Invoke(new Action(() => + if (!this.Created) + return; + Invoke(new Action(() => + { + if (!goodsId.IsNullOrZero()) this.txtBuyGoodsId.Text = goodsId.ParseToString(); + if (!skuId.IsNullOrZero()) this.txtBuySkuId.Text = skuId.ParseToString(); + if (!goodsName.IsNullOrEmpty()) this.txtBuyGoodsName.Text = goodsName; + if (!spec.IsNullOrEmpty()) this.txtBuySkuName.Text = spec; + if (!buyCnt.IsNullOrZero()) this.txtBuyCnt.Text = buyCnt.ParseToString(); + if (!buyPrice.IsNullOrZero()) this.txtBuyPrice.Text = (buyPrice * 0.01m).ParseToString(); + })); + + if (!this.Created) + return; + if (BuyType == "direct" && txtBuyTransitWarehouseStr.Contains("******")) + { + throw new Exception("请先解析地址或者输入合法地址信息再拍单!"); + } + + // 自动修改收货地址为中转仓(或直发) + var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouseStr); + if (transit == null && BuyType == "transit") + { + throw new Exception("仓库已发生改变,请点击重新关联商品,选择仓库后重新拍单!"); + } + if (IsSoldOut) + { + throw new Exception("商品已售罄,请重新关联未售罄商品后再拍单!"); + } + if ((transit != null || BuyType == "direct") && IsChangeAddress == false && HasChangeAddress == false) + { + IsChangeAddress = true; + Thread.Sleep(100); + if (BuyType == "transit") { - if (!goodsId.IsNullOrZero()) this.txtBuyGoodsId.Text = goodsId.ParseToString(); - if (!skuId.IsNullOrZero()) this.txtBuySkuId.Text = skuId.ParseToString(); - if (!goodsName.IsNullOrEmpty()) this.txtBuyGoodsName.Text = goodsName; - if (!spec.IsNullOrEmpty()) this.txtBuySkuName.Text = spec; - if (!buyCnt.IsNullOrZero()) this.txtBuyCnt.Text = buyCnt.ParseToString(); - if (!buyPrice.IsNullOrZero()) this.txtBuyPrice.Text = (buyPrice * 0.01m).ParseToString(); - })); - - if (!this.Created) - return; - Invoke(new Action(() => - { - if (BuyType == "direct" && txtBuyTransitWarehouse.Text.Contains("******")) + if (AbnormalTransitWarehouseOrderInfo != null) { - if (!IsAutoBuy) - BaseMsgForm.ShowError("请手动输入合法地址信息再拍单!"); - else - Invoke(() => { lblErrMsg.Text = "请手动输入合法地址信息再拍单!"; }); - return; + Invoke(new Action(() => { txtSourceCode.Text = AbnormalTransitWarehouseOrderInfo.random_code; })); } - - // 自动修改收货地址为中转仓(或直发) - var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouse.Text.Trim()); - if (transit == null && BuyType == "transit") + else { - if (!IsAutoBuy) - BaseMsgForm.ShowError("仓库已发生改变,请点击重新关联商品,选择仓库后重新拍单!"); - else - Invoke(() => { lblErrMsg.Text = "仓库已发生改变,请点击重新关联商品,选择仓库后重新拍单!"; }); - return; - } - if ((transit != null || BuyType == "direct") && IsChangeAddress == false && HasChangeAddress == false) - { - if (IsSoldOut) + var sourceCodeRst = GetSourceCode(transit); + if (sourceCodeRst.Contains("失败")) { - if (!IsAutoBuy) - BaseMsgForm.ShowError("商品已售罄,请重新关联未售罄商品后再拍单!"); - else - Invoke(() => { lblErrMsg.Text = "商品已售罄,请重新关联未售罄商品后再拍单!"; }); + Invoke(new Action(() => + { + this.cefWebBrowser.Visible = false; + BaseMsgForm.ShowError(sourceCodeRst); + })); return; } - if (!IsSoldOut) - { - Task.Run(() => - { - IsChangeAddress = true; - Thread.Sleep(100); - if (BuyType == "transit") - { - if (AbnormalTransitWarehouseOrderInfo != null) - { - Invoke(new Action(() => { txtSourceCode.Text = AbnormalTransitWarehouseOrderInfo.random_code; })); - } - else - { - var sourceCodeRst = GetSourceCode(transit); - if (sourceCodeRst.Contains("失败")) - { - Invoke(new Action(() => - { - this.cefWebBrowser.Visible = false; - BaseMsgForm.ShowError(sourceCodeRst); - })); - return; - } - } - } - ChangeAddress(transit); - IsChangeAddress = false; - - }); - } } - // 自动下单 - if (IsAutoBuy && HasChangeAddress && url.StartsWith("https://mobile.yangkeduo.com/order_checkout.html?sku_id=")) - { - Task.Run(async () => - { - try - { - await AutoBuy(); - } - catch (Exception ex) - { - this.BuyErrMsg = ex.Message; - } - Invoke(() => { this.Close(); }); - }); - } - })); + } + var rst = await ChangeAddress(transit); + IsChangeAddress = false; } - }); + } } } - if (postData.Contains("260805-")) - { + // 订单提交接口 + //https://mobile.yangkeduo.com/proxy/api/order/prepay?pdduid=8161628055192 + //https://mobile.yangkeduo.com/proxy/api/api/van-spike/prepay?pdduid=8161628055192 + if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/order/prepay?pdduid=") || + url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/van-spike/prepay?pdduid=")) + { + var data = postData; + Invoke(new Action(() => + { + txtBuyOrderId.Text = BaseRegex.GetStringJsonByRegs(ref data, "", "order_sn", "orderSn"); + })); + } - } - - // 订单提交接口 - //https://mobile.yangkeduo.com/proxy/api/order/prepay?pdduid=8161628055192 - //https://mobile.yangkeduo.com/proxy/api/api/van-spike/prepay?pdduid=8161628055192 - if (url.StartsWith("https://mobile.yangkeduo.com/proxy/api/order/prepay?pdduid=") || - url.StartsWith("https://mobile.yangkeduo.com/proxy/api/api/van-spike/prepay?pdduid=")) - { - var data = postData; - Task.Run(() => - { - Invoke(new Action(() => - { - //txtBuyOrderId.Text = BaseRegex.GetStringJson(ref data, "order_sn"); - txtBuyOrderId.Text = BaseRegex.GetStringJsonByRegs(ref data, "", "order_sn", "orderSn"); - })); - }); - } - - if (url.Contains("alipay.com") && responseData.Contains("支付成功")) - { - Task.Run(() => - { - var uri = url; - var pData = postData; - var rData = responseData; - Invoke(new Action(() => - { - //txtBuyOrderId.Text = BaseRegex.GetStringJson(ref data, "order_sn"); - btnManualUpdateBuyOrder_Click(null, null); - })); - }); - } + if (url.Contains("alipay.com") && responseData.Contains("支付成功")) + { + var uri = url; + var pData = postData; + var rData = responseData; + Invoke(new Action(() => + { + btnManualUpdateBuyOrder_Click(null, null); + })); + } } + public void AotoBuyLoop() + { + Task.Run(async () => + { + // 自动下单 + while (true && IsAutoBuy) + { + if (HasChangeAddress && (this.cefWebBrowser?.GetMainFrame()?.Url).ParseToString().StartsWith("https://mobile.yangkeduo.com/order_checkout.html?sku_id=")) + { + try + { + await AutoBuy(); + } + catch (Exception ex) + { + this.BuyErrMsg = ex.Message; + } + if (!this.IsClose && this.Created && IsAutoBuy) + { + Invoke(() => + { + this.IsClose = true; + this.Close(); + }); + } + } + } + }); + } + public async Task AutoBuy() { if (IsSoldOut) throw new Exception("商品已售罄"); - //for (int i = 0; i < 50; i++) - //{ - // if (HasChangeAddress != true) - // Thread.Sleep(500); - //} - //if (!HasChangeAddress) - //{ - // throw new Exception("订单收货地址修改失败"); - //} - await CheckSourceCode(); await SetAliPaySecret(); @@ -666,13 +663,22 @@ namespace TemuKJD.ToolForms public async Task SetAliPaySecret() { // 选择支付宝去支付 + if (!IsAutoBuy) return; var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "支付宝", true); if (ts1.Result?.Value.ParseToString() != "success") { throw new Exception("支付方式获取失败1"); } Thread.Sleep(Randomx.GetId(500, 1000)); + if (!IsAutoBuy) return; var ts2 = await EvaluateJsBuyTagNameAndInnerHtml("span", "立即支付", true); + for (int i = 0; i < 5; i++) + { + if (ts2.Result?.Value is string rstStr && rstStr == "success") + break; + Thread.Sleep(500); + ts2 = await EvaluateJsBuyTagNameAndInnerHtml("span", "确认付款", true); + } if (ts2.Result?.Value.ParseToString() != "success") { throw new Exception("支付方式获取失败2"); @@ -680,6 +686,7 @@ namespace TemuKJD.ToolForms // 点击确认付款 Thread.Sleep(Randomx.GetId(500, 1000)); + if (!IsAutoBuy) return; ts2 = await EvaluateJsBuyTagNameAndInnerHtml("span", "确认付款", true); for (int i = 0; i < 50; i++) { @@ -691,6 +698,7 @@ namespace TemuKJD.ToolForms // 输入支付密码 Thread.Sleep(Randomx.GetId(500, 1000)); + if (!IsAutoBuy) return; ts2 = await EvaluateJsBuyTagNameAndInnerHtml("div", "输入支付密码"); for (int i = 0; i < 50; i++) { @@ -708,6 +716,7 @@ namespace TemuKJD.ToolForms // 点下一步付款 Thread.Sleep(Randomx.GetId(500, 1000)); + if (!IsAutoBuy) return; ts2 = await EvaluateJsBuyTagNameAndInnerHtml("button", "下一步", true); for (int i = 0; i < 50; i++) { @@ -715,7 +724,7 @@ namespace TemuKJD.ToolForms break; Thread.Sleep(200); - //ts2 = await EvaluateJsBuyTagNameAndInnerHtml("span", "下一步", true); + if (!IsAutoBuy) return; ts2 = await EvaluateJsBuyTagNameAndInnerHtml("button", "下一步", true); } @@ -804,117 +813,87 @@ namespace TemuKJD.ToolForms } } - bool IsChangeAddress = false; - bool HasChangeAddress = false; /// /// 自动填写地址 /// /// /// - public string ChangeAddress(TransitWarehouseParam transit) + public async Task ChangeAddress(TransitWarehouseParam transit) { Thread.Sleep(200); - var host = cefWebBrowser.GetBrowser().GetHost(); - var client = cefWebBrowser.GetDevToolsClient(); - for (int i = 0; i < 20; i++) + for (int i = 0; i < 50; i++) { - Thread.Sleep(50); - if (host == null || client == null) - { - host = cefWebBrowser.GetBrowser().GetHost(); - client = cefWebBrowser.GetDevToolsClient(); - continue; - } + Thread.Sleep(100); + if (host == null || client == null) + { + host = cefWebBrowser.GetBrowser().GetHost(); + client = cefWebBrowser.GetDevToolsClient(); + } + else + break; } if (host == null || client == null) - { - return "页面未加载"; - } + { + throw new Exception("页面加载异常"); + } - // 点击图片搜索图标 - var jsStr1 = @"(function() { var element = document.getElementsByClassName('oc-address-info')[0]; - //for (i=0; i< elements.length;i++){ - // var element = elements[i]; - // if (element.outerHTML.indexOf('当前收货地址为') >= 0) { + // 点击地址框第一个 + var jsStr1 = @"(function() { + var element = document.getElementsByClassName('oc-address-info')[0]; element.click(); return 'success'; - // break; - // } - //} })();"; - var ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - if (!this.Created) - return "窗口已关闭"; - ts1.Wait(5000); - for (int i = 0; i < 20; i++) - { - if (ts1.Result.Result.Value is string rstStr) + for (int i = 0; i < 50; i++) + { + Thread.Sleep(200); + if (!this.Created) return "窗口已关闭"; + + var ts1 = await client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); + if (ts1.Result.Value is string rstStr) { if (rstStr == "success") - break; + { + ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "修改"); + if (ts1.Result.Value is string rst && rst == "success") + { + break; + } + } } - Thread.Sleep (100); - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - ts1.Wait(5000); } - //Thread.Sleep(Randomx.GetId(1500, 2500)); Thread.Sleep(Randomx.GetId(300, 500)); - jsStr1 = @"(function() { var elements = document.getElementsByTagName('span'); - for (i=0; i< elements.length;i++){ - var element = elements[i]; - if (element.innerHTML.indexOf('修改') == 0) { - element.click(); - return 'success'; - } - } - })();"; - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - for (int i = 0; i < 20; i++) - { - if (!this.Created) - return "窗口已关闭"; + for (int i = 0; i < 50; i++) + { + Thread.Sleep(200); + if (!this.Created) return "窗口已关闭"; - if (ts1.Result.Result.Value is string rstStr) - { - if (rstStr == "success") - break; - } - Thread.Sleep(100); - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - ts1.Wait(5000); - } - //Thread.Sleep(Randomx.GetId(1500, 2500)); + var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "修改", true); + if (ts1.Result.Value is string rstStr && rstStr == "success") + { + break; + } + } Thread.Sleep(Randomx.GetId(300, 500)); - jsStr1 = @"(function() { var elements = document.getElementsByTagName('span'); - for (i=0; i< elements.length;i++){ - var element = elements[i]; - if (element.innerHTML.indexOf('保存') == 0) { - element.click(); - return 'success'; - } - } - })();"; - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - for (int i = 0; i < 20; i++) - { - if (ts1.Result.Result.Value is string rstStr) - { - if (rstStr == "success") - break; - } - Thread.Sleep(100); - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - ts1.Wait(5000); - } - //Thread.Sleep(Randomx.GetId(1500, 2500)); + for (int i = 0; i < 50; i++) + { + Thread.Sleep(200); + if (!this.Created) return "窗口已关闭"; + + var ts1 = await EvaluateJsBuyTagNameAndInnerHtml("span", "保存", true); + if (ts1.Result.Value is string rstStr) + { + if (rstStr == "success") + break; + } + } Thread.Sleep(Randomx.GetId(300, 500)); jsStr1 = @"(function() { var elements = document.getElementsByTagName('div'); for (i = elements.length - 1; i >= 0; i--){ var element = elements[i]; - if (element.innerHTML.indexOf('" + txtBuyTransitWarehouse.Text.Trim() + @"') >= 0 && element.innerHTML.indexOf('" + txtSourceCode.Text.Trim() + @"') >= 0) { + if (element.innerHTML.indexOf('" + txtBuyTransitWarehouseStr + @"') >= 0 && element.innerHTML.indexOf('" + txtSourceCode.Text.Trim() + @"') >= 0) { element.click(); return 'success'; } @@ -932,55 +911,40 @@ namespace TemuKJD.ToolForms } })();"; } - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); for (int i = 0; i < 20; i++) { + Thread.Sleep(100); if (!this.Created) return "窗口已关闭"; - if (ts1.Result.Result.Value is string rstStr) + var ts1 = await client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); + if (ts1.Result.Value is string rstStr) { if (rstStr == "success") break; } - Thread.Sleep(100); - ts1 = client.Runtime.EvaluateAsync(jsStr1, null, true, null, null, true, null, true); - ts1.Wait(5000); } - //Thread.Sleep(Randomx.GetId(1500, 2500)); Thread.Sleep(Randomx.GetId(300, 500)); - return ""; } - private void btnManualUpdateSendProvince_Click(object sender, EventArgs e) + private async void btnManualUpdateSendProvince_Click(object sender, EventArgs e) { var sendProvince = txtSendProvince.Text.Trim(); - MatchTransitWarehouse(sendProvince); + try + { + await MatchTransitWarehouse(sendProvince); + } + catch (Exception ex) + { + BaseMsgForm.ShowError("匹配仓库失败,请手动选择"); + } } - void MatchTransitWarehouse(string sendProvince) + async Task MatchTransitWarehouse(string sendProvince) { bool isAutoGetWarehouse = false; - //foreach (var control in this.flowLayoutPanel1.Controls) - //{ - // if (control is RadioButton rb) - // { - // if (rb.Tag is TransitWarehouseParam warehouseParam) - // { - // if (warehouseParam.TransDetailAddress.Contains(sendProvince)) - // { - // Invoke(new Action(() => - // { - // rb.Checked = true; - // })); - // isAutoGetWarehouse = true; - // break; - // } - // } - // } - //} foreach (var item in this.cmbTransitWarehouse.Items) { TransitWarehouseParam warehouseParam = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransDetailAddress == item.ParseToString()); @@ -999,14 +963,14 @@ namespace TemuKJD.ToolForms break; } } - if (!isAutoGetWarehouse) - { - //黄导家庭父母5天训练营-《父母5天成为孩子成长的引路人》+《不内卷养育》2本书 - Invoke(new Action(() => - { - cmbTransitWarehouse.Text = ""; - BaseMsgForm.ShowError("匹配仓库失败,请手动选择"); - })); + if (!isAutoGetWarehouse) + { + //黄导家庭父母5天训练营-《父母5天成为孩子成长的引路人》+《不内卷养育》2本书 + Invoke(() => + { + cmbTransitWarehouse.Text = ""; + }); + throw new Exception("匹配仓库失败,请手动选择"); } } @@ -1020,36 +984,6 @@ namespace TemuKJD.ToolForms pddFrontGoodsLite.goodsId = BaseRegex.GetLongJson(ref data, "goodsId"); pddFrontGoodsLite.mallName = BaseRegex.GetStringJson(ref data, "mallName"); pddFrontGoodsLite.mallId = BaseRegex.GetLongJson(ref data, "mallId"); - - - //bool isAutoGetWarehouse = false; - //foreach (var item in this.cmbTransitWarehouse.Items) - //{ - // TransitWarehouseParam warehouseParam = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransName + " " + t.TransDetailAddress == item.ParseToString()); - // if (warehouseParam == null) - // { - // continue; - // } - // if (warehouseParam.TransDetailAddress.Contains(data)) - // { - // Invoke(new Action(() => - // { - // cmbTransitWarehouse.Text = warehouseParam.TransName + " " + warehouseParam.TransDetailAddress; - // })); - // transitWarehouse = warehouseParam; - // isAutoGetWarehouse = true; - // break; - // } - //} - //if (!isAutoGetWarehouse) - //{ - // //黄导家庭父母5天训练营-《父母5天成为孩子成长的引路人》+《不内卷养育》2本书 - // Invoke(new Action(() => - // { - // cmbTransitWarehouse.Text = ""; - // BaseMsgForm.ShowError("匹配仓库失败,请手动选择"); - // })); - //} } private void ShopLoginForm_FormClosed(object sender, FormClosedEventArgs e) @@ -1247,7 +1181,8 @@ namespace TemuKJD.ToolForms } } BaseMsgForm.ShowInfo("保存成功!"); - this.Close(); + this.IsClose = true; + this.Close(); } } @@ -1292,7 +1227,7 @@ namespace TemuKJD.ToolForms // return; //} - if (BuyType == "transit" && string.IsNullOrEmpty(txtBuyTransitWarehouse.Text.Trim())) + if (BuyType == "transit" && string.IsNullOrEmpty(txtBuyTransitWarehouseStr)) { if (!IsAutoBuy) BaseMsgForm.ShowError("缺少中转地址,请重新绑定商品并选择仓库地址"); @@ -1300,7 +1235,7 @@ namespace TemuKJD.ToolForms Invoke(() => { lblErrMsg.Text = "缺少中转地址,请重新绑定商品并选择仓库地址"; }); return; } - var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouse.Text.Trim()); + var transit = TransitWarehouseData.TransitWarehouseList.FirstOrDefault(t => t.TransDetailAddress == txtBuyTransitWarehouseStr); if (BuyType == "transit" && transit == null) { if (!IsAutoBuy) @@ -1620,9 +1555,10 @@ namespace TemuKJD.ToolForms Invoke(() => { lblErrMsg.Text = "直发拍单保存失败,服务端返回 " + msg; }); return; } - #endregion - } - this.Close(); + #endregion + } + this.IsClose = true; + this.Close(); } private void pictureBox1_Click(object sender, EventArgs e) @@ -1674,7 +1610,7 @@ namespace TemuKJD.ToolForms } } - private void btnAnalysis_Click(object sender, EventArgs e) + private async void btnAnalysis_Click(object sender, EventArgs e) { var order = this.orderItem?.ItemOrder; if (order == null) @@ -1743,12 +1679,14 @@ namespace TemuKJD.ToolForms order.AddressStr = order.user_name + "," + order.tel_number + "," + order.province_name + order.city_name + order.county_name + order.detail_info; - this.txtBuyTransitWarehouse.Text = this.orderItem.ItemOrder.AddressStr; - Task.Run(() => - { - ChangeAddress(null); - }); + try + { + await ChangeAddress(null); + } + catch (Exception ex) + { + } } private void cmbMapSkusProd_SelectedIndexChanged(object sender, EventArgs e) @@ -1829,5 +1767,10 @@ namespace TemuKJD.ToolForms IsAutoBuy = false; BaseMsgForm.ShowInfo("已取消自动拍单"); } + + private void txtBuyTransitWarehouse_TextChanged(object sender, EventArgs e) + { + txtBuyTransitWarehouseStr = txtBuyTransitWarehouse.Text.Trim(); + } } } diff --git a/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs b/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs index 7d71542..198b70f 100644 --- a/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs +++ b/Work/_29Tools/Forms/PddMobileBuyOrderForm.designer.cs @@ -31,6 +31,7 @@ this.components = new System.ComponentModel.Container(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.pnlMask = new DevComponents.DotNetBar.PanelEx(); + this.lblErrMsg = new System.Windows.Forms.Label(); this.btnJumpOrderList = new DevComponents.DotNetBar.PanelEx(); this.txtBuySkuName = new System.Windows.Forms.TextBox(); this.label21 = new System.Windows.Forms.Label(); @@ -110,7 +111,6 @@ this.chkAutoChangeWarehouseAddress = new Work.UserComponents.UcCheckBox(this.components); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pnlMap = new System.Windows.Forms.Panel(); - this.lblErrMsg = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pbCloseBase)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); @@ -187,6 +187,17 @@ this.pnlMask.Text = "自动拍单倒计时\r\n8"; this.pnlMask.Visible = false; // + // lblErrMsg + // + this.lblErrMsg.AutoSize = true; + this.lblErrMsg.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lblErrMsg.ForeColor = System.Drawing.Color.Red; + this.lblErrMsg.Location = new System.Drawing.Point(166, 5); + this.lblErrMsg.Name = "lblErrMsg"; + this.lblErrMsg.Size = new System.Drawing.Size(87, 17); + this.lblErrMsg.TabIndex = 893; + this.lblErrMsg.Text = "errMsg "; + // // btnJumpOrderList // this.btnJumpOrderList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -1107,6 +1118,7 @@ this.txtBuyTransitWarehouse.Name = "txtBuyTransitWarehouse"; this.txtBuyTransitWarehouse.Size = new System.Drawing.Size(388, 23); this.txtBuyTransitWarehouse.TabIndex = 870; + this.txtBuyTransitWarehouse.TextChanged += new System.EventHandler(this.txtBuyTransitWarehouse_TextChanged); // // label29 // @@ -1166,16 +1178,6 @@ this.pnlMap.Size = new System.Drawing.Size(468, 203); this.pnlMap.TabIndex = 871; // - // lblErrMsg - // - this.lblErrMsg.AutoSize = true; - this.lblErrMsg.ForeColor = System.Drawing.Color.SandyBrown; - this.lblErrMsg.Location = new System.Drawing.Point(198, 5); - this.lblErrMsg.Name = "lblErrMsg"; - this.lblErrMsg.Size = new System.Drawing.Size(87, 17); - this.lblErrMsg.TabIndex = 893; - this.lblErrMsg.Text = "errMsg "; - // // PddMobileBuyOrderForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; diff --git a/Work/_29Tools/Forms/ToolForms/ShowImgForm.cs b/Work/_29Tools/Forms/ToolForms/ShowImgForm.cs index a4ecc71..988e3af 100644 --- a/Work/_29Tools/Forms/ToolForms/ShowImgForm.cs +++ b/Work/_29Tools/Forms/ToolForms/ShowImgForm.cs @@ -146,7 +146,8 @@ namespace Work._29Tools.Forms.ToolForms Task.Run(() => { Thread.Sleep(2500); - Invoke(new Action(() => { this.btnCopy.Text = "复制图片"; })); + if (this.Created) + Invoke(new Action(() => { this.btnCopy.Text = "复制图片"; })); }); //BaseMsgForm.ShowInfo("图片已复制到剪贴板"); }