ServiceMonitorView.xaml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. <TextBlock Grid.Column="5" Text="{Binding RunState}" FontSize="30" Foreground="#959596" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"/>
  141. </Grid>
  142. </Border>
  143. </DataTemplate>
  144. </ItemsControl.ItemTemplate>
  145. </ItemsControl>
  146. <TextBlock Text="本页只读,仅展示后台服务运行状态,不提供任何控制/重启/写入操作。" FontSize="30" Foreground="#959596" Margin="0 30 0 40" TextWrapping="Wrap"/>
  147. </StackPanel>
  148. </ScrollViewer>
  149. </Grid>
  150. </UserControl>