Files
29WxOrder/29WxOrderWpf/Ctrls/OrderCtrls/OrderListCtrl.xaml.cs
T

743 lines
33 KiB
C#

using _29WxOrderWpf.BaseWindows;
using _29WxOrderWpf.Ctrls.BuyerCtrls;
using _29WxOrderWpf.Utils;
using AllBase;
using AllBase.Extension;
using AllBase.Helper;
using AllBase.Model;
using AllBase.Model.DBModel;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using TemuKJD.ToolForms;
using Work;
using Work._29Tools.BLL;
namespace _29WxOrderWpf.Ctrls.OrderCtrls
{
/// <summary>
/// OrderListCtrl.xaml 的交互逻辑
/// </summary>
public partial class OrderListCtrl : UserControl
{
public CheckBox chkSelectAll = null;
public bool IsAutoReadOrder = true;
public DateTime nextGetOrderTime = DateTime.MinValue;
public OrderListCtrl()
{
InitializeComponent();
DataContext = this;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
dateStart.SelectedDate = DateTime.Now.Date.AddDays(-7);
dateEnd.SelectedDate = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
AutoGetOrder();
}
public void GetOrderTest()
{
for (int i = 0; i < 10000; i++)
{
//lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = ("3737033423685556736".ParseToLong() + Randomx.GetId(0,100)).ParseToString(), shop_name = "媛卡曦工厂优选" });
GlobalConfig.lstOrder.Add(new oms_wei_order_info() { id = 1, IsSelect = false, order_id = Randomx.GetId(1000, 10000).ParseToString(), shop_name = "媛卡曦工厂优选" });
}
GlobalConfig.lstOrder.SortDesc(o => o.order_id.ParseToLong());
}
public void AutoGetOrder()
{
Task.Run(() =>
{
Thread.Sleep(5000);
while (true)
{
if (!IsAutoReadOrder)
{
Thread.Sleep(1000);
Dispatcher.Invoke(new Action(() =>
{
btnSearch.Content = "自动读单暂停中";
imgLoading.Visibility = Visibility.Collapsed;
}));
continue;
}
if (DateTime.Now > nextGetOrderTime)
{
GetOrder();
nextGetOrderTime = DateTime.Now.AddMinutes(25);
}
Thread.Sleep(1000);
Dispatcher.Invoke(new Action(() =>
{
var ticks = nextGetOrderTime - DateTime.Now;
btnSearch.Content = "读单 " + ticks.Minutes.ToString("00") + ":" + ticks.Seconds.ToString("00");
}));
}
});
}
public bool hasReadOrder = false;
/// <summary>
///
/// </summary>
/// <param name="filterGetCondition">按过滤条件读取读取服务端订单</param>
public void GetOrder(string orderIds = "", bool filterGetCondition = false)
{
Dispatcher.Invoke(new Action(() =>
{
imgLoading.Visibility = Visibility.Visible;
btnSearch.IsEnabled = false;
}));
int page = 0;
int totalPage = 1;
int pageSize = 50;
while (true && IsAutoReadOrder)
{
if (page >= totalPage)
{
break;
}
page++;
var url = BaseClass.Build29WxObjString("order/get_erp_order_list");
var data = UserLogin.GetSignaturex() + "&page=" + page;
if (!string.IsNullOrEmpty(orderIds))
data += "&erp_order_id_in=" + orderIds;
if (page > 1)
data += "&is_not_count=true";
data += "&page_size=" + pageSize;
var shop_id = string.Join(",", GlobalConfig.ShopLoginList.Select(s => s.ErpShopId).Where(s => !s.IsNullOrEmpty()));
Dispatcher.Invoke(new Action(() =>
{
// 按过滤条件读取
if (filterGetCondition)
{
if (!string.IsNullOrEmpty(txtShopName.Text.Trim()))
{
var shopNames = txtShopName.Text.Trim().Split(';').Where(s => !s.IsNullOrEmpty()).ToList();
shop_id = string.Join(",", GlobalConfig.ShopLoginList.Where(s => shopNames.Contains(s.ShopAccount)).Select(s => s.ErpShopId).Where(s => !s.IsNullOrEmpty()));
}
}
var startTime = BaseClass.DateTimeToTimestampSeconds(dateStart.SelectedDate.Value);
var endTime = BaseClass.DateTimeToTimestampSeconds(dateEnd.SelectedDate.Value.AddDays(1));
if (!chkEndDate.IsChecked.ParseToBool())
endTime = BaseClass.DateTimeToTimestampSeconds(DateTime.Now.Date.AddDays(1));
data += "&erp_shop_id_in=" + shop_id;
data += "&start_time=" + startTime;
data += "&end_time=" + endTime;
}));
Thread.Sleep(200);
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"))
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
break;
}
var jArr = JObject.Parse(html)["data"];
if (jArr.Count() == 0)
break;
var order_ids = string.Join(",", jArr.Select(a => a["order_id"].ParseToString()));
// 读取订单详情
Thread.Sleep(100);
var url1 = BaseClass.Build29WxObjString("order/get_erp_order_item_list");
var data1 = UserLogin.GetSignaturex();
data1 += "&erp_order_id_in=" + order_ids;
data1 += "&page_size=" + 2000;
var html1 = GetHtml.PostUtf8(url1, data1);
if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200"))
html1 = GetHtml.PostUtf8(url1, data1);
if (string.IsNullOrEmpty(html1) || !html1.Contains("\"code\":200"))
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
break;
}
List<oms_wei_order_item_info> orderItems = new List<oms_wei_order_item_info>();
try { orderItems = JsonHelper.DeserializeJsonToList<oms_wei_order_item_info>(JObject.Parse(html1)["data"].ParseToString()); } catch { }
// 读取售后单
Thread.Sleep(100);
var url2 = BaseClass.Build29WxObjString("order/get_erp_refund_list");
var data2 = UserLogin.GetSignaturex();
data2 += "&erp_order_id_in=" + order_ids;
var html2 = GetHtml.PostUtf8(url2, data2);
if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200"))
html2 = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html2) || !html2.Contains("\"code\":200"))
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
break;
}
List<oms_wei_refund_info> refunds = new List<oms_wei_refund_info>();
try { refunds = JsonHelper.DeserializeJsonToList<oms_wei_refund_info>(JObject.Parse(html2)["data"].ParseToString()); } catch { }
// 读取中转仓拍单订单
var url3 = BaseClass.Build29WxObjString("order/wx_get_transit_order");
var data3 = UserLogin.GetSignaturex();
data3 += "&order_no=" + order_ids;
var html3 = GetHtml.PostUtf8(url3, data3);
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
html3 = GetHtml.PostUtf8(url3, data3);
if (string.IsNullOrEmpty(html3) || !html3.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
}));
break;
}
List<oms_wei_external_procurement_log_info> transitOrderList = new List<oms_wei_external_procurement_log_info>();
try
{
transitOrderList = JsonHelper.DeserializeJsonToList<oms_wei_external_procurement_log_info>(JObject.Parse(html3)["data"].ParseToString());
// 直接过滤掉仓库作废单
//transitOrderList = transitOrderList.Where(t => t.order_void_status != 1).ToList();
}
catch { }
// 读取暂时记录的买手订单,后面想办法放到中转订单库里去
// 读取中转仓拍单订单
var url4 = BaseClass.Build29WxObjString("order/wx_get_buyer_order_list");
var data4 = UserLogin.GetSignaturex();
data4 += "&wx_order_id_in=" + order_ids;
var html4 = GetHtml.PostUtf8(url4, data4);
if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200"))
html4 = GetHtml.PostUtf8(url4, data4);
if (string.IsNullOrEmpty(html4) || !html4.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
}));
break;
}
List<order_pdd_buyer_order> pddBuyerOrders = new List<order_pdd_buyer_order>();
try
{
pddBuyerOrders = JsonHelper.DeserializeJsonToList<order_pdd_buyer_order>(JObject.Parse(html4)["data"].ParseToString())
.OrderByDescending(p => p.TransitCreateTime).ToList();
}
catch { }
// 读取中转仓处理售后单
var url5 = BaseClass.Build29WxObjString("order/wx_get_transit_warehouse_aftersale_list");
var data5 = UserLogin.GetSignaturex();
data5 += "&wx_order_id_in=" + order_ids;
var html5 = GetHtml.PostUtf8(url5, data5);
if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200"))
html5 = GetHtml.PostUtf8(url5, data5);
if (string.IsNullOrEmpty(html5) || !html5.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
}));
break;
}
List<oms_wei_external_procurement_after_sale_info> pddTransitAfterSales = new List<oms_wei_external_procurement_after_sale_info>();
try
{
pddTransitAfterSales = JsonHelper.DeserializeJsonToList<oms_wei_external_procurement_after_sale_info>(JObject.Parse(html5)["data"].ParseToString())
.OrderByDescending(p => p.created_time).ToList();
}
catch { }
// 读取关联拍单商品
var urlMap = BaseClass.Build29WxObjString("order/wx_get_buy_prod_map");
var dataMap = UserLogin.GetSignaturex()
+ "&spu_codes=" + string.Join(",", orderItems.Select(oi => GetHtml.UrlEncodeUtf8(oi.out_product_id))) + "," + string.Join(",", orderItems.Select(oi => oi.product_id));
dataMap += "&main_user_name=" + BaseClass.MainUserName;
var resultMap = GetHtml.PostUtf8(urlMap, dataMap);
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
GetHtml.PostUtf8(urlMap, dataMap);
if (string.IsNullOrEmpty(resultMap) || !resultMap.Contains("\"code\":200"))
{
Dispatcher.Invoke(new Action(() =>
{
BaseMsgWindow.ShowError("订单读取失败 " + BaseRegex.GetStringJson(ref html, "msg"));
}));
break;
}
List<WXBuyMapInfo> byuMapList = new List<WXBuyMapInfo>();
try { byuMapList = JsonHelper.DeserializeJsonToList<WXBuyMapInfo>(JObject.Parse(resultMap)["data"].ParseToString()); } catch { }
// 装载订单
foreach (JObject jObj in jArr)
{
try
{
oms_wei_order_info order = null;
Dispatcher.Invoke(new Action(() =>
{
order = JsonHelper.DeserializeJsonToObject<oms_wei_order_info>(JsonHelper.SerializeObject(jObj));
if (order.order_id == "3737596572558051840")
{
}
}));
//装载订单商品详情
order.orderItems = new ObservableCollection<oms_wei_order_item_info>();
foreach (var item in orderItems.Where(oi => oi.order_id == order.order_id))
{
// 订单商品
item.ItemOrder = order;
order.orderItems.Add(item);
item.Shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ErpShopId == item.order_id);
Dispatcher.Invoke(new Action(() => { item.UpdateOrderItemBuyButton(); }));
// 关联拍单关系 // 危险物品禁止拍单,仅关联安全商品
if (!GlobalConfig.lstDangerItemWord.Any(d => (item.title).ParseToString().Contains(d)))
{
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.out_product_id);
if (item.BuyMap == null)
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.sku_attr_str && b.spu_code == item.out_product_id);
if (item.BuyMap == null)
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.out_sku_id && b.spu_code == item.product_id);
if (item.BuyMap == null)
item.BuyMap = byuMapList.FirstOrDefault(b => b.sku_code == item.sku_attr_str && b.spu_code == item.product_id);
}
// 中转仓订单
if (item.ItemOrder.orderItems.Count > 1)
item.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id && t.order_sku_id == item.sku_id));
else
item.ItemTransitOrders.AddRange(transitOrderList.Where(t => t.order_no == item.order_id));
item.PddBuyerOrders = pddBuyerOrders.Where(po => po.wx_order_id == item.order_id && po.wx_sku_id == item.sku_id).ToList();
}
//装载订单售后详情
order.refundItems = new ObservableCollection<oms_wei_refund_info>(refunds.Where(of => of.order_id == order.order_id));
foreach (var orderItem in order.orderItems)
{
orderItem.SetItemRefund(order.refundItems.ToList());
}
var orderExist = GlobalConfig.lstOrder.FirstOrDefault(o => o.order_id == order.order_id);
if (orderExist != null)
GlobalConfig.lstOrder.Remove(orderExist);
var nextOrder = GlobalConfig.lstOrder.FirstOrDefault(o => o.create_time < order.create_time);
if (nextOrder != null)
{
GlobalConfig.lstOrder.Insert(GlobalConfig.lstOrder.IndexOf(nextOrder), order);
}
else
{
GlobalConfig.lstOrder.Add(order);
}
if (order.orderItems.Count > 1)
{
}
Dispatcher.Invoke(new Action(() =>
{
FilterOneOrder(order);
}));
}
catch (Exception ex)
{
}
}
Dispatcher.Invoke(new Action(() =>
{
disPlayOrderTabOrderCount();
}));
var totalCount = BaseRegex.GetIntJson(ref html, "count");
if (totalCount > 0)
totalPage = Math.Ceiling(1m * totalCount / pageSize).ParseToInt();
else
{
}
}
hasReadOrder = true;
Dispatcher.Invoke(new Action(() =>
{
imgLoading.Visibility = Visibility.Collapsed;
btnSearch.IsEnabled = true;
}));
}
public void disPlayOrderTabOrderCount()
{
var tabItems = this.tabOrderType.Items.Cast<TabItem>();
var tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待采购"));
if (tabItem != null)
{
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "待采购")));
tabItem.Header = "待采购(" + GlobalConfig.lstOrder.Where(r => r.IsWaitBuy).Count() + "|" + filteLstTmp.Where(r => r.IsWaitBuy).Count() + ")";
}
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待发货"));
if (tabItem != null)
{
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "待发货")));
tabItem.Header = "待发货(" + GlobalConfig.lstOrder.Where(r => r.IsWaitSend).Count() + "|" + filteLstTmp.Where(r => r.IsWaitSend).Count() + ")";
}
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("待收货"));
if (tabItem != null)
{
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "待收货")));
tabItem.Header = "待收货(" + GlobalConfig.lstOrder.Where(r => r.IsWaitReceive).Count() + "|" + filteLstTmp.Where(r => r.IsWaitReceive).Count() + ")";
}
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("退款单"));
if (tabItem != null)
{
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "退款单")));
tabItem.Header = "退款单(" + GlobalConfig.lstOrder.Where(r => r.IsRefund).Count() + "|" + filteLstTmp.Where(r => r.IsRefund).Count() + ")";
}
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("紧急单"));
if (tabItem != null)
{
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "紧急单")));
tabItem.Header = "紧急单(" + GlobalConfig.lstOrder.Where(r => r.IsEmergency).Count() + "|" + filteLstTmp.Where(r => r.IsEmergency).Count() + ")";
}
tabItem = tabItems.FirstOrDefault(t => t.Header.ParseToString().StartsWith("全部订单"));
if (tabItem != null)
{
var filteLstTmp = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o, "全部订单")));
tabItem.Header = "全部订单(" + GlobalConfig.lstOrder.Count() + "|" + filteLstTmp.Count() + ")";
}
txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count() + " 条订单记录";
}
public void FilterOrders()
{
try
{
if (this.lbxOrder == null)
return;
//foreach (var order in GlobalConfig.lstFilterOrder.ToList())
//{
// if (GetOrderIsFilter(order))
// {
// GlobalConfig.lstFilterOrder.Remove(order);
// }
//}
//foreach (var order in GlobalConfig.lstOrder.ToList())
//{
// FilterOneOrder(order);
//}
GlobalConfig.lstFilterOrder = new ObservableCollection<oms_wei_order_info>(GlobalConfig.lstOrder.Where(o => !GetOrderIsFilter(o)));
this.lbxOrder.ItemsSource = GlobalConfig.lstFilterOrder;
//Dispatcher.Invoke(new Action(() => {
// txtFilterCount.Text = "当前条件共计 " + GlobalConfig.lstFilterOrder.Count().ToString() + " 条订单记录";
//}));
disPlayOrderTabOrderCount();
}
catch (Exception ex)
{
}
}
public void FilterOneOrder(oms_wei_order_info order, bool updateTabCount = false)
{
if (!GetOrderIsFilter(order))
{
var orderExist = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.order_id == order.order_id);
if (orderExist != null)
GlobalConfig.lstFilterOrder.Remove(orderExist);
var nextOrder = GlobalConfig.lstFilterOrder.FirstOrDefault(o => o.create_time < order.create_time);
if (nextOrder != null)
{
GlobalConfig.lstFilterOrder.Insert(GlobalConfig.lstFilterOrder.IndexOf(nextOrder), order);
}
else
{
GlobalConfig.lstFilterOrder.Add(order);
}
}
if (updateTabCount)
{
Dispatcher.Invoke(new Action(() =>
{
disPlayOrderTabOrderCount();
}));
}
}
bool GetOrderIsFilter(oms_wei_order_info order, string filterHeadStr = null)
{
if (order == null)
return true;
// 过滤店铺名称
if (!string.IsNullOrEmpty(txtShopName.Text.Trim()) && !(";" + txtShopName.Text.Trim() + ";").Contains(";" + order.shop_name + ";"))
{
return true;
}
// 过滤商品名称
if (!string.IsNullOrEmpty(txtGoodsName.Text.Trim()) && !order.orderItems.Any(it => it.title.Contains(txtGoodsName.Text.Trim())))
{
return true;
}
// 过滤id
if (!string.IsNullOrEmpty(txtOrderId.Text.Trim()) && !(";" + txtOrderId.Text.Trim().Replace(' ', ';').Replace(',', ';') + ";").Contains(";" + order.order_id + ";"))
{
return true;
}
// 过滤多件商品
if (chkNoMultiOrder.IsChecked.ParseToBool() && order.orderItems.Sum(o => o.sku_cnt) > 1)
{
return true;
}
if (chkOnlyWarehouseOrder.IsChecked.ParseToBool() && order.status >= 30 && order.orderItems.All(oi => oi.ItemTransitOrderWithVoid == null))
{
return true;
}
if (order.createDateTime < dateStart.SelectedDate.Value)
return true;
if (chkEndDate.IsChecked == true && order.createDateTime > dateEnd.SelectedDate.Value)
return true;
// 过滤标签页
if (filterHeadStr.IsNullOrEmpty())
filterHeadStr = GlobalConfig.OrderTabHeaderStr;
if (filterHeadStr.StartsWith("全部订单"))
{
return false;
}
if (filterHeadStr.StartsWith("待采购"))
{
if (!order.IsWaitBuy)
return true;
if (order.IsRefund)
return true;
if (chkMapProdOnly.IsChecked == true && order.orderItems.All(oi => oi.BuyMap == null))
return true;
if (chkNoMapProdOnly.IsChecked == true && order.orderItems.All(oi => oi.BuyMap != null))
return true;
}
if (filterHeadStr.StartsWith("待发货") && !order.IsWaitSend)
{
return true;
}
if (filterHeadStr.StartsWith("待收货") && !order.IsWaitReceive)
{
return true;
}
if (filterHeadStr.StartsWith("退款单") && !order.IsRefund)
{
return true;
}
if (filterHeadStr.StartsWith("紧急单"))
{
if (!order.IsEmergency)
return true;
if (chkWaitOperate.IsChecked == true && order.orderItems.All(oi => !oi.TransitRefundStatusStr.Contains("需手动申请售后")))
return true;
}
return false;
}
private void btnMultiShopChoice_Click(object sender, RoutedEventArgs e)
{
MainWindow.Instance.shopListCtrl.IsVisibleChanged -= ShopListCtrl_IsVisibleChanged;
MainWindow.Instance.shopListCtrl.Visibility = Visibility.Visible;
MainWindow.Instance.shopListCtrl.IsVisibleChanged += ShopListCtrl_IsVisibleChanged;
}
private void ShopListCtrl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (!MainWindow.Instance.shopListCtrl.IsVisible && MainWindow.Instance.shopListCtrl.IsAcceptChoiceShop == true)
{
var list = MainWindow.Instance.shopListCtrl.lbxShop.ItemsSource as ObservableCollection<ShopLoginInfo>;
if (list != null)
this.txtShopName.Text = string.Join(";", list.Where(s => s.IsSelect == true).Select(s => s.ShopAccount));
FilterOrders();
}
MainWindow.Instance.shopListCtrl.IsVisibleChanged -= ShopListCtrl_IsVisibleChanged;
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
this.btnSearch.IsEnabled = false;
Task.Run(() =>
{
Thread.Sleep(5000);
Dispatcher.Invoke(new Action(() => { this.btnSearch.IsEnabled = true; }));
});
Task.Run(() =>
{
while (!MainWindow.Instance.hasReadShop)
{
Thread.Sleep(100);
}
GetOrder();
nextGetOrderTime = DateTime.Now.AddMinutes(25);
});
}
private void btnFilter_Click(object sender, RoutedEventArgs e)
{
FilterOrders();
}
private void dgOrderHeader_ColumnDisplayIndexChanged(object sender, DataGridColumnEventArgs e)
{
}
private void dgOrderHeader_LayoutUpdated(object sender, EventArgs e)
{
foreach (var item in lbxOrder.Items)
{
ListBoxItem container = (ListBoxItem)lbxOrder.ItemContainerGenerator.ContainerFromIndex(lbxOrder.Items.IndexOf(item));
if (container != null)
{
// 找到grid控件并修改列大小
var grids = UiCtrlUtils.FindVisualChildAll<Grid>(container, "gridListItem");
foreach (var grid in grids)
{
for (int i = 0; i < grid.ColumnDefinitions.Count; i++)
{
if (dgOrderHeader.Columns.Count > i)
{
// 最后一列因滚动条变窄,已在表头补偿
if (i == grid.ColumnDefinitions.Count - 1)
grid.ColumnDefinitions[i].Width = new GridLength(Math.Max(0, dgOrderHeader.Columns[i].ActualWidth - 0));
else
grid.ColumnDefinitions[i].Width = new GridLength(dgOrderHeader.Columns[i].ActualWidth);
}
}
}
}
}
}
private void ChkSelectAll_Checked(object sender, RoutedEventArgs e)
{
foreach (var order in GlobalConfig.lstOrder.ToList())
{
order.IsSelect = true;
}
}
private void ChkSelectAll_Unchecked(object sender, RoutedEventArgs e)
{
foreach (var order in GlobalConfig.lstOrder.ToList())
{
order.IsSelect = false;
}
}
private void ChkSelectAll_Loaded(object sender, RoutedEventArgs e)
{
chkSelectAll = sender as CheckBox;
}
public void UpdateChkAllBox ()
{
chkSelectAll.Checked -= ChkSelectAll_Checked;
chkSelectAll.Unchecked -= ChkSelectAll_Unchecked;
if (GlobalConfig.lstFilterOrder.All(s => s.IsSelect))
chkSelectAll.IsChecked = true;
else if (GlobalConfig.lstFilterOrder.All(s => !s.IsSelect))
chkSelectAll.IsChecked = false;
else
chkSelectAll.IsChecked = null;
chkSelectAll.Checked += ChkSelectAll_Checked;
chkSelectAll.Unchecked += ChkSelectAll_Unchecked;
}
private void tabOrderType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
GlobalConfig.OrderTabHeaderStr = ((tabOrderType.SelectedItem as TabItem)?.Header).ParseToString();
FilterOrders();
}
private void chkMapProdOnly_Click(object sender, RoutedEventArgs e)
{
if (chkMapProdOnly.IsChecked == true)
chkNoMapProdOnly.IsChecked = false;
FilterOrders();
}
private void chkNoMapProdOnly_Click(object sender, RoutedEventArgs e)
{
if (chkNoMapProdOnly.IsChecked == true)
chkMapProdOnly.IsChecked = false;
FilterOrders();
}
public static string addNotes(ShopLoginInfo shop, string orderId, string notes, int tagColor = -1)
{
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeorder/common/cgi/batchMerchantNotes?token=&lang=zh_CN";
string body = @"{""items"":[{""orderId"":""" + orderId + @""",""merchantNotes"":""" + notes + @""",""merchantNotesTagColor"":" + tagColor + @"}]}";
if (tagColor == -1)
body = @"{""items"":[{""orderId"":""" + orderId + @""",""merchantNotes"":""" + notes + @"""}]}";
string refere = "https://store.weixin.qq.com/shop/order/list";
var result = HttpResponseWXBLL.WeiXinPostResponse(shop, url, body, refere);
return result;
}
private void chkAutoReadBuyerOrder_CheckedChanged(object sender, RoutedEventArgs e)
{
IsAutoReadOrder = chkAutoReadOrder.IsChecked == true;
}
private void TabItem_SizeChanged(object sender, SizeChangedEventArgs e)
{
var tabItems = this.tabOrderType.Items.Cast<TabItem>();
wpFilter.Margin = new Thickness(tabItems.Sum(t => t.ActualWidth) + 20, 6, 0, 0);
}
private void chkSubFilterSonditions_Checked(object sender, RoutedEventArgs e)
{
FilterOrders();
}
private void chkWaitOperate_Click(object sender, RoutedEventArgs e)
{
FilterOrders();
}
}
}