add - 监控界面

master
wenjy 2 weeks ago
parent 4747aa7413
commit 4c4d214185

@ -18,6 +18,7 @@
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="7*"/>
<RowDefinition Height="0.7*"/>
@ -48,10 +49,10 @@
</Grid>
</Border>
<Border Grid.Row="1" BorderBrush="Red" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="2,25,2,2">
<Border Grid.Row="2" BorderBrush="Red" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="2,5,2,2">
<ContentControl Content="{Binding UserContent}"/>
</Border>
<Border Grid.Row="2" BorderBrush="#1254AB" BorderThickness="2" CornerRadius="5" Background="Transparent" Margin="6,2,6,7">
<Border Grid.Row="3" BorderBrush="#1254AB" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="6,2,6,7">
<Border.Effect>
<DropShadowEffect Color="#1254AB" Direction="270" BlurRadius="10" ShadowDepth="5" Opacity="0.5"/>
</Border.Effect>
@ -156,7 +157,7 @@
</Grid>-->
<!--单行状态显示-->
<Grid>
<!--<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
@ -255,7 +256,7 @@
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</Grid>-->
</StackPanel>
</Grid>

@ -0,0 +1,200 @@
<UserControl x:Class="SlnMesnac.WPF.Page.IndexPage.IndexContent"
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:SlnMesnac.WPF.Page.IndexPage"
mc:Ignorable="d"
d:DesignHeight="750" d:DesignWidth="1920" Background="Transparent">
<UserControl.Resources>
<!-- 定义数据模板 -->
<DataTemplate x:Key="TaskTemplate">
<Border BorderBrush="#1254AB" BorderThickness="2" CornerRadius="5" Margin="2,5">
<StackPanel Margin="10,0,0,0">
<TextBlock Text="{Binding StationName}" FontSize="18" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0"/>
<TextBlock Text="{Binding TaskDetails}" FontSize="18" Foreground="White" Margin="0,10,0,0"/>
<TextBlock Text="{Binding Status}" FontSize="18" Foreground="White" Margin="0,10,0,0"/>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,10,0,10">
<Button Content="待处理任务" FontSize="14" Style="{StaticResource BUTTON_AGREE}"
Width="80" Height="30" Background="YellowGreen" BorderBrush="YellowGreen" Margin="40,0,0,0"
Command="{Binding DataContext.HandleTaskCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
CommandParameter="{Binding TaskCode}"/>
<Button Content="删除任务" FontSize="14" Style="{StaticResource BUTTON_AGREE}"
Width="80" Height="30" Background="Red" BorderBrush="Red" Margin="20,0,0,0"
Command="{Binding DataContext.DeleteTaskCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
CommandParameter="{Binding TaskCode}"/>
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Key="LogMsgTemplate">
<TextBlock Text="{Binding}" FontSize="16" Foreground="White" TextWrapping="Wrap" MaxWidth="300"/>
</DataTemplate>
<DataTemplate x:Key="FlightTemplate">
<Border BorderBrush="#1254AB" BorderThickness="2" CornerRadius="5" Margin="2,5">
<StackPanel Margin="10,0,0,0">
<TextBlock Text="{Binding flightNumber}" FontSize="18" Foreground="White" Margin="0,10,0,0"/>
<TextBlock Text="{Binding scheduledTime}" FontSize="18" Foreground="White" Margin="0,10,0,0"/>
<TextBlock Text="{Binding destination}" FontSize="18" Foreground="White" Margin="0,10,0,0"/>
<TextBlock Text="{Binding flightStatus}" FontSize="18" Foreground="White" Margin="0,10,0,0"/>
<TextBlock Text="{Binding baggageClaim}" FontSize="18" Foreground="White" Margin="0,10,0,10"/>
</StackPanel>
</Border>
</DataTemplate>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="#1254AB" BorderThickness="0" CornerRadius="5" Background="Transparent">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="9*"/>
<RowDefinition Height="4*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#1254AB" BorderThickness="2">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<TextBlock Text="任务列表" FontSize="24" Foreground="White" Margin="20,0,0,0"/>
<Button Content="添加" Command="{Binding AddTaskCommand}" FontSize="14" Style="{StaticResource BUTTON_AGREE}" Width="80" Height="30" Background="YellowGreen" BorderBrush="YellowGreen" Margin="20,0,0,0"/>
</StackPanel>
</Border>
<Border Grid.Row="1">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding TaskItems}" ItemTemplate="{StaticResource TaskTemplate}" />
</ScrollViewer>
</Border>
<Border Grid.Row="2" BorderBrush="#1254AB" BorderThickness="2" Margin="0,10,0,0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="9*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="日志信息" FontSize="18" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding LogMessages}" ItemTemplate="{StaticResource LogMsgTemplate}" />
</ScrollViewer>
</Grid>
</Border>
</Grid>
</Border>
<Border Grid.Column="1" BorderBrush="#1254AB" BorderThickness="0" CornerRadius="5" Margin="10,0,10,0">
<Border.Background>
<ImageBrush ImageSource="/Templates/image/between.png" Stretch="Uniform" />
</Border.Background>
<Grid Margin="15,0">
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="0.7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.7*"/>
</Grid.RowDefinitions>
<Border Grid.Row="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.9*"/>
<ColumnDefinition Width="0.4*"/>
<ColumnDefinition Width="1.7*"/>
<ColumnDefinition Width="0.4*"/>
<ColumnDefinition Width="1.6*"/>
<ColumnDefinition Width="0.4*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" >
<Button Content="手动呼叫" Command="{Binding ManualCallCommand}" FontSize="16" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="40" Background="YellowGreen" BorderBrush="YellowGreen"/>
</Border>
<Border Grid.Column="2">
<Button Content="手动终止" Command="{Binding ManualTerminateCommand}" FontSize="16" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="40" Background="Red" BorderBrush="Red"/>
</Border>
<Border Grid.Column="4">
<Button Content="复 位" Command="{Binding ResetCommand}" FontSize="16" Style="{StaticResource BUTTON_AGREE}" Width="120" Height="40" Background="#FF9900" BorderBrush="#FF9900"/>
</Border>
</Grid>
</Border>
<Border Grid.Row="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="1#站台" FontSize="18" Foreground="White"/>
</Border>
<Border Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="4#站台" FontSize="18" Foreground="White"/>
</Border>
</Grid>
</Border>
<Border Grid.Row="4">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="2#站台" FontSize="18" Foreground="White"/>
</Border>
<Border Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="5#站台" FontSize="18" Foreground="White"/>
</Border>
</Grid>
</Border>
<Border Grid.Row="6">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.8*"/>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="0.2*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="3#站台" FontSize="18" Foreground="White"/>
</Border>
<Border Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="6#站台" FontSize="18" Foreground="White"/>
</Border>
</Grid>
</Border>
</Grid>
</Border>
<Border Grid.Column="2" BorderBrush="#1254AB" BorderThickness="0" CornerRadius="5" Background="Transparent">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="12*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#1254AB" BorderThickness="2">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Vertical">
<TextBlock Text="航班信息" FontSize="24" Foreground="White" Margin="20,0,0,0"/>
<TextBlock Text="{Binding CurrentDateTime, StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" FontSize="18" Foreground="White" Margin="20,0,0,0"/>
</StackPanel>
</Border>
<Border Grid.Row="1">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding FlightItems}" ItemTemplate="{StaticResource FlightTemplate}" />
</ScrollViewer>
</Border>
</Grid>
</Border>
</Grid>
</UserControl>

@ -0,0 +1,31 @@
using SlnMesnac.WPF.ViewModel.IndexPage;
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 SlnMesnac.WPF.Page.IndexPage
{
/// <summary>
/// IndexContent.xaml 的交互逻辑
/// </summary>
public partial class IndexContent : UserControl
{
public IndexContent()
{
InitializeComponent();
this.DataContext = new IndexContentViewModel();
}
}
}

@ -10,6 +10,7 @@
<ItemGroup>
<None Remove="appsettings.json" />
<None Remove="Templates\image\background.jpg" />
<None Remove="Templates\image\between.png" />
</ItemGroup>
<ItemGroup>
@ -18,6 +19,10 @@
</Content>
</ItemGroup>
<ItemGroup>
<Resource Include="Templates\image\between.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SlnMesnac.Business\SlnMesnac.Business.csproj" />
<ProjectReference Include="..\SlnMesnac.Common\SlnMesnac.Common.csproj" />
@ -37,6 +42,7 @@
<ItemGroup>
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="Lierda.WPFHelper" Version="1.0.3" />
<PackageReference Include="MvvmLightLibs" Version="5.4.1.1" />
<PackageReference Include="NVelocity" Version="1.2.0" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* T14-GEN3-7895
* SlnMesnac.WPF.ViewModel.IndexPage
* a6623b61-3574-44c2-a027-479fe9e639a2
*
* WenJY
*
* 2024-09-05 15:51:18
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.WPF.ViewModel.IndexPage
{
public class FlightItem
{
public string flightNumber { get; set; }
public string scheduledTime { get;set; }
public string destination { get;set; }
public string flightStatus { get;set; }
public string baggageClaim { get; set; }
}
}

@ -0,0 +1,222 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using static Microsoft.WindowsAPICodePack.Shell.PropertySystem.SystemProperties.System;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* T14-GEN3-7895
* SlnMesnac.WPF.ViewModel.IndexPage
* ffdc8ddd-928f-4910-b6ac-d6d6426c39d0
*
* WenJY
*
* 2024-09-05 15:05:57
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.WPF.ViewModel.IndexPage
{
public partial class IndexContentViewModel: ObservableObject
{
private DispatcherTimer _timer;
public IndexContentViewModel()
{
LogMessages = new ObservableCollection<string>();
this.Init();
}
private void Init()
{
#region 测试数据
TaskItems = new ObservableCollection<TaskItem>
{
new TaskItem { TaskCode = "1", StationName = "1#站台", TaskDetails = "入库P04->C01", Status = "任务状态:执行中" },
new TaskItem { TaskCode = "2", StationName = "2#站台", TaskDetails = "入库P04->C01", Status = "任务状态:执行中" },
new TaskItem { TaskCode = "3", StationName = "3#站台", TaskDetails = "入库P04->C01", Status = "任务状态:执行中" },
new TaskItem { TaskCode = "4", StationName = "4#站台", TaskDetails = "入库P04->C01", Status = "任务状态:执行中" },
new TaskItem { TaskCode = "5", StationName = "5#站台", TaskDetails = "入库P04->C01", Status = "任务状态:执行中" },
new TaskItem { TaskCode = "6", StationName = "6#站台", TaskDetails = "入库P04->C01", Status = "任务状态:执行中" },
};
RefreshLogMessage($"1#站台任务下发站台任务下发站台任务下发站台任务下发站台任务下发站台任务下发");
RefreshLogMessage($"2#站台任务下发");
RefreshLogMessage($"3#站台任务下发");
RefreshLogMessage($"4#站台任务下发");
RefreshLogMessage($"5#站台任务下发");
RefreshLogMessage($"6#站台任务下发");
RefreshLogMessage($"7#站台任务下发");
RefreshLogMessage($"2#站台任务下发");
RefreshLogMessage($"3#站台任务下发");
RefreshLogMessage($"4#站台任务下发");
RefreshLogMessage($"5#站台任务下发");
RefreshLogMessage($"6#站台任务下发");
RefreshLogMessage($"7#站台任务下发");
FlightItems = new ObservableCollection<FlightItem>
{
new FlightItem { flightNumber = "航班号CZ3021", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
new FlightItem { flightNumber = "航班号CZ3022", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
new FlightItem { flightNumber = "航班号CZ3023", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
new FlightItem { flightNumber = "航班号CZ3024", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
new FlightItem { flightNumber = "航班号CZ3025", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
new FlightItem { flightNumber = "航班号CZ3026", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
new FlightItem { flightNumber = "航班号CZ3027", scheduledTime = "计划/变更11:28", destination = "经停/目的:深圳",flightStatus="状态:到达",baggageClaim="转盘1" },
};
#endregion
#region 更新时间显示
_currentDateTime = DateTime.Now;
_timer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(1) // 每秒更新一次
};
_timer.Tick += (s, e) =>
{
CurrentDateTime = DateTime.Now;
};
_timer.Start();
#endregion
}
#region 参数定义
/// <summary>
/// 任务列表
/// </summary>
private ObservableCollection<TaskItem> _taskItems = new ObservableCollection<TaskItem>();
public ObservableCollection<TaskItem> TaskItems
{
get => _taskItems;
set => SetProperty(ref _taskItems, value);
}
/// <summary>
/// 日志信息
/// </summary>
private ObservableCollection<string> _logMessages = new ObservableCollection<string>();
public ObservableCollection<string> LogMessages
{
get => _logMessages;
set => SetProperty(ref _logMessages, value);
}
/// <summary>
/// 日期时间
/// </summary>
private DateTime _currentDateTime;
public DateTime CurrentDateTime
{
get => _currentDateTime;
set
{
if (_currentDateTime != value)
{
SetProperty(ref _currentDateTime, value);
}
}
}
/// <summary>
/// 航班信息
/// </summary>
private ObservableCollection<FlightItem> _flightItems = new ObservableCollection<FlightItem>();
public ObservableCollection<FlightItem> FlightItems
{
get => _flightItems;
set => SetProperty(ref _flightItems, value);
}
#endregion
/// <summary>
/// 刷新日志
/// </summary>
/// <param name="msg"></param>
private void RefreshLogMessage(string msg)
{
App.Current.Dispatcher.BeginInvoke((Action)(() =>
{
LogMessages.Add($"{DateTime.Now}: {msg}");
}));
}
/// <summary>
/// 添加任务
/// </summary>
[RelayCommand]
private void AddTask()
{
MessageBox.Show("添加任务");
}
/// <summary>
/// 处理任务
/// </summary>
/// <param name="taskCode"></param>
[RelayCommand]
private void HandleTask(string taskCode)
{
var info = taskCode;
}
/// <summary>
/// 删除任务
/// </summary>
/// <param name="taskCode"></param>
[RelayCommand]
private void DeleteTask(string taskCode)
{
var info = taskCode;
}
/// <summary>
/// 手动呼叫
/// </summary>
[RelayCommand]
private void ManualCall()
{
MessageBox.Show("手动呼叫");
}
/// <summary>
/// 手动终止
/// </summary>
[RelayCommand]
private void ManualTerminate()
{
MessageBox.Show("手动终止");
}
/// <summary>
/// 复位
/// </summary>
[RelayCommand]
private void Reset()
{
MessageBox.Show("复位");
}
}
}

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2024 WenJY
* CLR4.0.30319.42000
* T14-GEN3-7895
* SlnMesnac.WPF.ViewModel.IndexPage
* a576143f-3854-41bb-88d9-2b43962baed5
*
* WenJY
*
* 2024-09-05 15:14:04
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace SlnMesnac.WPF.ViewModel.IndexPage
{
public class TaskItem
{
public string TaskCode { get; set; }
public string StationName { get; set; }
public string TaskDetails { get; set; }
public string Status { get; set; }
}
}

@ -3,6 +3,7 @@ using GalaSoft.MvvmLight.Command;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SlnMesnac.WPF.Page.Generate;
using SlnMesnac.WPF.Page.IndexPage;
using System;
using System.Windows;
@ -14,6 +15,7 @@ namespace SlnMesnac.WPF.ViewModel
//代码生成
private readonly GenerateControl generateControl = new GenerateControl();
private IndexContent indexContent = new IndexContent();
#region 参数定义
/// <summary>
@ -84,6 +86,7 @@ namespace SlnMesnac.WPF.ViewModel
ControlOnClickCommand = new RelayCommand<object>(obj => ControlOnClick(obj));
FormControlCommand = new RelayCommand<object>(x => FormControl(x));
UserContent = indexContent;
}
/// <summary>
@ -141,7 +144,13 @@ namespace SlnMesnac.WPF.ViewModel
try
{
string info = obj as string;
//UserContent = inStoreInfoControl;
switch (info)
{
case "Index":
UserContent = indexContent;
break;
default: break;
}
}
catch (Exception ex)
{

Loading…
Cancel
Save