220 lines
14 KiB
XML
220 lines
14 KiB
XML
<Window x:Class="OrpaonVision.ConfigApp.Views.ProductionSessionManagementWindow"
|
|
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:OrpaonVision.ConfigApp.Views"
|
|
xmlns:viewModels="clr-namespace:OrpaonVision.ConfigApp.ViewModels"
|
|
mc:Ignorable="d"
|
|
Title="产品会话管理" Height="700" Width="1200" MinHeight="500" MinWidth="800">
|
|
<Grid Margin="16">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 标题栏 -->
|
|
<TextBlock Grid.Row="0" FontSize="20" FontWeight="SemiBold" Text="产品会话管理与追溯" Margin="0,0,0,12" />
|
|
|
|
<!-- 筛选条件 -->
|
|
<Border Grid.Row="1" BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="6" Padding="12" Margin="0,0,0,12">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="产品类型:" Margin="0,0,8,4" VerticalAlignment="Center" />
|
|
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="ProductTypeComboBox" Height="28" Margin="0,0,8,4" />
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="2" Text="工位:" Margin="0,0,8,4" VerticalAlignment="Center" />
|
|
<ComboBox Grid.Row="0" Grid.Column="3" x:Name="StationComboBox" Height="28" Margin="0,0,0,4" />
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="操作员:" Margin="0,0,8,4" VerticalAlignment="Center" />
|
|
<ComboBox Grid.Row="1" Grid.Column="1" x:Name="OperatorComboBox" Height="28" Margin="0,0,8,4" />
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="2" Text="状态:" Margin="0,0,8,4" VerticalAlignment="Center" />
|
|
<ComboBox Grid.Row="1" Grid.Column="3" x:Name="StatusComboBox" Height="28" Margin="0,0,0,4">
|
|
<ComboBoxItem Content="全部" Tag="" />
|
|
<ComboBoxItem Content="进行中" Tag="InProgress" />
|
|
<ComboBoxItem Content="完成(OK)" Tag="CompletedOk" />
|
|
<ComboBoxItem Content="完成(NG)" Tag="CompletedNg" />
|
|
<ComboBoxItem Content="已取消" Tag="Cancelled" />
|
|
<ComboBoxItem Content="已暂停" Tag="Paused" />
|
|
</ComboBox>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 操作按钮 -->
|
|
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,0,0,12">
|
|
<Button Width="100" Height="32" Margin="0,0,8,0" Content="查询" Click="OnQueryClicked" />
|
|
<Button Width="100" Height="32" Margin="0,0,8,0" Content="重置" Click="OnResetClicked" />
|
|
<Button Width="100" Height="32" Margin="0,0,8,0" Content="导出Excel" Click="OnExportExcelClicked" />
|
|
<Button Width="100" Height="32" Margin="0,0,8,0" Content="导出CSV" Click="OnExportCsvClicked" />
|
|
<Button Width="120" Height="32" Margin="0,0,0,0" Content="查看统计" Click="OnViewStatisticsClicked" />
|
|
</StackPanel>
|
|
|
|
<!-- 主内容区域 -->
|
|
<TabControl Grid.Row="3">
|
|
<!-- 会话列表 -->
|
|
<TabItem Header="会话列表">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<DataGrid Grid.Row="0" x:Name="SessionsDataGrid" AutoGenerateColumns="False"
|
|
IsReadOnly="True" CanUserAddRows="False" CanUserDeleteRows="False"
|
|
GridLinesVisibility="Horizontal" HeadersVisibility="Column"
|
|
SelectionMode="Single" SelectionUnit="FullRow"
|
|
MouseDoubleClick="OnSessionDoubleClicked">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="会话ID" Binding="{Binding SessionId}" Width="200" />
|
|
<DataGridTextColumn Header="产品类型" Binding="{Binding ProductTypeCode}" Width="100" />
|
|
<DataGridTextColumn Header="工位" Binding="{Binding StationName}" Width="100" />
|
|
<DataGridTextColumn Header="操作员" Binding="{Binding OperatorName}" Width="80" />
|
|
<DataGridTextColumn Header="开始时间" Binding="{Binding StartedAtUtc, StringFormat=yyyy-MM-dd HH:mm:ss}" Width="140" />
|
|
<DataGridTextColumn Header="结束时间" Binding="{Binding EndedAtUtc, StringFormat=yyyy-MM-dd HH:mm:ss}" Width="140" />
|
|
<DataGridTextColumn Header="状态" Binding="{Binding Status}" Width="100" />
|
|
<DataGridTextColumn Header="结果" Binding="{Binding Result}" Width="80" />
|
|
<DataGridTextColumn Header="进度" Binding="{Binding CurrentLayer, StringFormat={}{0}/{1}}" Width="80" />
|
|
<DataGridTextColumn Header="NG原因" Binding="{Binding NgReason}" Width="120" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<!-- 分页控件 -->
|
|
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
|
|
<Button Width="60" Height="28" Margin="0,0,4,0" Content="上一页" Click="OnPreviousPageClicked" />
|
|
<TextBlock x:Name="PageInfoTextBlock" VerticalAlignment="Center" Margin="8,0" />
|
|
<Button Width="60" Height="28" Margin="4,0,0,0" Content="下一页" Click="OnNextPageClicked" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</TabItem>
|
|
|
|
<!-- 统计信息 -->
|
|
<TabItem Header="统计信息">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<StackPanel Margin="8">
|
|
<!-- 总体统计 -->
|
|
<Border BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="4" Padding="12" Margin="0,0,0,8">
|
|
<TextBlock FontSize="14" FontWeight="SemiBold" Text="总体统计" />
|
|
</Border>
|
|
|
|
<Grid Margin="0,0,0,16">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="总会话数:" FontWeight="Bold" />
|
|
<TextBlock Grid.Row="0" Grid.Column="1" x:Name="TotalSessionsTextBlock" />
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="OK会话数:" FontWeight="Bold" Foreground="Green" />
|
|
<TextBlock Grid.Row="1" Grid.Column="1" x:Name="OkSessionsTextBlock" Foreground="Green" />
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="NG会话数:" FontWeight="Bold" Foreground="Red" />
|
|
<TextBlock Grid.Row="2" Grid.Column="1" x:Name="NgSessionsTextBlock" Foreground="Red" />
|
|
|
|
<TextBlock Grid.Row="3" Grid.Column="0" Text="合格率:" FontWeight="Bold" />
|
|
<TextBlock Grid.Row="3" Grid.Column="1" x:Name="PassRateTextBlock" />
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="2" Text="平均处理时间:" FontWeight="Bold" />
|
|
<TextBlock Grid.Row="0" Grid.Column="3" x:Name="AvgProcessingTimeTextBlock" />
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="2" Text="每小时处理量:" FontWeight="Bold" />
|
|
<TextBlock Grid.Row="1" Grid.Column="3" x:Name="ThroughputTextBlock" />
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="2" Text="进行中会话:" FontWeight="Bold" Foreground="Blue" />
|
|
<TextBlock Grid.Row="2" Grid.Column="3" x:Name="InProgressSessionsTextBlock" Foreground="Blue" />
|
|
|
|
<TextBlock Grid.Row="3" Grid.Column="2" Text="取消会话:" FontWeight="Bold" Foreground="Orange" />
|
|
<TextBlock Grid.Row="3" Grid.Column="3" x:Name="CancelledSessionsTextBlock" Foreground="Orange" />
|
|
</Grid>
|
|
|
|
<!-- 按产品类型统计 -->
|
|
<Border BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="4" Padding="12" Margin="0,0,0,8">
|
|
<TextBlock FontSize="14" FontWeight="SemiBold" Text="按产品类型统计" />
|
|
</Border>
|
|
|
|
<DataGrid x:Name="ProductTypeStatisticsDataGrid" AutoGenerateColumns="False"
|
|
IsReadOnly="True" Height="150" Margin="0,0,0,16">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="产品类型" Binding="{Binding ProductTypeCode}" Width="100" />
|
|
<DataGridTextColumn Header="产品名称" Binding="{Binding ProductTypeName}" Width="150" />
|
|
<DataGridTextColumn Header="总会话数" Binding="{Binding TotalSessions}" Width="80" />
|
|
<DataGridTextColumn Header="OK会话数" Binding="{Binding OkSessions}" Width="80" Foreground="Green" />
|
|
<DataGridTextColumn Header="NG会话数" Binding="{Binding NgSessions}" Width="80" Foreground="Red" />
|
|
<DataGridTextColumn Header="合格率" Binding="{Binding PassRate, StringFormat={}{0:P1}}" Width="80" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<!-- 按工位统计 -->
|
|
<Border BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="4" Padding="12" Margin="0,0,0,8">
|
|
<TextBlock FontSize="14" FontWeight="SemiBold" Text="按工位统计" />
|
|
</Border>
|
|
|
|
<DataGrid x:Name="StationStatisticsDataGrid" AutoGenerateColumns="False"
|
|
IsReadOnly="True" Height="150" Margin="0,0,0,16">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="工位ID" Binding="{Binding StationId}" Width="80" />
|
|
<DataGridTextColumn Header="工位名称" Binding="{Binding StationName}" Width="120" />
|
|
<DataGridTextColumn Header="总会话数" Binding="{Binding TotalSessions}" Width="80" />
|
|
<DataGridTextColumn Header="OK会话数" Binding="{Binding OkSessions}" Width="80" Foreground="Green" />
|
|
<DataGridTextColumn Header="NG会话数" Binding="{Binding NgSessions}" Width="80" Foreground="Red" />
|
|
<DataGridTextColumn Header="合格率" Binding="{Binding PassRate, StringFormat={}{0:P1}}" Width="80" />
|
|
<DataGridTextColumn Header="处理量/小时" Binding="{Binding ThroughputPerHour, StringFormat={}{0:F1}}" Width="80" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<!-- 按操作员统计 -->
|
|
<Border BorderBrush="#DDDDDD" BorderThickness="1" CornerRadius="4" Padding="12" Margin="0,0,0,8">
|
|
<TextBlock FontSize="14" FontWeight="SemiBold" Text="按操作员统计" />
|
|
</Border>
|
|
|
|
<DataGrid x:Name="OperatorStatisticsDataGrid" AutoGenerateColumns="False"
|
|
IsReadOnly="True" Height="150">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="操作员ID" Binding="{Binding OperatorId}" Width="80" />
|
|
<DataGridTextColumn Header="操作员姓名" Binding="{Binding OperatorName}" Width="100" />
|
|
<DataGridTextColumn Header="总会话数" Binding="{Binding TotalSessions}" Width="80" />
|
|
<DataGridTextColumn Header="OK会话数" Binding="{Binding OkSessions}" Width="80" Foreground="Green" />
|
|
<DataGridTextColumn Header="NG会话数" Binding="{Binding NgSessions}" Width="80" Foreground="Red" />
|
|
<DataGridTextColumn Header="合格率" Binding="{Binding PassRate, StringFormat={}{0:P1}}" Width="80" />
|
|
<DataGridTextColumn Header="平均处理时间" Binding="{Binding AverageProcessingTimeSeconds, StringFormat={}{0:F1}s}" Width="100" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
</TabControl>
|
|
|
|
<!-- 状态栏 -->
|
|
<StatusBar Grid.Row="4" Margin="0,12,0,0">
|
|
<StatusBarItem>
|
|
<TextBlock x:Name="StatusTextBlock" Text="就绪" />
|
|
</StatusBarItem>
|
|
<StatusBarItem HorizontalAlignment="Right">
|
|
<TextBlock x:Name="RecordCountTextBlock" Text="记录数: 0" />
|
|
</StatusBarItem>
|
|
</StatusBar>
|
|
</Grid>
|
|
</Window>
|