Преглед на файлове

界面优化与数据列扩展:丰富DataGrid字段及美化

本次提交对 LockResultRecoredQuery.xaml 进行了界面优化和数据展示扩展。主要包括:查询条件和分页区域的 XAML 代码格式化,DataGrid 列顺序调整并新增多项字段(如电批程序号、锁付用时、压力、目标参数、坐标、操作员等),“通过”列采用颜色区分显示,时间字段增加格式化,整体风格更规范,显著提升了用户体验和数据可读性。
孝锋 徐 преди 8 месеца
родител
ревизия
9a92c1981c
променени са 3 файла, в които са добавени 178 реда и са изтрити 32 реда
  1. 2 0
      TeamAAS-VM/Core/Management.cs
  2. 12 2
      TeamAAS-VM/Core/ScrewDriver/XYD_ScrewDriver.cs
  3. 164 30
      TeamAAS-VM/Views/Statistics/LockResultRecoredQuery.xaml

+ 2 - 0
TeamAAS-VM/Core/Management.cs

@@ -532,6 +532,8 @@ namespace TeamAAS_VP.Core
                 ScrewDriver = new XYD_ScrewDriver(screwDriverConfig.IPAdress, screwDriverConfig.Port);
                 Status.Add(new StatusInfo(ScrewDriver.Id, "电批未连接", new SolidColorBrush(Colors.Red)));
                 ScrewDriver.ConnectStateChangedEvent += ScrewDriver_ConnectStateChangedEvent;
+                ScrewDriver.SendTimeout= screwDriverConfig.SendTimeout;
+                screwDriverConfig.ReceiveTimeout= screwDriverConfig.ReceiveTimeout;
                 var isConnected = await ScrewDriver.ConnectAsync();
                 if (isConnected)
                 {

+ 12 - 2
TeamAAS-VM/Core/ScrewDriver/XYD_ScrewDriver.cs

@@ -22,6 +22,16 @@ namespace TeamAAS_VP.Core.ScrewDriver
         // 协议最小数据长度(TSPB 固定头与描述长度)
         private const int MinDataLength = 508;
 
+        /// <summary>
+        /// 发送超时(ms)
+        /// </summary>
+        public int SendTimeout { get; set; } = 1000;
+
+        /// <summary>
+        /// 接收超时(ms)
+        /// </summary>
+        public int ReceiveTimeout { get; set; } = 2000;
+
         #region 属性
         public Guid Id { get; private set; }
 
@@ -192,8 +202,8 @@ namespace TeamAAS_VP.Core.ScrewDriver
             {
                 _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                 // 发送/接收超时,避免阻塞 UI 线程过久
-                _socket.SendTimeout = 1000;
-                _socket.ReceiveTimeout = 2000;
+                _socket.SendTimeout = SendTimeout;
+                _socket.ReceiveTimeout = ReceiveTimeout;
                 _endPoint = new IPEndPoint(System.Net.IPAddress.Parse(IPAdress), Port);
             }
         }

+ 164 - 30
TeamAAS-VM/Views/Statistics/LockResultRecoredQuery.xaml

@@ -26,38 +26,159 @@
             <RowDefinition Height="*" />
             <RowDefinition Height="Auto" />
         </Grid.RowDefinitions>
-        
-        <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,0,0,8">
-            <TextBlock Text="产品:" VerticalAlignment="Center" Margin="0,0,8,0" />
-            <ComboBox Width="200" ItemsSource="{Binding AllProduct}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedProduct}" />
 
-            <TextBlock Text="产品编号:" VerticalAlignment="Center" Margin="16,0,8,0" />
-            <TextBox Width="150" Text="{Binding ProductNumber, UpdateSourceTrigger=PropertyChanged}" />
+        <StackPanel Orientation="Horizontal"
+                    VerticalAlignment="Center"
+                    Margin="0,0,0,8">
+            <TextBlock Text="产品:"
+                       VerticalAlignment="Center"
+                       Margin="0,0,8,0" />
+            <ComboBox Width="200"
+                      ItemsSource="{Binding AllProduct}"
+                      DisplayMemberPath="Name"
+                      SelectedItem="{Binding SelectedProduct}" />
 
-            <TextBlock Text="螺丝编号:" VerticalAlignment="Center" Margin="16,0,8,0" />
-            <TextBox Width="80" Text="{Binding ScrewNumber, UpdateSourceTrigger=PropertyChanged}" />
+            <TextBlock Text="产品编号:"
+                       VerticalAlignment="Center"
+                       Margin="16,0,8,0" />
+            <TextBox Width="150"
+                     Text="{Binding ProductNumber, UpdateSourceTrigger=PropertyChanged}" />
 
-            <TextBlock Text="开始:" VerticalAlignment="Center" Margin="16,0,8,0" />
+            <TextBlock Text="螺丝编号:"
+                       VerticalAlignment="Center"
+                       Margin="16,0,8,0" />
+            <TextBox Width="80"
+                     Text="{Binding ScrewNumber, UpdateSourceTrigger=PropertyChanged}" />
+
+            <TextBlock Text="开始:"
+                       VerticalAlignment="Center"
+                       Margin="16,0,8,0" />
             <DatePicker SelectedDate="{Binding StartDate}" />
-            <TextBlock Text="结束:" VerticalAlignment="Center" Margin="8,0,8,0" />
+            <TextBlock Text="结束:"
+                       VerticalAlignment="Center"
+                       Margin="8,0,8,0" />
             <DatePicker SelectedDate="{Binding EndDate}" />
 
-            <Button Content="查询" Command="{Binding SearchCommand}" Margin="12,0,0,0" />
-            <Button Content="导出当前页" Command="{Binding ExportCommand}" Margin="6,0,0,0" />
+            <Button Content="查询"
+                    Command="{Binding SearchCommand}"
+                    Margin="12,0,0,0" />
+            <Button Content="导出当前页"
+                    Command="{Binding ExportCommand}"
+                    Margin="6,0,0,0" />
         </StackPanel>
 
-        <DataGrid Grid.Row="1" ItemsSource="{Binding Results}" AutoGenerateColumns="False" CanUserAddRows="False" IsReadOnly="True">
+        <DataGrid Grid.Row="1"
+                  ItemsSource="{Binding Results}"
+                  AutoGenerateColumns="False"
+                  CanUserAddRows="False"
+                  IsReadOnly="True">
             <DataGrid.Columns>
-                <DataGridTextColumn Header="Id" Binding="{Binding Id}" Width="60" />
-                <DataGridTextColumn Header="螺丝编号" Binding="{Binding Number}" Width="80" />
-                <DataGridTextColumn Header="产品编号" Binding="{Binding ProductNumber}" Width="150" />
-                <DataGridTextColumn Header="时间" Binding="{Binding Timestamp}" Width="160" />
-                <DataGridTextColumn Header="扭矩" Binding="{Binding LockTorque}" Width="80" />
-                <DataGridTextColumn Header="圈数" Binding="{Binding LockTurns}" Width="80" />
-                <DataGridTextColumn Header="通过" Binding="{Binding LockPassed}" Width="60" />
-                <DataGridTextColumn Header="供料器" Binding="{Binding FeederNumber}" Width="80" />
-                <DataGridTextColumn Header="披头" Binding="{Binding NozzleNumber}" Width="80" />
-                <DataGridTextColumn Header="结果详情" Binding="{Binding ResultDetails}" Width="*" />
+                <DataGridTextColumn Header="Id"
+                                    Binding="{Binding Id}"
+                                    Width="60" />
+                <DataGridTextColumn Header="时间"
+                                    Binding="{Binding Timestamp, StringFormat=yyyy-MM-dd HH:mm:ss}"
+                                    Width="160" />
+                <DataGridTextColumn Header="产品编号"
+                                    Binding="{Binding ProductNumber}"
+                                    Width="150" />
+                <DataGridTextColumn Header="螺丝编号"
+                                    Binding="{Binding Number}"
+                                    Width="80" />
+                <DataGridTextColumn Header="电批程序号"
+                                    Binding="{Binding ScrewdriverProgramNumber}"
+                                    Width="110" />
+                <DataGridTextColumn Header="锁付圈数"
+                                    Binding="{Binding LockTurns}"
+                                    Width="90" />
+                <DataGridTextColumn Header="锁付扭矩"
+                                    Binding="{Binding LockTorque}"
+                                    Width="90" />
+                <DataGridTextColumn Header="锁付用时"
+                                    Binding="{Binding LockDuration}"
+                                    Width="90" />
+                <DataGridTextColumn Header="压力"
+                                    Binding="{Binding Pressure}"
+                                    Width="80" />
+                <!-- Changed to TemplateColumn to show OK/NG with color -->
+                <DataGridTemplateColumn Header="通过"
+                                        Width="60">
+                    <DataGridTemplateColumn.CellTemplate>
+                        <DataTemplate>
+                            <Border CornerRadius="4"
+                                    Padding="2"
+                                    HorizontalAlignment="Center"
+                                    VerticalAlignment="Center">
+                                <TextBlock HorizontalAlignment="Center"
+                                           VerticalAlignment="Center"
+                                           Foreground="White"
+                                           FontWeight="Bold"
+                                           TextAlignment="Center">
+                                    <TextBlock.Style>
+                                        <Style TargetType="TextBlock">
+                                            <Setter Property="Text"
+                                                    Value="OK" />
+                                            <Setter Property="Background"
+                                                    Value="Green" />
+                                            <Style.Triggers>
+                                                <DataTrigger Binding="{Binding LockPassed}"
+                                                             Value="False">
+                                                    <Setter Property="Text"
+                                                            Value="NG" />
+                                                    <Setter Property="Background"
+                                                            Value="Red" />
+                                                </DataTrigger>
+                                            </Style.Triggers>
+                                        </Style>
+                                    </TextBlock.Style>
+                                </TextBlock>
+                            </Border>
+                        </DataTemplate>
+                    </DataGridTemplateColumn.CellTemplate>
+                </DataGridTemplateColumn>
+
+                <DataGridTextColumn Header="结果详情"
+                                    Binding="{Binding ResultDetails}"
+                                    Width="200" />
+                <DataGridTextColumn Header="目标扭矩"
+                                    Binding="{Binding TargetTorque}"
+                                    Width="100" />
+                <DataGridTextColumn Header="目标圈数上限"
+                                    Binding="{Binding TargetTurnsUpperLimit}"
+                                    Width="120" />
+                <DataGridTextColumn Header="目标圈数下限"
+                                    Binding="{Binding TargetTurnsLowerLimit}"
+                                    Width="120" />
+                <DataGridTextColumn Header="目标速度"
+                                    Binding="{Binding TargetLockSpeed}"
+                                    Width="100" />
+                <DataGridTextColumn Header="起始X"
+                                    Binding="{Binding StartPositionX}"
+                                    Width="90" />
+                <DataGridTextColumn Header="起始Y"
+                                    Binding="{Binding StartPositionY}"
+                                    Width="90" />
+                <DataGridTextColumn Header="起始Z"
+                                    Binding="{Binding StartPositionZ}"
+                                    Width="90" />
+                <DataGridTextColumn Header="终点Z"
+                                    Binding="{Binding EndPositionZ}"
+                                    Width="90" />
+                <DataGridTextColumn Header="下降速度"
+                                    Binding="{Binding LockDescentSpeed}"
+                                    Width="100" />
+                <DataGridTextColumn Header="供料器编号"
+                                    Binding="{Binding FeederNumber}"
+                                    Width="100" />
+                <DataGridTextColumn Header="披头编号"
+                                    Binding="{Binding NozzleNumber}"
+                                    Width="100" />
+                <DataGridTextColumn Header="操作员"
+                                    Binding="{Binding OperatorName}"
+                                    Width="120" />
+                <DataGridTextColumn Header="产品图片路径"
+                                    Binding="{Binding ProductImagePath}"
+                                    Width="200" />
             </DataGrid.Columns>
         </DataGrid>
         <Button Margin="16"
@@ -76,13 +197,26 @@
                 Style="{StaticResource MaterialDesignFloatingActionSecondaryButton}">
             <materialDesign:PackIcon Kind="StepForward" />
         </Button>
-        <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,8,0,0">
-            <Button Content="上一页" Command="{Binding PrevPageCommand}" Margin="4" />
-            <TextBlock VerticalAlignment="Center" Margin="4">第</TextBlock>
-            <TextBox Width="50" Text="{Binding PageIndex, UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" />
-            <TextBlock VerticalAlignment="Center" Margin="4">页 / 共</TextBlock>
-            <TextBlock VerticalAlignment="Center" Text="{Binding TotalCount}" Margin="4" />
-            <Button Content="下一页" Command="{Binding NextPageCommand}" Margin="4" />
+        <StackPanel Grid.Row="2"
+                    Orientation="Horizontal"
+                    HorizontalAlignment="Center"
+                    Margin="0,8,0,0">
+            <Button Content="上一页"
+                    Command="{Binding PrevPageCommand}"
+                    Margin="4" />
+            <TextBlock VerticalAlignment="Center"
+                       Margin="4">第</TextBlock>
+            <TextBox Width="50"
+                     Text="{Binding PageIndex, UpdateSourceTrigger=PropertyChanged}"
+                     HorizontalContentAlignment="Center" />
+            <TextBlock VerticalAlignment="Center"
+                       Margin="4">页 / 共</TextBlock>
+            <TextBlock VerticalAlignment="Center"
+                       Text="{Binding TotalCount}"
+                       Margin="4" />
+            <Button Content="下一页"
+                    Command="{Binding NextPageCommand}"
+                    Margin="4" />
         </StackPanel>
     </Grid>
 </UserControl>