Browse Source

1

updatebug
shanji 2 years ago
parent
commit
8370a1187f
  1. 0
      BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs
  2. 0
      BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs
  3. 0
      BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProductSku.cs
  4. 28
      BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeSkuGroup.cs
  5. 71
      BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs
  6. 6
      BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs
  7. 149
      BBWYB.Client/Views/Order/ChoosePurchaseScheme.xaml
  8. 5
      BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs

0
BBWYB.Client/Models/Product/PurchaseScheme.cs → BBWYB.Client/Models/PurchaseScheme/PurchaseScheme.cs

0
BBWYB.Client/Models/Product/PurchaseSchemeProduct.cs → BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProduct.cs

0
BBWYB.Client/Models/Product/PurchaseSchemeProductSku.cs → BBWYB.Client/Models/PurchaseScheme/PurchaseSchemeProductSku.cs

28
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<PurchaseScheme> SchemeList { get; set; }
public PurchaseScheme SelectedScheme
{
get => selectedScheme; set
{
if (SetProperty(ref selectedScheme, value))
{
OnSchemeChanged?.Invoke(this);
}
}
}
public Action<PurchaseSchemeSkuGroup> OnSchemeChanged { get; set; }
}
}

71
BBWYB.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs

@ -2,6 +2,7 @@
using BBWYB.Client.Models; using BBWYB.Client.Models;
using BBWYB.Client.Views.Order; using BBWYB.Client.Views.Order;
using BBWYB.Client.Views.Purchase; using BBWYB.Client.Views.Purchase;
using BBWYB.Common.Extensions;
using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging;
using System.Collections.Generic; using System.Collections.Generic;
@ -18,30 +19,24 @@ namespace BBWYB.Client.ViewModels
private PurchaseService purchaseService; private PurchaseService purchaseService;
private GlobalContext globalContext; private GlobalContext globalContext;
private Order order; private Order order;
private bool noPurchaser; private bool freeChoice;
public IList<Purchaser> 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; }
public IList<PurchaseSchemeSkuGroup> SkuGroup { get; set; }
public ICommand ConfirmCommand { get; set; }
public bool FreeChoice { get => freeChoice; set { SetProperty(ref freeChoice, value); } }
public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext) public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext)
{ {
this.purchaseService = purchaseService; this.purchaseService = purchaseService;
this.globalContext = globalContext; this.globalContext = globalContext;
this.PurchaserList = new ObservableCollection<Purchaser>(); this.SkuGroup = new ObservableCollection<PurchaseSchemeSkuGroup>();
//DeleteCommand = new RelayCommand<PurchaseScheme>(Delete); ConfirmCommand = new RelayCommand(Confirm);
//EditCommand = new RelayCommand<PurchaseScheme>(Edit);
PreviewPurchaseCommand = new RelayCommand<Purchaser>(PreviewPurchase);
} }
protected override void Load() protected override void Load()
{ {
Task.Factory.StartNew(() => LoadPurchaser()); Task.Factory.StartNew(() => LoadScheme());
} }
public void SetData(Order order) public void SetData(Order order)
@ -49,39 +44,57 @@ namespace BBWYB.Client.ViewModels
this.order = order; this.order = order;
} }
public void LoadPurchaser() private void LoadScheme()
{ {
var skuIdList = order.ItemList.Select(osku => osku.SkuId).ToList(); var skuIdList = order.ItemList.Select(osku => osku.SkuId).ToList();
var purchaserResponse = purchaseService.GetSharePurchaser(skuIdList, globalContext.User.Shop.ShopId); var response = purchaseService.GetPurchaseSchemeList(skuIdList, shopId: globalContext.User.Shop.ShopId);
if (!purchaserResponse.Success) if (!response.Success)
{ {
App.Current.Dispatcher.Invoke(() => MessageBox.Show(purchaserResponse.Msg, "获取采购商")); App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示"));
return; 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 (SkuGroup.Any(s => s.SelectedScheme == null))
if (purchaseAccount == null)
{ {
MessageBox.Show($"缺少{purchaser.Platform}的采购账号", "提示"); App.Current.Dispatcher.Invoke(() => MessageBox.Show("采购方案选择不完整", "提示"));
return; return;
} }
var p = new OnlinePurchase(order, purchaser, purchaseAccount); var schemeList = new List<PurchaseScheme>();
foreach (var g in SkuGroup)
{
schemeList.Add(g.SelectedScheme);
}
var p = new OnlinePurchase(order, schemeList);
p.ShowDialog(); p.ShowDialog();
// GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<object>(null, "ChoosePurchaseScheme_Close"); // GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<object>(null, "ChoosePurchaseScheme_Close");
WeakReferenceMessenger.Default.Send(new Message_ChoosePurchaseSchemeClose(null)); WeakReferenceMessenger.Default.Send(new Message_ChoosePurchaseSchemeClose(null));
}
private void OnSchemeChanged(PurchaseSchemeSkuGroup skuGroup)
{
} }
} }

6
BBWYB.Client/ViewModels/Purchase/OnlinePurchaseViewModel.cs

@ -95,11 +95,11 @@ namespace BBWYB.Client.ViewModels
//PurchaseOrderMode = PurchaseOrderMode.代发; //PurchaseOrderMode = PurchaseOrderMode.代发;
} }
public void SetData(Order order, Purchaser purchaser, PurchaseAccount purchaseAccount) public void SetData(Order order, IList<PurchaseScheme> schemeList)
{ {
this.order = order; this.order = order;
this.purchaser = purchaser; //this.purchaser = purchaser;
this.purchaseAccount = purchaseAccount; //this.purchaseAccount = purchaseAccount;
this.ContactName = order.Consignee.ContactName; this.ContactName = order.Consignee.ContactName;
this.Address = order.Consignee.Address; this.Address = order.Consignee.Address;

149
BBWYB.Client/Views/Order/ChoosePurchaseScheme.xaml

@ -7,11 +7,13 @@
xmlns:c="clr-namespace:SJ.Controls;assembly=SJ.Controls" xmlns:c="clr-namespace:SJ.Controls;assembly=SJ.Controls"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors" xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d" mc:Ignorable="d"
Title="ChoosePurchaseScheme" Height="200" Width="600" Title="ChoosePurchaseScheme" Height="400" Width="1024"
Style="{StaticResource bwstyle}" Style="{StaticResource bwstyle}"
MinButtonVisibility="Collapsed" MinButtonVisibility="Collapsed"
MaxButtonVisibility="Collapsed" MaxButtonVisibility="Collapsed"
DataContext="{Binding ChoosePurchaseScheme,Source={StaticResource Locator}}"> DataContext="{Binding ChoosePurchaseScheme,Source={StaticResource Locator}}"
UseLayoutRounding="True"
SnapsToDevicePixels="True">
<b:Interaction.Triggers> <b:Interaction.Triggers>
<b:EventTrigger EventName="Loaded"> <b:EventTrigger EventName="Loaded">
<b:InvokeCommandAction Command="{Binding LoadCommand}"/> <b:InvokeCommandAction Command="{Binding LoadCommand}"/>
@ -22,14 +24,136 @@
</b:Interaction.Triggers> </b:Interaction.Triggers>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/> <RowDefinition Height="30"/>
<RowDefinition/> <RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}" <Border BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}"> Background="{StaticResource Border.Background}">
<TextBlock Text="选择采购商" Style="{StaticResource middleTextBlock}"/> <TextBlock Text="选择采购商" Style="{StaticResource middleTextBlock}"/>
</Border> </Border>
<DataGrid Grid.Row="1"
<Border BorderBrush="{StaticResource Border.Brush}" BorderThickness="1,1,1,0"
Background="#F2F2F2"
Grid.Row="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
</Grid.ColumnDefinitions>
<TextBlock Text="SKU" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="平台" Grid.Column="1" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="采购商名称" Grid.Column="2" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="发货地" Grid.Column="3" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="单价" Grid.Column="4" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="上次采购时间" Grid.Column="5" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="操作" Grid.Column="6" Style="{StaticResource middleTextBlock}"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="5"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="6"/>
</Grid>
</Border>
<ListBox Grid.Row="2"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
ItemsSource="{Binding SkuGroup}"
BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1"
x:Name="listbox_skuGroup">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid MinHeight="30"
Width="{Binding ActualWidth,ElementName=listbox_skuGroup}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="119"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SkuId}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<ListBox Grid.Column="1"
ItemsSource="{Binding SchemeList}"
SelectedItem="{Binding SelectedScheme,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
Style="{StaticResource NoScrollViewListBoxStyle}"
BorderThickness="1,0,0,0"
BorderBrush="{StaticResource Border.Brush}"
x:Name="listbox_Scheme">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="30"
Width="{Binding ActualWidth,ElementName=listbox_Scheme,Converter={StaticResource widthConverter},ConverterParameter=3}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
</Grid.ColumnDefinitions>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="1"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="2"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="3"/>
<Border Width="1" HorizontalAlignment="Right" Background="{StaticResource Border.Brush}" Grid.Column="4"/>
<TextBlock Text="{Binding PurchasePlatform}" Style="{StaticResource middleTextBlock}"/>
<TextBlock Text="{Binding PurchaserName}" Style="{StaticResource middleTextBlock}" Grid.Column="1"/>
<TextBlock Text="{Binding PurchaserLocation}" Style="{StaticResource middleTextBlock}" Grid.Column="2"/>
<Border x:Name="bd" Grid.Column="5" Background="{StaticResource Border.Background}">
<TextBlock Text="选择" Style="{StaticResource middleTextBlock}"/>
</Border>
<Border Height="1" VerticalAlignment="Bottom" Grid.ColumnSpan="6" Background="{StaticResource Border.Brush}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}}"
Value="True">
<Setter Property="Background" TargetName="bd" Value="#1CC2A2"/>
<Setter Property="TextBlock.Foreground" TargetName="bd" Value="White"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Height="1" VerticalAlignment="Bottom" Background="{StaticResource Border.Brush}" Grid.ColumnSpan="2"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<CheckBox Grid.Row="3" HorizontalAlignment="Right" Margin="0,0,100,0" VerticalContentAlignment="Center" VerticalAlignment="Center"
IsChecked="{Binding FreeChoice,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<CheckBox.Content>
<StackPanel Orientation="Horizontal">
<TextBlock Text="自由选择"/>
<Path Style="{StaticResource path_question}"
Width="14"
Margin="5,0,0,0"
Fill="{StaticResource Text.Pink}"
ToolTipService.InitialShowDelay="0"
ToolTip="勾选自由选择,将不自动选择相同采购商"/>
</StackPanel>
</CheckBox.Content>
</CheckBox>
<c:BButton Grid.Row="3" HorizontalAlignment="Right" Margin="0,0,5,0" Content="确定" Width="80"
Command="{Binding ConfirmCommand}"/>
<!--<DataGrid Grid.Row="1"
ItemsSource="{Binding PurchaserList}"> ItemsSource="{Binding PurchaserList}">
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Platform}" Header="采购平台" Width="80" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}" <DataGridTextColumn Binding="{Binding Platform}" Header="采购平台" Width="80" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"
@ -45,14 +169,17 @@
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition/> <ColumnDefinition/>
<!--<ColumnDefinition/> -->
<!--<ColumnDefinition/>
<ColumnDefinition/>--> <ColumnDefinition/>-->
<!--
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<c:BButton Content="下单" HorizontalAlignment="Stretch" <c:BButton Content="下单" HorizontalAlignment="Stretch"
Background="#1CC2A2" Background="#1CC2A2"
Command="{Binding DataContext.PreviewPurchaseCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}" Command="{Binding DataContext.PreviewPurchaseCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/> CommandParameter="{Binding }"/>
<!--<c:BButton Content="编辑" Grid.Column="1" HorizontalAlignment="Stretch" -->
<!--<c:BButton Content="编辑" Grid.Column="1" HorizontalAlignment="Stretch"
Background="#02A7F0" Background="#02A7F0"
Command="{Binding DataContext.EditCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}" Command="{Binding DataContext.EditCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/> CommandParameter="{Binding }"/>
@ -60,16 +187,14 @@
Background="#EC808D" Background="#EC808D"
Command="{Binding DataContext.DeleteCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}" Command="{Binding DataContext.DeleteCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/>--> CommandParameter="{Binding }"/>-->
<!--
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>-->
<TextBlock Text="缺少共同采购商" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Center"
Foreground="{StaticResource TextBox.BorderBrush}"
FontSize="16"
Visibility="{Binding NoPurchaser,Converter={StaticResource objConverter},ConverterParameter=true:Visible:Collapsed}"/>
</Grid> </Grid>
</c:BWindow> </c:BWindow>

5
BBWYB.Client/Views/Purchase/OnlinePurchase.xaml.cs

@ -3,6 +3,7 @@ using BBWYB.Client.ViewModels;
using CommunityToolkit.Mvvm.Messaging; using CommunityToolkit.Mvvm.Messaging;
using CommunityToolkit.Mvvm.Messaging.Messages; using CommunityToolkit.Mvvm.Messaging.Messages;
using SJ.Controls; using SJ.Controls;
using System.Collections.Generic;
namespace BBWYB.Client.Views.Purchase namespace BBWYB.Client.Views.Purchase
{ {
@ -11,10 +12,10 @@ namespace BBWYB.Client.Views.Purchase
/// </summary> /// </summary>
public partial class OnlinePurchase : BWindow public partial class OnlinePurchase : BWindow
{ {
public OnlinePurchase(Models.Order order, Purchaser purchaser, PurchaseAccount purchaseAccount) public OnlinePurchase(Models.Order order, IList<PurchaseScheme> schemeList)
{ {
InitializeComponent(); InitializeComponent();
(this.DataContext as OnlinePurchaseViewModel).SetData(order, purchaser, purchaseAccount); (this.DataContext as OnlinePurchaseViewModel).SetData(order, schemeList);
this.Loaded += _1688Purchase_Loaded; this.Loaded += _1688Purchase_Loaded;
this.Unloaded += _1688Purchase_Unloaded; this.Unloaded += _1688Purchase_Unloaded;
} }

Loading…
Cancel
Save