diff --git a/BBWYB.Client/APIServices/OrderService.cs b/BBWYB.Client/APIServices/OrderService.cs new file mode 100644 index 0000000..615276f --- /dev/null +++ b/BBWYB.Client/APIServices/OrderService.cs @@ -0,0 +1,46 @@ +using BBWYB.Client.Models; +using BBWYB.Common.Http; +using BBWYB.Common.Models; +using System; +using System.Net.Http; + +namespace BBWYB.Client.APIServices +{ + public class OrderService : BaseApiService, IDenpendency + { + public OrderService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) + { + } + + public ApiResponse GetOrderList(string orderId, + DateTime startDate, + DateTime endDate, + OrderState? orderState, + string productId, + string skuId, + string clientOrderId, + string sourceShopName, + string sourceSku, + int pageIndex, + int pageSize, + long? shopId, + bool excludeCanceled) + { + return SendRequest(globalContext.BBYWApiHost, "api/order/getorderlist", new + { + OrderId = orderId, + ShopId = shopId, + StartDate = startDate, + EndDate = endDate, + OrderState = orderState, + PageIndex = pageIndex, + PageSize = pageSize, + ProductId = productId, + Sku = skuId, + ClientOrderId = clientOrderId, + SourceShopName = sourceShopName, + SourceSku = sourceSku + }, null, HttpMethod.Post); + } + } +} diff --git a/BBWYB.Client/APIServices/PurchaseOrderService.cs b/BBWYB.Client/APIServices/PurchaseOrderService.cs index 4a20ac0..beb9d23 100644 --- a/BBWYB.Client/APIServices/PurchaseOrderService.cs +++ b/BBWYB.Client/APIServices/PurchaseOrderService.cs @@ -15,41 +15,6 @@ namespace BBWYB.Client.APIServices } - public ApiResponse AddPurchaseOrder(PurchaseOrder purchaseOrder) - { - return SendRequest(globalContext.BBYWApiHost, - "api/PurchaseOrder/AddPurchaseOrder", - purchaseOrder, - null, - HttpMethod.Post); - } - - public ApiResponse EditPurchaseOrder(PurchaseOrder purchaseOrder) - { - return SendRequest(globalContext.BBYWApiHost, - "api/PurchaseOrder/EditPurchaseOrder", - purchaseOrder, - null, - HttpMethod.Put); - } - - public ApiResponse> GetList(IList skuIdList, StorageType storageType, long shopId) - { - return SendRequest>(globalContext.BBYWApiHost, - "api/PurchaseOrder/GetList", - new { SkuIdList = skuIdList, StorageType = storageType, ShopId = shopId }, - null, - HttpMethod.Post); - } - - public ApiResponse DeletePurchaseOrder(long id) - { - return SendRequest(globalContext.BBYWApiHost, - $"api/purchaseOrder/deletePurchaseOrder/{id}", - null, - null, - HttpMethod.Delete); - } /// /// 预览订单 diff --git a/BBWYB.Client/APIServices/ShopService.cs b/BBWYB.Client/APIServices/ShopService.cs new file mode 100644 index 0000000..20ee41d --- /dev/null +++ b/BBWYB.Client/APIServices/ShopService.cs @@ -0,0 +1,27 @@ +using BBWYB.Client.Models; +using BBWYB.Common.Http; +using BBWYB.Common.Models; +using System.Net.Http; + +namespace BBWYB.Client.APIServices +{ + public class ShopService : BaseApiService, IDenpendency + { + public ShopService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext) { } + + public ApiResponse SaveShopSetting(long shopId, + PurchaseAccount purchaseAccount) + { + return SendRequest(globalContext.BBYWApiHost, "api/vender/SaveShopSetting", new + { + shopId, + PurchaseAccountId = purchaseAccount.Id, + purchaseAccount.AccountName, + purchaseAccount.AppKey, + purchaseAccount.AppSecret, + purchaseAccount.AppToken, + purchaseAccount.PurchasePlatformId + }, null, HttpMethod.Post); + } + } +} diff --git a/BBWYB.Client/Models/APIModel/Response/Order/ConsigneeResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/ConsigneeResponse.cs index ca91cfd..edac634 100644 --- a/BBWYB.Client/Models/APIModel/Response/Order/ConsigneeResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/Order/ConsigneeResponse.cs @@ -38,8 +38,6 @@ /// 镇 /// public string Town { get; set; } - - public bool IsDecode { get; set; } } public class ConsigneeSimpleResponse diff --git a/BBWYB.Client/Models/APIModel/Response/Order/OrderCostDetailResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/OrderCostDetailResponse.cs index 15f0c95..cf059c2 100644 --- a/BBWYB.Client/Models/APIModel/Response/Order/OrderCostDetailResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/Order/OrderCostDetailResponse.cs @@ -4,85 +4,102 @@ namespace BBWYB.Client.Models { public class OrderCostDetailResponse { + public long Id { get; set; } - public long Id { get; set; } + /// + /// 耗材费 + /// + public decimal? ConsumableAmount { get; set; } = 0.00M; + public DateTime? CreateTime { get; set; } - public DateTime? CreateTime { get; set; } + /// + /// 扣减数量 + /// + public int? DeductionQuantity { get; set; } = 0; - /// - /// 扣减数量 - /// - public int DeductionQuantity { get; set; } = 0; + /// + /// 发货运费 + /// + public decimal? DeliveryExpressFreight { get; set; } = 0.00M; - /// - /// 发货运费 - /// - public decimal DeliveryExpressFreight { get; set; } = 0.00M; + /// + /// 头程运费 + /// + public decimal? FirstFreight { get; set; } = 0.00M; - public string OrderId { get; set; } + /// + /// 入库操作费 + /// + public decimal? InStorageAmount { get; set; } = 0.00M; - public string ProductId { get; set; } + public bool? IsEnabled { get; set; } = false; - /// - /// 单件成本 - /// - public decimal UnitCost { get; set; } = 0.00M; + /// + /// 操作费 + /// + public decimal? OperationAmount { get; set; } = 0.00M; - /// - /// 采购单流水Id - /// - public long PurchaseOrderPKId { get; set; } + public string OrderId { get; set; } - public string SkuId { get; set; } + /// + /// 出库操作费 + /// + public decimal? OutStorageAmount { get; set; } = 0.00M; - /// - /// Sku成本(商品成本) - /// - public decimal SkuAmount { get; set; } = 0.00M; + public string ProductId { get; set; } - /// - /// 采购运费 - /// - public decimal PurchaseFreight { get; set; } = 0.00M; + /// + /// 采购运费 + /// + public decimal? PurchaseFreight { get; set; } = 0.00M; - /// - /// 头程运费 - /// - public decimal FirstFreight { get; set; } = 0.00M; + /// + /// 采购单流水Id + /// + public long? PurchaseOrderPKId { get; set; } + /// + /// 采购单Id + /// + public string PurchaseOrderId { get; set; } - //public decimal OperationAmount { get; set; } = 0.00M; - /// - /// 入仓操作费 - /// - public decimal InStorageAmount { get; set; } - /// - /// 出仓操作费 - /// - public decimal OutStorageAmount { get; set; } + public long? ShopId { get; set; } - /// - /// 耗材费 - /// - public decimal ConsumableAmount { get; set; } = 0.00M; + /// + /// 货款成本 + /// + public decimal? SkuAmount { get; set; } = 0.00M; - /// - /// 仓储费 - /// - public decimal StorageAmount { get; set; } = 0.00M; + ///// + ///// sku毛利 + ///// + //public decimal? SkuGrossProfit { get; set; } = 0.00M; - /// - /// 总计(不含销售运费 历史遗留) - /// - public decimal TotalCost { get; set; } = 0.00M; + //[Column(StringLength = 50)] + public string SkuId { get; set; } - /// - /// 总计 包含销售运费 - /// - public decimal TotalCost2 { get; set; } = 0.00M; - } + /// + /// 仓储费 + /// + public decimal? StorageAmount { get; set; } = 0.00M; + + /// + /// 采购成本(不含发货运费) + /// + public decimal? PurchaseAmount { get; set; } = 0.00M; + + /// + /// 成本总计 + /// + public decimal? TotalCost { get; set; } = 0.00M; + + /// + /// 单件采购成本(不含发货运费) + /// + public decimal? UnitCost { get; set; } = 0.00M; + } } diff --git a/BBWYB.Client/Models/APIModel/Response/Order/OrderCostResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/OrderCostResponse.cs index 643a763..2f0142b 100644 --- a/BBWYB.Client/Models/APIModel/Response/Order/OrderCostResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/Order/OrderCostResponse.cs @@ -4,29 +4,6 @@ namespace BBWYB.Client.Models { public class OrderCostResponse { - - public string OrderId { get; set; } - - /// - /// 平台扣点金额 - /// - public decimal PlatformCommissionAmount { get; set; } - - /// - /// 平台扣点百分比 - /// - public decimal PlatformCommissionRatio { get; set; } - - /// - /// 优惠金额 - /// - public decimal PreferentialAmount { get; set; } - - /// - /// 毛利 - /// - public decimal Profit { get; set; } - /// /// 成本毛利率 /// @@ -34,73 +11,52 @@ namespace BBWYB.Client.Models { get { - return TotalCost == 0 ? 0 : Math.Round(Profit / TotalCost * 100, 2); + return TotalCost == 0 ? 0 : Math.Round(Profit / TotalCost * 100, 2); } } - /// - /// 采购金额 - /// - public decimal PurchaseAmount { get; set; } = 0.00M; + public decimal TotalCost { get; set; } - /// - /// 发货快递费 - /// - public decimal DeliveryExpressFreight { get; set; } = 0.00M; - /// - /// 是否手动编辑过成本 - /// - public bool IsManualEdited { get; set; } + public string OrderId { get; set; } - /// - /// 刷单佣金 - /// - public decimal SDCommissionAmount { get; set; } = 0.00M; - /// - /// 刷单号费 - /// - public decimal SDOrderAmount { get; set; } = 0.00M; + + public DateTime CreateTime { get; set; } - /// - /// 退款金额 - /// - public decimal RefundAmount { get; set; } = 0.00M; + /// + /// 发货快递费 + /// + public decimal DeliveryExpressFreight { get; set; } = 0.00M; - /// - /// 退款采购金额 - /// - public decimal RefundPurchaseAmount { get; set; } = 0.0M; + /// + /// 是否手动编辑过成本 + /// + public bool IsManualEdited { get; set; } = false; - /// - /// 售后总成本 - /// - public decimal AfterTotalCost { get; set; } = 0.0M; + /// + /// 平台扣点金额 + /// + public decimal PlatformCommissionAmount { get; set; } = 0.00M; - /// - /// 售前成本 - /// - public decimal BeforeTotalCost - { - get - { - return PurchaseAmount + DeliveryExpressFreight; - } - } + /// + /// 平台扣点百分比 + /// + public decimal PlatformCommissionRatio { get; set; } - /// - /// 成本总计 - /// - public decimal TotalCost - { - get - { - return SDCommissionAmount + SDOrderAmount + - PlatformCommissionAmount + (PurchaseAmount - RefundPurchaseAmount) + - DeliveryExpressFreight + - AfterTotalCost; - } - } - } + /// + /// 优惠金额 + /// + public decimal PreferentialAmount { get; set; } = 0.00M; + + /// + /// 利润 + /// + public decimal Profit { get; set; } = 0.00M; + + /// + /// 采购金额 + /// + public decimal PurchaseAmount { get; set; } = 0.00M; + } } diff --git a/BBWYB.Client/Models/APIModel/Response/Order/OrderCouponResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/OrderCouponResponse.cs deleted file mode 100644 index 92a4328..0000000 --- a/BBWYB.Client/Models/APIModel/Response/Order/OrderCouponResponse.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace BBWYB.Client.Models -{ - public class OrderCouponResponse - { - public long Id { get; set; } - - public decimal CouponPrice { get; set; } - - public string CouponType { get; set; } - - public string OrderId { get; set; } - public string SkuId { get; set; } - } -} diff --git a/BBWYB.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs deleted file mode 100644 index 6796da2..0000000 --- a/BBWYB.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace BBWYB.Client.Models -{ - public class OrderDropShippingResponse - { - public long Id { get; set; } - - public string OrderId { get; set; } - - public string BuyerAccount { get; set; } - - public decimal DeliveryFreight { get; set; } - - public decimal PurchaseAmount { get; set; } - - public string PurchaseOrderId { get; set; } - - public string MerchantOrderId { get; set; } - - public Platform? PurchasePlatform { get; set; } - - public string SellerAccount { get; set; } - - public decimal SkuAmount - { - get; set; - } - public decimal PurchaseFreight - { - get; set; - } - } -} diff --git a/BBWYB.Client/Models/APIModel/Response/Order/OrderResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/OrderResponse.cs index aaeb53e..990cd64 100644 --- a/BBWYB.Client/Models/APIModel/Response/Order/OrderResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/Order/OrderResponse.cs @@ -10,24 +10,22 @@ namespace BBWYB.Client.Models /// /// 商家Id /// - public string VenderId { get; set; } + public string ShopId { get; set; } /// /// 下单时间 /// - public DateTime OrderStartTime { get; set; } + public DateTime StartTime { get; set; } /// /// 结单时间 /// - public DateTime? OrderEndTime { get; set; } - - public DateTime OrderModifyTime { get; set; } + public DateTime? EndTime { get; set; } /// - /// 买家账号 + /// 修改时间 /// - public string BuyerAccount { get; set; } + public DateTime ModifyTime { get; set; } /// /// 订单平台 @@ -47,12 +45,7 @@ namespace BBWYB.Client.Models /// /// 订单状态 /// - public OrderState OrderState { get; set; } - - /// - /// 订单状态中文说明 - /// - public string OrderStateText { get; set; } + public OrderState? OrderState { get; set; } /// /// 订单总价 @@ -74,8 +67,16 @@ namespace BBWYB.Client.Models /// public decimal FreightPrice { get; set; } + /// + /// 平台补贴 + /// public decimal PreferentialAmount { get; set; } + /// + /// 商家优惠金额 + /// + public decimal SellerPreferentialAmount { get; set; } + /// /// 买家备注 /// @@ -91,57 +92,35 @@ namespace BBWYB.Client.Models /// public string PurchaseRemark { get; set; } - public StorageType? StorageType { get; set; } - /// /// 运单号 /// public string WaybillNo { get; set; } /// - /// 仓库Id + /// 快递公司名称 /// - public string StoreId { get; set; } + public string ExpressName { get; set; } /// - /// 仓库名称 + /// 来源Sku /// - public string StoreName { get; set; } + public string SourceSku { get; set; } /// - /// 订单旗帜 + /// 来源店铺名 /// - public string Flag { get; set; } + public string SourceShopName { get; set; } /// - /// 刷单类型 + /// 业务端订单号 /// - public SDType? SDType { get; set; } + public string ClientOrderId { get; set; } /// - /// 刷单关键词 + /// 是否采购 /// - public string SDKey { get; set; } - - /// - /// 刷单支付渠道 - /// - public PayBillType? SDPayChannel { get; set; } - - /// - /// 刷单交易账单号 - /// - public string SDPayBillNo { get; set; } - - /// - /// 刷单人 - /// - public string SDOperator { get; set; } - - /// - /// 是否包含售后单 - /// - public bool IsAfterSaleOrder { get; set; } + public bool IsPurchased { get; set; } /// /// 收货人信息 @@ -149,48 +128,24 @@ namespace BBWYB.Client.Models public ConsigneeResponse Consignee { get; set; } /// - /// 订单成本 + /// 产品信息 /// - public OrderCostResponse OrderCost { get; set; } - - public IList ItemList { get; set; } /// - /// 优惠券列表 + /// 订单成本 /// - public IList OrderCouponList { get; set; } - + public OrderCostResponse OrderCost { get; set; } /// /// 订单成本明细列表 /// public IList OrderCostDetailList { get; set; } - - /// - /// 代发信息 - /// - public IList OrderDropShippingList { get; set; } - - /// - /// 历史代发信息 - /// - public IList HistoryOrderDropShippingList { get; set; } - - /// - /// 售后信息 - /// - public IList AfterSaleOrderList { get; set; } } public class OrderListResponse { - public int Count { get; set; } + public long Count { get; set; } public IList Items { get; set; } - - /// - /// 当前条件汇总利润 - /// - public decimal CurrentConditionsTotalProfit { get; set; } } -} +} \ No newline at end of file diff --git a/BBWYB.Client/Models/APIModel/Response/Order/OrderSkuResponse.cs b/BBWYB.Client/Models/APIModel/Response/Order/OrderSkuResponse.cs index fcaa7ad..90b3bc0 100644 --- a/BBWYB.Client/Models/APIModel/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Client/Models/APIModel/Response/Order/OrderSkuResponse.cs @@ -1,32 +1,41 @@ -namespace BBWYB.Client.Models +using System; + +namespace BBWYB.Client.Models { public class OrderSkuResponse { - /// - /// 购买数量 - /// - public int ItemTotal { get; set; } - public string Id { get; set; } + public long Id { get; set; } + + public DateTime? CreateTime { get; set; } + + + /// + /// 销售数量 + /// + public int ItemTotal { get; set; } + + /// + /// Logo + /// - public string ProductId { get; set; } + public string Logo { get; set; } - public string ProductNo { get; set; } - public double Price { get; set; } + public string OrderId { get; set; } - /// - /// Sku标题 - /// - public string Title { get; set; } + /// + /// 销售单价 + /// + public decimal? Price { get; set; } - public string Logo { get; set; } + public string ProductId { get; set; } - /// - /// 代发信息Id - /// - public long? OrderDropShippingId { get; set; } + public string SkuId { get; set; } - public bool IsRefund { get; set; } = false; - } + /// + /// Sku标题 + /// + public string Title { get; set; } + } } diff --git a/BBWYB.Client/Models/MappingProfile.cs b/BBWYB.Client/Models/MappingProfile.cs index 47349b3..942d611 100644 --- a/BBWYB.Client/Models/MappingProfile.cs +++ b/BBWYB.Client/Models/MappingProfile.cs @@ -17,7 +17,11 @@ namespace BBWYB.Client.Models CreateMap(); CreateMap(); - + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); } } } diff --git a/BBWYB.Client/Models/Order/Consignee.cs b/BBWYB.Client/Models/Order/Consignee.cs index 20a9223..43f9ac2 100644 --- a/BBWYB.Client/Models/Order/Consignee.cs +++ b/BBWYB.Client/Models/Order/Consignee.cs @@ -1,39 +1,6 @@ -using CommunityToolkit.Mvvm.ComponentModel; - -namespace BBWYB.Client.Models +namespace BBWYB.Client.Models { - public class Consignee : ObservableObject + public class Consignee : ConsigneeResponse { - private string contactName; - private string address; - private string mobile; - private string telePhone; - private bool isDecode; - - - /// - /// 省 - /// - public string Province { get; set; } - - /// - /// 市 - /// - public string City { get; set; } - - /// - /// 县 - /// - public string County { get; set; } - - /// - /// 镇 - /// - public string Town { get; set; } - public string ContactName { get => contactName; set { SetProperty(ref contactName, value); } } - public string Address { get => address; set { SetProperty(ref address, value); } } - public string Mobile { get => mobile; set { SetProperty(ref mobile, value); } } - public string TelePhone { get => telePhone; set { SetProperty(ref telePhone, value); } } - public bool IsDecode { get => isDecode; set { SetProperty(ref isDecode, value); } } } } diff --git a/BBWYB.Client/Models/Order/Order.cs b/BBWYB.Client/Models/Order/Order.cs new file mode 100644 index 0000000..2572a0c --- /dev/null +++ b/BBWYB.Client/Models/Order/Order.cs @@ -0,0 +1,169 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace BBWYB.Client.Models +{ + public class Order : ObservableObject + { + public Order() + { + OrderCostDetailGroupList = new List(); + } + + private OrderState orderState; + private string waybillNo; + private string venderRemark; + + public string Id { get; set; } + + /// + /// 商家Id + /// + public string VenderId { get; set; } + + /// + /// 下单时间 + /// + public DateTime StartTime { get; set; } + + /// + /// 结单时间 + /// + public DateTime? OrderEndTime { get; set; } + + /// + /// 买家账号 + /// + public string BuyerAccount { get; set; } + + /// + /// 订单平台 + /// + public Platform Platform { get; set; } + + /// + /// 订单类型 + /// + public OrderType OrderType { get; set; } + + /// + /// 支付方式 + /// + public PayType PayType { get; set; } + + + /// + /// 订单状态中文说明 + /// + public string OrderStateText { get; set; } + + /// + /// 订单总价 + /// + public decimal OrderTotalPrice { get; set; } + + /// + /// 订单货款金额 + /// + public decimal OrderSellerPrice { get; set; } + + /// + /// 用户应付金额 + /// + public decimal OrderPayment { get; set; } + + /// + /// 商品运费(用户付) + /// + public decimal FreightPrice { get; set; } + + /// + /// 实收金额 + /// + public decimal ActualAmount { get { return OrderSellerPrice + FreightPrice; } } + + /// + /// 商家优惠金额 + /// + public decimal PreferentialAmount { get; set; } + + /// + /// 买家备注 + /// + public string BuyerRemark { get; set; } + + /// + /// 采购备注 + /// + public string PurchaseRemark { get; set; } + + + /// + /// 订单状态 + /// + public OrderState OrderState { get => orderState; set { SetProperty(ref orderState, value); } } + + public string WaybillNo { get => waybillNo; set { SetProperty(ref waybillNo, value); } } + + /// + /// 商家备注 + /// + public string VenderRemark { get => venderRemark; set { SetProperty(ref venderRemark, value); } } + + + + /// + /// 收货人信息 + /// + public Consignee Consignee { get; set; } + + /// + /// 订单成本 + /// + public OrderCost OrderCost { get; set; } + + public IList ItemList { get; set; } + + /// + /// 订单成本明细列表 + /// + public IList OrderCostDetailList { get; set; } + + /// + /// 订单成本明细分组列表 + /// + public IList OrderCostDetailGroupList { get; set; } + + + + public void LocalConvert() + { + ConvertOrderCostDetailToGroup(); + } + + public void ConvertOrderCostDetailToGroup() + { + if (OrderCostDetailList == null || OrderCostDetailList.Count() == 0) + return; + foreach (var detail in OrderCostDetailList) + { + var group = OrderCostDetailGroupList.FirstOrDefault(g => g.SkuId == detail.SkuId); + if (group == null) + { + group = new OrderCostDetailGroup() { SkuId = detail.SkuId }; + OrderCostDetailGroupList.Add(group); + } + group.Items.Add(detail); + } + } + } + + public class OrderList + { + public int Count { get; set; } + + public IList Items { get; set; } + } +} diff --git a/BBWYB.Client/Models/Order/OrderCost.cs b/BBWYB.Client/Models/Order/OrderCost.cs new file mode 100644 index 0000000..a3287da --- /dev/null +++ b/BBWYB.Client/Models/Order/OrderCost.cs @@ -0,0 +1,7 @@ +namespace BBWYB.Client.Models +{ + public class OrderCost : OrderCostResponse + { + + } +} diff --git a/BBWYB.Client/Models/Order/OrderCostDetail.cs b/BBWYB.Client/Models/Order/OrderCostDetail.cs new file mode 100644 index 0000000..4af4dff --- /dev/null +++ b/BBWYB.Client/Models/Order/OrderCostDetail.cs @@ -0,0 +1,7 @@ +namespace BBWYB.Client.Models +{ + public class OrderCostDetail : OrderCostDetailResponse + { + + } +} diff --git a/BBWYB.Client/Models/Order/OrderCostDetailGroup.cs b/BBWYB.Client/Models/Order/OrderCostDetailGroup.cs new file mode 100644 index 0000000..cc212f0 --- /dev/null +++ b/BBWYB.Client/Models/Order/OrderCostDetailGroup.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; + +namespace BBWYB.Client.Models +{ + public class OrderCostDetailGroup + { + public OrderCostDetailGroup() + { + Items = new List(); + } + + public string SkuId { get; set; } + + public IList Items { get; set; } + } +} diff --git a/BBWYB.Client/Models/Order/OrderSku.cs b/BBWYB.Client/Models/Order/OrderSku.cs new file mode 100644 index 0000000..616b389 --- /dev/null +++ b/BBWYB.Client/Models/Order/OrderSku.cs @@ -0,0 +1,6 @@ +namespace BBWYB.Client.Models +{ + public class OrderSku : OrderSkuResponse + { + } +} diff --git a/BBWYB.Client/Models/Order/RelationPurchaseOrderSku.cs b/BBWYB.Client/Models/Order/RelationPurchaseOrderSku.cs new file mode 100644 index 0000000..3ea6b44 --- /dev/null +++ b/BBWYB.Client/Models/Order/RelationPurchaseOrderSku.cs @@ -0,0 +1,71 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using Newtonsoft.Json; +using System; + +namespace BBWY.Client.Models +{ + public class RelationPurchaseOrderSku : ObservableObject + { + public RelationPurchaseOrderSku() + { + SingleSkuAmountStr = (0).ToString(); + } + private bool isSelected; + private string singleSkuAmountStr; + private decimal singleSkuAmount; + private decimal skuAmount; + + public string ProductId { get; set; } + + public string SkuId { get; set; } + + public string Logo { get; set; } + + public int Quantity { get; set; } + + public string Title { get; set; } + + public string SingleSkuAmountStr + { + get => singleSkuAmountStr; set + { + if (SetProperty(ref singleSkuAmountStr, value)) + { + if (decimal.TryParse(value, out decimal d)) + SingleSkuAmount = d; + } + } + } + + public decimal SingleSkuAmount + { + get => singleSkuAmount; + set + { + if (SetProperty(ref singleSkuAmount, value)) + SkuAmount = SingleSkuAmount * Quantity; + + } + } + + public decimal SkuAmount + { + get => skuAmount; + set + { + if (SetProperty(ref skuAmount, value)) + OnSkuAmountChanged?.Invoke(); + } + } + + /// + /// 代发信息Id + /// + public long? OrderDropShippingId { get; set; } + + [JsonIgnore] + public Action OnSkuAmountChanged { get; set; } + + public bool IsSelected { get => isSelected; set { SetProperty(ref isSelected, value); } } + } +} diff --git a/BBWYB.Client/ViewModels/MainViewModel.cs b/BBWYB.Client/ViewModels/MainViewModel.cs index 2a42b99..d0b23d5 100644 --- a/BBWYB.Client/ViewModels/MainViewModel.cs +++ b/BBWYB.Client/ViewModels/MainViewModel.cs @@ -85,32 +85,31 @@ namespace BBWYB.Client.ViewModels { App.Current.Dispatcher.Invoke(() => { - //MenuList.Add(new MenuModel() - //{ - // Name = "订单管理", - // ChildList = new List() - // { - // new MenuModel(){ Name="最近订单",Url="/Views/Order/OrderList.xaml" } - // } - //}); + MenuList.Add(new MenuModel() + { + Name = "订单管理", + ChildList = new List() + { + new MenuModel(){ Name="订单列表",Url="/Views/Order/OrderList.xaml" } + } + }); MenuList.Add(new MenuModel() { Name = "商品管理", ChildList = new List() { - new MenuModel(){ Name="货源管理",Url="/Views/Ware/WareManager.xaml" }, - new MenuModel(){ Name="产品库存",Url="/Views/Ware/WareStock.xaml" } + new MenuModel(){ Name="货源管理",Url="/Views/Ware/WareManager.xaml" } + } + }); + MenuList.Add(new MenuModel() + { + Name = "设置", + ChildList = new List() + { + new MenuModel(){ Name="店铺设置",Url="/Views/Setting/ShopSetting.xaml" }, + //new MenuModel(){ Name="团队配置",Url="/Views/Setting/TeamSetting.xaml" } } }); - //MenuList.Add(new MenuModel() - //{ - // Name = "设置", - // ChildList = new List() - // { - // new MenuModel(){ Name="店铺设置",Url="/Views/Setting/ShopSetting.xaml" }, - // new MenuModel(){ Name="团队配置",Url="/Views/Setting/TeamSetting.xaml" } - // } - //}); }); } @@ -204,12 +203,10 @@ namespace BBWYB.Client.ViewModels { ChooseShop(selectShop.Shop, true); var vm = App.Current.Resources["Locator"] as ViewModelLocator; - //if (vm.IsCreateOrderList) - // vm.OrderList.Refresh(); + if (vm.IsCreateOrderList) + vm.OrderVM.Refresh(); if (vm.IsCreateWareManager) vm.WareManager.Refresh(); - if (vm.IsCreateWareStock) - vm.WareStock.Refresh(); } } catch (Exception ex) diff --git a/BBWYB.Client/ViewModels/Order/OrderViewModel.cs b/BBWYB.Client/ViewModels/Order/OrderViewModel.cs new file mode 100644 index 0000000..05dc7c8 --- /dev/null +++ b/BBWYB.Client/ViewModels/Order/OrderViewModel.cs @@ -0,0 +1,150 @@ +using BBWYB.Client.APIServices; +using BBWYB.Client.Models; +using BBWYB.Client.Views.Order; +using BBWYB.Common.Extensions; +using BBWYB.Common.Models; +using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using SJ.Controls; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Input; + +namespace BBWYB.Client.ViewModels +{ + public class OrderViewModel : BaseVM, IDenpendency + { + private bool isLoading; + private DateTime startDate; + private DateTime endDate; + private int pageIndex = 1; + private int pageSize = 10; + private long orderCount; + private OrderState? orderState; + private string searchSku; + private string searchProductId; + private string searchOrderId; + private string searchClientOrderId; + private string searchSourceShopName; + private string searchSourceSku; + private bool excludeCanceled; + private GlobalContext globalContext; + private OrderService orderService; + + public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } } + + public DateTime StartDate { get => startDate; set { SetProperty(ref startDate, value); } } + + public DateTime EndDate { get => endDate; set { SetProperty(ref endDate, value); } } + public int PageIndex { get => pageIndex; set { SetProperty(ref pageIndex, value); } } + public int PageSize { get => pageSize; set { SetProperty(ref pageSize, value); } } + public long OrderCount { get => orderCount; set { SetProperty(ref orderCount, value); } } + public OrderState? OrderState { get => orderState; set { SetProperty(ref orderState, value); } } + public string SearchSku { get => searchSku; set { SetProperty(ref searchSku, value); } } + public string SearchProductId { get => searchProductId; set { SetProperty(ref searchProductId, value); } } + public string SearchOrderId { get => searchOrderId; set { SetProperty(ref searchOrderId, value); } } + public string SearchClientOrderId { get => searchClientOrderId; set { SetProperty(ref searchClientOrderId, value); } } + public string SearchSourceShopName { get => searchSourceShopName; set { SetProperty(ref searchSourceShopName, value); } } + public string SearchSourceSku { get => searchSourceSku; set { SetProperty(ref searchSourceSku, value); } } + public bool ExcludeCanceled { get => excludeCanceled; set { SetProperty(ref excludeCanceled, value); } } + public IList OrderList { get; set; } + + public ICommand SetSearchDateCommand { get; set; } + public ICommand SetOrderStateCommand { get; set; } + public ICommand OrderPageIndexChangedCommand { get; set; } + + public OrderViewModel(GlobalContext globalContext, OrderService orderService) + { + OrderList = new ObservableCollection(); + SetOrderStateCommand = new RelayCommand(SetOrderState); + SetSearchDateCommand = new RelayCommand(d => + { + EndDate = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now; + StartDate = DateTime.Now.Date.AddDays(d * -1); + PageIndex = 1; + Task.Factory.StartNew(() => LoadOrder(PageIndex)); //点击日期查询订单 + }); + OrderPageIndexChangedCommand = new RelayCommand(p => + { + Task.Factory.StartNew(() => LoadOrder(p.PageIndex)); + }); + PageSize = 10; + EndDate = DateTime.Now; + StartDate = DateTime.Now.Date; + this.globalContext = globalContext; + this.orderService = orderService; + } + + private void LoadOrder(int pageIndex) + { + IsLoading = true; + var response = orderService.GetOrderList(SearchOrderId, StartDate, EndDate, OrderState, SearchProductId, SearchSku, SearchClientOrderId, SearchSourceShopName, SearchSourceSku, PageIndex, PageSize, globalContext.User.Shop.ShopId, ExcludeCanceled); + + if (!response.Success) + { + IsLoading = false; + App.Current.Dispatcher.Invoke(() => + { + MessageBox.Show(response.Msg, "提示"); + return; + }); + } + IsLoading = false; + OrderCount = response.Data.Count; + if (response.Data.Items == null || response.Data.Items.Count() == 0) + return; + + var list = response.Data.Items.Map>(); + App.Current.Dispatcher.Invoke(() => + { + foreach (var o in list) + { + OrderList.Clear(); + foreach (var order in list) + { + order.LocalConvert(); + OrderList.Add(order); + } + WeakReferenceMessenger.Default.Send(new Message_OrderListScrollToTop(null)); + } + }); + } + + /// + /// 通过订单状态 筛选订单数据 + /// + /// 订单状态 + public void SetOrderState(OrderState? orderState) + { + InitSearchParam(orderState == null); //初始化查询参数 orderState == null 全部 + this.OrderState = orderState; + Task.Factory.StartNew(() => LoadOrder(1)); //选择状态查询订单 + } + + /// + /// 初始化查询参数 + /// + /// + private void InitSearchParam(bool isInitDate = false) + { + this.OrderState = null; + SearchOrderId = string.Empty; + SearchSku = string.Empty; + SearchProductId = string.Empty; + SearchClientOrderId = string.Empty; + SearchSourceShopName = string.Empty; + SearchSourceSku = string.Empty; + if (isInitDate) + { + EndDate = DateTime.Now; + StartDate = DateTime.Now.Date; + } + PageIndex = 1; + } + } +} + diff --git a/BBWYB.Client/ViewModels/Vender/ShopSettingViewModel.cs b/BBWYB.Client/ViewModels/Vender/ShopSettingViewModel.cs new file mode 100644 index 0000000..cce6ca2 --- /dev/null +++ b/BBWYB.Client/ViewModels/Vender/ShopSettingViewModel.cs @@ -0,0 +1,100 @@ +using BBWYB.Client.APIServices; +using BBWYB.Client.Models; +using BBWYB.Common.Models; +using CommunityToolkit.Mvvm.Input; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Input; + +namespace BBWYB.Client.ViewModels +{ + public class ShopSettingViewModel : BaseVM, IDenpendency + { + private bool isLoading; + private GlobalContext globalContext; + private ShopService shopService; + private PurchaseAccount purchaseAccount; + private Platform purchasePlatform; + + public ICommand SaveCommand { get; set; } + + public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } } + + public Platform PurchasePlatform + { + get => purchasePlatform; set + { + if (SetProperty(ref purchasePlatform, value)) + { + OnPurchasePlatformChanged(); + } + } + } + + public PurchaseAccount PurchaseAccount { get => purchaseAccount; set { SetProperty(ref purchaseAccount, value); } } + + + public ShopSettingViewModel(GlobalContext globalContext, ShopService shopService) + { + this.globalContext = globalContext; + this.shopService = shopService; + SaveCommand = new RelayCommand(Save); + } + + private void OnPurchasePlatformChanged() + { + var pa = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(pa => pa.PurchasePlatformId == PurchasePlatform); + if (pa == null) + { + pa = new PurchaseAccount() + { + PurchasePlatformId = PurchasePlatform, + }; + globalContext.User.Shop.PurchaseAccountList.Add(pa); + } + + this.PurchaseAccount = pa; + } + + protected override void Load() + { + if (globalContext.User.Shop.PurchaseAccountList == null) + globalContext.User.Shop.PurchaseAccountList = new List(); + + IsLoading = false; + PurchasePlatform = Platform.阿里巴巴; + } + + private void Save() + { + if (string.IsNullOrEmpty(PurchaseAccount.AppKey) || + string.IsNullOrEmpty(PurchaseAccount.AppSecret) || + string.IsNullOrEmpty(PurchaseAccount.AppToken) || + string.IsNullOrEmpty(PurchaseAccount.AccountName)) + { + MessageBox.Show("采购信息不能为空", "保存店铺设置"); + return; + } + + PurchaseAccount.AppKey = PurchaseAccount.AppKey.Trim(); + PurchaseAccount.AppSecret = PurchaseAccount.AppSecret.Trim(); + PurchaseAccount.AppToken = PurchaseAccount.AppToken.Trim(); + PurchaseAccount.AccountName = PurchaseAccount.AccountName.Trim(); + + IsLoading = true; + Task.Factory.StartNew(() => shopService.SaveShopSetting(globalContext.User.Shop.ShopId, PurchaseAccount)).ContinueWith(r => + { + IsLoading = false; + var response = r.Result; + if (!response.Success) + { + App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "保存店铺设置")); + return; + } + PurchaseAccount.Id = response.Data; + }); + } + } +} diff --git a/BBWYB.Client/ViewModels/ViewModelLocator.cs b/BBWYB.Client/ViewModels/ViewModelLocator.cs index 4c77883..e82d174 100644 --- a/BBWYB.Client/ViewModels/ViewModelLocator.cs +++ b/BBWYB.Client/ViewModels/ViewModelLocator.cs @@ -42,25 +42,36 @@ namespace BBWYB.Client.ViewModels } } - public WareStockViewModel WareStock + public BindingPurchaseProductViewModel BindingPurchaseProduct { get { - IsCreateWareStock = true; using (var s = sp.CreateScope()) { - return s.ServiceProvider.GetRequiredService(); + return s.ServiceProvider.GetRequiredService(); } } } - public BindingPurchaseProductViewModel BindingPurchaseProduct + public OrderViewModel OrderVM { get { + IsCreateOrderList = true; using (var s = sp.CreateScope()) { - return s.ServiceProvider.GetRequiredService(); + return s.ServiceProvider.GetRequiredService(); + } + } + } + + public ShopSettingViewModel ShopSetting + { + get + { + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); } } } diff --git a/BBWYB.Client/ViewModels/Ware/WareStockViewModel.cs b/BBWYB.Client/ViewModels/Ware/WareStockViewModel.cs deleted file mode 100644 index fd57748..0000000 --- a/BBWYB.Client/ViewModels/Ware/WareStockViewModel.cs +++ /dev/null @@ -1,339 +0,0 @@ -using BBWYB.Client.APIServices; -using BBWYB.Client.Models; -using BBWYB.Client.Views.Ware; -using BBWYB.Common.Extensions; -using BBWYB.Common.Models; -using CommunityToolkit.Mvvm.Input; -using CommunityToolkit.Mvvm.Messaging; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Input; - -namespace BBWYB.Client.ViewModels -{ - public class WareStockViewModel : BaseVM, IDenpendency - { - #region Property - private PurchaseOrderService purchaseOrderService; - private ProductService productService; - private GlobalContext globalContext; - - private bool isLoading; - private int pageIndex = 1; - private int pageSize; - private int productCount; - private string searchProductItem; - private string searchSpu; - private string searchSku; - private string searchPurchaseOrder; - - public bool IsLoading { get => isLoading; set { SetProperty(ref isLoading, value); } } - public int PageIndex { get => pageIndex; set { SetProperty(ref pageIndex, value); } } - public int PageSize { get => pageSize; set { SetProperty(ref pageSize, value); } } - public int ProductCount { get => productCount; set { SetProperty(ref productCount, value); } } - public string SearchProductItem { get => searchProductItem; set { SetProperty(ref searchProductItem, value); } } - public string SearchSpu { get => searchSpu; set { SetProperty(ref searchSpu, value); } } - public string SearchSku { get => searchSku; set { SetProperty(ref searchSku, value); } } - public string SearchPurchaseOrder { get => searchPurchaseOrder; set { SetProperty(ref searchPurchaseOrder, value); } } - - public IList ProductList { get; set; } - #endregion - - #region ICommand - public ICommand SearchCommand { get; set; } - public ICommand ProductPageIndexChangedCommand { get; set; } - public ICommand AddPurchaserOrderCommand { get; set; } - public ICommand EditPurchaseOrderCommand { get; set; } - public ICommand DeletePurchaseOrderCommand { get; set; } - public ICommand SavePurchaseOrderCommand { get; set; } - public ICommand SwitchStorageTypeCommand { get; set; } - #endregion - - #region Method - public WareStockViewModel(GlobalContext globalContext, PurchaseOrderService purchaseOrderService, ProductService productService) - { - this.globalContext = globalContext; - this.purchaseOrderService = purchaseOrderService; - this.productService = productService; - ProductList = new ObservableCollection(); - - SearchCommand = new RelayCommand(() => - { - PageIndex = 1; - Task.Factory.StartNew(() => LoadWare(1)); - }); - ProductPageIndexChangedCommand = new RelayCommand((p) => Task.Factory.StartNew(() => LoadWare(p.PageIndex))); - SwitchStorageTypeCommand = new RelayCommand(SwitchStorageType); - AddPurchaserOrderCommand = new RelayCommand(AddPurchaserOrder); - EditPurchaseOrderCommand = new RelayCommand(po => po.IsEdit = true); - DeletePurchaseOrderCommand = new RelayCommand(DeletePurchaseOrder); - SavePurchaseOrderCommand = new RelayCommand(SavePurchaseOrder); - Task.Factory.StartNew(() => LoadWare(1)); - } - - public override void Refresh() - { - ProductList.Clear(); - ProductCount = 0; - PageSize = 1; - } - private void LoadWare(int pageIndex) - { - if (!string.IsNullOrEmpty(SearchSpu) && !string.IsNullOrEmpty(SearchSku)) - { - App.Current.Dispatcher.Invoke(() => MessageBox.Show("SPU和SKU条件不能共存")); - return; - } - - App.Current.Dispatcher.Invoke(() => ProductList.Clear()); - - IsLoading = true; - - #region 加载JD商品列表 - ApiResponse productApiResponse = null; - if (!string.IsNullOrEmpty(SearchSku)) - { - var skuResponse = productService.GetProductSkuList(string.Empty, SearchSku); - if (skuResponse.Success) - { - if (skuResponse.Data.Count == 0) - { - IsLoading = false; - return; - } - productApiResponse = productService.GetProductList(skuResponse.Data.Items[0].ProductId, string.Empty, string.Empty, pageIndex); - } - else - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(skuResponse.Msg, "加载sku")); - return; - } - } - else - { - productApiResponse = productService.GetProductList(SearchSpu, string.Empty, SearchProductItem, pageIndex); - } - - if (!productApiResponse.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(productApiResponse.Msg, "加载产品")); - return; - } - var productList = productApiResponse.Data.Items; - ProductCount = productApiResponse.Data.Count; - if (ProductCount == 0) - { - IsLoading = false; - return; - } - #endregion - - #region 加载JDSKU列表 - var waitList = new List(); - foreach (var p in productList) - { - var ewh = new ManualResetEvent(false); - waitList.Add(ewh); - Task.Factory.StartNew(() => LoadSku(p, ewh)); - } - WaitHandle.WaitAll(waitList.ToArray(), 8000); - #endregion - - #region 加载采购单 - LoadPurchaseOrder(productList, StorageType.京仓); - #endregion - - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - foreach (var p in productList) - ProductList.Add(p); - //使滚动条保持顶部 - //Messenger.Default.Send(string.Empty, "WareStock_ProductListScrollToTop"); - WeakReferenceMessenger.Default.Send(new Message_WareStock_ProductListScrollToTop(null)); - }); - - IsLoading = false; - } - - private void LoadSku(Product product, EventWaitHandle ewh) - { - try - { - var skuResponse = productService.GetProductSkuList(product.Id, string.Empty); - if (!skuResponse.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(skuResponse.Msg, "加载sku")); - return; - } - foreach (var sku in skuResponse.Data.Items) - { - sku.StorageList.Add(new StorageModel() - { - ProductId = product.Id, - SkuId = sku.Id, - StorageType = StorageType.京仓 - }); - sku.StorageList.Add(new StorageModel() - { - ProductId = product.Id, - SkuId = sku.Id, - StorageType = StorageType.云仓 - }); - sku.StorageList.Add(new StorageModel() - { - ProductId = product.Id, - SkuId = sku.Id, - StorageType = StorageType.本地自发 - }); - sku.SelectedStorageModel = sku.StorageList[0]; - } - product.SkuList = skuResponse.Data.Items; - } - catch (Exception ex) - { - - } - finally - { - ewh.Set(); - } - } - - private void LoadPurchaseOrder(IList productList, StorageType storageType) - { - var skuList = new List(); - foreach (var p in productList) - skuList.AddRange(p.SkuList); - LoadPurchaseOrder(skuList, storageType); - } - - private void LoadPurchaseOrder(IList skuList, StorageType storageType) - { - App.Current.Dispatcher.Invoke(() => - { - foreach (var s in skuList) - s.PurchaseOrderList.Clear(); - }); - var response = purchaseOrderService.GetList(skuList.Select(s => s.Id).ToList(), storageType, globalContext.User.Shop.ShopId); - if (response.Success) - { - var purchaseOrderList = response.Data; - App.Current.Dispatcher.Invoke(() => - { - foreach (var s in skuList) - { - var currentSkuPurchaseOrderList = purchaseOrderList.Where(po => po.SkuId == s.Id).Map>(); - foreach (var po in currentSkuPurchaseOrderList) - s.PurchaseOrderList.Add(po); - } - }); - } - } - - private void SwitchStorageType(StorageModel storageModel) - { - var product = ProductList.FirstOrDefault(p => p.Id == storageModel.ProductId); - var sku = product.SkuList.FirstOrDefault(s => s.Id == storageModel.SkuId); - if (sku.SelectedStorageModel == storageModel) - return; - sku.SelectedStorageModel = storageModel; - IsLoading = true; - Task.Factory.StartNew(() => - { - LoadPurchaseOrder(new List() { sku }, storageModel.StorageType); - IsLoading = false; - }); - } - - private void AddPurchaserOrder(Product product) - { - foreach (var sku in product.SkuList) - sku.PurchaseOrderList.Add(new PurchaseOrder - { - IsEdit = true, - SkuId = sku.Id, - ProductId = product.Id, - UserId = globalContext.User.Id, - StorageType = sku.SelectedStorageModel.StorageType, - PurchaseMethod = PurchaseMethod.线下采购, - CreateTime = DateTime.Now, - ShopId = globalContext.User.Shop.ShopId, - PurchasePlatform = Platform.阿里巴巴 - }); - } - - private void DeletePurchaseOrder(PurchaseOrder purchaseOrder) - { - var product = ProductList.FirstOrDefault(p => p.Id == purchaseOrder.ProductId); - var sku = product.SkuList.FirstOrDefault(s => s.Id == purchaseOrder.SkuId); - if (purchaseOrder.Id == 0) - { - sku.PurchaseOrderList.Remove(purchaseOrder); - } - else - { - if (MessageBox.Show("确定要删除采购单吗?", "确认", MessageBoxButton.OKCancel) != MessageBoxResult.OK) - return; - IsLoading = true; - Task.Factory.StartNew(() => - { - var response = purchaseOrderService.DeletePurchaseOrder(purchaseOrder.Id); - IsLoading = false; - App.Current.Dispatcher.BeginInvoke((Action)delegate - { - if (response.Success) - sku.PurchaseOrderList.Remove(purchaseOrder); - else - MessageBox.Show(response.Msg, "删除采购单"); - }); - }); - } - } - - private void SavePurchaseOrder(PurchaseOrder purchaseOrder) - { - if (purchaseOrder.PurchasePlatform == null || - string.IsNullOrEmpty(purchaseOrder.PurchaseOrderId) || - purchaseOrder.PurchaseQuantity == 0) - { - MessageBox.Show("缺少必要信息", "保存采购单"); - return; - } - - if (purchaseOrder.RemainingQuantity > purchaseOrder.PurchaseQuantity) - { - MessageBox.Show("剩余库存不成超过采购数量", "保存采购单"); - return; - } - - purchaseOrder.IsEdit = false; - var product = ProductList.FirstOrDefault(p => p.Id == purchaseOrder.ProductId); - var sku = product.SkuList.FirstOrDefault(s => s.Id == purchaseOrder.SkuId); - IsLoading = true; - Task.Factory.StartNew(() => - { - var response = purchaseOrder.Id == 0 ? purchaseOrderService.AddPurchaseOrder(purchaseOrder) : - purchaseOrderService.EditPurchaseOrder(purchaseOrder); - IsLoading = false; - if (response.Success) - { - if (purchaseOrder.Id == 0) - LoadPurchaseOrder(new List() { sku }, purchaseOrder.StorageType.Value); - } - else - { - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "保存采购单")); - } - }); - } - #endregion - } -} diff --git a/BBWYB.Client/Views/Order/OrderList.xaml b/BBWYB.Client/Views/Order/OrderList.xaml new file mode 100644 index 0000000..cd55d66 --- /dev/null +++ b/BBWYB.Client/Views/Order/OrderList.xaml @@ -0,0 +1,837 @@ + + + 0 + 1 + 2 + 6 + 14 + 29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +