新增密炼物料皮重策略功能,包括相关实体、服务、控制器及接口,支持桌面端免密CRUD操作,优化打印记录与原料入场记录的衍生字段填充逻辑,提升用户体验。
This commit is contained in:
@@ -124,6 +124,7 @@
|
||||
<DataGridTextColumn Header="供料客户" Binding="{Binding SupplyCustomer}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="120"/>
|
||||
<DataGridTextColumn Header="供应商名称" Binding="{Binding SupplierName}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="140"/>
|
||||
<DataGridTextColumn Header="总重(KG)" Binding="{Binding TotalWeight, StringFormat=N2}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="90"/>
|
||||
<DataGridTextColumn Header="托盘及皮重(合计)" Binding="{Binding PalletTareTotal, StringFormat=N2}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="120"/>
|
||||
<DataGridTextColumn Header="总份数" Binding="{Binding TotalPortions}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="70"/>
|
||||
<DataGridTextColumn Header="检测结果" Binding="{Binding TestResultText}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="85"/>
|
||||
<DataGridTextColumn Header="检测状态" Binding="{Binding TestStatusText}" CellStyle="{StaticResource CusDataGridCellStyle}" Width="85"/>
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
<RowDefinition Height="36"/> <!-- 厂家物料名称 / 保质期 -->
|
||||
<RowDefinition Height="40"/> <!-- 总重 / 总份数 — 多 4px 给 NumericUpDown 上下间距,否则 spinner 箭头会被裁切 -->
|
||||
<RowDefinition Height="36"/> <!-- 每份总重 / 每份包数 -->
|
||||
<RowDefinition Height="36"/> <!-- 托盘及皮重(合计) -->
|
||||
<RowDefinition Height="36"/> <!-- 库位 / 卸货人 -->
|
||||
<RowDefinition Height="60"/> <!-- 备注 -->
|
||||
</Grid.RowDefinitions>
|
||||
@@ -205,7 +206,7 @@
|
||||
<Border Grid.Row="1" Grid.Column="3"
|
||||
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource BorderBrush}" Padding="4,3">
|
||||
<!-- 自定义日期时间选择器:日历 + 时/分/秒 三列 + 此刻/确定 -->
|
||||
<ctrls:DateTimeListPicker SelectedDateTime="{Binding Entry.EntryTime, Mode=TwoWay}"
|
||||
<ctrls:DateTimeListPicker SelectedDateTime="{Binding EntryTimeInput, Mode=TwoWay}"
|
||||
DateTimeFormat="yyyy-MM-dd HH:mm:ss"
|
||||
Placeholder="请选择入场时间"/>
|
||||
</Border>
|
||||
@@ -458,14 +459,30 @@
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- ===== Row 7: 库位 / 卸货人 ===== -->
|
||||
<!-- ===== Row 7: 托盘及皮重(合计) ===== -->
|
||||
<Border Grid.Row="7" Grid.Column="0"
|
||||
Background="{DynamicResource SecondaryRegionBrush}"
|
||||
BorderThickness="0,0,1,1" BorderBrush="{DynamicResource BorderBrush}">
|
||||
<TextBlock Text="托盘及皮重(合计)" HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontSize="11" Foreground="{DynamicResource PrimaryTextBrush}"
|
||||
TextWrapping="Wrap" TextAlignment="Center"/>
|
||||
</Border>
|
||||
<Border Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="3"
|
||||
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource BorderBrush}" Padding="6,0">
|
||||
<TextBlock Text="{Binding PalletTareTotalDisplay, StringFormat={}{0:0.##}}"
|
||||
VerticalAlignment="Center" FontSize="13"
|
||||
Foreground="{DynamicResource SecondaryTextBrush}"
|
||||
ToolTip="由拆码明细自动汇总:Σ份数×(包装物皮重+托盘重量)"/>
|
||||
</Border>
|
||||
|
||||
<!-- ===== Row 8: 库位 / 卸货人 ===== -->
|
||||
<Border Grid.Row="8" Grid.Column="0"
|
||||
Background="{DynamicResource SecondaryRegionBrush}"
|
||||
BorderThickness="0,0,1,1" BorderBrush="{DynamicResource BorderBrush}">
|
||||
<TextBlock Text="库位" HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontSize="12" Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
</Border>
|
||||
<Border Grid.Row="7" Grid.Column="1"
|
||||
<Border Grid.Row="8" Grid.Column="1"
|
||||
BorderThickness="0,0,1,1" BorderBrush="{DynamicResource BorderBrush}" Padding="4,0">
|
||||
<Grid>
|
||||
<TextBox Text="{Binding Entry.WarehouseLocation, UpdateSourceTrigger=PropertyChanged}"
|
||||
@@ -490,13 +507,13 @@
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Border>
|
||||
<Border Grid.Row="7" Grid.Column="2"
|
||||
<Border Grid.Row="8" Grid.Column="2"
|
||||
Background="{DynamicResource SecondaryRegionBrush}"
|
||||
BorderThickness="0,0,1,1" BorderBrush="{DynamicResource BorderBrush}">
|
||||
<TextBlock Text="卸货人" HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontSize="12" Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
</Border>
|
||||
<Border Grid.Row="7" Grid.Column="3"
|
||||
<Border Grid.Row="8" Grid.Column="3"
|
||||
BorderThickness="0,0,0,1" BorderBrush="{DynamicResource BorderBrush}" Padding="4,0">
|
||||
<Grid>
|
||||
<TextBox Text="{Binding Entry.UnloadOperator, UpdateSourceTrigger=PropertyChanged}"
|
||||
@@ -522,14 +539,14 @@
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<!-- ===== Row 8: 备注(末行,无内部底边线) ===== -->
|
||||
<Border Grid.Row="8" Grid.Column="0"
|
||||
<!-- ===== Row 9: 备注(末行,无内部底边线) ===== -->
|
||||
<Border Grid.Row="9" Grid.Column="0"
|
||||
Background="{DynamicResource SecondaryRegionBrush}"
|
||||
BorderThickness="0,0,1,0" BorderBrush="{DynamicResource BorderBrush}">
|
||||
<TextBlock Text="备注" HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontSize="12" Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
</Border>
|
||||
<Border Grid.Row="8" Grid.Column="1" Grid.ColumnSpan="3" Padding="4,4">
|
||||
<Border Grid.Row="9" Grid.Column="1" Grid.ColumnSpan="3" Padding="4,4">
|
||||
<Grid>
|
||||
<TextBox Text="{Binding Entry.Remark, UpdateSourceTrigger=PropertyChanged}"
|
||||
TextWrapping="Wrap" AcceptsReturn="True"
|
||||
@@ -644,42 +661,54 @@
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
|
||||
<StackPanel>
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
|
||||
<StackPanel MinWidth="820">
|
||||
<!-- 表头 -->
|
||||
<Grid Background="{DynamicResource SecondaryRegionBrush}" Height="40">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="130"/>
|
||||
<ColumnDefinition Width="70"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="140"/>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="120"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="份数"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
<TextBlock Grid.Column="1" Text="每份重量(KG)"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
<TextBlock Grid.Column="2" Text="每份包数"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
<!-- 库位列:保存时非必填;点击「生成原材料卡片」时必填,ToolTip 给出说明 -->
|
||||
<TextBlock Grid.Column="3" Text="库位"
|
||||
<TextBlock Grid.Column="3" Text="包装物皮重"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"
|
||||
ToolTip="自动匹配皮重策略;点击可手动选择"/>
|
||||
<TextBlock Grid.Column="4" Text="托盘重量"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"
|
||||
ToolTip="由皮重策略自动匹配,未匹配时为0"/>
|
||||
<TextBlock Grid.Column="5" Text="库位"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"
|
||||
ToolTip="生成原材料卡片时为必填项"/>
|
||||
<TextBlock Grid.Column="4" Text="打印标记"
|
||||
<TextBlock Grid.Column="6" Text="打印标记"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
<TextBlock Grid.Column="5" Text="操作"
|
||||
<TextBlock Grid.Column="7" Text="操作"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
FontWeight="SemiBold" FontSize="12"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
</Grid>
|
||||
|
||||
@@ -736,19 +765,21 @@
|
||||
</DataTemplate.Resources>
|
||||
<Grid Height="44">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="130"/>
|
||||
<ColumnDefinition Width="70"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="140"/>
|
||||
<ColumnDefinition Width="80"/>
|
||||
<ColumnDefinition Width="120"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border Grid.Column="0" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<TextBox Text="{Binding Portions, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource LockableSplitTextBoxStyle}"/>
|
||||
</Border>
|
||||
<Border Grid.Column="1" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<TextBox Text="{Binding PortionWeight, UpdateSourceTrigger=PropertyChanged}"
|
||||
<TextBox Text="{Binding PortionWeightText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
|
||||
Style="{StaticResource LockableSplitTextBoxStyle}"/>
|
||||
</Border>
|
||||
<Border Grid.Column="2" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
@@ -756,6 +787,59 @@
|
||||
Style="{StaticResource LockableSplitTextBoxStyle}"/>
|
||||
</Border>
|
||||
<Border Grid.Column="3" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<Button Command="{Binding DataContext.OpenTareStrategyPickerCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
|
||||
CommandParameter="{Binding}"
|
||||
ToolTip="{Binding TareStrategyDisplay}"
|
||||
Cursor="Hand"
|
||||
VerticalAlignment="Center"
|
||||
Height="32"
|
||||
Margin="4,0"
|
||||
Focusable="False">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button">
|
||||
<Setter Property="IsEnabled" Value="True"/>
|
||||
<Setter Property="ToolTip" Value="点击选择皮重策略"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding HasCard}" Value="True">
|
||||
<Setter Property="IsEnabled" Value="False"/>
|
||||
<Setter Property="ToolTip" Value="该行已生成原材料卡片,不可修改。如需调整请先点「重新拆码」清空全部卡片"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
<Button.Template>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border x:Name="Bd"
|
||||
BorderBrush="#D9D9D9" BorderThickness="1"
|
||||
CornerRadius="2"
|
||||
Background="White">
|
||||
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontSize="13"
|
||||
Text="{Binding PackagingTare, StringFormat={}{0:0.##}}"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="Bd" Property="BorderBrush" Value="#4096FF"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter TargetName="Bd" Property="Background" Value="#F0F7FF"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter TargetName="Bd" Property="Background" Value="#F5F5F5"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border Grid.Column="4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<TextBlock Text="{Binding PalletWeight, StringFormat={}{0:0.##}}"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}"
|
||||
ToolTip="{Binding TareStrategyDisplay}"/>
|
||||
</Border>
|
||||
<Border Grid.Column="5" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<!--
|
||||
InputBindings 内 RelativeSource 不在可视树中,查找会静默失败。
|
||||
改用 Button + ControlTemplate:Command 写在 Button 元素上,可视树正常,RelativeSource 可靠。
|
||||
@@ -836,11 +920,7 @@
|
||||
</Button.Template>
|
||||
</Button>
|
||||
</Border>
|
||||
<!--
|
||||
打印标记列:行级状态(HasCard),与「继续拆码」流程契合。
|
||||
旧行(已生成卡片)显示绿色「已打印」;新增的待生成行显示灰色「未打印」。
|
||||
-->
|
||||
<Border Grid.Column="4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<Border Grid.Column="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<Grid>
|
||||
<Border CornerRadius="2" Padding="6,2" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||
<Border.Style>
|
||||
@@ -873,7 +953,7 @@
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
<Border Grid.Column="5" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<Border Grid.Column="7" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<!-- 行级:HasCard==true(该行已生成卡片)时隐藏删除按钮,新增的待生成行可正常删除 -->
|
||||
<Button Content="删除"
|
||||
Command="{Binding DataContext.RemoveSplitDetailCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
|
||||
@@ -897,6 +977,7 @@
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
<UserControl x:Class="YY.Admin.Views.RawMaterialEntry.TareStrategyPickerDialogView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:prism="http://prismlibrary.com/"
|
||||
prism:ViewModelLocator.AutoWireViewModel="True"
|
||||
Width="820" MinHeight="420">
|
||||
|
||||
<Grid Background="{DynamicResource ThirdlyRegionBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Margin="20,16,20,8" Text="选择皮重策略"
|
||||
FontSize="16" FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryTextBrush}"/>
|
||||
|
||||
<DataGrid Grid.Row="1" Margin="16,0"
|
||||
ItemsSource="{Binding Records}"
|
||||
SelectedItem="{Binding SelectedStrategy}"
|
||||
AutoGenerateColumns="False"
|
||||
IsReadOnly="True"
|
||||
CanUserAddRows="False"
|
||||
HeadersVisibility="Column">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="物料规格" Binding="{Binding MaterialSpec}" Width="100"/>
|
||||
<DataGridTextColumn Header="包装物重量" Binding="{Binding TareWeight}" Width="100"/>
|
||||
<DataGridTextColumn Header="托盘重量" Binding="{Binding PalletWeight}" Width="100"/>
|
||||
<DataGridTextColumn Header="单位" Binding="{Binding UnitName}" Width="80"/>
|
||||
<DataGridTextColumn Header="生效开始" Binding="{Binding EffectiveStartDate, StringFormat=yyyy-MM-dd}" Width="110"/>
|
||||
<DataGridTextColumn Header="生效截止" Binding="{Binding EffectiveEndDate, StringFormat=yyyy-MM-dd}" Width="110"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<StackPanel Grid.Row="2" Margin="16,12">
|
||||
<TextBlock Text="{Binding SelectedStrategyDisplay}"
|
||||
Foreground="{DynamicResource SecondaryTextBrush}"
|
||||
TextWrapping="Wrap" Margin="0,0,0,10"/>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<Button Content="取消" Command="{Binding CancelCommand}" Style="{StaticResource ButtonDefault}" Width="100" Margin="0,0,10,0"/>
|
||||
<Button Content="使用自动匹配" Command="{Binding UseAutoMatchCommand}" Style="{StaticResource ButtonDefault}" Width="120" Margin="0,0,10,0"/>
|
||||
<Button Content="确认选择" Command="{Binding ConfirmCommand}" Style="{StaticResource ButtonPrimary}" Width="100"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace YY.Admin.Views.RawMaterialEntry;
|
||||
|
||||
public partial class TareStrategyPickerDialogView
|
||||
{
|
||||
public TareStrategyPickerDialogView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
@@ -140,6 +140,7 @@
|
||||
<DataGridTextColumn Header="供应商(发货单位)" Binding="{Binding SenderUnit}" Width="*"/>
|
||||
<DataGridTextColumn Header="净重(KG)" Binding="{Binding NetWeight, StringFormat=N2}" Width="90"/>
|
||||
<DataGridTextColumn Header="已入场(KG)" Binding="{Binding EnteredWeight, StringFormat=N2}" Width="100"/>
|
||||
<DataGridTextColumn Header="货物皮重" Binding="{Binding CargoTareWeight, StringFormat=N2}" Width="90"/>
|
||||
<DataGridTextColumn Header="称重日期" Binding="{Binding WeighDate, StringFormat='yyyy-MM-dd'}" Width="110"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
Reference in New Issue
Block a user