From 8370a1187fbaa50e527b74325eaa021bb9496e5d Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Thu, 27 Apr 2023 17:06:24 +0800 Subject: [PATCH] 1 --- .../PurchaseScheme.cs | 0 .../PurchaseSchemeProduct.cs | 0 .../PurchaseSchemeProductSku.cs | 0 .../PurchaseScheme/PurchaseSchemeSkuGroup.cs | 28 ++++ .../Order/ChoosePurchaseSchemeViewModel.cs | 71 +++++---- .../Purchase/OnlinePurchaseViewModel.cs | 6 +- .../Views/Order/ChoosePurchaseScheme.xaml | 149 ++++++++++++++++-- .../Views/Purchase/OnlinePurchase.xaml.cs | 5 +- 8 files changed, 213 insertions(+), 46 deletions(-) rename BBWYB.Client/Models/{Product => PurchaseScheme}/PurchaseScheme.cs (100%) rename BBWYB.Client/Models/{Product => PurchaseScheme}/PurchaseSchemeProduct.cs (100%) rename BBWYB.Client/Models/{Product => PurchaseScheme}/PurchaseSchemeProductSku.cs (100%) create mode 100644 BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeSkuGroup.cs diff --git a/BBWYB.Client/Models/Product/PurchaseScheme.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs similarity index 100% rename from BBWYB.Client/Models/Product/PurchaseScheme.cs rename to BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs diff --git a/BBWYB.Client/Models/Product/PurchaseSchemeProduct.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs similarity index 100% rename from BBWYB.Client/Models/Product/PurchaseSchemeProduct.cs rename to BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs diff --git a/BBWYB.Client/Models/Product/PurchaseSchemeProductSku.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProductSku.cs similarity index 100% rename from BBWYB.Client/Models/Product/PurchaseSchemeProductSku.cs rename to BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProductSku.cs diff --git a/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeSkuGroup.cs b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeSkuGroup.cs new file mode 100644 index 0000000..c4a066c --- /dev/null +++ b/BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeSkuGroup.cs @@ -0,0 +1,28 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System; +using System.Collections.Generic; + +namespace BBWYB.Client.Models +{ + public class PurchaseSchemeSkuGroup : ObservableObject + { + + private PurchaseScheme selectedScheme; + public string SkuId { get; set; } + + public IList SchemeList { get; set; } + + public PurchaseScheme SelectedScheme + { + get => selectedScheme; set + { + if (SetProperty(ref selectedScheme, value)) + { + OnSchemeChanged?.Invoke(this); + } + } + } + + public Action OnSchemeChanged { get; set; } + } +} diff --git a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs index c39638d..7a62939 100644 --- a/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs +++ b/BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs @@ -2,6 +2,7 @@ using BBWYB.Client.Models; using BBWYB.Client.Views.Order; using BBWYB.Client.Views.Purchase; +using BBWYB.Common.Extensions; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using System.Collections.Generic; @@ -18,30 +19,24 @@ namespace BBWYB.Client.ViewModels private PurchaseService purchaseService; private GlobalContext globalContext; private Order order; - private bool noPurchaser; - - public IList PurchaserList { get; set; } - public bool NoPurchaser { get => noPurchaser; set { SetProperty(ref noPurchaser, value); } } - - //public ICommand DeleteCommand { get; set; } - //public ICommand EditCommand { get; set; } - public ICommand PreviewPurchaseCommand { get; set; } + private bool freeChoice; + public IList SkuGroup { get; set; } + public ICommand ConfirmCommand { get; set; } + public bool FreeChoice { get => freeChoice; set { SetProperty(ref freeChoice, value); } } public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext) { this.purchaseService = purchaseService; this.globalContext = globalContext; - this.PurchaserList = new ObservableCollection(); - //DeleteCommand = new RelayCommand(Delete); - //EditCommand = new RelayCommand(Edit); - PreviewPurchaseCommand = new RelayCommand(PreviewPurchase); + this.SkuGroup = new ObservableCollection(); + ConfirmCommand = new RelayCommand(Confirm); } protected override void Load() { - Task.Factory.StartNew(() => LoadPurchaser()); + Task.Factory.StartNew(() => LoadScheme()); } public void SetData(Order order) @@ -49,39 +44,57 @@ namespace BBWYB.Client.ViewModels this.order = order; } - public void LoadPurchaser() + private void LoadScheme() { var skuIdList = order.ItemList.Select(osku => osku.SkuId).ToList(); - var purchaserResponse = purchaseService.GetSharePurchaser(skuIdList, globalContext.User.Shop.ShopId); - if (!purchaserResponse.Success) + var response = purchaseService.GetPurchaseSchemeList(skuIdList, shopId: globalContext.User.Shop.ShopId); + if (!response.Success) { - App.Current.Dispatcher.Invoke(() => MessageBox.Show(purchaserResponse.Msg, "获取采购商")); + App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); return; } - NoPurchaser = (purchaserResponse.Data?.Count() ?? 0) == 0; - if (purchaserResponse.Data != null && purchaserResponse.Data.Count() > 0) + + if (response.Data == null || response.Data.Count() == 0) + return; + + var groups = response.Data.GroupBy(s => s.SkuId); + App.Current.Dispatcher.Invoke(() => { - App.Current.Dispatcher.Invoke(() => + foreach (var g in groups) { - foreach (var p in purchaserResponse.Data) PurchaserList.Add(p); - }); - } - + var skuGroup = new PurchaseSchemeSkuGroup() + { + SkuId = g.Key, + SchemeList = g.Select(p => PurchaseScheme.Convert(p)).ToList() + }; + skuGroup.OnSchemeChanged = OnSchemeChanged; + SkuGroup.Add(skuGroup); + } + }); } - public void PreviewPurchase(Purchaser purchaser) + private void Confirm() { - var purchaseAccount = globalContext.User.Shop.PurchaseAccountList.FirstOrDefault(pa => pa.PurchasePlatformId == purchaser.Platform); - if (purchaseAccount == null) + if (SkuGroup.Any(s => s.SelectedScheme == null)) { - MessageBox.Show($"缺少{purchaser.Platform}的采购账号", "提示"); + App.Current.Dispatcher.Invoke(() => MessageBox.Show("采购方案选择不完整", "提示")); return; } - var p = new OnlinePurchase(order, purchaser, purchaseAccount); + var schemeList = new List(); + foreach (var g in SkuGroup) + { + schemeList.Add(g.SelectedScheme); + } + + var p = new OnlinePurchase(order, schemeList); p.ShowDialog(); // GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(null, "ChoosePurchaseScheme_Close"); WeakReferenceMessenger.Default.Send(new Message_ChoosePurchaseSchemeClose(null)); + } + + private void OnSchemeChanged(PurchaseSchemeSkuGroup skuGroup) + { } } diff --git a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs index e5a16f7..539b4c6 100644 --- a/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs +++ b/BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs @@ -95,11 +95,11 @@ namespace BBWYB.Client.ViewModels //PurchaseOrderMode = PurchaseOrderMode.代发; } - public void SetData(Order order, Purchaser purchaser, PurchaseAccount purchaseAccount) + public void SetData(Order order, IList schemeList) { this.order = order; - this.purchaser = purchaser; - this.purchaseAccount = purchaseAccount; + //this.purchaser = purchaser; + //this.purchaseAccount = purchaseAccount; this.ContactName = order.Consignee.ContactName; this.Address = order.Consignee.Address; diff --git a/BBWYB.Client/Views/Order/ChoosePurchaseScheme.xaml b/BBWYB.Client/Views/Order/ChoosePurchaseScheme.xaml index 71b830d..466c155 100644 --- a/BBWYB.Client/Views/Order/ChoosePurchaseScheme.xaml +++ b/BBWYB.Client/Views/Order/ChoosePurchaseScheme.xaml @@ -7,11 +7,13 @@ xmlns:c="clr-namespace:SJ.Controls;assembly=SJ.Controls" xmlns:b="http://schemas.microsoft.com/xaml/behaviors" mc:Ignorable="d" - Title="ChoosePurchaseScheme" Height="200" Width="600" + Title="ChoosePurchaseScheme" Height="400" Width="1024" Style="{StaticResource bwstyle}" MinButtonVisibility="Collapsed" MaxButtonVisibility="Collapsed" - DataContext="{Binding ChoosePurchaseScheme,Source={StaticResource Locator}}"> + DataContext="{Binding ChoosePurchaseScheme,Source={StaticResource Locator}}" + UseLayoutRounding="True" + SnapsToDevicePixels="True"> @@ -22,14 +24,136 @@ + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs b/BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs index 938b560..96b5bdd 100644 --- a/BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs +++ b/BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs @@ -3,6 +3,7 @@ using BBWYB.Client.ViewModels; using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging.Messages; using SJ.Controls; +using System.Collections.Generic; namespace BBWYB.Client.Views.Purchase { @@ -11,10 +12,10 @@ namespace BBWYB.Client.Views.Purchase /// public partial class OnlinePurchase : BWindow { - public OnlinePurchase(Models.Order order, Purchaser purchaser, PurchaseAccount purchaseAccount) + public OnlinePurchase(Models.Order order, IList schemeList) { InitializeComponent(); - (this.DataContext as OnlinePurchaseViewModel).SetData(order, purchaser, purchaseAccount); + (this.DataContext as OnlinePurchaseViewModel).SetData(order, schemeList); this.Loaded += _1688Purchase_Loaded; this.Unloaded += _1688Purchase_Unloaded; }