InboundProductionPage.xaml 7.7 KB
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="IndustrialControl.Pages.InboundProductionPage"
             BackgroundColor="White">

    <Grid RowDefinitions="Auto,Auto,Auto,*,Auto">

        <!-- 顶部蓝色标题栏 -->
        <Grid BackgroundColor="#007BFF" HeightRequest="60" Padding="16,0">
            <Label Text="仓储管理系统" 
                   VerticalOptions="Center" 
                   TextColor="White"
                   FontSize="18" 
                   FontAttributes="Bold"/>
        </Grid>

        <!-- 入库单/条码扫描 -->
        <Grid Grid.Row="1" ColumnDefinitions="*,60" Padding="16,8">
            <Entry x:Name="ScanEntry" 
                   Placeholder="请扫描产品/包装条码" 
                   FontSize="14"
                   VerticalOptions="Center"
                   BackgroundColor="White"
                   HeightRequest="40"
                   Text="{Binding ScanCode}" />
            <ImageButton Grid.Column="1"
                         Source="scan.png"
                         BackgroundColor="#E6F2FF"
                         CornerRadius="4"
                         Padding="10"
                         Clicked="OnScanClicked"/>
        </Grid>

        <!-- 基础信息 -->
        <Frame Grid.Row="2" Margin="16,0" Padding="8" BorderColor="#CCCCCC" BackgroundColor="White">
            <Grid RowDefinitions="Auto,Auto" ColumnDefinitions="Auto,*,Auto,*" ColumnSpacing="8" RowSpacing="6">
                <Label Grid.Row="0" Grid.Column="0" Text="入库单号:" FontAttributes="Bold" />
                <Label Grid.Row="0" Grid.Column="1" Text="{Binding OrderNo}" LineBreakMode="TailTruncation" />
                <Label Grid.Row="0" Grid.Column="2" Text="工单号:" FontAttributes="Bold" />
                <Label Grid.Row="0" Grid.Column="3" Text="{Binding WorkOrderNo}" LineBreakMode="TailTruncation" />

                <Label Grid.Row="1" Grid.Column="0" Text="产品名称:" FontAttributes="Bold" />
                <Label Grid.Row="1" Grid.Column="1" Text="{Binding ProductName}" LineBreakMode="TailTruncation" />
                <Label Grid.Row="1" Grid.Column="2" Text="待入库数:" FontAttributes="Bold" />
                <Label Grid.Row="1" Grid.Column="3" Text="{Binding PendingQty}" LineBreakMode="TailTruncation" />
            </Grid>
        </Frame>

        <!-- 扫描明细 -->
        <Grid Grid.Row="3" RowDefinitions="Auto,*" Margin="0">
            <!-- 表头 -->
            <Grid ColumnDefinitions="40,*,*,*" BackgroundColor="#F2F2F2" Padding="8">
                <Label Text="选择" FontAttributes="Bold" />
                <Label Grid.Column="1" Text="条码" FontAttributes="Bold" />
                <Label Grid.Column="2" Text="入库库位" FontAttributes="Bold" />
                <Label Grid.Column="3" Text="产品数量" FontAttributes="Bold" />
            </Grid>

            <!-- 数据列表 -->
            <CollectionView Grid.Row="1"
                            ItemsSource="{Binding Lines}"
                            SelectionMode="Single">
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Grid ColumnDefinitions="40,*,*,*" Padding="8" BackgroundColor="White">
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup Name="CommonStates">
                                    <VisualState Name="Normal">
                                        <VisualState.Setters>
                                            <Setter Property="BackgroundColor" Value="White"/>
                                        </VisualState.Setters>
                                    </VisualState>
                                    <VisualState Name="Selected">
                                        <VisualState.Setters>
                                            <Setter Property="BackgroundColor" Value="#CCFFCC"/>
                                        </VisualState.Setters>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>

                            <CheckBox IsChecked="{Binding IsSelected}" />
                            <Label Grid.Column="1" Text="{Binding Barcode}" />
                            <!-- 库位改成 Picker -->
                            <Picker Grid.Column="2"
                                    ItemsSource="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=BindingContext.AvailableBins}"
                                    SelectedItem="{Binding Bin, Mode=TwoWay}"
                                    FontSize="14"
                                    Title="请选择"
                                    HorizontalOptions="FillAndExpand" />
                            <Label Grid.Column="3" Text="{Binding Qty}" />
                        </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>
        </Grid>

        <!-- 底部按钮 -->
        <Grid Grid.Row="4" ColumnDefinitions="*,*,*" Padding="16,8" ColumnSpacing="10">

            <!-- 扫描通过 -->
            <Grid BackgroundColor="#4CAF50"
                  HorizontalOptions="Fill"
                  VerticalOptions="Fill">
                <Grid.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding PassScanCommand}" />
                </Grid.GestureRecognizers>
                <StackLayout Orientation="Horizontal"
                             HorizontalOptions="Center"
                             VerticalOptions="Center">
                    <Image Source="pass.png" HeightRequest="20" WidthRequest="20" />
                    <Label Text="扫描通过"
                           Margin="5,0,0,0"
                           VerticalOptions="Center"
                           TextColor="White" />
                </StackLayout>
            </Grid>

            <!-- 取消扫描 -->
            <Grid Grid.Column="1"
                  BackgroundColor="#F44336"
                  HorizontalOptions="Fill"
                  VerticalOptions="Fill">
                <Grid.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding CancelScanCommand}" />
                </Grid.GestureRecognizers>
                <StackLayout Orientation="Horizontal"
                             HorizontalOptions="Center"
                             VerticalOptions="Center">
                    <Image Source="cancel.png" HeightRequest="20" WidthRequest="20" />
                    <Label Text="取消扫描"
                           Margin="5,0,0,0"
                           VerticalOptions="Center"
                           TextColor="White" />
                </StackLayout>
            </Grid>

            <!-- 确认入库 -->
            <Grid Grid.Column="2"
                  BackgroundColor="#2196F3"
                  HorizontalOptions="Fill"
                  VerticalOptions="Fill">
                <Grid.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding ConfirmCommand}" />
                </Grid.GestureRecognizers>
                <StackLayout Orientation="Horizontal"
                             HorizontalOptions="Center"
                             VerticalOptions="Center">
                    <Image Source="confirm.png" HeightRequest="20" WidthRequest="20" />
                    <Label Text="确认入库"
                           Margin="5,0,0,0"
                           VerticalOptions="Center"
                           TextColor="White" />
                </StackLayout>
            </Grid>

        </Grid>
    </Grid>
</ContentPage>