新增打印模板管理功能,包含免密接口和实时通知机制,支持桌面端打印模板的查询和列表展示。更新相关控制器、服务和视图,优化用户体验并增强系统的实时数据同步能力。

This commit is contained in:
geht
2026-05-12 18:29:03 +08:00
parent f5ba828eff
commit fcedc66f7a
32 changed files with 2788 additions and 2 deletions

View File

@@ -0,0 +1,96 @@
<UserControl x:Class="YY.Admin.Views.Print.PrintSettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="https://handyorg.github.io/handycontrol">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Margin="24" MaxWidth="680">
<!-- 标题 -->
<TextBlock Text="打印设置" FontSize="18" FontWeight="Bold" Margin="0,0,0,20"/>
<!-- PrintDot 连接配置 -->
<Border BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}" CornerRadius="4" Padding="16" Margin="0,0,0,16">
<StackPanel>
<TextBlock Text="PrintDot 桥接器连接" FontSize="14" FontWeight="SemiBold" Margin="0,0,0,12"/>
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="WebSocket 地址" VerticalAlignment="Center" FontSize="13"/>
<TextBox Grid.Column="1" Text="{Binding WsUrl, UpdateSourceTrigger=PropertyChanged}"
hc:InfoElement.Placeholder="ws://192.168.x.x:1122/ws"
FontSize="13" Padding="6,4"/>
</Grid>
<TextBlock Text="格式ws://&lt;IP&gt;:1122/ws支持局域网任意 IP" FontSize="11"
Foreground="{DynamicResource SecondaryTextBrush}" Margin="120,0,0,12"/>
<StackPanel Orientation="Horizontal" Margin="0,0,0,8">
<Button Content="测试连接并获取打印机" Command="{Binding TestConnectionCommand}"
Style="{StaticResource ButtonPrimary}" Padding="12,6" FontSize="13" Margin="0,0,8,0"/>
<Button Content="保存设置" Command="{Binding SaveCommand}"
Style="{StaticResource ButtonDefault}" Padding="12,6" FontSize="13"/>
</StackPanel>
<!-- 状态提示 -->
<TextBlock Text="{Binding StatusMessage}" FontSize="12" Foreground="{DynamicResource InfoBrush}"
Visibility="{Binding StatusMessage, Converter={StaticResource String2VisibilityConverter}}"/>
</StackPanel>
</Border>
<!-- 打印机列表 -->
<Border BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}" CornerRadius="4" Padding="16" Margin="0,0,0,16">
<StackPanel>
<TextBlock Text="可用打印机" FontSize="14" FontWeight="SemiBold" Margin="0,0,0,12"/>
<ListBox ItemsSource="{Binding Printers}" SelectedItem="{Binding SelectedPrinter}"
MaxHeight="180" ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="4,2">
<TextBlock Text="{Binding Name}" FontSize="13"/>
<TextBlock Text=" (默认)" FontSize="11" Foreground="{DynamicResource InfoBrush}"
Visibility="{Binding IsDefault, Converter={StaticResource Boolean2VisibilityConverter}}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Margin="0,8,0,0" FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}">
已选打印机:<Run Text="{Binding SelectedPrinter.Name, FallbackValue='(未选择)'}"/>
</TextBlock>
</StackPanel>
</Border>
<!-- 打印模板列表 -->
<Border BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}" CornerRadius="4" Padding="16">
<StackPanel>
<DockPanel Margin="0,0,0,12">
<Button DockPanel.Dock="Right" Content="刷新模板" Command="{Binding RefreshTemplatesCommand}"
Style="{StaticResource ButtonDefault}" Padding="10,4" FontSize="12"/>
<TextBlock Text="打印模板" FontSize="14" FontWeight="SemiBold" VerticalAlignment="Center"/>
</DockPanel>
<DataGrid ItemsSource="{Binding Templates}" AutoGenerateColumns="False"
IsReadOnly="True" MaxHeight="240" GridLinesVisibility="Horizontal"
HeadersVisibility="Column" FontSize="12">
<DataGrid.Columns>
<DataGridTextColumn Header="模板编码" Binding="{Binding TemplateCode}" Width="160"/>
<DataGridTextColumn Header="模板名称" Binding="{Binding TemplateName}" Width="*"/>
<DataGridTextColumn Header="分类" Binding="{Binding Category}" Width="80"/>
<DataGridTextColumn Header="纸宽(mm)" Binding="{Binding PaperWidthMm}" Width="70"/>
<DataGridTextColumn Header="纸高(mm)" Binding="{Binding PaperHeightMm}" Width="70"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Border>
<!-- 忙碌指示 -->
<hc:LoadingCircle Visibility="{Binding IsBusy, Converter={StaticResource Boolean2VisibilityConverter}}"
HorizontalAlignment="Center" Margin="0,16,0,0"/>
</StackPanel>
</ScrollViewer>
</UserControl>