19 changed files with 602 additions and 46 deletions
@ -1,9 +1,18 @@ |
|||||
namespace BBWY.Client.Models |
using System; |
||||
|
|
||||
|
namespace BBWY.Client.Models |
||||
{ |
{ |
||||
public class StoreResponse |
public class StoreResponse |
||||
{ |
{ |
||||
public string StoreId { get; set; } |
public DateTime? CreateTime { get; set; } |
||||
|
public string Id { get; set; } |
||||
|
|
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
public Platform Platform { get; set; } |
||||
|
|
||||
|
public StockStatus Status { get; set; } |
||||
|
|
||||
public string StoreName { get; set; } |
public StockType Type { get; set; } |
||||
} |
} |
||||
} |
} |
||||
|
@ -0,0 +1,105 @@ |
|||||
|
using BBWY.Client.APIServices; |
||||
|
using BBWY.Client.Models; |
||||
|
using BBWY.Client.Models.QiKu; |
||||
|
using BBWY.Client.Views.BatchPurchase; |
||||
|
using GalaSoft.MvvmLight.Command; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Collections.ObjectModel; |
||||
|
using System.Linq; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Input; |
||||
|
|
||||
|
namespace BBWY.Client.ViewModels |
||||
|
{ |
||||
|
public class PackSkuSplitConfigViewModel : BaseVM |
||||
|
{ |
||||
|
public IList<PackSkuConfig> PackSkuConfigList { get; set; } |
||||
|
|
||||
|
private IList<StoreResponse> storeList; |
||||
|
|
||||
|
public ICommand SetSplitCountCommand { get; set; } |
||||
|
|
||||
|
public ICommand SetPackCountAndStoreCommand { get; set; } |
||||
|
|
||||
|
public ICommand SaveCommand { get; set; } |
||||
|
|
||||
|
private LogisticsService logisticsService; |
||||
|
|
||||
|
public PackSkuSplitConfigViewModel(LogisticsService logisticsService) |
||||
|
{ |
||||
|
this.logisticsService = logisticsService; |
||||
|
SetSplitCountCommand = new RelayCommand<PackSkuConfig>(SetSplitCount); |
||||
|
SetPackCountAndStoreCommand = new RelayCommand<PackSkuSplitConfig>(SetPackCountAndStore); |
||||
|
SaveCommand = new RelayCommand(Save); |
||||
|
PackSkuConfigList = new ObservableCollection<PackSkuConfig>(); |
||||
|
} |
||||
|
|
||||
|
public void SetData(IList<PackSkuConfig> packSkuConfigList) |
||||
|
{ |
||||
|
foreach (var item in packSkuConfigList) |
||||
|
PackSkuConfigList.Add(item); |
||||
|
} |
||||
|
|
||||
|
public IList<PackSkuConfig> GetPackSkuConfigList() |
||||
|
{ |
||||
|
return PackSkuConfigList; |
||||
|
} |
||||
|
|
||||
|
private void SetSplitCount(PackSkuConfig packSkuConfig) |
||||
|
{ |
||||
|
if (packSkuConfig.SplitCount <= 0) |
||||
|
{ |
||||
|
MessageBox.Show("份数不正确"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
packSkuConfig.PackSkuSplitConfigList.Clear(); |
||||
|
for (var i = 1; i <= packSkuConfig.SplitCount; i++) |
||||
|
{ |
||||
|
packSkuConfig.PackSkuSplitConfigList.Add(new PackSkuSplitConfig() |
||||
|
{ |
||||
|
Index = i, |
||||
|
PackCount = 0 |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private void SetPackCountAndStore(PackSkuSplitConfig packSkuSplitConfig) |
||||
|
{ |
||||
|
if (storeList == null) |
||||
|
{ |
||||
|
var response = logisticsService.GetStoreList(); |
||||
|
if (!response.Success) |
||||
|
{ |
||||
|
MessageBox.Show(response.Msg, "获取仓库"); |
||||
|
return; |
||||
|
} |
||||
|
storeList = response.Data; |
||||
|
} |
||||
|
var w = new PackSkuSplitCountAndStoreWindow(packSkuSplitConfig.PackCount, packSkuSplitConfig.Store, storeList); |
||||
|
if (w.ShowDialog() == true) |
||||
|
{ |
||||
|
packSkuSplitConfig.PackCount = w.Quantity; |
||||
|
packSkuSplitConfig.Store = w.Store; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private void Save() |
||||
|
{ |
||||
|
if (PackSkuConfigList.Any(s => s.PackSkuSplitConfigList.Count() == 0 || |
||||
|
s.PackSkuSplitConfigList.Any(sp => sp.PackCount <= 0))) |
||||
|
{ |
||||
|
MessageBox.Show("装箱设置不正确", "提示"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (PackSkuConfigList.Any(s => s.PurchaseCount != s.PackSkuSplitConfigList.Sum(sp => sp.PackCount))) |
||||
|
{ |
||||
|
MessageBox.Show("打包份数总数与采购数量不相等", "提示"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(true, "PackSkuConfigWindowClose"); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,132 @@ |
|||||
|
<c:BWindow x:Class="BBWY.Client.Views.BatchPurchase.PackSkuConfigWindow" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||
|
xmlns:local="clr-namespace:BBWY.Client.Views.BatchPurchase" |
||||
|
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls" |
||||
|
xmlns:b="http://schemas.microsoft.com/xaml/behaviors" |
||||
|
mc:Ignorable="d" |
||||
|
Title="PackSkuConfigWindow" Height="500" Width="1024" |
||||
|
MinButtonVisibility="Collapsed" |
||||
|
MaxButtonVisibility="Collapsed" |
||||
|
Style="{StaticResource bwstyle}" |
||||
|
DataContext="{Binding PackSkuConfig,Source={StaticResource Locator}}"> |
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="30"/> |
||||
|
<RowDefinition/> |
||||
|
<RowDefinition Height="40"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}" |
||||
|
Background="{StaticResource Border.Background}"> |
||||
|
<TextBlock Text="分箱与落仓" HorizontalAlignment="Center" VerticalAlignment="Center"/> |
||||
|
</Border> |
||||
|
|
||||
|
<ListBox x:Name="listbox" |
||||
|
ItemsSource="{Binding PackSkuConfigList}" |
||||
|
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" |
||||
|
BorderBrush="{StaticResource Border.Brush}" |
||||
|
BorderThickness="1,0,0,0" |
||||
|
Grid.Row="1"> |
||||
|
<ListBox.ItemTemplate> |
||||
|
<DataTemplate> |
||||
|
<Grid Width="{Binding ActualWidth,ElementName=listbox,Converter={StaticResource widthConverter},ConverterParameter=3}"> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="140"/> |
||||
|
<ColumnDefinition/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
|
||||
|
<!--{Binding Logo}--> |
||||
|
<c:BAsyncImage UrlSource="{Binding Logo}" |
||||
|
Width="130" DecodePixelWidth="130" |
||||
|
VerticalAlignment="Top" Margin="0,5,0,5" |
||||
|
Cursor="Hand"/> |
||||
|
|
||||
|
<Grid Grid.Column="1"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="30"/> |
||||
|
<RowDefinition Height="30"/> |
||||
|
<RowDefinition/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="Auto"/> |
||||
|
<ColumnDefinition/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
|
||||
|
<TextBlock VerticalAlignment="Center" Margin="5,0,0,0"> |
||||
|
<Run Text="SKU:"/> |
||||
|
<Run Text="{Binding SkuId}"/> |
||||
|
</TextBlock> |
||||
|
<TextBlock VerticalAlignment="Center" Grid.Column="1" Margin="5,0,0,0"> |
||||
|
<Run Text="采购数量:"/> |
||||
|
<Run Text="{Binding PurchaseCount}"/> |
||||
|
</TextBlock> |
||||
|
|
||||
|
<TextBlock VerticalAlignment="Center" Margin="5,0,5,0" Grid.Row="1"> |
||||
|
<Run Text="SKU名称:"/> |
||||
|
<Run Text="{Binding Title}"/> |
||||
|
</TextBlock> |
||||
|
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="1" Margin="5,0,0,0"> |
||||
|
<TextBlock Text="份数:" VerticalAlignment="Center"/> |
||||
|
<c:BTextBox Text="{Binding SplitCount}" Width="40" Margin="5,0" Height="25"/> |
||||
|
<c:BButton Command="{Binding DataContext.SetSplitCountCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" |
||||
|
CommandParameter="{Binding }" |
||||
|
Content="设置" |
||||
|
Style="{StaticResource LinkButton}"/> |
||||
|
</StackPanel> |
||||
|
|
||||
|
<ListBox Grid.Row="2" Grid.ColumnSpan="2" |
||||
|
ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}" |
||||
|
BorderThickness="1,1,0,1" |
||||
|
BorderBrush="{StaticResource Border.Brush}" |
||||
|
ItemsSource="{Binding PackSkuSplitConfigList}" |
||||
|
Width="Auto" |
||||
|
Margin="5,0,0,6" |
||||
|
HorizontalAlignment="Left" |
||||
|
Visibility="{Binding SplitCount,ConverterParameter=0:Collapsed:Visible,Converter={StaticResource objConverter}}"> |
||||
|
<ListBox.ItemsPanel> |
||||
|
<ItemsPanelTemplate> |
||||
|
<StackPanel Orientation="Horizontal"/> |
||||
|
</ItemsPanelTemplate> |
||||
|
</ListBox.ItemsPanel> |
||||
|
<ListBox.ItemTemplate> |
||||
|
<DataTemplate> |
||||
|
<Grid Width="120" Height="80"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition/> |
||||
|
<RowDefinition/> |
||||
|
<RowDefinition/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<TextBlock Text="{Binding Index,StringFormat=第\{0\}份}" Style="{StaticResource middleTextBlock}"/> |
||||
|
<c:BButton Content="设置" Style="{StaticResource LinkButton}" Grid.Row="1" |
||||
|
Command="{Binding DataContext.SetPackCountAndStoreCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}}" |
||||
|
CommandParameter="{Binding }"/> |
||||
|
<TextBlock Grid.Row="2" Style="{StaticResource middleTextBlock}"> |
||||
|
<Run Text="{Binding PackCount,StringFormat=\{0\}件}"/> |
||||
|
<Run Text="{Binding Store.Name}"/> |
||||
|
</TextBlock> |
||||
|
<Border Width="1" Grid.RowSpan="3" HorizontalAlignment="Right" |
||||
|
Background="{StaticResource Border.Brush}"/> |
||||
|
<Border Height="1" Background="{StaticResource Border.Brush}" |
||||
|
VerticalAlignment="Bottom"/> |
||||
|
<Border Height="1" Background="{StaticResource Border.Brush}" |
||||
|
VerticalAlignment="Bottom" Grid.Row="1"/> |
||||
|
</Grid> |
||||
|
</DataTemplate> |
||||
|
</ListBox.ItemTemplate> |
||||
|
</ListBox> |
||||
|
</Grid> |
||||
|
|
||||
|
<Border Grid.ColumnSpan="2" VerticalAlignment="Bottom" Height="1" Background="{StaticResource Border.Brush}"/> |
||||
|
<Border HorizontalAlignment="Right" Width="1" Background="{StaticResource Border.Brush}"/> |
||||
|
</Grid> |
||||
|
</DataTemplate> |
||||
|
</ListBox.ItemTemplate> |
||||
|
</ListBox> |
||||
|
|
||||
|
<c:BButton Content="提交订单" Width="80" HorizontalAlignment="Right" Grid.Row="2" |
||||
|
Command="{Binding SaveCommand}" Margin="0,0,5,0"/> |
||||
|
</Grid> |
||||
|
</c:BWindow> |
@ -0,0 +1,44 @@ |
|||||
|
using BBWY.Client.Models.QiKu; |
||||
|
using BBWY.Client.ViewModels; |
||||
|
using BBWY.Controls; |
||||
|
using System.Collections.Generic; |
||||
|
|
||||
|
namespace BBWY.Client.Views.BatchPurchase |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// PackSkuConfigWindow.xaml 的交互逻辑
|
||||
|
/// </summary>
|
||||
|
public partial class PackSkuConfigWindow : BWindow |
||||
|
{ |
||||
|
private PackSkuSplitConfigViewModel vm; |
||||
|
|
||||
|
public PackSkuConfigWindow(IList<PackSkuConfig> list) |
||||
|
{ |
||||
|
InitializeComponent(); |
||||
|
vm = this.DataContext as PackSkuSplitConfigViewModel; |
||||
|
vm.SetData(list); |
||||
|
|
||||
|
this.Loaded += PackSkuConfigWindow_Loaded; |
||||
|
this.Unloaded += PackSkuConfigWindow_Unloaded; |
||||
|
} |
||||
|
|
||||
|
private void PackSkuConfigWindow_Unloaded(object sender, System.Windows.RoutedEventArgs e) |
||||
|
{ |
||||
|
GalaSoft.MvvmLight.Messaging.Messenger.Default.Unregister(this); |
||||
|
} |
||||
|
|
||||
|
private void PackSkuConfigWindow_Loaded(object sender, System.Windows.RoutedEventArgs e) |
||||
|
{ |
||||
|
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<bool>(this, "PackSkuConfigWindowClose", (r) => |
||||
|
{ |
||||
|
this.DialogResult = r; |
||||
|
this.Close(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public IList<PackSkuConfig> GetPackSkuConfigList() |
||||
|
{ |
||||
|
return vm.GetPackSkuConfigList(); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
<c:BWindow x:Class="BBWY.Client.Views.BatchPurchase.PackSkuSplitCountAndStoreWindow" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||
|
xmlns:local="clr-namespace:BBWY.Client.Views.BatchPurchase" |
||||
|
mc:Ignorable="d" |
||||
|
xmlns:c="clr-namespace:BBWY.Controls;assembly=BBWY.Controls" |
||||
|
xmlns:b="http://schemas.microsoft.com/xaml/behaviors" |
||||
|
Title="PackSkuSplitCountAndStoreWindow" Height="160" Width="250" |
||||
|
Style="{StaticResource bwstyle}" |
||||
|
MinButtonVisibility="Collapsed" |
||||
|
MaxButtonVisibility="Collapsed"> |
||||
|
<Grid> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition Height="30"/> |
||||
|
<RowDefinition Height="5"/> |
||||
|
<RowDefinition/> |
||||
|
<RowDefinition/> |
||||
|
<RowDefinition Height="40"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
|
||||
|
<Grid.ColumnDefinitions> |
||||
|
<ColumnDefinition Width="70"/> |
||||
|
<ColumnDefinition/> |
||||
|
</Grid.ColumnDefinitions> |
||||
|
|
||||
|
<Border BorderThickness="0,0,0,1" BorderBrush="{StaticResource MainMenu.BorderBrush}" |
||||
|
Background="{StaticResource Border.Background}" |
||||
|
Grid.ColumnSpan="2"> |
||||
|
<TextBlock Text="装箱设置" HorizontalAlignment="Center" VerticalAlignment="Center"/> |
||||
|
</Border> |
||||
|
|
||||
|
<TextBlock Text="件数:" HorizontalAlignment="Right" VerticalAlignment="Center" |
||||
|
Grid.Row="2"/> |
||||
|
<c:BTextBox x:Name="txtQuantity" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center" |
||||
|
Margin="5,0,10,0"/> |
||||
|
|
||||
|
<TextBlock Text="落仓去向:" HorizontalAlignment="Right" VerticalAlignment="Center" |
||||
|
Grid.Row="3"/> |
||||
|
<ComboBox x:Name="cbx_stroeList" Grid.Row="3" Grid.Column="1" Height="30" |
||||
|
Margin="5,0,10,0" |
||||
|
DisplayMemberPath="Name" |
||||
|
VerticalContentAlignment="Center"/> |
||||
|
|
||||
|
<c:BButton x:Name="btn_save" Content="保存" Width="80" HorizontalAlignment="Right" Grid.Row="4" |
||||
|
Margin="0,0,5,0" Click="btn_save_Click" |
||||
|
Grid.Column="1"/> |
||||
|
</Grid> |
||||
|
</c:BWindow> |
@ -0,0 +1,64 @@ |
|||||
|
using BBWY.Client.Models; |
||||
|
using BBWY.Controls; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Windows; |
||||
|
|
||||
|
namespace BBWY.Client.Views.BatchPurchase |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// PackSkuSplitCountAndStoreWindow.xaml 的交互逻辑
|
||||
|
/// </summary>
|
||||
|
public partial class PackSkuSplitCountAndStoreWindow : BWindow |
||||
|
{ |
||||
|
public int Quantity { get; set; } |
||||
|
|
||||
|
public StoreResponse Store { get; set; } |
||||
|
|
||||
|
private IList<StoreResponse> storeList; |
||||
|
|
||||
|
public PackSkuSplitCountAndStoreWindow(int quantity, StoreResponse store, IList<StoreResponse> storeList) |
||||
|
{ |
||||
|
InitializeComponent(); |
||||
|
this.Quantity = quantity; |
||||
|
this.Store = store; |
||||
|
this.storeList = storeList; |
||||
|
this.Loaded += PackSkuSplitCountAndStoreWindow_Loaded; |
||||
|
} |
||||
|
|
||||
|
private void PackSkuSplitCountAndStoreWindow_Loaded(object sender, System.Windows.RoutedEventArgs e) |
||||
|
{ |
||||
|
this.txtQuantity.Text = Quantity.ToString(); |
||||
|
this.cbx_stroeList.ItemsSource = storeList; |
||||
|
if (Store != null) |
||||
|
this.cbx_stroeList.SelectedItem = storeList.FirstOrDefault(s => s.Id == Store.Id); |
||||
|
else |
||||
|
this.cbx_stroeList.SelectedItem = storeList.FirstOrDefault(); |
||||
|
} |
||||
|
|
||||
|
private void btn_save_Click(object sender, System.Windows.RoutedEventArgs e) |
||||
|
{ |
||||
|
if (!int.TryParse(txtQuantity.Text, out int q)) |
||||
|
{ |
||||
|
MessageBox.Show("件数不正确", "提示"); |
||||
|
return; |
||||
|
} |
||||
|
if (q <= 0) |
||||
|
{ |
||||
|
MessageBox.Show("件数不正确", "提示"); |
||||
|
return; |
||||
|
} |
||||
|
if (cbx_stroeList.SelectedItem == null) |
||||
|
{ |
||||
|
MessageBox.Show("请选择一个仓库", "提示"); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
this.Quantity = q; |
||||
|
this.Store = cbx_stroeList.SelectedItem as StoreResponse; |
||||
|
|
||||
|
this.DialogResult = true; |
||||
|
this.Close(); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,34 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
|
||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class PackSkuConfigRequest |
||||
|
{ |
||||
|
public PackSkuConfigRequest() |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 店铺Sku
|
||||
|
/// </summary>
|
||||
|
public string SkuId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 采购数量
|
||||
|
/// </summary>
|
||||
|
public int PurchaseCount { get; set; } |
||||
|
|
||||
|
|
||||
|
public IList<PackSkuSplitConfigRequest> PackSkuSplitConfigList { get; set; } |
||||
|
} |
||||
|
|
||||
|
public class PackSkuSplitConfigRequest |
||||
|
{ |
||||
|
public int Index { get; set; } |
||||
|
|
||||
|
public int PackCount { get; set; } |
||||
|
|
||||
|
public StoreRequest Store { get; set; } |
||||
|
} |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
namespace BBWY.Server.Model.Dto |
||||
|
{ |
||||
|
public class StoreRequest |
||||
|
{ |
||||
|
public string Id { get; set; } |
||||
|
|
||||
|
public string Name { get; set; } |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue