步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
8.1 KiB

using BBWY.Client.APIServices;
using BBWY.Client.Models;
using BBWY.Client.Views.BatchPurchase;
using BBWY.Common.Extensions;
using BBWY.Common.Models;
using BBWY.Controls;
using GalaSoft.MvvmLight.Command;
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 BBWY.Client.ViewModels
{
public class BatchPurchaseOrderListViewModel : BaseVM, IDenpendency
{
private BatchPurchaseService batchPurchaseService;
private GlobalContext globalContext;
private DateTime startDate;
private DateTime endDate;
private string searchPurchaseOrderId;
private string searchPurchaseName;
private string searchProductId;
private string searchSkuId;
private PurchaseOrderState? purchaseOrderState;
private int pageIndex;
private int pageSize;
private bool isLoading;
private long totalCount;
public ICommand SearchPurchaseOrderCommand { get; set; }
public ICommand OpenCreateNewPurchaseOrderDialogCommand { get; set; }
public ICommand SetSearchDateCommand { get; set; }
public ICommand SetPurchaseOrderStateCommand { get; set; }
public ICommand OnPageIndexChangedCommand { get; set; }
public ICommand PayPurchaseOrderCommand { get; set; }
public ICommand CancelPurchaseOrderCommand { get; set; }
public DateTime StartDate { get => startDate; set { Set(ref startDate, value); } }
public DateTime EndDate { get => endDate; set { Set(ref endDate, value); } }
public string SearchPurchaseOrderId { get => searchPurchaseOrderId; set { Set(ref searchPurchaseOrderId, value); } }
public string SearchPurchaseName { get => searchPurchaseName; set { Set(ref searchPurchaseName, value); } }
public string SearchProductId { get => searchProductId; set { Set(ref searchProductId, value); } }
public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } }
public PurchaseOrderState? PurchaseOrderState { get => purchaseOrderState; set { Set(ref purchaseOrderState, value); } }
public int PageIndex { get => pageIndex; set { Set(ref pageIndex, value); } }
public int PageSize { get => pageSize; set { Set(ref pageSize, value); } }
public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }
public long TotalCount { get => totalCount; set { Set(ref totalCount, value); } }
public IList<PurchaseOrderV2> PurchaseOrderList { get; set; }
public BatchPurchaseOrderListViewModel(GlobalContext globalContext, BatchPurchaseService batchPurchaseService)
{
this.batchPurchaseService = batchPurchaseService;
SetSearchDateCommand = new RelayCommand<int>(SetSearchDate);
SetPurchaseOrderStateCommand = new RelayCommand<PurchaseOrderState?>(SetPurchaseOrderState);
SearchPurchaseOrderCommand = new RelayCommand(InitQueryPurchaseOrder);
OpenCreateNewPurchaseOrderDialogCommand = new RelayCommand(OpenCreateNewPurchaseOrderDialog);
OnPageIndexChangedCommand = new RelayCommand<PageArgs>(OnPageIndexChanged);
PayPurchaseOrderCommand = new RelayCommand<object>(PayPurchaseOrder);
CancelPurchaseOrderCommand = new RelayCommand<object>(CancelPurchaseOrder);
PageSize = 10;
this.globalContext = globalContext;
EndDate = DateTime.Now.Date;
StartDate = DateTime.Now.Date.AddDays(-15);
PurchaseOrderList = new ObservableCollection<PurchaseOrderV2>();
InitQueryPurchaseOrder();
}
private void CancelPurchaseOrder(object obj)
{
MessageBoxResult result = MessageBox.Show("确定取消订单?", "提示",
MessageBoxButton.YesNo,
MessageBoxImage.Warning);
if (result != MessageBoxResult.Yes) return;
//;
var parameters = (object[])obj;
var PurchasePlatform = (Platform)parameters[0];//采购平台
var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(p => p.PurchasePlatformId == PurchasePlatform);
var res = batchPurchaseService.CancelOrder(parameters[1].ToString(), purchaseAccount, "");
if (res.Success)
{
Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex));
return;
}
if (res.Data != null)
MessageBox.Show(res.Data.Msg);
}
private void PayPurchaseOrder(object obj)
{
MessageBoxResult result = MessageBox.Show("确定支付货款?", "提示",
MessageBoxButton.YesNo,
MessageBoxImage.Warning);
if (result != MessageBoxResult.Yes) return;
var parameters = (object[])obj;
var PurchasePlatform = (Platform)parameters[0];//采购平台
var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(p => p.PurchasePlatformId == PurchasePlatform);
var res = batchPurchaseService.PayOrder(parameters[1].ToString(), PurchasePlatform, purchaseAccount);
if (res.Success)
{
Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex));
return;
}
if (res.Data != null)
MessageBox.Show(res.Data.Msg);
}
private void InitQueryPurchaseOrder()
{
PageIndex = 1;
Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex));
}
private void SetPurchaseOrderState(PurchaseOrderState? purchaseOrderState)
{
this.PurchaseOrderState = purchaseOrderState;
InitQueryPurchaseOrder();
}
private void SetSearchDate(int d)
{
EndDate = d == 1 ? DateTime.Now.Date.AddDays(-1) : DateTime.Now;
StartDate = DateTime.Now.Date.AddDays(d * -1);
InitQueryPurchaseOrder();
}
private void QueryPurchaseOrder(int pageIndex)
{
IsLoading = true;
var response = batchPurchaseService.GetPurchaseOrderList(SearchProductId,
SearchSkuId,
SearchPurchaseName,
SearchPurchaseOrderId,
pageIndex,
PageSize,
StartDate,
EndDate,
this.PurchaseOrderState);
IsLoading = false;
if (!response.Success)
{
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示"));
return;
}
TotalCount = response.Data.Count;
App.Current.Dispatcher.Invoke(() => PurchaseOrderList.Clear());
if (response.Data.ItemList == null || response.Data.ItemList.Count() == 0)
return;
var list = response.Data.ItemList.Map<IList<PurchaseOrderV2>>();
App.Current.Dispatcher.Invoke(() =>
{
foreach (var p in list)
PurchaseOrderList.Add(p);
});
}
private void OpenCreateNewPurchaseOrderDialog()
{
var createWindow = new BatchCreateNewPurchaseOrder();
if (createWindow.ShowDialog() == true)
{
InitQueryPurchaseOrder(); //刷新采购单页面
}
}
private void OnPageIndexChanged(PageArgs pageArgs)
{
Task.Factory.StartNew(() => QueryPurchaseOrder(pageArgs.PageIndex));
}
}
}