ServiceMonitorView.xaml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <UserControl x:Class="ivf_tl_Operate.View.ServiceMonitorView"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="clr-namespace:ivf_tl_Operate.View"
  7. xmlns:customControl="clr-namespace:ivf_tl_CustomControls;assembly=ivf_tl_CustomControls_Surface"
  8. mc:Ignorable="d"
  9. Height="2736" Width="1824">
  10. <!-- M5-03-3/4:只读「服务监控」页(需求 7/10)。
  11. 纯只读:除顶部「返回」外无任何按钮/输入/下发控件;所有数值由 ServiceMonitorViewModel 定时(2s)
  12. 从 ivf_tl_Control.AppData.Instance.GetMonitorSnapshot() 只读拉取。链路健康用颜色区分绿正常/红失联。
  13. 自适应套 MainWindow 的 Viewbox 等比缩放(M4-01),基准 1824×2736。 -->
  14. <Grid Background="White">
  15. <Grid.RowDefinitions>
  16. <RowDefinition Height="250"/>
  17. <RowDefinition Height="*"/>
  18. </Grid.RowDefinitions>
  19. <!-- 顶部横幅 + 返回(无任何控制按钮) -->
  20. <Grid Grid.Row="0" Background="{StaticResource BannerTopFill}">
  21. <Grid.ColumnDefinitions>
  22. <ColumnDefinition Width="350"/>
  23. <ColumnDefinition/>
  24. <ColumnDefinition Width="350"/>
  25. </Grid.ColumnDefinitions>
  26. <customControl:ButtonLeftImage Grid.Column="0" Content="{DynamicResource C0044}" Click="Return_Click" Width="350" Height="250" IconWidth="46" IconHeight="46" FontSize="44" FontWeight="Medium" Foreground="#4D75AC" BorderThickness="0" Background="Transparent" IconSource="/ivf_tl_Operate;component/Resources/Image/button_return.png" IconMargin="0 0 10 0"/>
  27. <TextBlock Grid.Column="1" Text="服务监控" FontSize="60" VerticalAlignment="Center" HorizontalAlignment="Center"/>
  28. <StackPanel Grid.Column="2" Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Center">
  29. <TextBlock Text="刷新时间" FontSize="30" Foreground="#4D75AC" HorizontalAlignment="Center"/>
  30. <TextBlock Text="{Binding SnapshotTime}" FontSize="34" Foreground="#4D75AC" HorizontalAlignment="Center"/>
  31. </StackPanel>
  32. </Grid>
  33. <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
  34. <StackPanel Margin="60 20">
  35. <!-- 托管状态 -->
  36. <Border Margin="0 10" Padding="30 20" Background="#F5F6F8" CornerRadius="10">
  37. <StackPanel Orientation="Horizontal">
  38. <Ellipse Width="36" Height="36" Fill="{Binding ControlHostedBrush}" VerticalAlignment="Center"/>
  39. <TextBlock Text="后台服务:" FontSize="44" VerticalAlignment="Center" Margin="20 0 0 0"/>
  40. <TextBlock Text="{Binding ControlHostedText}" FontSize="44" FontWeight="Bold" Foreground="{Binding ControlHostedBrush}" VerticalAlignment="Center"/>
  41. </StackPanel>
  42. </Border>
  43. <!-- 链路健康 -->
  44. <TextBlock Text="链路健康" FontSize="48" FontWeight="Bold" Foreground="#4D75AC" Margin="0 30 0 10"/>
  45. <!-- MQTT -->
  46. <Border Margin="0 8" Padding="30 18" Background="#F5F6F8" CornerRadius="10">
  47. <Grid>
  48. <Grid.ColumnDefinitions>
  49. <ColumnDefinition Width="60"/>
  50. <ColumnDefinition Width="420"/>
  51. <ColumnDefinition Width="320"/>
  52. <ColumnDefinition/>
  53. </Grid.ColumnDefinitions>
  54. <Ellipse Grid.Column="0" Width="36" Height="36" Fill="{Binding MqttBrush}" VerticalAlignment="Center"/>
  55. <TextBlock Grid.Column="1" Text="MQTT(舱室态推送)" FontSize="42" VerticalAlignment="Center"/>
  56. <TextBlock Grid.Column="2" Text="{Binding MqttText}" FontSize="42" FontWeight="Bold" Foreground="{Binding MqttBrush}" VerticalAlignment="Center"/>
  57. <TextBlock Grid.Column="3" Text="{Binding MqttLastOk, StringFormat=最后成功 {0}}" FontSize="38" Foreground="#959596" VerticalAlignment="Center"/>
  58. </Grid>
  59. </Border>
  60. <!-- 服务器 HTTP -->
  61. <Border Margin="0 8" Padding="30 18" Background="#F5F6F8" CornerRadius="10">
  62. <Grid>
  63. <Grid.ColumnDefinitions>
  64. <ColumnDefinition Width="60"/>
  65. <ColumnDefinition Width="420"/>
  66. <ColumnDefinition Width="320"/>
  67. <ColumnDefinition/>
  68. </Grid.ColumnDefinitions>
  69. <Ellipse Grid.Column="0" Width="36" Height="36" Fill="{Binding HttpBrush}" VerticalAlignment="Center"/>
  70. <TextBlock Grid.Column="1" Text="服务器通信(HTTP 轮询)" FontSize="42" VerticalAlignment="Center"/>
  71. <TextBlock Grid.Column="2" Text="{Binding HttpText}" FontSize="42" FontWeight="Bold" Foreground="{Binding HttpBrush}" VerticalAlignment="Center"/>
  72. <TextBlock Grid.Column="3" Text="{Binding HttpLastOk, StringFormat=最后成功 {0}}" FontSize="38" Foreground="#959596" VerticalAlignment="Center"/>
  73. </Grid>
  74. </Border>
  75. <TextBlock Text="{Binding ServerUrl, StringFormat=接口地址:{0}}" FontSize="34" Foreground="#959596" Margin="90 0 0 0"/>
  76. <!-- Kafka / 图片上传 -->
  77. <Border Margin="0 8" Padding="30 18" Background="#F5F6F8" CornerRadius="10">
  78. <Grid>
  79. <Grid.ColumnDefinitions>
  80. <ColumnDefinition Width="60"/>
  81. <ColumnDefinition Width="420"/>
  82. <ColumnDefinition Width="320"/>
  83. <ColumnDefinition/>
  84. </Grid.ColumnDefinitions>
  85. <Ellipse Grid.Column="0" Width="36" Height="36" Fill="{Binding KafkaBrush}" VerticalAlignment="Center"/>
  86. <TextBlock Grid.Column="1" Text="Kafka(图片上传)" FontSize="42" VerticalAlignment="Center"/>
  87. <TextBlock Grid.Column="2" Text="{Binding KafkaText}" FontSize="42" FontWeight="Bold" Foreground="{Binding KafkaBrush}" VerticalAlignment="Center"/>
  88. <TextBlock Grid.Column="3" Text="{Binding KafkaLastOk, StringFormat=最后成功 {0}}" FontSize="38" Foreground="#959596" VerticalAlignment="Center"/>
  89. </Grid>
  90. </Border>
  91. <!-- 上传队列 -->
  92. <Border Margin="0 8" Padding="30 18" Background="#F5F6F8" CornerRadius="10">
  93. <Grid>
  94. <Grid.ColumnDefinitions>
  95. <ColumnDefinition Width="60"/>
  96. <ColumnDefinition Width="420"/>
  97. <ColumnDefinition/>
  98. </Grid.ColumnDefinitions>
  99. <Ellipse Grid.Column="0" Width="36" Height="36" Fill="{Binding UploadQueueBrush}" VerticalAlignment="Center"/>
  100. <TextBlock Grid.Column="1" Text="上传队列" FontSize="42" VerticalAlignment="Center"/>
  101. <TextBlock Grid.Column="2" Text="{Binding UploadQueueText}" FontSize="42" FontWeight="Bold" Foreground="{Binding UploadQueueBrush}" VerticalAlignment="Center"/>
  102. </Grid>
  103. </Border>
  104. <!-- 磁盘 -->
  105. <Border Margin="0 8" Padding="30 18" Background="#F5F6F8" CornerRadius="10">
  106. <Grid>
  107. <Grid.ColumnDefinitions>
  108. <ColumnDefinition Width="60"/>
  109. <ColumnDefinition Width="420"/>
  110. <ColumnDefinition/>
  111. </Grid.ColumnDefinitions>
  112. <Ellipse Grid.Column="0" Width="36" Height="36" Fill="{Binding DiskBrush}" VerticalAlignment="Center"/>
  113. <TextBlock Grid.Column="1" Text="缓存磁盘" FontSize="42" VerticalAlignment="Center"/>
  114. <TextBlock Grid.Column="2" Text="{Binding DiskText}" FontSize="42" FontWeight="Bold" Foreground="{Binding DiskBrush}" VerticalAlignment="Center"/>
  115. </Grid>
  116. </Border>
  117. <!-- 各舱室只读态 -->
  118. <TextBlock Text="舱室状态(温度 / 压力 / CCD / 通讯)" FontSize="48" FontWeight="Bold" Foreground="#4D75AC" Margin="0 30 0 10"/>
  119. <ItemsControl ItemsSource="{Binding Houses}">
  120. <ItemsControl.ItemTemplate>
  121. <DataTemplate>
  122. <Border Margin="0 6" Padding="20 14" Background="#F5F6F8" CornerRadius="8">
  123. <Grid>
  124. <Grid.ColumnDefinitions>
  125. <ColumnDefinition Width="180"/>
  126. <ColumnDefinition Width="260"/>
  127. <ColumnDefinition Width="240"/>
  128. <ColumnDefinition Width="240"/>
  129. <ColumnDefinition Width="240"/>
  130. <ColumnDefinition/>
  131. </Grid.ColumnDefinitions>
  132. <TextBlock Grid.Column="0" Text="{Binding HouseSn, StringFormat={}{0}号舱}" FontSize="38" FontWeight="Bold" VerticalAlignment="Center"/>
  133. <StackPanel Grid.Column="1" VerticalAlignment="Center">
  134. <TextBlock Text="{Binding Temperature, StringFormat=温度 {0}}" FontSize="34"/>
  135. <TextBlock Text="{Binding Pressure, StringFormat=压力 {0}}" FontSize="30" Foreground="#959596"/>
  136. </StackPanel>
  137. <TextBlock Grid.Column="2" Text="{Binding StateText, StringFormat=舱室 {0}}" FontSize="34" Foreground="{Binding StateBrush}" VerticalAlignment="Center"/>
  138. <TextBlock Grid.Column="3" Text="{Binding ComText, StringFormat=通讯 {0}}" FontSize="34" Foreground="{Binding ComBrush}" VerticalAlignment="Center"/>
  139. <TextBlock Grid.Column="4" Text="{Binding CcdText, StringFormat=CCD {0}}" FontSize="34" Foreground="{Binding CcdBrush}" VerticalAlignment="Center"/>
  140. <StackPanel Grid.Column="5" VerticalAlignment="Center">
  141. <TextBlock Text="{Binding WorkingType, StringFormat=活动 {0}}" FontSize="30" Foreground="#4D75AC"/>
  142. <TextBlock Text="{Binding ValveState, StringFormat=排气阀 {0}}" FontSize="28" Foreground="#959596"/>
  143. <TextBlock Text="{Binding CapturePausedText}" FontSize="28" Foreground="{Binding CapturePausedBrush}"/>
  144. </StackPanel>
  145. </Grid>
  146. </Border>
  147. </DataTemplate>
  148. </ItemsControl.ItemTemplate>
  149. </ItemsControl>
  150. <!-- 舱故障(H-08:读 /status 的 Faults,启动排除 + 运行期突发,红色高亮) -->
  151. <TextBlock Text="{Binding FaultSummaryText}" FontSize="48" FontWeight="Bold" Foreground="{Binding FaultSummaryBrush}" Margin="0 30 0 10"/>
  152. <!-- 无故障:绿色提示一行 -->
  153. <Border Margin="0 6" Padding="30 20" Background="#EAF7EE" CornerRadius="10"
  154. Visibility="{Binding NoFaultVisibility}">
  155. <TextBlock Text="未发现舱室故障,所有已连接舱室运行正常。" FontSize="36" Foreground="#2EA043" VerticalAlignment="Center"/>
  156. </Border>
  157. <!-- 有故障:逐条红底列表 -->
  158. <ItemsControl ItemsSource="{Binding Faults}"
  159. Visibility="{Binding FaultListVisibility}">
  160. <ItemsControl.ItemTemplate>
  161. <DataTemplate>
  162. <Border Margin="0 6" Padding="20 14" Background="#FBE9E7" CornerRadius="8" BorderBrush="#D0322D" BorderThickness="2">
  163. <Grid>
  164. <Grid.ColumnDefinitions>
  165. <ColumnDefinition Width="300"/>
  166. <ColumnDefinition Width="360"/>
  167. <ColumnDefinition/>
  168. <ColumnDefinition Width="240"/>
  169. </Grid.ColumnDefinitions>
  170. <StackPanel Grid.Column="0" VerticalAlignment="Center">
  171. <TextBlock Text="{Binding HouseText}" FontSize="38" FontWeight="Bold" Foreground="#D0322D"/>
  172. <TextBlock Text="{Binding AtText, StringFormat=时间 {0}}" FontSize="28" Foreground="#959596"/>
  173. </StackPanel>
  174. <StackPanel Grid.Column="1" VerticalAlignment="Center">
  175. <TextBlock Text="{Binding FaultTypeText}" FontSize="36" FontWeight="Bold" Foreground="#D0322D"/>
  176. <TextBlock Text="{Binding Stage, StringFormat=阶段 {0}}" FontSize="28" Foreground="#959596"/>
  177. </StackPanel>
  178. <TextBlock Grid.Column="2" Text="{Binding Reason}" FontSize="32" Foreground="#5A5A5A" VerticalAlignment="Center" TextWrapping="Wrap"/>
  179. <TextBlock Grid.Column="3" Text="{Binding IsolatedText}" FontSize="38" FontWeight="Bold" Foreground="{Binding IsolatedBrush}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
  180. </Grid>
  181. </Border>
  182. </DataTemplate>
  183. </ItemsControl.ItemTemplate>
  184. </ItemsControl>
  185. <!-- 阶段2 §5.4 受护栏停止:二次确认 + 工程师口令 → control 安全停机(唯一写操作) -->
  186. <Border Margin="0 30 0 10" Padding="30 20" Background="#FBE9E7" CornerRadius="10">
  187. <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
  188. <Button Content="整体停止 control(受护栏)" Command="{Binding ShutdownControlCommand}"
  189. FontSize="40" FontWeight="Bold" Foreground="White" Background="#D0322D"
  190. BorderThickness="0" Padding="40 18" Cursor="Hand"/>
  191. <TextBlock Text="需二次确认 + 工程师口令;停止后机器不再被驱动,重启 operate 才会重新拉起。"
  192. FontSize="28" Foreground="#959596" VerticalAlignment="Center" Margin="30 0 0 0" TextWrapping="Wrap" Width="700"/>
  193. </StackPanel>
  194. </Border>
  195. <TextBlock Text="本页监控经本地 HTTP 跨进程读取独立 control 的 /status;除受护栏停止外不提供其它控制操作。" FontSize="30" Foreground="#959596" Margin="0 10 0 40" TextWrapping="Wrap"/>
  196. </StackPanel>
  197. </ScrollViewer>
  198. </Grid>
  199. </UserControl>