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.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<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; }
private bool freeChoice;
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)
{
this.purchaseService = purchaseService;
this.globalContext = globalContext;
this.PurchaserList = new ObservableCollection<Purchaser>();
//DeleteCommand = new RelayCommand<PurchaseScheme>(Delete);
//EditCommand = new RelayCommand<PurchaseScheme>(Edit);
PreviewPurchaseCommand = new RelayCommand<Purchaser>(PreviewPurchase);
this.SkuGroup = new ObservableCollection<PurchaseSchemeSkuGroup>();
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<PurchaseScheme>();
foreach (var g in SkuGroup)
{
schemeList.Add(g.SelectedScheme);
}
var p = new OnlinePurchase(order, schemeList);
p.ShowDialog();
// GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<object>(null, "ChoosePurchaseScheme_Close");
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.代发;
}
public void SetData(Order order, Purchaser purchaser, PurchaseAccount purchaseAccount)
public void SetData(Order order, IList<PurchaseScheme> 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;

149
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">
<b:Interaction.Triggers>
<b:EventTrigger EventName="Loaded">
<b:InvokeCommandAction Command="{Binding LoadCommand}"/>
@ -22,14 +24,136 @@
</b:Interaction.Triggers>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}"
<Border BorderBrush="{StaticResource MainMenu.BorderBrush}"
Background="{StaticResource Border.Background}">
<TextBlock Text="选择采购商" Style="{StaticResource middleTextBlock}"/>
</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}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Platform}" Header="采购平台" Width="80" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"
@ -45,14 +169,17 @@
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<!--<ColumnDefinition/>
-->
<!--<ColumnDefinition/>
<ColumnDefinition/>-->
<!--
</Grid.ColumnDefinitions>
<c:BButton Content="下单" HorizontalAlignment="Stretch"
Background="#1CC2A2"
Command="{Binding DataContext.PreviewPurchaseCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/>
<!--<c:BButton Content="编辑" Grid.Column="1" HorizontalAlignment="Stretch"
-->
<!--<c:BButton Content="编辑" Grid.Column="1" HorizontalAlignment="Stretch"
Background="#02A7F0"
Command="{Binding DataContext.EditCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/>
@ -60,16 +187,14 @@
Background="#EC808D"
Command="{Binding DataContext.DeleteCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/>-->
<!--
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</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}"/>
</DataGrid>-->
</Grid>
</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.Messages;
using SJ.Controls;
using System.Collections.Generic;
namespace BBWYB.Client.Views.Purchase
{
@ -11,10 +12,10 @@ namespace BBWYB.Client.Views.Purchase
/// </summary>
public partial class OnlinePurchase : BWindow
{
public OnlinePurchase(Models.Order order, Purchaser purchaser, PurchaseAccount purchaseAccount)
public OnlinePurchase(Models.Order order, IList<PurchaseScheme> 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;
}

Loading…
Cancel
Save