修改了设备展示界面

This commit is contained in:
2025-06-22 21:00:06 +08:00
parent 908dc60439
commit 32648ff89f
7 changed files with 75 additions and 19 deletions

View File

@@ -1,3 +1,4 @@
using System.Collections.ObjectModel;
using System.Net.Sockets; using System.Net.Sockets;
using PMSWPF.Enums; using PMSWPF.Enums;
using SqlSugar; using SqlSugar;

View File

@@ -22,11 +22,12 @@ public class DevicesRepositories:BaseRepositories
} }
DbDevice dbDevice=new DbDevice(); DbDevice dbDevice=new DbDevice();
device.CopyTo<DbDevice>(dbDevice); device.CopyTo<DbDevice>(dbDevice);
dbDevice.VariableTables=new List<DbVariableTable>(); dbDevice.VariableTables=new ();
// 添加默认变量表
DbVariableTable dbVariableTable=new DbVariableTable(); DbVariableTable dbVariableTable=new DbVariableTable();
dbVariableTable.Name = "默认变量表"; dbVariableTable.Name = "默认变量表";
dbVariableTable.Description = "默认变量表"; dbVariableTable.Description = "默认变量表";
dbVariableTable.ProtocolType = ProtocolType.S7; dbVariableTable.ProtocolType = dbDevice.ProtocolType;
dbDevice.VariableTables.Add(dbVariableTable); dbDevice.VariableTables.Add(dbVariableTable);
return await _db.InsertNav(dbDevice).Include(d=>d.VariableTables).ExecuteCommandAsync(); return await _db.InsertNav(dbDevice).Include(d=>d.VariableTables).ExecuteCommandAsync();
@@ -34,7 +35,7 @@ public class DevicesRepositories:BaseRepositories
public async Task<List<DbDevice>> GetAll() public async Task<List<DbDevice>> GetAll()
{ {
return await _db.Queryable<DbDevice>().ToListAsync(); return await _db.Queryable<DbDevice>().Includes(d=>d.VariableTables).ToListAsync();
} }
public async Task<DbDevice> GetById(int id) public async Task<DbDevice> GetById(int id)
{ {

View File

@@ -32,7 +32,7 @@ public static class ObjectExtensions
/// <param name="source"></param> /// <param name="source"></param>
/// <param name="target"></param> /// <param name="target"></param>
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
public static void NewTo<T>(this Object source ) where T : new() public static T NewTo<T>(this Object source ) where T : new()
{ {
T target = new T(); T target = new T();
var sourceType = source.GetType(); var sourceType = source.GetType();
@@ -47,5 +47,6 @@ public static class ObjectExtensions
targetProperty.SetValue(target, value, null); targetProperty.SetValue(target, value, null);
} }
} }
return target;
} }
} }

View File

@@ -1,3 +1,4 @@
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using PMSWPF.Enums; using PMSWPF.Enums;
using SqlSugar; using SqlSugar;
@@ -22,7 +23,7 @@ public partial class Device:ObservableObject
[SugarColumn(ColumnDataType="varchar(20)",SqlParameterDbType=typeof(EnumToStringConvert))] [SugarColumn(ColumnDataType="varchar(20)",SqlParameterDbType=typeof(EnumToStringConvert))]
public DeviceType DeviceType { get; set; } public DeviceType DeviceType { get; set; }
public List<DataVariable>? DataVariables { get; set; } public List<VariableTable>? VariableTables { get; set; }
public ProtocolType ProtocolType { get; set; } public ProtocolType ProtocolType { get; set; }
} }

View File

@@ -3,14 +3,5 @@
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf" xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Key="DeviceItemTemplate">
<Border Background="#eee" CornerRadius="10" Margin="3" Padding="10" >
<ikw:SimpleStackPanel Spacing="10" Width="300" Height="200">
<TextBlock FontSize="26" FontWeight="Bold" Text="{Binding Name }" />
<TextBlock Text="{Binding Description }" />
<TextBlock Text="{Binding Ip }" />
</ikw:SimpleStackPanel>
</Border>
</DataTemplate>
</ResourceDictionary> </ResourceDictionary>

View File

@@ -41,6 +41,18 @@ public partial class DevicesViewModel : ViewModelBase
{ {
Device device = new Device(); Device device = new Device();
dbDevice.CopyTo(device); dbDevice.CopyTo(device);
foreach (var dbVariableTable in dbDevice.VariableTables)
{
if (device.VariableTables == null)
{
device.VariableTables=new List<VariableTable>();
}
var table = dbVariableTable.NewTo<VariableTable>();
device.VariableTables.Add(table);
}
_devices.Add(device); _devices.Add(device);
} }
} }

View File

@@ -13,11 +13,60 @@
d:DataContext="{d:DesignInstance vm:DevicesViewModel}" d:DataContext="{d:DesignInstance vm:DevicesViewModel}"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"> d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<DataTemplate x:Key="DeviceItemTemplate">
<Border Background="#eee" CornerRadius="10" Margin="3" Padding="10" >
<ikw:SimpleStackPanel Spacing="10" Width="300" Height="200">
<DockPanel >
<ui:ToggleSwitch
DockPanel.Dock="Right"
Margin="20 0 0 0 "
IsOn="{Binding IsActive}"
OffContent="停止" OnContent="启动"/>
<TextBlock FontSize="24" FontWeight="Bold" Text="{Binding Name }" />
</DockPanel>
<StackPanel ZIndex="1" > <TextBlock Text="{Binding Description }" />
<StackPanel Margin="10 5" Orientation="Horizontal"> <TextBlock Text="{Binding Ip }" />
<Button Margin="5" Command="{Binding AddDeviceCommand}" Content="添加"/> <ListBox ItemsSource="{Binding }">
</StackPanel>
</ListBox>
</ikw:SimpleStackPanel>
</Border>
</DataTemplate>
</UserControl.Resources>
<StackPanel >
<ui:CommandBar x:Name="PrimaryCommandBar"
DefaultLabelPosition="Right" IsOpen="False">
<ui:AppBarButton x:Name="AddButton"
Command="{Binding AddDeviceCommand}"
Label="Add">
<ui:AppBarButton.Icon>
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Add}"/>
</ui:AppBarButton.Icon>
</ui:AppBarButton>
<ui:AppBarButton x:Name="EditButton"
Label="Edit">
<ui:AppBarButton.Icon>
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Edit}"/>
</ui:AppBarButton.Icon>
</ui:AppBarButton>
<ui:AppBarButton x:Name="ShareButton"
Label="Share">
<ui:AppBarButton.Icon>
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Share}"/>
</ui:AppBarButton.Icon>
</ui:AppBarButton>
<ui:CommandBar.SecondaryCommands>
<ui:AppBarButton x:Name="SettingsButton"
Icon="Setting" Label="Settings"
/>
</ui:CommandBar.SecondaryCommands>
</ui:CommandBar>
<ui:GridView x:Name="BasicGridView" <ui:GridView x:Name="BasicGridView"