信号预分配功能

This commit is contained in:
CHEN-ZW\acer 2025-09-15 18:35:41 +08:00
parent 50f581ba36
commit 0d7752d821
20 changed files with 587 additions and 125 deletions

View File

@ -58,6 +58,7 @@ namespace DI_Electrical
GlobalObject._prismContainer.RegisterDialog<DialogSignalPropertyhisAndLogs, DialogSignalPropertyhisAndLogsViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalSelect, DialogSignalSelectViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAllOutputSignal, DialogAllOutputSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAssociatedSignal, DialogAssociatedSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogInput, DialogInputViewModel>();
GlobalObject._prismContainer.Register<IDialogService, DialogService>();

View File

@ -55,6 +55,7 @@ namespace SWS.CAD
GlobalObject._prismContainer.RegisterDialog<DialogPublishRecord, DialogPublishRecordViewModel>();
GlobalObject._prismContainer.RegisterDialog<SWS.WPF.Views.DialogSignalManagement,SWS.WPF.ViewModels.DialogSignalManagementViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAllOutputSignal, DialogAllOutputSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAssociatedSignal, DialogAssociatedSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogOperateRecord, DialogOperateRecordViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogPropertyHistory, DialogPropertyHistoryViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalNotice, DialogSignalNoticeViewModel>();

View File

@ -31,6 +31,27 @@
<!-- 转换器 -->
<cvt:RadioButtonValueConverter x:Key="RadioButtonValueCvt" />
<!-- GroupBox显示隐藏 -->
<Style x:Key="SecondGroupStyle1" TargetType="GroupBox">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=RadioButton1}" Value="True">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=RadioButton1}" Value="False">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="SecondGroupStyle2" TargetType="GroupBox">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=RadioButton1}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=RadioButton1}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
<!-- 树结构展开按钮样式 -->
<Style x:Key="ExpanderStyle" TargetType="{x:Type ToggleButton}">
@ -254,108 +275,105 @@
Header="通讯信号">
<StackPanel Orientation="Horizontal">
<TextBlock Text="是否通讯母线" Margin="5"/>
<RadioButton x:Name="RadioButton2"
<RadioButton x:Name="RadioButton1"
Content="是"
GroupName="OptionGroup1"
Margin="5"
IsChecked="{Binding SelectedOption1 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=是}"/>
<RadioButton x:Name="RadioButton1"
<RadioButton x:Name="RadioButton2"
Content="否"
GroupName="OptionGroup1"
Margin="5"
IsChecked="{Binding SelectedOption1 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=否}"/>
<TextBlock Text="通讯格式" Margin="5"/>
<ComboBox Width="100"
IsEnabled="{Binding IsChecked,ElementName=RadioButton2}"
ItemsSource="{Binding CommunicationFormats}"
SelectedItem="{Binding CommunicationFormat }"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="5,0,5,5"
VerticalAlignment="Bottom"
Header="信号类型">
Header="信号类型"
Style="{StaticResource SecondGroupStyle1}">
<StackPanel Orientation="Horizontal">
<RadioButton IsEnabled="{Binding IsChecked,ElementName=RadioButton1}"
IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=Digital}"
<RadioButton IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=Digital}"
Content="Digital" GroupName="OptionGroup2" Margin="5"/>
<RadioButton IsEnabled="{Binding IsChecked,ElementName=RadioButton1}"
IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=4-20mA}"
<RadioButton IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=4-20mA}"
Content="4-20mA" GroupName="OptionGroup2" Margin="5"/>
<RadioButton IsEnabled="{Binding IsChecked,ElementName=RadioButton1}"
IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=-10V-10V}"
<RadioButton IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=-10V-10V}"
Content="-10V-10V" GroupName="OptionGroup2" Margin="5"/>
<RadioButton IsEnabled="{Binding IsChecked,ElementName=RadioButton1}"
IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=PT100}"
<RadioButton IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=PT100}"
Content="PT100" GroupName="OptionGroup2" Margin="5"/>
<RadioButton IsEnabled="{Binding IsChecked,ElementName=RadioButton1}"
IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=Pulse}"
<RadioButton IsChecked="{Binding SelectedOption2 ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=Pulse}"
Content="Pulse" GroupName="OptionGroup2" Margin="5"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="5,0,5,5"
VerticalAlignment="Bottom"
Header="通讯格式"
Style="{StaticResource SecondGroupStyle2}">
<StackPanel Orientation="Horizontal">
<RadioButton IsChecked="{Binding CommunicationFormat ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=RS485}"
Content="RS485" GroupName="OptionGroup3" Margin="5"/>
<RadioButton IsChecked="{Binding CommunicationFormat ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=RS482}"
Content="RS482" GroupName="OptionGroup3" Margin="5"/>
<RadioButton IsChecked="{Binding CommunicationFormat ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=TCP/IP}"
Content="TCP/IP" GroupName="OptionGroup3" Margin="5"/>
<RadioButton IsChecked="{Binding CommunicationFormat ,Converter={StaticResource RadioButtonValueCvt},ConverterParameter=MQTT}"
Content="MQTT" GroupName="OptionGroup3" Margin="5"/>
</StackPanel>
</GroupBox>
</StackPanel>
<GroupBox Margin="5,0,5,0"
Grid.Row="2"
VerticalAlignment="Bottom"
Header="电缆配置信息">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel>
<Border BorderThickness="0 0 0 1" Margin="0,0,0,0">
<Label Height="30" Content="选择系统柜" Foreground="Black" VerticalContentAlignment="Bottom"/>
</Border>
<!-- 左侧树形结构 -->
<Border>
<telerik:RadTreeView x:Name="treeView1"
Height="600"
Width="200"
Background="White"
IsLineEnabled="True"
ItemContainerStyle="{StaticResource ExpandedTreeViewItemStyle}"
ExpanderStyle="{StaticResource ExpanderStyle}"
ItemsSource="{Binding PanelTreels}"
SelectedItem="{Binding SelectedTreeNode,Mode=TwoWay}"
telerik:StyleManager.Theme="Office_Blue"
AllowDrop="True"
AutoScrollToSelectedItem="True"
IsVirtualizing="True"
telerik:TextSearch.TextPath="Text"
>
<telerik:RadTreeView.ItemTemplate>
<StackPanel Orientation="Horizontal" Grid.Row="2">
<!-- 左侧树形结构 -->
<GroupBox Margin="5,0,5,0"
Height="auto"
Header="选择该电缆预分配系统柜">
<telerik:RadTreeView x:Name="treeView1"
Height="620"
Width="200"
Background="White"
IsLineEnabled="True"
ItemContainerStyle="{StaticResource ExpandedTreeViewItemStyle}"
ExpanderStyle="{StaticResource ExpanderStyle}"
ItemsSource="{Binding PanelTreels}"
SelectedItem="{Binding SelectedTreeNode,Mode=TwoWay}"
telerik:StyleManager.Theme="Office_Blue"
AllowDrop="True"
AutoScrollToSelectedItem="True"
IsVirtualizing="True"
telerik:TextSearch.TextPath="Text"
>
<telerik:RadTreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}">
<TextBlock Text="{Binding Text}">
</TextBlock>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}">
<TextBlock Text="{Binding Text}">
</TextBlock>
<TextBlock Text="{Binding Text}"/>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}">
<TextBlock Text="{Binding Text}"/>
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding PanelTreels}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Text}"/>
<TextBlock Text=" (" />
<TextBlock Text="{Binding NodeExtData.ChannelsSpared}" FontWeight="Bold" />
<TextBlock Text=")" />
</StackPanel>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding PanelTreels}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Text}"/>
<TextBlock Text=" (" />
<TextBlock Text="{Binding NodeExtData.ChannelsSpared}" FontWeight="Bold" />
<TextBlock Text=")" />
</StackPanel>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</telerik:RadTreeView.ItemTemplate>
</telerik:RadTreeView>
</Border>
</StackPanel>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</telerik:RadTreeView.ItemTemplate>
</telerik:RadTreeView>
</GroupBox>
<GroupBox Margin="5,0,5,0"
Width="770"
Header="电缆配置信息">
<!-- 数据表格 -->
<Grid Grid.Column="1">
<Grid>
<telerik:RadGridView x:Name="RadGridView1" SelectionMode="Single" Width="auto" Height="630"
AutoGenerateColumns="False" IsFilteringAllowed="False" Background="#a0a0a0"
IsReadOnly="False" RowIndicatorVisibility="Collapsed"
ShowGroupPanel="False" telerik:StyleManager.Theme="Office_Blue"
ItemsSource="{Binding SignalPredistributionInfos}" SelectedItem="{Binding SelectedChannelInfo, Mode=TwoWay}"
>
AutoGenerateColumns="False" IsFilteringAllowed="False" Background="#a0a0a0"
IsReadOnly="False" RowIndicatorVisibility="Collapsed"
ShowGroupPanel="False" telerik:StyleManager.Theme="Office_Blue"
ItemsSource="{Binding SignalPredistributionInfos}" SelectedItem="{Binding SelectedChannelInfo, Mode=TwoWay}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="序号" CellTemplate="{StaticResource CellTemplate1}" CellStyle="{StaticResource CellTyle1}" IsReadOnly="True"/>
@ -363,15 +381,15 @@
<telerik:GridViewDataColumn Header="电缆线芯" CellTemplate="{StaticResource CellTemplate3}" CellEditTemplate="{StaticResource CellEditTemplate3}"/>
<telerik:GridViewDataColumn Header="极性" CellTemplate="{StaticResource CellTemplate4}" CellEditTemplate="{StaticResource CellEditTemplate4}"/>
<telerik:GridViewComboBoxColumn Header="{Binding SignalColumnName,Mode=TwoWay}"
IsVisible="{Binding IsChecked,ElementName=RadioButton1}"
ItemsSource="{Binding DataContext.SignalTypeColumn, RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}"
DataMemberBinding="{Binding SignalType}"
Width="120">
IsVisible="{Binding IsChecked,ElementName=RadioButton2}"
ItemsSource="{Binding DataContext.SignalTypeColumn, RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}"
DataMemberBinding="{Binding SignalType}"
Width="120">
<telerik:GridViewComboBoxColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding SignalType}"
TextTrimming="CharacterEllipsis"
ToolTip="{Binding SignalType}"/>
TextTrimming="CharacterEllipsis"
ToolTip="{Binding SignalType}"/>
</DataTemplate>
</telerik:GridViewComboBoxColumn.CellTemplate>
</telerik:GridViewComboBoxColumn>
@ -379,8 +397,8 @@
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ChineseDescription}"
TextTrimming="CharacterEllipsis"
ToolTip="{Binding ChineseDescription}"/>
TextTrimming="CharacterEllipsis"
ToolTip="{Binding ChineseDescription}"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
@ -388,23 +406,23 @@
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding EnglishDescription}"
TextTrimming="CharacterEllipsis"
ToolTip="{Binding EnglishDescription}"/>
TextTrimming="CharacterEllipsis"
ToolTip="{Binding EnglishDescription}"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewComboBoxColumn Header="输入/输出"
ItemsSource="{Binding DataContext.InorOuts, RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}"
DataMemberBinding="{Binding InorOut}"
Width="60">
ItemsSource="{Binding DataContext.InorOuts, RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}"
DataMemberBinding="{Binding InorOut}"
Width="60">
</telerik:GridViewComboBoxColumn>
<telerik:GridViewDataColumn Header="传感器编号" DataMemberBinding="{Binding EnglishDescription}" Width="auto">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding SensorCode}"
TextTrimming="CharacterEllipsis"
ToolTip="{Binding SensorCode}"/>
TextTrimming="CharacterEllipsis"
ToolTip="{Binding SensorCode}"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
@ -412,8 +430,8 @@
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
</Grid>
</GroupBox>
</GroupBox>
</StackPanel>
<Grid>
<StackPanel Margin="5" Orientation="Horizontal" HorizontalAlignment="Left">
<telerik:RadButton Margin="0,0,20,0"

View File

@ -63,6 +63,7 @@ namespace SWS.Electrical
GlobalObject._prismContainer.RegisterDialog<DialogSignalPropertyhisAndLogs, DialogSignalPropertyhisAndLogsViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogSignalSelect, DialogSignalSelectViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAllOutputSignal, DialogAllOutputSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAssociatedSignal, DialogAssociatedSignalViewModel>();
GlobalObject._prismContainer.RegisterDialog<DialogAutoArrangeLayout, DialogAutoArrangeLayoutViewModel>();
}

View File

@ -1,4 +1,4 @@
#pragma checksum "..\..\..\Views\DialogAutoArrangeLayout.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "ABECE6D950BC12BD1A8DC30FBB96A86A4798DF4A77E402D6CDDD9CF497D2FC76"
#pragma checksum "..\..\..\Views\DialogAutoArrangeLayout.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "55992553F782D436B236E9D0626B49AE48376927B5906F253898CDC4189B1D22"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
@ -85,7 +85,7 @@ namespace SWS.Electrical.Views {
#line hidden
#line 219 "..\..\..\Views\DialogAutoArrangeLayout.xaml"
#line 220 "..\..\..\Views\DialogAutoArrangeLayout.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.DataGrid dgTag;

View File

@ -51,7 +51,9 @@ namespace SWS.Service
//directory = data["Profile"]["strLocalWorkDir"];
address = IniHelper.ReadValueFromIniFile("Profile", "strIPAddress");
port = int.Parse(IniHelper.ReadValueFromIniFile("Profile", "nPort"));
string portString = IniHelper.ReadValueFromIniFile("Profile", "nPort");
int.TryParse(portString?.Trim(), out port);
//port = int.Parse(IniHelper.ReadValueFromIniFile("Profile", "nPort"));
directory = IniHelper.ReadValueFromIniFile("Profile", "strLocalWorkDir");
}

View File

@ -126,6 +126,7 @@
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewModels\DialogInputViewModel.cs" />
<Compile Include="ViewModels\DialogSignalManagementVM\DialogAssociatedSignalViewModel.cs" />
<Compile Include="ViewModels\DialogSignalManagementVM\DialogSignalManagementViewModel.cs" />
<Compile Include="ViewModels\DialogSignalManagementVM\DialogAllOutputSignalViewModel.cs" />
<Compile Include="ViewModels\DialogSignalManagementVM\DialogSignalNoticeViewModel.cs" />
@ -137,6 +138,9 @@
<Compile Include="Views\CustomDialogWindow.xaml.cs">
<DependentUpon>CustomDialogWindow.xaml</DependentUpon>
</Compile>
<Compile Include="Views\DialogSignalManagements\DialogAssociatedSignal.xaml.cs">
<DependentUpon>DialogAssociatedSignal.xaml</DependentUpon>
</Compile>
<Compile Include="Views\DialogSignalManagements\DialogAllOutputSignal.xaml.cs">
<DependentUpon>DialogAllOutputSignal.xaml</DependentUpon>
</Compile>
@ -200,6 +204,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Views\DialogSignalManagements\DialogAssociatedSignal.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\DialogSignalManagements\DialogAllOutputSignal.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>

View File

@ -0,0 +1,267 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Input;
using Prism.Services.Dialogs;
using Prism.Ioc;
using SWS.Commons;
using SWS.Model;
using SWS.Service;
using SWS.WPF.Views;
using Telerik.Windows.Controls;
using Unity;
using DialogParameters = Prism.Services.Dialogs.DialogParameters;
using System.Windows;
namespace SWS.WPF.ViewModels
{
public class DialogAssociatedSignalViewModel : DialogBase, IDialogAware
{
#region
private ObservableCollection<SignalManagementInfo> _MySignals = new ObservableCollection<SignalManagementInfo>();
/// <summary>
/// 表格数据源
/// </summary>
public ObservableCollection<SignalManagementInfo> MySignals
{
get { return _MySignals; }
set { _MySignals = value; RaisePropertyChanged(nameof(MySignals)); }
}
private SignalManagementInfo _SelectedSignal;
/// <summary>
/// 选中行
/// </summary>
public SignalManagementInfo SelectedSignal
{
get { return _SelectedSignal; }
set { _SelectedSignal = value; RaisePropertyChanged(nameof(SelectedSignal)); }
}
private string _Info;
/// <summary>
/// 列表上方文字
/// </summary>
public string Info
{
get { return _Info; }
set { _Info = value; RaisePropertyChanged(nameof(Info)); }
}
private Visibility _IsVisibility = Visibility.Collapsed;
/// <summary>
/// 控制取消关联按钮是否可见
/// </summary>
public Visibility IsVisibility
{
get { return _IsVisibility; }
set
{
_IsVisibility = value;
RaisePropertyChanged(nameof(IsVisibility));
}
}
/// <summary>
/// 信号接口服务
/// </summary>
WireGroupService _wireGroupService;
public DialogSignalNotice SignalNoticeView { get; set; }
#endregion
public DialogAssociatedSignalViewModel()
{
_wireGroupService = GlobalObject.container.Resolve<WireGroupService>();
}
public string Title => "";
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public async void OnDialogOpened(IDialogParameters parameters)
{
title = parameters.GetValue<string>(GlobalObject.dialogPar.title.ToString());
Info = parameters.GetValue<string>(GlobalObject.dialogPar.info.ToString());
var signals = parameters.GetValue<ObservableCollection<SignalManagementInfo>>(GlobalObject.dialogPar.para1.ToString());
foreach (var item in signals)
{
if (title.Equals("信号选择框"))
{
if (item.type.Equals("信号"))
{
MySignals.Add(item);
}
}
else if (title.Equals("信号关联列表"))
{
MySignals.Add(item);
IsVisibility = Visibility.Visible;
}
}
}
public override void ExecuteOKCommandAsync(object para)
{
IDialogParameters par = new DialogParameters();
if (title.Equals("信号选择框"))
{
if (SelectedSignal == null)
{
MessageBox.Show("请选择一个信号!");
return;
}
}
else if (title.Equals("信号关联列表"))
{
//如何是取消关联,则把取消的列表传回去
par.Add(GlobalObject.dialogPar.para2.ToString(), CancelAssociationls);
}
par.Add(GlobalObject.dialogPar.para1.ToString(), SelectedSignal);
DialogResult result = new DialogResult(ButtonResult.Yes, par);
RequestClose.Invoke(result);
}
public override void ExecuteCloseCommand(object parameter)
{
if (parameter as string == "ClickNo")
{
DialogResult result = new DialogResult(ButtonResult.No);
RequestClose.Invoke(result);
}
else
{
DialogResult result = new DialogResult(ButtonResult.Cancel);
RequestClose.Invoke(result);
}
this.Dispose();
}
//全局的取消关联列表
List<SignalManagementInfo> CancelAssociationls = new List<SignalManagementInfo>();
public ICommand CancelAssociationCmd => new DelegateCommand(CancelAssociation_Click);
/// <summary>
/// 取消关联按钮的点击事件
/// </summary>
/// <param name="parameter"></param>
public virtual void CancelAssociation_Click(object parameter)
{
CancelAssociationls.Add(SelectedSignal);
MySignals.Remove(SelectedSignal);
}
}
public class AssociatedSignalInfo : ViewModelBase
{
#region
private string _Group_Name;
/// <summary>
/// CH.NO
/// </summary>
public string Group_Name
{
get { return _Group_Name; }
set { _Group_Name = value; RaisePropertyChanged(nameof(Group_Name)); }
}
private string _Group_Desc_EN;
/// <summary>
/// 英文描述
/// </summary>
public string Group_Desc_EN
{
get { return _Group_Desc_EN; }
set { _Group_Desc_EN = value; RaisePropertyChanged(nameof(Group_Desc_EN)); }
}
private string _Group_Desc;
/// <summary>
/// 中文描述
/// </summary>
public string Group_Desc
{
get { return _Group_Desc; }
set { _Group_Desc = value; RaisePropertyChanged(nameof(Group_Desc)); }
}
private string _IO_Type;
/// <summary>
/// 信号类型
/// </summary>
public string IO_Type
{
get { return _IO_Type; }
set { _IO_Type = value; RaisePropertyChanged(nameof(IO_Type)); }
}
private string _Alarm_LL;
public string Alarm_LL
{
get { return _Alarm_LL; }
set { _Alarm_LL = value; RaisePropertyChanged(nameof(Alarm_LL)); }
}
private string _Alarm_L;
public string Alarm_L
{
get { return _Alarm_L; }
set { _Alarm_L = value; RaisePropertyChanged(nameof(Alarm_L)); }
}
private string _Alarm_H;
public string Alarm_H
{
get { return _Alarm_H; }
set { _Alarm_H = value; RaisePropertyChanged(nameof(Alarm_H)); }
}
private string _Alarm_HH;
public string Alarm_HH
{
get { return _Alarm_HH; }
set { _Alarm_HH = value; RaisePropertyChanged(nameof(Alarm_HH)); }
}
private string _SENSOR_CODE;
/// <summary>
/// 传感器编号
/// </summary>
public string SENSOR_CODE
{
get { return _SENSOR_CODE; }
set { _SENSOR_CODE = value; RaisePropertyChanged(nameof(SENSOR_CODE)); }
}
#endregion
public AssociatedSignalInfo(ec_Wire_Group ec_Wire_Group)
{
}
}
}

View File

@ -347,11 +347,11 @@ namespace SWS.WPF.ViewModels
}
}
private DateTime _ReviewTime;
private DateTime? _ReviewTime;
/// <summary>
/// 送审时间
/// </summary>
public DateTime ReviewTime
public DateTime? ReviewTime
{
get { return _ReviewTime; }
set { _ReviewTime = value;
@ -359,11 +359,11 @@ namespace SWS.WPF.ViewModels
}
}
private DateTime _ConstructionTime;
private DateTime? _ConstructionTime;
/// <summary>
/// 施工时间
/// </summary>
public DateTime ConstructionTime
public DateTime? ConstructionTime
{
get { return _ConstructionTime; }
set { _ConstructionTime = value;
@ -371,6 +371,33 @@ namespace SWS.WPF.ViewModels
}
}
private Visibility _IsReviewTimeVisibility = Visibility.Visible;
/// <summary>
/// 控制送审时间是否可见
/// </summary>
public Visibility IsReviewTimeVisibility
{
get { return _IsReviewTimeVisibility; }
set
{
_IsReviewTimeVisibility = value;
RaisePropertyChanged(nameof(IsReviewTimeVisibility));
}
}
private Visibility _IsConstructionTimeVisibility = Visibility.Visible;
/// <summary>
/// 控制施工时间是否可见
/// </summary>
public Visibility IsConstructionTimeVisibility
{
get { return _IsConstructionTimeVisibility; }
set
{
_IsConstructionTimeVisibility = value;
RaisePropertyChanged(nameof(IsConstructionTimeVisibility));
}
}
private readonly DispatcherTimer _timer = new DispatcherTimer();
@ -452,28 +479,29 @@ namespace SWS.WPF.ViewModels
IsAssociated = parameters.GetValue<ec_Wire_Group>(GlobalObject.dialogPar.info.ToString());
//获取送审时间和施工时间
ReviewTime = (DateTime)GlobalObject.curProject.IO_predicted_issue;
ConstructionTime = (DateTime)GlobalObject.curProject.IO_predicted_construct;
ReviewTime = GlobalObject.curProject.IO_predicted_issue;
ConstructionTime = GlobalObject.curProject.IO_predicted_issue;
if (ReviewTime == null) IsReviewTimeVisibility = Visibility.Collapsed;
if (ConstructionTime == null) IsConstructionTimeVisibility = Visibility.Collapsed;
// 获取当前时间
DateTime currentTime = DateTime.Now;
// 初始化倒计时时间
ReviewCountdown.TimeRemaining = (TimeSpan)(ReviewTime - currentTime);
ReviewCountdown.IsActive = true;
ReviewCountdown.TimeRemaining = ReviewTime==null? TimeSpan.Zero:(TimeSpan)(ReviewTime - currentTime);
ReviewCountdown.IsActive = ReviewTime == null ?false: true;
if (ReviewCountdown.TimeRemaining<= TimeSpan.Zero)
{
if ((DateTime)GlobalObject.curProject.IO_real_issue == null)
if (GlobalObject.curProject.IO_real_issue == null && GlobalObject.curProject.IO_predicted_issue!=null)
{
System.Windows.MessageBox.Show($"送审时间已过期: {ReviewCountdown.TimeRemaining:%d}天 {ReviewCountdown.TimeRemaining:hh\\:mm\\:ss}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
ConstructionCountdown.TimeRemaining = (TimeSpan)(ConstructionTime - currentTime);
ConstructionCountdown.TimeRemaining = ConstructionTime==null? TimeSpan.Zero:(TimeSpan)(ConstructionTime - currentTime);
ConstructionCountdown.IsActive = true;
ConstructionCountdown.IsActive = ConstructionTime == null ? false: true;
if (ConstructionCountdown.TimeRemaining <= TimeSpan.Zero)
{
if ((DateTime)GlobalObject.curProject.IO_real_construct == null)
if (GlobalObject.curProject.IO_real_construct == null&& GlobalObject.curProject.IO_predicted_issue!=null)
{
System.Windows.MessageBox.Show($"施工时间已过期: {ConstructionCountdown.TimeRemaining:%d}天 {ConstructionCountdown.TimeRemaining:hh\\:mm\\:ss}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
@ -1350,25 +1378,25 @@ namespace SWS.WPF.ViewModels
para.Add(GlobalObject.dialogPar.title.ToString(), "信号选择框");
para.Add(GlobalObject.dialogPar.info.ToString(), "请选择要关联的信号:");
para.Add(GlobalObject.dialogPar.para1.ToString(), smInfols);
_dialogService.ShowDialog(nameof(DialogSignalSelect), para, (RES) =>
_dialogService.ShowDialog(nameof(DialogAssociatedSignal), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
var signal = RES.Parameters.GetValue<Signal>(GlobalObject.dialogPar.para1.ToString());
var signal = RES.Parameters.GetValue<SignalManagementInfo>(GlobalObject.dialogPar.para1.ToString());
if (!string.IsNullOrEmpty(SelectedSmInfo.LinkedID))
{
var LinkedIDs = SelectedSmInfo.LinkedID.Split(',').ToList();
LinkedIDs.RemoveAll(item => string.IsNullOrEmpty(item));
if (!LinkedIDs.Contains(signal.SignalId))
if (!LinkedIDs.Contains(signal.Wire_Group_ID))
{
LinkedIDs.Add(signal.SignalId);
LinkedIDs.Add(signal.Wire_Group_ID);
}
SelectedSmInfo.LinkedID = string.Join(",", LinkedIDs);
}
else
{
SelectedSmInfo.LinkedID = signal.SignalId;
SelectedSmInfo.LinkedID = signal.Wire_Group_ID;
}
SelectedSmInfo.IsModified = true;
System.Windows.MessageBox.Show("关联成功", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning);
@ -1401,15 +1429,15 @@ namespace SWS.WPF.ViewModels
para.Add(GlobalObject.dialogPar.title.ToString(), "信号关联列表");
para.Add(GlobalObject.dialogPar.info.ToString(), "下面是信号关联列表");
para.Add(GlobalObject.dialogPar.para1.ToString(), sminfols);
_dialogService.ShowDialog(nameof(DialogSignalSelect), para, (RES) =>
_dialogService.ShowDialog(nameof(DialogAssociatedSignal), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
var signals = RES.Parameters.GetValue<List<Signal>>(GlobalObject.dialogPar.para2.ToString());
var signals = RES.Parameters.GetValue<List<SignalManagementInfo>>(GlobalObject.dialogPar.para2.ToString());
signals.ForEach(s =>
{
var signalid = s.SignalId;
var signalid = s.Wire_Group_ID;
if (LinkedIDs.Contains(signalid))
{
LinkedIDs.Remove(signalid);

View File

@ -0,0 +1,106 @@
<UserControl x:Class="SWS.WPF.Views.DialogAssociatedSignal"
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:SWS.WPF.Views"
xmlns:prism="http://prismlibrary.com/"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:cvt="clr-namespace:SWS.Commons.Helper.Converter;assembly=SWS.Commons"
xmlns:CustomControl="clr-namespace:SWS.CustomControl;assembly=SWS.CustomControl"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<prism:Dialog.WindowStyle>
<Style TargetType="Window">
<!--最大化-->
<Setter Property="Width" Value="1000" />
<Setter Property="Height" Value="800" />
<Setter Property="SizeToContent" Value="WidthAndHeight" />
<Setter Property="WindowState" Value="Normal" />
<Setter Property="WindowStyle" Value="None" />
<Setter Property="ResizeMode" Value="NoResize" />
</Style>
</prism:Dialog.WindowStyle>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/SWS.WPF;component/Style/CustomStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<telerik:RadBusyIndicator BusyContent="{Binding BusyContent}" IsBusy="{Binding IsBusy}">
<StackPanel>
<CustomControl:customWindowTitleBar x:Name="titleBar" />
<TextBlock Margin="10,0" Text="{Binding Info}" />
<telerik:RadGridView x:Name="RadGridView1" SelectionMode="Single" Width="500" Height="530"
AutoGenerateColumns="False" IsFilteringAllowed="False" Background="#a0a0a0"
IsReadOnly="True" RowIndicatorVisibility="Collapsed"
ShowGroupPanel="False" telerik:StyleManager.Theme="Office_Blue"
ItemsSource="{Binding MySignals}" SelectedItem="{Binding SelectedSignal, Mode=TwoWay}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Group_Name}"
Header="CH.NO"
IsFilterable="False"/>
<telerik:GridViewDataColumn Width="120"
DataMemberBinding="{Binding Group_Desc_EN}"
Header="英文描述"
IsFilterable="False" />
<telerik:GridViewDataColumn Width="120"
DataMemberBinding="{Binding Group_Desc}"
Header="中文描述"
IsFilterable="False" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding IO_Type}"
Header="信号类型"
IsFilterable="False" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Alarm_LL}"
Header="L.L"
IsFilterable="False" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Alarm_L}"
Header="L"
IsFilterable="False" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Alarm_H}"
Header="H"
IsFilterable="False" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Alarm_HH}"
Header="H.H"
IsFilterable="False" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding SENSOR_CODE}"
Header="CODE"
IsFilterable="False"
Width="*"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
<Border Grid.Row="2"
Height="30"
Background="{StaticResource ColorPrimary}">
<DockPanel >
<StackPanel DockPanel.Dock="Left">
<telerik:RadButton Margin="5"
HorizontalAlignment="Left"
Command="{Binding CancelAssociationCmd}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
Content="取消关联"
Visibility="{Binding IsVisibility}"
Style="{StaticResource sysBtn4}" />
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<telerik:RadButton Margin="5"
Command="{Binding OKCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
Content="确定"
Style="{StaticResource sysBtn}" />
<telerik:RadButton Margin="5"
Command="{Binding CloseCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
Content="取消"
Style="{StaticResource sysBtn2}" />
</StackPanel>
</DockPanel>
</Border>
</StackPanel>
</telerik:RadBusyIndicator>
</UserControl>

View File

@ -0,0 +1,28 @@
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 SWS.WPF.Views
{
/// <summary>
/// DialogAssociatedSignal.xaml 的交互逻辑
/// </summary>
public partial class DialogAssociatedSignal : UserControl
{
public DialogAssociatedSignal()
{
InitializeComponent();
}
}
}

View File

@ -224,7 +224,8 @@
Text="{Binding pojectName}" />
<!--送审时间倒计时-->
<Border Background="{Binding ReviewCountdown.TimeRemaining,Converter={StaticResource TimeSpanToColourCvt}}" CornerRadius="6"
Margin="50,1,0,1" Padding="1">
Visibility="{Binding IsReviewTimeVisibility}"
Margin="50,1,0,1" Padding="1">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" >
<TextBlock Text="送审时间"
FontSize="14" Foreground="White"
@ -242,7 +243,8 @@
<!--施工时间倒计时-->
<Border Background="{Binding ConstructionCountdown.TimeRemaining,Converter={StaticResource TimeSpanToColourCvt}}" CornerRadius="6"
Margin="25,1,0,1" Padding="1">
Visibility="{Binding IsConstructionTimeVisibility}"
Margin="25,1,0,1" Padding="1">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="施工时间"
FontSize="14" Foreground="White"

View File

@ -1,4 +1,4 @@
#pragma checksum "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "7BBBAAC2D30DDCBE426FDE8827BDBF7527EEDC8C0F823DBAF3EBE2D35FF1D1F8"
#pragma checksum "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D4B655A725F9DA5CEF801330CC2E000E8A952FC6E92D22159739897F8A32A6A6"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
@ -86,7 +86,7 @@ namespace SWS.WPF.Views {
#line hidden
#line 232 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
#line 233 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtReviewCountdown;
@ -94,7 +94,7 @@ namespace SWS.WPF.Views {
#line hidden
#line 250 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
#line 252 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtConstructionCountdown;
@ -102,7 +102,7 @@ namespace SWS.WPF.Views {
#line hidden
#line 306 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
#line 308 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal SWS.CustomControl.IconButton PopupButton;
@ -110,7 +110,7 @@ namespace SWS.WPF.Views {
#line hidden
#line 316 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
#line 318 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Primitives.Popup CustomPopup;
@ -118,7 +118,7 @@ namespace SWS.WPF.Views {
#line hidden
#line 365 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
#line 367 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal SWS.CustomControl.IconButton myButton;
@ -126,7 +126,7 @@ namespace SWS.WPF.Views {
#line hidden
#line 398 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
#line 400 "..\..\..\..\Views\DialogSignalManagements\DialogSignalManagement.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal Telerik.Windows.Controls.RadTreeListView RadGridView1;