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 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