shanji 2 years ago
parent
commit
ea76887c34
  1. 20
      BBWY.Client/Models/BatchPurchase/ProductSkuWithScheme.cs
  2. 35
      BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseAddProductSkuViewModel.cs
  3. 2
      BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs
  4. 88
      BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml
  5. 31
      BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml.cs

20
BBWY.Client/Models/BatchPurchase/ProductSkuWithScheme.cs

@ -38,15 +38,31 @@ namespace BBWY.Client.Models
public Platform? PurchasePlatform { get; set; } public Platform? PurchasePlatform { get; set; }
public int Quantity { get => quantity; set { Set(ref quantity, value); } } public int Quantity { get => quantity; set { if (Set(ref quantity, value)) OnQuantityChanged(); } }
public IList<PurchaseSchemeProductSku> PurchaseSchemeProductSkuList { get; set; } public IList<PurchaseSchemeProductSku> PurchaseSchemeProductSkuList { get; set; }
public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } } public bool IsSelected
{
get => isSelected; set { if (Set(ref isSelected, value)) OnSelectChanged(); }
}
public ProductSkuWithScheme() public ProductSkuWithScheme()
{ {
PurchaseSchemeProductSkuList = new ObservableCollection<PurchaseSchemeProductSku>(); PurchaseSchemeProductSkuList = new ObservableCollection<PurchaseSchemeProductSku>();
} }
private void OnSelectChanged()
{
if (IsSelected && Quantity <= 0)
Quantity = 1;
else if (!IsSelected)
Quantity = 0;
}
private void OnQuantityChanged()
{
IsSelected = Quantity > 0;
}
} }
} }

35
BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseAddProductSkuViewModel.cs

@ -29,6 +29,9 @@ namespace BBWY.Client.ViewModels
public ICommand FilterCommand { get; set; } public ICommand FilterCommand { get; set; }
public ICommand SaveCommand { get; set; } public ICommand SaveCommand { get; set; }
public ICommand AddQuantityCommand { get; set; }
public ICommand SubtractQuantityCommand { get; set; }
public string Sku { get => sku; set { Set(ref sku, value); } } public string Sku { get => sku; set { Set(ref sku, value); } }
public string Spu { get => spu; set { Set(ref spu, value); } } public string Spu { get => spu; set { Set(ref spu, value); } }
@ -73,10 +76,12 @@ namespace BBWY.Client.ViewModels
}; };
SourceList = new List<ProductSkuWithScheme>(); SourceList = new List<ProductSkuWithScheme>();
FilterList = new List<ProductSkuWithScheme>(); FilterList = new ObservableCollection<ProductSkuWithScheme>();
SearchCommand = new RelayCommand(Search); SearchCommand = new RelayCommand(Search);
FilterCommand = new RelayCommand(Filter); FilterCommand = new RelayCommand(Filter);
SaveCommand = new RelayCommand(Save); SaveCommand = new RelayCommand(Save);
AddQuantityCommand = new RelayCommand<ProductSkuWithScheme>(AddQuantity);
SubtractQuantityCommand = new RelayCommand<ProductSkuWithScheme>(SubtractQuantity);
SelectedPurchaser = PurchaserList[0]; SelectedPurchaser = PurchaserList[0];
SelectedPurchasePlatform = PurchasePlatformList[0]; SelectedPurchasePlatform = PurchasePlatformList[0];
} }
@ -110,7 +115,7 @@ namespace BBWY.Client.ViewModels
var list = response.Data.Map<IList<ProductSkuWithScheme>>(); var list = response.Data.Map<IList<ProductSkuWithScheme>>();
#region 提取采购商 #region 提取采购商
var purchaserList = list.Where(item => !string.IsNullOrEmpty(item.PurchaserId)) var purchaserList = list.Where(item => item.PurchaseSchemeId != 0)
.Select(item => new Purchaser() { Id = item.PurchaserId, Name = item.PurchaseName, Platform = item.PurchasePlatform.Value }) .Select(item => new Purchaser() { Id = item.PurchaserId, Name = item.PurchaseName, Platform = item.PurchasePlatform.Value })
.Distinct(new PurchaserComparer()); .Distinct(new PurchaserComparer());
#endregion #endregion
@ -120,7 +125,9 @@ namespace BBWY.Client.ViewModels
foreach (var purchaser in purchaserList) foreach (var purchaser in purchaserList)
PurchaserList.Add(purchaser); PurchaserList.Add(purchaser);
foreach (var item in list) foreach (var item in list)
{
SourceList.Add(item); SourceList.Add(item);
}
Filter(); Filter();
}); });
}); });
@ -167,12 +174,34 @@ namespace BBWY.Client.ViewModels
private void Save() private void Save()
{ {
var selectedList = FilterList.Where(item => item.IsSelected).ToList();
if (selectedList == null || selectedList.Count() == 0)
{
MessageBox.Show("至少选择一个商品");
return;
}
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(selectedList, "BatchPurchaseAddProductSkuSave");
} }
private void OnAllSelectedChanged() private void OnAllSelectedChanged()
{ {
foreach (var item in FilterList)
{
if (item.PurchaseSchemeId == 0)
continue;
item.IsSelected = AllSelected;
}
}
private void AddQuantity(ProductSkuWithScheme item)
{
item.Quantity++;
}
private void SubtractQuantity(ProductSkuWithScheme item)
{
if (item.Quantity > 0)
item.Quantity--;
} }
} }
} }

2
BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs

@ -5,6 +5,7 @@ using GalaSoft.MvvmLight.Command;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
@ -191,6 +192,7 @@ namespace BBWY.Client.ViewModels
var addProductSkuWindow = new BatchPurchaseAddProductSku(); var addProductSkuWindow = new BatchPurchaseAddProductSku();
if (addProductSkuWindow.ShowDialog() == true) if (addProductSkuWindow.ShowDialog() == true)
{ {
var newProductSkuWithSchemeList = addProductSkuWindow.SelectedProductSkuWithSchemeList;
} }
} }

88
BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml

@ -9,7 +9,7 @@
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls" xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors" xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
Style="{StaticResource bwstyle}" Style="{StaticResource bwstyle}"
Title="BatchPurchaseAddProductSku" Height="600" Width="500" Title="BatchPurchaseAddProductSku" Height="600" Width="550"
DataContext="{Binding BatchPurchaseAddProductSku,Source={StaticResource Locator}}"> DataContext="{Binding BatchPurchaseAddProductSku,Source={StaticResource Locator}}">
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -31,7 +31,8 @@
<ColumnDefinition/> <ColumnDefinition/>
<ColumnDefinition Width="50"/> <ColumnDefinition Width="50"/>
<ColumnDefinition/> <ColumnDefinition/>
<ColumnDefinition Width="80"/> <ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition/> <RowDefinition/>
@ -43,21 +44,23 @@
<TextBlock Text="SKU" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="2" Margin="0,0,5,0"/> <TextBlock Text="SKU" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="2" Margin="0,0,5,0"/>
<c:BTextBox Grid.Column="3" Text="{Binding Sku}"/> <c:BTextBox Grid.Column="3" Text="{Binding Sku}"/>
<c:BButton Grid.Column="4" Content="搜索" Width="70" Command="{Binding SearchCommand}"/> <c:BButton Grid.Column="5" Content="搜索" Width="70" Command="{Binding SearchCommand}"/>
<TextBlock Text="采购商" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="1" Margin="0,0,5,0"/> <TextBlock Text="采购商" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="1" Margin="0,0,5,0"/>
<ComboBox Grid.Column="1" Grid.Row="1" Height="30" <ComboBox Grid.Column="1" Grid.Row="1" Height="30"
ItemsSource="{Binding PurchaserList}" ItemsSource="{Binding PurchaserList}"
SelectedItem="{Binding SelectedPurchaser}"
DisplayMemberPath="Name" DisplayMemberPath="Name"
VerticalContentAlignment="Center"/> VerticalContentAlignment="Center"/>
<TextBlock Text="平台" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Margin="0,0,5,0"/> <TextBlock Text="平台" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Margin="0,0,5,0"/>
<ComboBox Grid.Column="3" Grid.Row="1" Height="30" <ComboBox Grid.Column="3" Grid.Row="1" Height="30"
ItemsSource="{Binding PurchasePlatformList}" ItemsSource="{Binding PurchasePlatformList}"
SelectedItem="{Binding SelectedPurchasePlatform}"
DisplayMemberPath="Value" DisplayMemberPath="Value"
VerticalContentAlignment="Center"/> VerticalContentAlignment="Center"/>
<c:BButton Grid.Column="4" Content="筛选" Width="70" Grid.Row="1" Background="#2879FF" Command="{Binding FilterCommand}"/> <c:BButton Grid.Column="5" Content="筛选" Width="70" Grid.Row="1" Background="#2879FF" Command="{Binding FilterCommand}"/>
</Grid> </Grid>
@ -68,24 +71,29 @@
BorderBrush="{StaticResource Border.Brush}" BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1" BorderThickness="1"
RowHeight="90"> RowHeight="90">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="IsEnabled" Value="{Binding PurchaseSchemeId,ConverterParameter=0:false:true,Converter={StaticResource objConverter}}"/>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTemplateColumn Width="35"> <DataGridTemplateColumn Width="35">
<DataGridTemplateColumn.HeaderTemplate> <DataGridTemplateColumn.HeaderTemplate>
<DataTemplate> <DataTemplate>
<CheckBox Margin="5,0,0,0" <CheckBox Margin="5,0,0,0"
IsChecked="{Binding DataContext.AllSelected,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"/> IsChecked="{Binding DataContext.AllSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"/>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.HeaderTemplate> </DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}" HorizontalAlignment="Center" VerticalAlignment="Center"/> <CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTemplateColumn Header="商品信息" Width="*" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"> <DataGridTemplateColumn Header="商品信息" Width="*" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<Grid Width="{Binding ActualWidth,ElementName=listbox_orerSku}"> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/> <ColumnDefinition Width="90"/>
<ColumnDefinition/> <ColumnDefinition/>
@ -99,49 +107,55 @@
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,5,0,5"> <StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,5,0,5">
<TextBlock TextTrimming="CharacterEllipsis"> <TextBlock TextTrimming="CharacterEllipsis">
<Run Text="SKU:"/>
<Run Text="{Binding SkuId}"/>
</TextBlock>
<TextBlock TextTrimming="CharacterEllipsis"
Text="{Binding Title}"
Margin="0,10,0,0">
<TextBlock.ToolTip> <TextBlock.ToolTip>
<ToolTip Style="{StaticResource OrderCouponToolipStyle}"> <ToolTip Style="{StaticResource OrderCouponToolipStyle}">
<TextBlock Text="{Binding Title}"/> <TextBlock Text="{Binding Title}"/>
</ToolTip> </ToolTip>
</TextBlock.ToolTip> </TextBlock.ToolTip>
<Run Text="SKU名称:"/> </TextBlock>
<Run Text="{Binding Title}"/> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
</TextBlock> <TextBlock>
<StackPanel Orientation="Horizontal"> <Run Text="采购平台:"/>
<StackPanel Orientation="Vertical"> <Run Text="{Binding PurchasePlatform}"/>
<StackPanel Orientation="Horizontal"> </TextBlock>
<TextBlock Text="SPU:"/> <TextBlock Margin="10,0,0,0">
<c:BButton Content="{Binding ProductId}" Style="{StaticResource LinkButton}" <Run Text="采购商:"/>
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}" <Run Text="{Binding PurchaseName}"/>
CommandParameter="{Binding ProductId}" </TextBlock>
Margin=" 5,0,0,0"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="SKU:"/>
<c:BButton Content="{Binding Id}" Style="{StaticResource LinkButton}"
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}"
CommandParameter="{Binding Id}"
Margin=" 5,0,0,0"/>
</StackPanel>
<TextBlock TextWrapping="Wrap" Margin=" 5,0,0,0">
<Run Text="单价:"/>
<Run Text="{Binding Price}"/>
</TextBlock>
</StackPanel>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTemplateColumn Header="数量" Width="80" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}"> <DataGridTemplateColumn Header="数量" Width="100" HeaderStyle="{StaticResource ColumnHeaderStyle_Center}">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<c:BButton Content="-"/> <c:BButton Content="-" Background="White" Foreground="Black"
<c:BTextBox Text="{Binding Quantity}" Margin="5,0"/> BorderBrush="{StaticResource Border.Brush}"
<c:BButton Content="+"/> BorderThickness="1"
Width="15"
Height="18"
Command="{Binding DataContext.SubtractQuantityCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/>
<c:BTextBox Text="{Binding Quantity}" Margin="5,0" VerticalAlignment="Center"
Width="40"
DisableBgColor="{StaticResource TextBox.Disable.BgColor}"/>
<c:BButton Content="+" Background="White" Foreground="Black"
BorderBrush="{StaticResource Border.Brush}"
BorderThickness="1"
Width="15"
Height="18"
Command="{Binding DataContext.AddQuantityCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
CommandParameter="{Binding }"/>
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>

31
BBWY.Client/Views/BatchPurchase/BatchPurchaseAddProductSku.xaml.cs

@ -1,15 +1,7 @@
using BBWY.Controls; using BBWY.Client.Models;
using System; using BBWY.Controls;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace BBWY.Client.Views.BatchPurchase namespace BBWY.Client.Views.BatchPurchase
{ {
@ -18,9 +10,28 @@ namespace BBWY.Client.Views.BatchPurchase
/// </summary> /// </summary>
public partial class BatchPurchaseAddProductSku : BWindow public partial class BatchPurchaseAddProductSku : BWindow
{ {
public IList<ProductSkuWithScheme> SelectedProductSkuWithSchemeList { get; private set; }
public BatchPurchaseAddProductSku() public BatchPurchaseAddProductSku()
{ {
InitializeComponent(); InitializeComponent();
this.Loaded += BatchPurchaseAddProductSku_Loaded;
this.Unloaded += BatchPurchaseAddProductSku_Unloaded;
}
private void BatchPurchaseAddProductSku_Unloaded(object sender, RoutedEventArgs e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Unregister(this);
}
private void BatchPurchaseAddProductSku_Loaded(object sender, RoutedEventArgs e)
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<List<ProductSkuWithScheme>>(this, "BatchPurchaseAddProductSkuSave", (list) =>
{
SelectedProductSkuWithSchemeList = list;
this.DialogResult = true;
this.Close();
});
} }
} }
} }

Loading…
Cancel
Save