From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 Plugin.DeviceConfig/DeviceConfig.xaml |  293 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 293 insertions(+), 0 deletions(-)

diff --git a/Plugin.DeviceConfig/DeviceConfig.xaml b/Plugin.DeviceConfig/DeviceConfig.xaml
new file mode 100644
index 0000000..4dab71d
--- /dev/null
+++ b/Plugin.DeviceConfig/DeviceConfig.xaml
@@ -0,0 +1,293 @@
+<hb:SimpleMaskControl x:Class="Plugin.DeviceConfig.DeviceConfig"
+             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:hb="clr-namespace:HMI.Base;assembly=HMI.Base"
+             xmlns:ui="clr-namespace:HMI.UI;assembly=HMI.UI"
+             xmlns:pw="https://opensource.panuon.com/wpf"
+             xmlns:pu="https://opensource.panuon.com/wpf-ui"
+             xmlns:dp="clr-namespace:HMI.UI.DpUtil;assembly=HMI.UI"
+             xmlns:local="clr-namespace:Plugin.DeviceConfig"
+             mc:Ignorable="d"
+             Loaded="SimpleMaskControl_Loaded"
+             d:DesignHeight="700" d:DesignWidth="1200">
+    <hb:SimpleMaskControl.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
+            </ResourceDictionary.MergedDictionaries>
+            <Style x:Key="TitleBox" TargetType="TextBlock">
+                <Setter Property="FontSize" Value="14"/>
+                <Setter Property="FontWeight" Value="SemiBold"/>
+                <Setter Property="Padding" Value="8,4"/>
+                <Setter Property="VerticalAlignment" Value="Center"/>
+            </Style>
+        </ResourceDictionary>
+    </hb:SimpleMaskControl.Resources>
+
+    <Grid dp:GridHelper.Space="8">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="Auto"/>
+        </Grid.RowDefinitions>
+
+        <!-- 椤堕儴宸ュ叿鏍� -->
+        <DockPanel Grid.Row="0">
+            <StackPanel dp:StackPanelHelper.ChildSpace="10" DockPanel.Dock="Right" Orientation="Horizontal">
+                <Button Style="{StaticResource AddBtn}" x:Name="addBtn" Click="Button_Click"/>
+                <Button Style="{StaticResource EditBtn}" x:Name="editBtn" Content="缂栬緫" Click="Button_Click"/>
+                <Button Style="{StaticResource DelBtn}" x:Name="delBtn" Content="鍒犻櫎" Click="Button_Click"/>
+                <Button x:Name="batchBtn" Click="Button_Click" Content="鎵归噺鐢熸垚"
+                        Style="{StaticResource AddBtn}"/>
+                <Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>
+                <Button Style="{StaticResource ExportBtn}" x:Name="exportBtn" Click="Button_Click"/>
+                <Button x:Name="versionBtn" Click="Button_Click" Content="鐗堟湰绠$悊"
+                        Style="{StaticResource RfhBtn}"/>
+                <Button Style="{StaticResource RfhBtn}" x:Name="rfhBtn" Click="Button_Click"/>
+            </StackPanel>
+            <TextBlock Style="{StaticResource TitleBox}" Text="浠櫒浠〃娉ㄥ唽"/>
+        </DockPanel>
+
+        <!-- 涓讳綋涓夋爮鍖哄煙 -->
+        <Grid Grid.Row="1">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="250"/>
+                <ColumnDefinition Width="*"/>
+                <ColumnDefinition Width="300"/>
+            </Grid.ColumnDefinitions>
+
+            <!-- 宸︽爮锛氳澶囧垎绫绘爲 -->
+            <Border Grid.Column="0" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="0,0,4,0">
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition Height="*"/>
+                    </Grid.RowDefinitions>
+                    <TextBox x:Name="searchBox" Grid.Row="0" Margin="6" 
+                             pu:TextBoxHelper.Watermark="鎼滅储璁惧..."
+                             Style="{StaticResource EditorTextBoxStyle}"
+                             TextChanged="SearchBox_TextChanged"/>
+                    <TreeView x:Name="deviceTree" Grid.Row="1" Margin="4"
+                              SelectedItemChanged="DeviceTree_SelectedItemChanged">
+                        <TreeView.ItemTemplate>
+                            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
+                                <TextBlock Text="{Binding Name}" FontWeight="SemiBold"/>
+                            </HierarchicalDataTemplate>
+                        </TreeView.ItemTemplate>
+                    </TreeView>
+                </Grid>
+            </Border>
+
+            <!-- 涓爮锛氳澶囪鎯� -->
+            <Border Grid.Column="1" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="2,0,2,0">
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition Height="*"/>
+                    </Grid.RowDefinitions>
+
+                    <!-- 璁惧鍩烘湰淇℃伅琛ㄥ崟 -->
+                    <GroupBox Grid.Row="0" Header="璁惧淇℃伅" Margin="6" FontWeight="SemiBold">
+                        <Grid Margin="8">
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="120"/>
+                                <ColumnDefinition Width="*"/>
+                                <ColumnDefinition Width="120"/>
+                                <ColumnDefinition Width="*"/>
+                            </Grid.ColumnDefinitions>
+                            <Grid.RowDefinitions>
+                                <RowDefinition Height="36"/>
+                                <RowDefinition Height="36"/>
+                                <RowDefinition Height="36"/>
+                            </Grid.RowDefinitions>
+
+                            <TextBlock Grid.Row="0" Grid.Column="0" Text="璁惧ID" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+                            <TextBox Grid.Row="0" Grid.Column="1" x:Name="tbDeviceId" VerticalAlignment="Center" 
+                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+                            <TextBlock Grid.Row="0" Grid.Column="2" Text="璁惧绫诲瀷" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+                            <TextBox Grid.Row="0" Grid.Column="3" x:Name="tbKind" VerticalAlignment="Center"
+                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+                            <TextBlock Grid.Row="1" Grid.Column="0" Text="椹卞姩绫诲瀷" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+                            <TextBox Grid.Row="1" Grid.Column="1" x:Name="tbDriverType" VerticalAlignment="Center"
+                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+                            <TextBlock Grid.Row="1" Grid.Column="2" Text="浼犺緭鏂瑰紡" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+                            <TextBox Grid.Row="1" Grid.Column="3" x:Name="tbTransport" VerticalAlignment="Center"
+                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+                            <TextBlock Grid.Row="2" Grid.Column="0" Text="杩炴帴绔偣" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+                            <TextBox Grid.Row="2" Grid.Column="1" x:Name="tbEndpoint" VerticalAlignment="Center"
+                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+
+                            <TextBlock Grid.Row="2" Grid.Column="2" Text="鐢熸晥鐗堟湰" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
+                            <TextBox Grid.Row="2" Grid.Column="3" x:Name="tbEffectiveVersion" VerticalAlignment="Center"
+                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
+                        </Grid>
+                    </GroupBox>
+
+                    <!-- 閫氶亾鏄犲皠琛� -->
+                    <Grid Grid.Row="1" Margin="6">
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="Auto"/>
+                            <RowDefinition Height="*"/>
+                        </Grid.RowDefinitions>
+                        <TextBlock Grid.Row="0" Text="閫氶亾鍒楄〃" FontWeight="SemiBold" Margin="0,0,0,4"/>
+                        <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="channelListView"
+                                  ItemsSource="{Binding Channels}"
+                                  VirtualizingPanel.IsVirtualizing="True"
+                                  VirtualizingPanel.VirtualizationMode="Standard">
+                            <ListView.View>
+                                <GridView AllowsColumnReorder="False">
+                                    <GridViewColumn Width="50" Header="#">
+                                        <GridViewColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <Border Style="{StaticResource CellBorder}">
+                                                    <TextBlock Style="{StaticResource ListTableTextBlock}"
+                                                        Text="{Binding Converter={StaticResource lvRowNumber},
+                                                        RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
+                                                </Border>
+                                            </DataTemplate>
+                                        </GridViewColumn.CellTemplate>
+                                    </GridViewColumn>
+                                    <GridViewColumn Width="150" Header="DeviceId">
+                                        <GridViewColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <Border Style="{StaticResource CellBorder}">
+                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
+                                                </Border>
+                                            </DataTemplate>
+                                        </GridViewColumn.CellTemplate>
+                                    </GridViewColumn>
+                                    <GridViewColumn Width="80" Header="ChannelId">
+                                        <GridViewColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <Border Style="{StaticResource CellBorder}">
+                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelId}"/>
+                                                </Border>
+                                            </DataTemplate>
+                                        </GridViewColumn.CellTemplate>
+                                    </GridViewColumn>
+                                    <GridViewColumn Width="200" Header="Capability">
+                                        <GridViewColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <Border Style="{StaticResource CellBorder}">
+                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Capability}"/>
+                                                </Border>
+                                            </DataTemplate>
+                                        </GridViewColumn.CellTemplate>
+                                    </GridViewColumn>
+                                    <GridViewColumn Width="100" Header="MaxVoltage">
+                                        <GridViewColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <Border Style="{StaticResource CellBorder}">
+                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MaxVoltage, StringFormat=F2}"/>
+                                                </Border>
+                                            </DataTemplate>
+                                        </GridViewColumn.CellTemplate>
+                                    </GridViewColumn>
+                                    <GridViewColumn Width="100" Header="MaxCurrent">
+                                        <GridViewColumn.CellTemplate>
+                                            <DataTemplate>
+                                                <Border Style="{StaticResource CellBorder}">
+                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MaxCurrent, StringFormat=F2}"/>
+                                                </Border>
+                                            </DataTemplate>
+                                        </GridViewColumn.CellTemplate>
+                                    </GridViewColumn>
+                                </GridView>
+                            </ListView.View>
+                        </ListView>
+                    </Grid>
+                </Grid>
+            </Border>
+
+            <!-- 鍙虫爮锛歋lot鏄犲皠琛� -->
+            <Border Grid.Column="2" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="4,0,0,0">
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition Height="*"/>
+                    </Grid.RowDefinitions>
+                    <TextBlock Grid.Row="0" Text="Slot 鏄犲皠" FontWeight="SemiBold" Margin="6"/>
+                    <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="slotListView"
+                              ItemsSource="{Binding SlotMappings}"
+                              VirtualizingPanel.IsVirtualizing="True"
+                              VirtualizingPanel.VirtualizationMode="Standard"
+                              Margin="4">
+                        <ListView.View>
+                            <GridView AllowsColumnReorder="False">
+                                <GridViewColumn Width="80" Header="SlotId">
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding SlotId}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="80" Header="Capability">
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Capability}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="100" Header="DeviceId">
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="60" Header="ChId">
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelId}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="80" Header="MapVer">
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MappingVersion}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                            </GridView>
+                        </ListView.View>
+                    </ListView>
+                </Grid>
+            </Border>
+        </Grid>
+
+        <!-- 搴曢儴鐘舵�佹爮 -->
+        <DockPanel Grid.Row="2" Margin="0,4,0,0">
+            <StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Center" dp:StackPanelHelper.ChildSpace="6">
+                <TextBlock Text="褰撳墠鐗堟湰鐘舵�侊細" FontWeight="SemiBold" VerticalAlignment="Center"/>
+                <Border Background="{DynamicResource SecondPrimaryColor}" CornerRadius="3" Padding="8,2">
+                    <TextBlock x:Name="tbVersionStatus" Text="{Binding CurrentVersionStatus}" Foreground="White" FontWeight="Bold"/>
+                </Border>
+            </StackPanel>
+            <StackPanel DockPanel.Dock="Right" Orientation="Horizontal" HorizontalAlignment="Right" dp:StackPanelHelper.ChildSpace="10">
+                <Button x:Name="saveDraftBtn" Click="Button_Click" Content="淇濆瓨鑽夌"
+                        Style="{StaticResource RfhBtn}" Width="90"/>
+                <Button x:Name="publishBtn" Click="Button_Click" Content="鍙戝竷"
+                        Style="{StaticResource AddBtn}" Width="70"/>
+                <Button x:Name="applyBtn" Click="Button_Click" Content="搴旂敤"
+                        Style="{StaticResource AddBtn}" Width="70"/>
+            </StackPanel>
+        </DockPanel>
+    </Grid>
+</hb:SimpleMaskControl>

--
Gitblit v1.9.1