DataServices 现场调试OK

This commit is contained in:
2025-11-26 16:46:48 +08:00
parent 979afae645
commit 010272aa0b
31 changed files with 1866 additions and 267 deletions

View File

@@ -0,0 +1,12 @@
<UserControl x:Class="FATrace.WPLApp.Views.HelpManualView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FATrace.WPLApp.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace FATrace.WPLApp.Views
{
/// <summary>
/// HelpManualView.xaml 的交互逻辑
/// </summary>
public partial class HelpManualView : UserControl
{
public HelpManualView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,225 @@
<UserControl
x:Class="FATrace.WPLApp.Views.HistoryAlarmView"
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:prism="http://prismlibrary.com/"
d:DesignHeight="720"
d:DesignWidth="1280"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d">
<Grid Margin="10">
<Grid.Resources>
<FontFamily x:Key="IconSegoe">Segoe MDL2 Assets</FontFamily>
<Style x:Key="PrimaryButton" TargetType="Button">
<Setter Property="Background" Value="#4A90E2" />
<Setter Property="Foreground" Value="White" />
<Setter Property="BorderBrush" Value="#4A90E2" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="12,6" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Height" Value="32" />
</Style>
<Style x:Key="SecondaryButton" TargetType="Button">
<Setter Property="Background" Value="#F0F4F8" />
<Setter Property="Foreground" Value="#334E68" />
<Setter Property="BorderBrush" Value="#CBD5E0" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Padding" Value="12,6" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Height" Value="32" />
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- 查询条件 -->
<Border
Grid.Row="0"
Padding="10"
Background="White"
BorderBrush="#E6ECF2"
BorderThickness="1"
CornerRadius="4">
<Border.Effect>
<DropShadowEffect
BlurRadius="8"
Opacity="0.15"
ShadowDepth="1" />
</Border.Effect>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel
Grid.Column="0"
Margin="0,0,10,0"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="类别:" />
<ComboBox
Width="180"
ItemsSource="{Binding CategoryList}"
SelectedItem="{Binding Category, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel
Grid.Column="1"
Margin="0,0,10,0"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="关键字:" />
<TextBox Width="220" Text="{Binding Keyword, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel
Grid.Column="2"
Margin="0,0,10,0"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="开始:" />
<DatePicker Width="160" SelectedDate="{Binding StartTime, Mode=TwoWay}" />
</StackPanel>
<StackPanel
Grid.Column="3"
Margin="0,0,10,0"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="结束:" />
<DatePicker Width="160" SelectedDate="{Binding EndTime, Mode=TwoWay}" />
</StackPanel>
<StackPanel
Grid.Column="4"
HorizontalAlignment="Right"
Orientation="Horizontal">
<Button
Width="100"
Margin="0,0,8,0"
Command="{Binding SearchCommand}"
Style="{StaticResource PrimaryButton}">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock
Margin="0,0,6,0"
FontFamily="{StaticResource IconSegoe}"
Text="&#xE721;" />
<TextBlock Text="查询" />
</StackPanel>
</Button>
<Button
Width="100"
Command="{Binding ClearCommand}"
Style="{StaticResource SecondaryButton}">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<TextBlock
Margin="0,0,6,0"
FontFamily="{StaticResource IconSegoe}"
Text="&#xE711;" />
<TextBlock Text="清空" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Border>
<!-- 列表 -->
<DataGrid
Grid.Row="1"
Margin="0,10,0,10"
AlternatingRowBackground="#F7FAFC"
AlternationCount="2"
AutoGenerateColumns="False"
Background="White"
BorderBrush="#E6ECF2"
BorderThickness="1"
CanUserAddRows="False"
FontSize="16"
GridLinesVisibility="Horizontal"
IsReadOnly="True"
ItemsSource="{Binding Items}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="FontSize" Value="18" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn
Width="160"
Binding="{Binding Category}"
Header="类别" />
<DataGridTextColumn
Width="*"
Binding="{Binding Message}"
Header="消息" />
<DataGridTextColumn
Width="180"
Binding="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}"
Header="时间" />
</DataGrid.Columns>
</DataGrid>
<!-- 底部状态/分页 -->
<StatusBar Grid.Row="2">
<StatusBarItem>
<TextBlock Text="总数:" />
</StatusBarItem>
<StatusBarItem>
<TextBlock Text="{Binding TotalCount}" />
</StatusBarItem>
<StatusBarItem>
<Separator Width="20" />
</StatusBarItem>
<StatusBarItem>
<TextBlock Text="页码:" />
</StatusBarItem>
<StatusBarItem>
<TextBlock Text="{Binding PageIndex}" />
</StatusBarItem>
<StatusBarItem>
<TextBlock Text="/" />
</StatusBarItem>
<StatusBarItem>
<TextBlock Text="{Binding TotalPages}" />
</StatusBarItem>
<StatusBarItem>
<Button
Width="40"
Margin="5,0"
Command="{Binding FirstPageCommand}"
Content="|&lt;" />
</StatusBarItem>
<StatusBarItem>
<Button
Width="40"
Margin="5,0"
Command="{Binding PrevPageCommand}"
Content="&lt;" />
</StatusBarItem>
<StatusBarItem>
<Button
Width="40"
Margin="5,0"
Command="{Binding NextPageCommand}"
Content="&gt;" />
</StatusBarItem>
<StatusBarItem>
<Button
Width="40"
Margin="5,0"
Command="{Binding LastPageCommand}"
Content="&gt;|" />
</StatusBarItem>
</StatusBar>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace FATrace.WPLApp.Views
{
/// <summary>
/// HistoryAlarmView.xaml 的交互逻辑
/// </summary>
public partial class HistoryAlarmView : UserControl
{
public HistoryAlarmView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,130 @@
<UserControl
x:Class="FATrace.WPLApp.Views.LogView"
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:prism="http://prismlibrary.com/"
d:DesignHeight="720"
d:DesignWidth="1280"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d">
<Grid Background="#F5F7FA">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- Toolbar -->
<Border
Padding="10"
Background="White"
BorderBrush="#E6ECF2"
BorderThickness="0,0,0,1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel
Margin="0,0,16,0"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="日期:" />
<DatePicker SelectedDate="{Binding SelectedDate}" />
</StackPanel>
<StackPanel
Grid.Column="1"
Margin="0,0,16,0"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="级别:" />
<ComboBox
Width="110"
ItemsSource="{Binding Levels}"
SelectedItem="{Binding LevelFilter}" />
</StackPanel>
<TextBox
Grid.Column="2"
Height="28"
Margin="0,0,16,0"
VerticalContentAlignment="Center"
Text="{Binding Keyword, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
Grid.Column="3"
Margin="0,0,16,0"
VerticalAlignment="Center"
Content="自动刷新"
IsChecked="{Binding AutoRefresh}" />
<StackPanel
Grid.Column="4"
Margin="0,0,16,0"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="最大行数:" />
<TextBox Width="80" Text="{Binding MaxLines, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel
Grid.Column="5"
HorizontalAlignment="Left"
Orientation="Horizontal">
<Button
Margin="0,0,8,0"
Command="{Binding RefreshCommand}"
Content="刷新" />
<Button Command="{Binding OpenFolderCommand}" Content="打开日志文件夹" />
</StackPanel>
</Grid>
</Border>
<!-- Log list -->
<Border
Grid.Row="1"
Margin="10"
Background="White"
BorderBrush="#E6ECF2"
BorderThickness="1">
<DataGrid
AutoGenerateColumns="False"
CanUserAddRows="False"
GridLinesVisibility="None"
HeadersVisibility="Column"
IsReadOnly="True"
ItemsSource="{Binding Items}">
<DataGrid.Columns>
<DataGridTextColumn
Width="180"
Binding="{Binding Time}"
Header="时间" />
<DataGridTextColumn
Width="100"
Binding="{Binding Level}"
Header="级别" />
<DataGridTextColumn
Width="200"
Binding="{Binding Logger}"
Header="记录器" />
<DataGridTextColumn
Width="80"
Binding="{Binding ThreadId}"
Header="线程" />
<DataGridTextColumn
Width="*"
Binding="{Binding Message}"
Header="内容" />
</DataGrid.Columns>
</DataGrid>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace FATrace.WPLApp.Views
{
/// <summary>
/// LogView.xaml 的交互逻辑
/// </summary>
public partial class LogView : UserControl
{
public LogView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,134 @@
<UserControl
x:Class="FATrace.WPLApp.Views.LoginView"
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:prism="http://prismlibrary.com/"
xmlns:utils="clr-namespace:FATrace.WPLApp.Utils"
d:DesignHeight="720"
d:DesignWidth="1280"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d">
<Grid Background="#F5F7FA">
<Grid.Resources>
<BooleanToVisibilityConverter x:Key="Bool2Vis" />
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border
Width="420"
Padding="28"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="White"
BorderBrush="#E6ECF2"
BorderThickness="1"
CornerRadius="12">
<Border.Effect>
<DropShadowEffect
BlurRadius="12"
Opacity="0.2"
ShadowDepth="2" />
</Border.Effect>
<StackPanel>
<!-- 标题 -->
<StackPanel
Margin="0,6,0,18"
HorizontalAlignment="Center"
Orientation="Horizontal">
<TextBlock
FontFamily="/Assets/Fonts/#iconfont"
FontSize="26"
Foreground="#4A90E2"
Text="&#xec82;" />
<TextBlock
FontSize="24"
FontWeight="Bold"
Text=" 用户登录" />
</StackPanel>
<!-- 用户名 -->
<StackPanel Margin="0,6">
<TextBlock Foreground="#6B7C93" Text="用户名" />
<Border
Height="40"
Margin="0,6,0,0"
Background="#F7F9FC"
CornerRadius="6">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="36" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="8,0,0,0"
VerticalAlignment="Center"
FontFamily="/Assets/Fonts/#iconfont"
Foreground="#A0AEC0"
Text="&#xec23;" />
<TextBox
Grid.Column="1"
Padding="8,0"
VerticalContentAlignment="Center"
Background="Transparent"
BorderThickness="0"
Text="{Binding UserName, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</Border>
</StackPanel>
<!-- 密码 -->
<StackPanel Margin="0,6,0,12">
<TextBlock Foreground="#6B7C93" Text="密码" />
<Border
Height="40"
Margin="0,6,0,0"
Background="#F7F9FC"
CornerRadius="6">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="36" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="8,0,0,0"
VerticalAlignment="Center"
FontFamily="/Assets/Fonts/#iconfont"
Foreground="#A0AEC0"
Text="&#xec25;" />
<PasswordBox
Grid.Column="1"
Padding="8,0"
VerticalContentAlignment="Center"
Background="Transparent"
BorderThickness="0"
utils:PasswordBoxAssistant.BindPassword="True"
utils:PasswordBoxAssistant.BoundPassword="{Binding Password, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</Border>
</StackPanel>
<!-- 登录按钮 -->
<Button
Height="42"
Margin="0,8,0,0"
Background="#4A90E2"
BorderBrush="#4A90E2"
Command="{Binding LoginCommand}"
Content="登录"
Cursor="Hand"
FontSize="16"
Foreground="White" />
</StackPanel>
</Border>
<!-- 忙碌遮罩 -->
<!--<Grid Background="#80FFFFFF" Visibility="{Binding IsBusy, Converter={StaticResource Bool2Vis}}" />-->
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace FATrace.WPLApp.Views
{
/// <summary>
/// LoginView.xaml 的交互逻辑
/// </summary>
public partial class LoginView : UserControl
{
public LoginView()
{
InitializeComponent();
}
}
}