<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Client.Avalonia.Views.ServerView">
<Grid RowDefinitions="Auto,*" Margin="12">
<StackPanel Grid.Row="0" Spacing="12">
<!-- API 配置 -->
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="14">
<StackPanel Spacing="10">
<Grid ColumnDefinitions="6,*">
<Border Grid.Column="0" Background="{DynamicResource SystemAccentColor}" CornerRadius="3" />
<Label Grid.Column="1" FontWeight="Bold" FontSize="14" Margin="8,0,0,0"
VerticalAlignment="Center">Web API 配置</Label>
</Grid>
<StackPanel Spacing="8">
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,8,0">API 地址:</Label>
<TextBox Grid.Column="1" Text="{Binding ApiAddress}" Watermark="http://127.0.0.1:5000" />
</Grid>
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,8,0">Token:</Label>
<TextBox Grid.Column="1" Text="{Binding ApiToken}" Watermark="可选" />
</Grid>
</StackPanel>
<StackPanel Orientation="Horizontal" Spacing="8">
<Button Content="刷新统计" Command="{Binding RefreshStatsCommand}" Padding="14,6" />
<Button Content="刷新会话" Command="{Binding RefreshSessionsCommand}" Padding="14,6" />
<Button Content="刷新黑名单" Command="{Binding RefreshBlacklistCommand}" Padding="14,6" />
<Label Content="{Binding ApiStatus}" VerticalAlignment="Center" FontSize="12" Foreground="Gray" />
</StackPanel>
</StackPanel>
</Border>
<!-- 服务器统计 -->
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="14">
<StackPanel Spacing="10">
<Grid ColumnDefinitions="6,*">
<Border Grid.Column="0" Background="{DynamicResource SystemAccentColor}" CornerRadius="3" />
<Label Grid.Column="1" FontWeight="Bold" FontSize="14" Margin="8,0,0,0"
VerticalAlignment="Center">服务器统计</Label>
</Grid>
<StackPanel Orientation="Horizontal" Spacing="24" HorizontalAlignment="Center">
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="16,10" MinWidth="120">
<StackPanel Spacing="4" HorizontalAlignment="Center">
<Label FontSize="12" Foreground="Gray" HorizontalAlignment="Center">服务</Label>
<Label FontSize="14" FontWeight="Bold" HorizontalAlignment="Center"
Content="{Binding StatsServer}" />
</StackPanel>
</Border>
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="16,10" MinWidth="120">
<StackPanel Spacing="4" HorizontalAlignment="Center">
<Label FontSize="12" Foreground="Gray" HorizontalAlignment="Center">运行状态</Label>
<Label FontSize="14" FontWeight="Bold" HorizontalAlignment="Center"
Content="{Binding StatsRunning}" />
</StackPanel>
</Border>
<Border BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="16,10" MinWidth="120">
<StackPanel Spacing="4" HorizontalAlignment="Center">
<Label FontSize="12" Foreground="Gray" HorizontalAlignment="Center">启动时间</Label>
<Label FontSize="14" FontWeight="Bold" HorizontalAlignment="Center"
Content="{Binding StatsStarted}" />
</StackPanel>
</Border>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
<!-- 会话与黑名单 TabControl -->
<TabControl Grid.Row="1">
<TabControl.Styles>
<Style Selector="TabItem">
<Setter Property="FontSize" Value="13" />
<Setter Property="Padding" Value="14,8" />
</Style>
</TabControl.Styles>
<TabItem Header="👥 在线会话">
<Grid RowDefinitions="Auto,*" Margin="6">
<StackPanel Grid.Row="0" Orientation="Horizontal" Spacing="4" Margin="0,0,0,6">
<Label FontWeight="Bold">在线会话 (共 </Label>
<Label FontWeight="Bold" Content="{Binding SessionTotal}" />
<Label FontWeight="Bold"> 个)</Label>
</StackPanel>
<ListBox Grid.Row="1" ItemsSource="{Binding Sessions}"
BorderThickness="1"
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ColumnDefinitions="Auto,*,Auto" Margin="6,4">
<Label Grid.Column="0" Content="{Binding Mobile}" FontWeight="Bold" FontSize="13" />
<Label Grid.Column="1" Content="{Binding Remote}" FontSize="12" Foreground="#666" Margin="8,0,0,0" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</TabItem>
<TabItem Header="🚫 黑名单">
<Grid RowDefinitions="Auto,*,Auto" Margin="6">
<Label Grid.Row="0" FontWeight="Bold">黑名单管理</Label>
<ListBox Grid.Row="1" ItemsSource="{Binding Blacklist}"
BorderThickness="1"
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding}" Padding="6,4" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Grid Grid.Row="2" ColumnDefinitions="*,Auto">
<TextBox Grid.Column="0" Text="{Binding NewBlacklistMobile}" Watermark="手机号" />
<Button Grid.Column="1" Content="添加黑名单" Command="{Binding AddBlacklistCommand}" Padding="14,6" />
</Grid>
</Grid>
</TabItem>
</TabControl>
</Grid>
</UserControl>
|