change - 修改界面显示效果

dev
WenJY 10 hours ago
parent a97aca845e
commit ab609394e4

@ -8,7 +8,9 @@
"Bash(dotnet --version)", "Bash(dotnet --version)",
"Bash(dotnet sln *)", "Bash(dotnet sln *)",
"Bash(dotnet clean *)", "Bash(dotnet clean *)",
"Bash(cat)" "Bash(cat)",
"Bash(sed -i '' 's|Background=\"#0F1620\" CornerRadius=\"8\" Padding=\"22\" BorderBrush=\"#1A2F4A\"|CornerRadius=\"8\" Padding=\"22\" BorderBrush=\"#1E3550\"|g' HomePageView.axaml)",
"Bash(sed -i '' 's|<Border CornerRadius=\"8\" Padding=\"22\" BorderBrush=\"#1E3550\" BorderThickness=\"1\">|<Border CornerRadius=\"8\" Padding=\"22\" BorderBrush=\"#1E3550\" BorderThickness=\"1\"><Border.Background><LinearGradientBrush StartPoint=\"0%,0%\" EndPoint=\"0%,100%\"><GradientStop Color=\"#121C29\" Offset=\"0\"/><GradientStop Color=\"#0F1620\" Offset=\"1\"/></LinearGradientBrush></Border.Background>|g' HomePageView.axaml)"
] ]
} }
} }

@ -3,26 +3,67 @@
x:Class="Sln.Wcs.UI.Views.Base.EntityEditWindow" x:Class="Sln.Wcs.UI.Views.Base.EntityEditWindow"
x:CompileBindings="False" x:CompileBindings="False"
SizeToContent="WidthAndHeight" SizeToContent="WidthAndHeight"
MaxWidth="750" MaxHeight="700" MaxWidth="780" MaxHeight="700"
WindowStartupLocation="CenterOwner" WindowStartupLocation="CenterOwner"
Title="编辑" Title="编辑"
Background="#0F1620" Background="Transparent"
Foreground="#BCC8D6" TransparencyLevelHint="AcrylicBlur"
ExtendClientAreaToDecorationsHint="True"
ExtendClientAreaChromeHints="PreferSystemChrome"
SystemDecorations="Full"
CanResize="False"> CanResize="False">
<Grid RowDefinitions="*,Auto" Margin="20,16,20,16"> <Border Background="#0F1620" CornerRadius="10" Margin="0"
<ScrollViewer Grid.Row="0"> BorderBrush="#1B3A5C" BorderThickness="1">
<WrapPanel x:Name="FormPanel" /> <Border.Background>
</ScrollViewer> <LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,100%">
<GradientStop Color="#0F1620" Offset="0" />
<GradientStop Color="#0C1522" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Grid.Row="1" Orientation="Horizontal" <Grid RowDefinitions="Auto,*,Auto" Margin="0">
HorizontalAlignment="Right" Spacing="10" Margin="0,16,0,0"> <!-- Title Bar -->
<Button x:Name="CancelBtn" Content="取消" <Border Grid.Row="0" Padding="20,14" CornerRadius="10,10,0,0"
Background="#0F1F38" Foreground="#8B9BB5" Background="#0C1622" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
Padding="22,8" /> <StackPanel Orientation="Horizontal" Spacing="10">
<Button x:Name="SaveBtn" Content="保存" <Rectangle Width="3" Height="18" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
Background="#1565C0" Foreground="White" <TextBlock x:Name="TitleText" Text="编辑" FontSize="15" FontWeight="SemiBold" Foreground="#DDE4F0" />
Padding="22,8" /> </StackPanel>
</StackPanel> </Border>
</Grid>
<!-- Form Content -->
<ScrollViewer Grid.Row="1" Margin="20,14,20,10">
<WrapPanel x:Name="FormPanel" />
</ScrollViewer>
<!-- Buttons -->
<Border Grid.Row="2" Padding="20,12" CornerRadius="0,0,10,10"
Background="#0A1018" BorderBrush="#1A2F4A" BorderThickness="0,1,0,0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Spacing="10">
<Button x:Name="CancelBtn" Content="取 消"
FontSize="12" Padding="24,8"
Background="#0F1F38" Foreground="#8B9BB5"
BorderBrush="#1A2F4A" BorderThickness="1"
CornerRadius="4" />
<Button x:Name="SaveBtn" Content="保 存"
FontSize="12" Padding="24,8"
CornerRadius="4">
<Button.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#1976D2" Offset="0" />
<GradientStop Color="#1565C0" Offset="1" />
</LinearGradientBrush>
</Button.Background>
<Button.Foreground>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#FFFFFF" Offset="0" />
<GradientStop Color="#E0E0E0" Offset="1" />
</LinearGradientBrush>
</Button.Foreground>
</Button>
</StackPanel>
</Border>
</Grid>
</Border>
</Window> </Window>

@ -24,7 +24,7 @@ public partial class EntityEditWindow : Window
public Task<bool> ShowDialog(object entity, List<FieldConfig> fields, bool isEdit, Window owner) public Task<bool> ShowDialog(object entity, List<FieldConfig> fields, bool isEdit, Window owner)
{ {
_entity = entity; _entity = entity;
Title = isEdit ? "编辑" : "新增"; TitleText.Text = isEdit ? "编辑" : "新增";
BuildForm(fields); BuildForm(fields);
_tcs = new TaskCompletionSource<bool>(); _tcs = new TaskCompletionSource<bool>();
ShowDialog(owner); ShowDialog(owner);
@ -43,27 +43,27 @@ public partial class EntityEditWindow : Window
if (prop is null) continue; if (prop is null) continue;
var value = prop.GetValue(_entity); var value = prop.GetValue(_entity);
// 每行一个字段容器: 标题 + 输入框 // 字段卡片
var cell = new Border var cell = new Border
{ {
Width = 340, Width = 345,
Padding = new Thickness(0, 4, 10, 4), Padding = new Thickness(12, 6),
Margin = new Thickness(0, 3),
}; };
var row = new Grid var row = new Grid { ColumnDefinitions = new ColumnDefinitions("90,*") };
{
ColumnDefinitions = new ColumnDefinitions("100,*"),
};
// 标签
var label = new TextBlock var label = new TextBlock
{ {
Text = field.DisplayName + ":", Text = field.DisplayName,
FontSize = 12, FontSize = 12,
Foreground = Brush.Parse("#8B9BB5"), Foreground = Brush.Parse("#7B8FA8"),
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
}; };
row.Children.Add(label); row.Children.Add(label);
// 输入框
Control input; Control input;
if (field.FieldType == FieldType.CheckBox) if (field.FieldType == FieldType.CheckBox)
{ {
@ -71,7 +71,7 @@ public partial class EntityEditWindow : Window
{ {
IsChecked = value is int iv ? iv == 1 : (value as bool? ?? false), IsChecked = value is int iv ? iv == 1 : (value as bool? ?? false),
IsEnabled = !field.IsReadOnly, IsEnabled = !field.IsReadOnly,
Foreground = Brush.Parse("#DDE4F0"), Foreground = Brush.Parse("#BCC8D6"),
VerticalAlignment = VerticalAlignment.Center, VerticalAlignment = VerticalAlignment.Center,
}; };
cb.IsCheckedChanged += (_, _) => cb.IsCheckedChanged += (_, _) =>
@ -85,9 +85,13 @@ public partial class EntityEditWindow : Window
Text = value?.ToString() ?? "", Text = value?.ToString() ?? "",
IsReadOnly = field.IsReadOnly, IsReadOnly = field.IsReadOnly,
Watermark = field.DisplayName, Watermark = field.DisplayName,
Background = Brush.Parse("#0C1622"), Background = Brush.Parse("#0A0E14"),
Foreground = Brush.Parse("#DDE4F0"), Foreground = Brush.Parse("#DDE4F0"),
BorderBrush = Brush.Parse("#1A2F4A"), BorderBrush = Brush.Parse("#1A2F4A"),
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(3),
Padding = new Thickness(8, 5),
FontSize = 12,
}; };
if (field.FieldType == FieldType.Number) if (field.FieldType == FieldType.Number)
{ {

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Base.LocationInfoListView"> x:Class="Sln.Wcs.UI.Views.Base.LocationInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索库位编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索库位编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1*,0.8*,0.7*,0.7*,0.5*,0.5*,0.5*,0.8*,1*,0.7*,0.7*,0.8*"> <Grid ColumnDefinitions="1*,0.8*,0.7*,0.7*,0.5*,0.5*,0.5*,0.8*,1*,0.7*,0.7*,0.8*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Base.MaterialInfoListView"> x:Class="Sln.Wcs.UI.Views.Base.MaterialInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索物料编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索物料编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.3*,0.9*,1.2*,1*,1*,0.8*,0.8*"> <Grid ColumnDefinitions="1.2*,1.3*,0.9*,1.2*,1*,1*,0.8*,0.8*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Base.StoreInfoListView"> x:Class="Sln.Wcs.UI.Views.Base.StoreInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索仓库编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索仓库编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.5*,1*,1*,1*"> <Grid ColumnDefinitions="1.2*,1.5*,1*,1*,1*">

@ -1,12 +1,12 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Device.DeviceHostListView"> x:Class="Sln.Wcs.UI.Views.Device.DeviceHostListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索主机编号/名称..." Text="{Binding SearchText}" Width="260" <TextBox Grid.Column="0" Watermark="搜索主机编号/名称..." Text="{Binding SearchText}" Width="220"
Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.5*,1.5*,0.8*,1.2*,0.8*,1.2*,1*,1.2*"> <Grid ColumnDefinitions="1.5*,1.5*,0.8*,1.2*,0.8*,1.2*,1*,1.2*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Device.DeviceInfoListView"> x:Class="Sln.Wcs.UI.Views.Device.DeviceInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索设备编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索设备编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.2*,0.8*,0.7*,0.7*,1*,0.8*,0.8*,0.8*"> <Grid ColumnDefinitions="1.2*,1.2*,0.8*,0.7*,0.7*,1*,0.8*,0.8*,0.8*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Device.DeviceParamListView"> x:Class="Sln.Wcs.UI.Views.Device.DeviceParamListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索参数编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索参数编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1*,1*,1.2*,1*,0.7*,0.6*,0.7*,0.7*,0.7*,0.8*"> <Grid ColumnDefinitions="1*,1*,1.2*,1*,0.7*,0.6*,0.7*,0.7*,0.7*,0.8*">

@ -3,8 +3,15 @@
x:Class="Sln.Wcs.UI.Views.HomePageView"> x:Class="Sln.Wcs.UI.Views.HomePageView">
<ScrollViewer Margin="20,14,20,14"> <ScrollViewer Margin="20,14,20,14">
<StackPanel Spacing="14"> <StackPanel Spacing="14">
<!-- Intro Card --> <!-- Intro Card -->
<Border Background="#0F1620" CornerRadius="8" Padding="22" BorderBrush="#1A2F4A" BorderThickness="1"> <Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Spacing="10"> <StackPanel Spacing="10">
<StackPanel Orientation="Horizontal" Spacing="10"> <StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" /> <Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
@ -14,32 +21,31 @@
FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" LineHeight="20" /> FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" LineHeight="20" />
<WrapPanel Margin="0,4,0,0"> <WrapPanel Margin="0,4,0,0">
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text=".NET 8.0" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text=".NET 8.0" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="Avalonia UI" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text="Avalonia UI" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="MVVM" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text="MVVM" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="SqlSugar ORM" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text="SqlSugar ORM" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="Serilog" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text="Serilog" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="Apollo 配置中心" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text="Apollo 配置中心" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1"> <Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="FusionCache" FontSize="11" Foreground="#64B5F6" /> <TextBlock Text="FusionCache" FontSize="11" Foreground="#64B5F6" /></Border>
</Border>
</WrapPanel> </WrapPanel>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- Module Card --> <!-- Module Card -->
<Border Background="#0F1620" CornerRadius="8" Padding="22" BorderBrush="#1A2F4A" BorderThickness="1"> <Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Spacing="12"> <StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10"> <StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" /> <Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
@ -49,57 +55,47 @@
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="主控台程序负责系统启动、配置加载、DI 容器编排" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="主控台程序负责系统启动、配置加载、DI 容器编排" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.UI" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.UI" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="跨平台桌面客户端,基于 Avalonia + MVVM提供设备监控界面" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="跨平台桌面客户端,基于 Avalonia + MVVM提供设备监控界面" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Business" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.Business" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="业务逻辑层,任务创建、库位筛选、物料入库/出库策略" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="业务逻辑层,任务创建、库位筛选、物料入库/出库策略" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Repository" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.Repository" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="数据访问层,基于 SqlSugar ORM多数据库连接管理" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="数据访问层,基于 SqlSugar ORM多数据库连接管理" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Strategy" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.Strategy" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="策略层,物料/库位分配算法,支持多种策略可配置切换" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="策略层,物料/库位分配算法,支持多种策略可配置切换" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Cache" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.Cache" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="缓存层FusionCache + SQLite 分布式缓存,支持熔断" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="缓存层FusionCache + SQLite 分布式缓存,支持熔断" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Serilog" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.Serilog" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="日志模块,按 Info/Plc/Agv/Rfid/Alarm/Error 分类存储" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="日志模块,按 Info/Plc/Agv/Rfid/Alarm/Error 分类存储" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Common / Model" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="Sln.Wcs.Common / Model" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="公共工具层与领域模型,提供基础类型、实体定义与配置" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /> <TextBlock Text="公共工具层与领域模型,提供基础类型、实体定义与配置" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
</StackPanel>
</Border>
</WrapPanel> </WrapPanel>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- 海康 AGV 模块 --> <!-- 海康 AGV 模块 -->
<Border Background="#0F1620" CornerRadius="8" Padding="22" BorderBrush="#1A2F4A" BorderThickness="1"> <Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Spacing="12"> <StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10"> <StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" /> <Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
@ -108,39 +104,36 @@
<TextBlock Text="封装海康机器人 RCS-2000 接口,采用三层架构实现 AGV 任务下发、路径规划、状态查询与设备通知。" <TextBlock Text="封装海康机器人 RCS-2000 接口,采用三层架构实现 AGV 任务下发、路径规划、状态查询与设备通知。"
FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" /> FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" />
<WrapPanel> <WrapPanel>
<Border Width="280" Padding="12,10" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6"> <StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#1565C0" CornerRadius="2" Width="4" Height="14" /> <Border Background="#1565C0" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotSdk" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="HikRoBotSdk" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
</StackPanel> <TextBlock Text="底层 HTTP 客户端,封装海康 RCS API 原始接口调用GbTaskSubmit / GenSchedulingTask / QueryStatus / CarrierBind 等)" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="底层 HTTP 客户端,封装海康 RCS API 原始接口调用GbTaskSubmit / GenSchedulingTask / QueryStatus / CarrierBind 等)" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /> <Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
</StackPanel>
</Border>
<Border Width="280" Padding="12,10" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6"> <StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#0277BD" CornerRadius="2" Width="4" Height="14" /> <Border Background="#0277BD" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotAdapter" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="HikRoBotAdapter" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
</StackPanel> <TextBlock Text="适配层,将 SDK 原始 DTO 转换为业务语义模型,含 TaskType 映射、状态枚举转换、异常处理与重试" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="适配层,将 SDK 原始 DTO 转换为业务语义模型,含 TaskType 映射、状态枚举转换、异常处理与重试" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /> <Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
</StackPanel>
</Border>
<Border Width="280" Padding="12,10" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6"> <StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#00838F" CornerRadius="2" Width="4" Height="14" /> <Border Background="#00838F" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="HikRoBotDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
</StackPanel> <TextBlock Text="调度中枢,管理多 AGV 的任务队列、防死锁、路径冲突检测、优先级调度与设备状态同步" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="调度中枢,管理多 AGV 的任务队列、防死锁、路径冲突检测、优先级调度与设备状态同步" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" />
</StackPanel>
</Border>
</WrapPanel> </WrapPanel>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- 提升机模块 --> <!-- 提升机模块 -->
<Border Background="#0F1620" CornerRadius="8" Padding="22" BorderBrush="#1A2F4A" BorderThickness="1"> <Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Spacing="12"> <StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10"> <StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" /> <Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
@ -149,45 +142,41 @@
<TextBlock Text="封装提升机 (Hoist) 控制协议,实现出入库升降控制、托盘到位检测、报警设置与状态实时监控。" <TextBlock Text="封装提升机 (Hoist) 控制协议,实现出入库升降控制、托盘到位检测、报警设置与状态实时监控。"
FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" /> FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" />
<WrapPanel> <WrapPanel>
<Border Width="280" Padding="12,10" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6"> <StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#1565C0" CornerRadius="2" Width="4" Height="14" /> <Border Background="#1565C0" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistSdk" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="HoistSdk" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
</StackPanel> <TextBlock Text="底层通信客户端,封装提升机原生协议(升降/取货/放货/状态查询),处理网络连接与超时" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="底层通信客户端,封装提升机原生协议(升降/取货/放货/状态查询),处理网络连接与超时" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /> <Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
</StackPanel>
</Border>
<Border Width="280" Padding="12,10" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6"> <StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#0277BD" CornerRadius="2" Width="4" Height="14" /> <Border Background="#0277BD" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistAdapter" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="HoistAdapter" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
</StackPanel> <TextBlock Text="适配层,将原始协议 DTO 转换为业务领域模型,含楼层映射、托盘状态枚举、报警码解析" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="适配层,将原始协议 DTO 转换为业务领域模型,含楼层映射、托盘状态枚举、报警码解析" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /> <Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
</StackPanel>
</Border>
<Border Width="280" Padding="12,10" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6"> <StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#00838F" CornerRadius="2" Width="4" Height="14" /> <Border Background="#00838F" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /> <TextBlock Text="HoistDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
</StackPanel> <TextBlock Text="调度中枢,管理多台提升机的任务队列、楼层协同、托盘到位逻辑、报警联动与状态同步" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="调度中枢,管理多台提升机的任务队列、楼层协同、托盘到位逻辑、报警联动与状态同步" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" />
</StackPanel>
</Border>
</WrapPanel> </WrapPanel>
</StackPanel> </StackPanel>
</Border> </Border>
<!-- 调用关系 --> <!-- 调用关系 -->
<Border Background="#0F1620" CornerRadius="8" Padding="22" BorderBrush="#1A2F4A" BorderThickness="1"> <Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<StackPanel Spacing="14"> <StackPanel Spacing="14">
<StackPanel Orientation="Horizontal" Spacing="10"> <StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" /> <Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="调用关系" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" /> <TextBlock Text="调用关系" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" />
</StackPanel> </StackPanel>
<Border Background="#0C1622" CornerRadius="6" Padding="16,12" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Background="#0C1622" CornerRadius="6" Padding="16,12" BorderBrush="#1A2F4A" BorderThickness="1">
<StackPanel Spacing="8"> <StackPanel Spacing="8">
<TextBlock Text="Strategy → Dispatcher → Adapter → SDK → 设备" <TextBlock Text="Strategy → Dispatcher → Adapter → SDK → 设备"
@ -196,53 +185,39 @@
<Border Background="#6A1B9A" CornerRadius="4" Padding="14,10" Width="140"> <Border Background="#6A1B9A" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2"> <StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Strategy" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" /> <TextBlock Text="Strategy" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="物料/库位分配" FontSize="9" Foreground="#CE93D8" HorizontalAlignment="Center" /> <TextBlock Text="物料/库位分配" FontSize="9" Foreground="#CE93D8" HorizontalAlignment="Center" /></StackPanel></Border>
</StackPanel>
</Border>
<TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" /> <TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#00838F" CornerRadius="4" Padding="14,10" Width="140"> <Border Background="#00838F" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2"> <StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Dispatcher" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" /> <TextBlock Text="Dispatcher" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="队列调度/防死锁" FontSize="9" Foreground="#B2DFDB" HorizontalAlignment="Center" /> <TextBlock Text="队列调度/防死锁" FontSize="9" Foreground="#B2DFDB" HorizontalAlignment="Center" /></StackPanel></Border>
</StackPanel>
</Border>
<TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" /> <TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#0277BD" CornerRadius="4" Padding="14,10" Width="140"> <Border Background="#0277BD" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2"> <StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Adapter" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" /> <TextBlock Text="Adapter" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="DTO转换/重试" FontSize="9" Foreground="#B3D4FC" HorizontalAlignment="Center" /> <TextBlock Text="DTO转换/重试" FontSize="9" Foreground="#B3D4FC" HorizontalAlignment="Center" /></StackPanel></Border>
</StackPanel>
</Border>
<TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" /> <TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#0D47A1" CornerRadius="4" Padding="14,10" Width="140"> <Border Background="#0D47A1" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2"> <StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="SDK" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" /> <TextBlock Text="SDK" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="协议通信" FontSize="9" Foreground="#90CAF9" HorizontalAlignment="Center" /> <TextBlock Text="协议通信" FontSize="9" Foreground="#90CAF9" HorizontalAlignment="Center" /></StackPanel></Border>
</StackPanel>
</Border>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</Border> </Border>
<WrapPanel HorizontalAlignment="Center"> <WrapPanel HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="0,0,16,8"> <StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#6A1B9A" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" /> <Border Background="#6A1B9A" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Strategy 策略层" FontSize="11" Foreground="#8B9BB5" /> <TextBlock Text="Strategy 策略层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8"> <StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#00838F" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" /> <Border Background="#00838F" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Dispatcher 调度层" FontSize="11" Foreground="#8B9BB5" /> <TextBlock Text="Dispatcher 调度层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8"> <StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#0277BD" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" /> <Border Background="#0277BD" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Adapter 适配层" FontSize="11" Foreground="#8B9BB5" /> <TextBlock Text="Adapter 适配层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8"> <StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#0D47A1" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" /> <Border Background="#0D47A1" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="SDK 通信层" FontSize="11" Foreground="#8B9BB5" /> <TextBlock Text="SDK 通信层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
</StackPanel>
</WrapPanel> </WrapPanel>
<TextBlock Text="Strategy 策略层根据物料属性与库位状态计算最优分配方案,将任务指令交由 Dispatcher 进行队列调度与冲突检测Dispatcher 通过 Adapter 将业务指令转换为设备协议格式,最终由 SDK 与硬件设备AGV RCS-2000 / 提升机 PLC通信执行。海康 AGV 与提升机均遵循此四层调用链仅底层通信协议不同HTTP vs TCP。" <TextBlock Text="Strategy 策略层根据物料属性与库位状态计算最优分配方案,将任务指令交由 Dispatcher 进行队列调度与冲突检测Dispatcher 通过 Adapter 将业务指令转换为设备协议格式,最终由 SDK 与硬件设备AGV RCS-2000 / 提升机 PLC通信执行。海康 AGV 与提升机均遵循此四层调用链仅底层通信协议不同HTTP vs TCP。"
FontSize="11" Foreground="#5B6F8A" TextWrapping="Wrap" LineHeight="18" /> FontSize="11" Foreground="#5B6F8A" TextWrapping="Wrap" LineHeight="18" />
</StackPanel> </StackPanel>

@ -13,20 +13,45 @@
<Grid RowDefinitions="Auto,Auto,*"> <Grid RowDefinitions="Auto,Auto,*">
<!-- Title Bar --> <!-- Title Bar -->
<Border Grid.Row="0" Padding="16,10" Background="#0A0E14"> <Border Grid.Row="0" Padding="16,8" Background="#0A0E14" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<StackPanel Orientation="Horizontal" Spacing="12" VerticalAlignment="Center"> <Grid ColumnDefinitions="Auto,*,Auto">
<Canvas Width="24" Height="24"> <!-- Left: Logo + Title -->
<Rectangle Canvas.Left="1" Canvas.Top="1" Width="22" Height="18" RadiusX="2" RadiusY="2" Fill="#0F1F38" Stroke="#4FC3F7" StrokeThickness="1.2" /> <StackPanel Grid.Column="0" Orientation="Horizontal" Spacing="10" VerticalAlignment="Center">
<Rectangle Canvas.Left="4" Canvas.Top="4" Width="16" Height="5" RadiusX="1" RadiusY="1" Fill="#1B3A5C" /> <Canvas Width="22" Height="22">
<Line StartPoint="5,11" EndPoint="19,11" Stroke="#1B3A5C" StrokeThickness="1" /> <Rectangle Canvas.Left="1" Canvas.Top="1" Width="20" Height="16" RadiusX="2" RadiusY="2" Fill="#0F1F38" Stroke="#4FC3F7" StrokeThickness="1.2" />
<Ellipse Canvas.Left="5" Canvas.Top="5" Width="2" Height="2" Fill="#00E676" /> <Rectangle Canvas.Left="3" Canvas.Top="3" Width="14" Height="5" RadiusX="1" RadiusY="1" Fill="#1B3A5C" />
<Ellipse Canvas.Left="9" Canvas.Top="5" Width="2" Height="2" Fill="#4FC3F7" /> <Line StartPoint="4,10" EndPoint="17,10" Stroke="#1B3A5C" StrokeThickness="1" />
</Canvas> <Ellipse Canvas.Left="4" Canvas.Top="4" Width="2" Height="2" Fill="#00E676" />
<TextBlock Text="基于多场景应用的 WCS 通用平台" FontSize="16" FontWeight="Bold" Foreground="#E1E8F0" /> <Ellipse Canvas.Left="8" Canvas.Top="4" Width="2" Height="2" Fill="#4FC3F7" />
<Border Background="#1B3A5C" CornerRadius="3" Padding="6,2" VerticalAlignment="Center"> </Canvas>
<TextBlock Text="V1.0.0" FontSize="10" Foreground="#4FC3F7" /> <TextBlock Text="基于多场景应用的 WCS 通用平台" FontSize="15" FontWeight="Bold" Foreground="#E1E8F0" />
</Border> <Border Background="#1B3A5C" CornerRadius="3" Padding="5,2" VerticalAlignment="Center">
</StackPanel> <TextBlock Text="V1.0.0" FontSize="10" Foreground="#4FC3F7" />
</Border>
</StackPanel>
<!-- Right: Status + Time + User -->
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="16" VerticalAlignment="Center">
<!-- 运行状态 -->
<StackPanel Orientation="Horizontal" Spacing="6">
<Ellipse Width="8" Height="8" Fill="#00E676" VerticalAlignment="Center" />
<TextBlock x:Name="StatusText" Text="运行正常" FontSize="12" Foreground="#8B9BB5" VerticalAlignment="Center" />
</StackPanel>
<!-- 当前时间 -->
<TextBlock x:Name="ClockText" Text="2026-06-11 12:00:00" FontSize="12" Foreground="#6B8CB5" VerticalAlignment="Center" />
<!-- 登录用户 -->
<Border Background="#0F1F38" CornerRadius="3" Padding="10,4" BorderBrush="#1B3A5C" BorderThickness="1">
<StackPanel Orientation="Horizontal" Spacing="6">
<TextBlock x:Name="UserText" Text="管理员" FontSize="12" Foreground="#DDE4F0" VerticalAlignment="Center" />
</StackPanel>
</Border>
<!-- 退出 -->
<Button x:Name="LogoutBtn" Content="退出" FontSize="11"
Background="Transparent" Foreground="#8B9BB5"
BorderBrush="#1A2F4A" BorderThickness="1"
CornerRadius="3" Padding="10,4" />
</StackPanel>
</Grid>
</Border> </Border>
<!-- Menu Bar --> <!-- Menu Bar -->

@ -25,6 +25,17 @@ public partial class MainWindow : Window
_navVm.PageChanged += OnPageChanged; _navVm.PageChanged += OnPageChanged;
BuildMenu(); BuildMenu();
_navVm.LoadDefaultPage(); _navVm.LoadDefaultPage();
// 时钟
var timer = new System.Timers.Timer(1000);
timer.Elapsed += (_, _) =>
Avalonia.Threading.Dispatcher.UIThread.Post(() =>
ClockText.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
timer.Start();
ClockText.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
// 退出按钮
LogoutBtn.Click += (_, _) => Close();
} }
private void BuildMenu() private void BuildMenu()

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Path.PathDetailsListView"> x:Class="Sln.Wcs.UI.Views.Path.PathDetailsListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.3*,1.2*,1.2*,0.8*,0.8*,0.8*"> <Grid ColumnDefinitions="1.2*,1.3*,1.2*,1.2*,0.8*,0.8*,0.8*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Path.PathInfoListView"> x:Class="Sln.Wcs.UI.Views.Path.PathInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.3*,0.8*,0.8*,1.2*,1.2*,0.8*,0.8*"> <Grid ColumnDefinitions="1.2*,1.3*,0.8*,0.8*,1.2*,1.2*,0.8*,0.8*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Task.TaskDetailListView"> x:Class="Sln.Wcs.UI.Views.Task.TaskDetailListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,0.9*,1*,1.1*,0.6*,0.6*,0.6*,0.9*,0.9*,0.7*,0.7*,0.7*,0.7*"> <Grid ColumnDefinitions="1.2*,0.9*,1*,1.1*,0.6*,0.6*,0.6*,0.9*,0.9*,0.7*,0.7*,0.7*,0.7*">

@ -1,11 +1,11 @@
<UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui" <UserControl x:CompileBindings="False" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.Task.TaskQueueListView"> x:Class="Sln.Wcs.UI.Views.Task.TaskQueueListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="4" VerticalAlignment="Stretch"> <Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="*,Auto,Auto" Margin="0,0,0,8"> <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="260" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" /> <TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="8,0,0,0" /> <Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid> </Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1"> <Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1*,1.2*,0.6*,0.6*,0.6*,1*,1*,0.7*,0.6*,0.8*,0.7*"> <Grid ColumnDefinitions="1.2*,1*,1.2*,0.6*,0.6*,0.6*,1*,1*,0.7*,0.6*,0.8*,0.7*">

Loading…
Cancel
Save