步步为盈
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.

199 lines
8.2 KiB

2 years ago
using BBWY.Client.APIServices;
using BBWY.Client.Models;
using BBWY.Client.Views.BatchPurchase;
2 years ago
using BBWY.Common.Extensions;
2 years ago
using BBWY.Common.Models;
2 years ago
using BBWY.Controls;
2 years ago
using GalaSoft.MvvmLight.Command;
using System;
2 years ago
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
2 years ago
using System.Threading.Tasks;
2 years ago
using System.Windows;
2 years ago
using System.Windows.Input;
namespace BBWY.Client.ViewModels
{
public class BatchPurchaseOrderListViewModel : BaseVM, IDenpendency
{
2 years ago
private BatchPurchaseService batchPurchaseService;
2 years ago
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;
2 years ago
private bool isLoading;
private long totalCount;
2 years ago
public ICommand SearchPurchaseOrderCommand { get; set; }
public ICommand OpenCreateNewPurchaseOrderDialogCommand { get; set; }
public ICommand SetSearchDateCommand { get; set; }
public ICommand SetPurchaseOrderStateCommand { get; set; }
2 years ago
public ICommand OnPageIndexChangedCommand { get; set; }
2 years ago
public ICommand PayPurchaseOrderCommand { get; set; }
2 years ago
public ICommand CancelPurchaseOrderCommand { get; set; }
2 years ago
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); } }
2 years ago
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)
2 years ago
{
2 years ago
this.batchPurchaseService = batchPurchaseService;
2 years ago
SetSearchDateCommand = new RelayCommand<int>(SetSearchDate);
SetPurchaseOrderStateCommand = new RelayCommand<PurchaseOrderState?>(SetPurchaseOrderState);
SearchPurchaseOrderCommand = new RelayCommand(InitQueryPurchaseOrder);
OpenCreateNewPurchaseOrderDialogCommand = new RelayCommand(OpenCreateNewPurchaseOrderDialog);
2 years ago
OnPageIndexChangedCommand = new RelayCommand<PageArgs>(OnPageIndexChanged);
2 years ago
PayPurchaseOrderCommand = new RelayCommand<object>(PayPurchaseOrder);
CancelPurchaseOrderCommand = new RelayCommand<object>(CancelPurchaseOrder);
2 years ago
PageSize = 10;
this.globalContext = globalContext;
EndDate = DateTime.Now.Date;
StartDate = DateTime.Now.Date.AddDays(-15);
2 years ago
PurchaseOrderList = new ObservableCollection<PurchaseOrderV2>();
2 years ago
InitQueryPurchaseOrder();
}
2 years ago
2 years ago
private void CancelPurchaseOrder(object obj)
{
MessageBoxResult result = MessageBox.Show("确定取消订单?", "提示",
MessageBoxButton.YesNo,
MessageBoxImage.Warning);
if (result != MessageBoxResult.Yes) return;
//;
2 years ago
var parameters = (object[])obj;
2 years ago
2 years ago
var PurchasePlatform = (Platform)parameters[0];//采购平台
2 years ago
2 years ago
var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(p => p.PurchasePlatformId == PurchasePlatform);
2 years ago
var res = batchPurchaseService.CancelOrder(parameters[1].ToString(), PurchasePlatform, purchaseAccount, "");
if (res.Success)
{
Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex));
return;
}
2 years ago
if (res.Data != null)
MessageBox.Show(res.Data.Msg);
2 years ago
}
private void PayPurchaseOrder(object obj)
{
2 years ago
MessageBoxResult result = MessageBox.Show("确定支付货款?", "提示",
2 years ago
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);
2 years ago
var res = batchPurchaseService.PayOrder(parameters[1].ToString(), PurchasePlatform, purchaseAccount);
2 years ago
if (res.Success)
{
Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex));
return;
}
2 years ago
if (res.Data != null)
MessageBox.Show(res.Data.Msg);
2 years ago
}
2 years ago
private void InitQueryPurchaseOrder()
{
PageIndex = 1;
Task.Factory.StartNew(() => QueryPurchaseOrder(PageIndex));
}
private void SetPurchaseOrderState(PurchaseOrderState? purchaseOrderState)
2 years ago
{
2 years ago
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)
{
2 years ago
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;
}
2 years ago
2 years ago
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);
});
2 years ago
}
private void OpenCreateNewPurchaseOrderDialog()
{
var createWindow = new BatchCreateNewPurchaseOrder();
if (createWindow.ShowDialog() == true)
{
InitQueryPurchaseOrder(); //刷新采购单页面
}
2 years ago
}
2 years ago
private void OnPageIndexChanged(PageArgs pageArgs)
{
Task.Factory.StartNew(() => QueryPurchaseOrder(pageArgs.PageIndex));
}
2 years ago
}
}