using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using SWS.CAD.ViewModels.myViewModelBase; using System.Windows.Input; using Telerik.Windows.Controls; using Unity; using Prism.Services.Dialogs; using SWS.Commons; using SWS.Service; using SWS.Model; namespace SWS.CAD.ViewModels { public class DialogCableConfigViewModel : DialogBase, IDialogAware { #region 页面渲染字段 private ObservableCollection _CableSetInfos = new ObservableCollection(); /// /// 端子排参数信息列表 /// public ObservableCollection CableSetInfos { get { return _CableSetInfos; } set { _CableSetInfos = value; RaisePropertyChanged(nameof(CableSetInfos)); } } private string _StartCable; /// /// 起始电缆 /// public string StartCable { get { return _StartCable; } set { _StartCable = value; RaisePropertyChanged(nameof(StartCable)); } } private string _StartChannel; /// /// 起始通道 /// public string StartChannel { get { return _StartChannel; } set { _StartChannel = value; RaisePropertyChanged(nameof(StartChannel)); } } #region 表格下拉列表 private List _StartCables = new List(); /// /// 起始电缆下拉列表 /// public List StartCables { get { return _StartCables; } set { _StartCables = value; RaisePropertyChanged(nameof(StartCables)); } } private List _StartChannels = new List(); /// /// 起始通道下列列表 /// public List StartChannels { get { return _StartChannels; } set { _StartChannels = value; RaisePropertyChanged(nameof(StartChannels)); } } #endregion private bool _IsEnabledDeleteCableProfile; /// /// 是否禁用清除配置按钮 /// public bool IsEnabledDeleteCableProfile { get { return _IsEnabledDeleteCableProfile; } set { _IsEnabledDeleteCableProfile = value; RaisePropertyChanged(nameof(IsEnabledDeleteCableProfile)); } } #endregion IOModuleService _iOModuleService; public DialogCableConfigViewModel() { _iOModuleService = GlobalObject.container.Resolve(); } public string Title => ""; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } private ec_Cable _ec_Cable; private ec_PanelStrip _ec_PanelStrip; public async void OnDialogOpened(IDialogParameters parameters) { title = parameters.GetValue(GlobalObject.dialogPar.title.ToString()); //title = ""; //添加起始通道下拉列表数据 _ec_PanelStrip = parameters.GetValue(GlobalObject.dialogPar.para2.ToString()); foreach (var Channel in _ec_PanelStrip.Channels) { if (Channel.Terms.Where(t => t.Connection != null).Count() == 0) { StartChannels.Add(Channel.ChannelName); } } //添加表格数据 _ec_Cable = parameters.GetValue(GlobalObject.dialogPar.para1.ToString()); if (_ec_Cable != null) { //获取所有电缆对信息 int i = 0; int index = 0; foreach (var CableSet in _ec_Cable.Sets) { var CableSetInfo = new CableSetInfo(); CableSetInfo.CableID = _ec_Cable.CableID; CableSetInfo.CableName = _ec_Cable.TagNumber; CableSetInfo.CableSetID = CableSet.CableSetID; CableSetInfo.CableSetName = CableSet.CableSetName; CableSetInfo.UpdateUserID= _ec_Cable.UpdateUserID; CableSetInfo.OccupancyState = CableSet.ConnectionInfo; CableSetInfo.IsConned = CableSet.IsConned??false; if (string.IsNullOrEmpty(CableSet.ConnectionInfo)) { if (i new DelegateCommand(ConnectButton_Click); /// /// 页面连接按钮 /// /// public virtual async void ConnectButton_Click(object parameter) { //foreach (var CableSetInfo in CableSetInfos) //{ // if (CableSetInfo.CableSetName.Equals(StartCable)) // { // CableSetInfo.ChannelNumber = StartChannel; // } //} int index1= CableSetInfos.Select(C => C.CableSetName).ToList().IndexOf(StartCable); int index2= StartChannels.IndexOf(StartChannel); List channels = StartChannels.Skip(index2).ToList(); int j = 0; for (int i = 0; i < CableSetInfos.Count; i++) { if (!CableSetInfos[i].IsConned) { CableSetInfos[i].ChannelNumber = ""; if (i >= index1) { if (j < channels.Count) { CableSetInfos[i].ChannelNumber = channels[j]; } j++; } } } } public ICommand DeleteCableProfileCmd => new DelegateCommand(DeleteCableProfileButton_Click); /// /// 清除配置按钮 /// /// public virtual async void DeleteCableProfileButton_Click(object parameter) { var httpres = await _iOModuleService.DeleteCableProfile(_ec_Cable.CableID); if (httpres == null) { RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); this.Dispose(); } } public ICommand EditEndCmd => new DelegateCommand(EditEnd); /// /// 编辑结束事件 /// /// public virtual void EditEnd(object parameter) { //做个标记表示该项修改过 } #endregion } public class CableSetInfo : DialogBase { #region 页面渲染字段 private ObservableCollection _Indexs = new ObservableCollection(); /// /// 序号 /// public ObservableCollection Indexs { get { return _Indexs; } set { _Indexs = value; RaisePropertyChanged(nameof(Indexs)); } } private string _CableSetName; /// /// 电缆对 /// public string CableSetName { get { return _CableSetName; } set { _CableSetName = value; RaisePropertyChanged(nameof(CableSetName)); } } private ObservableCollection _Wire_Tags = new ObservableCollection(); /// /// 线号 /// public ObservableCollection Wire_Tags { get { return _Wire_Tags; } set { _Wire_Tags = value; RaisePropertyChanged(nameof(Wire_Tags)); } } private ObservableCollection _Polaritys = new ObservableCollection(); /// /// 极性 /// public ObservableCollection Polaritys { get { return _Polaritys; } set { _Polaritys = value; RaisePropertyChanged(nameof(Polaritys)); } } private string _ChannelNumber; /// /// 通道号 /// public string ChannelNumber { get { return _ChannelNumber; } set { _ChannelNumber = value; RaisePropertyChanged(nameof(ChannelNumber)); } } private string _OccupancyState; /// /// 占用状态 /// public string OccupancyState { get { return _OccupancyState; } set { _OccupancyState = value; RaisePropertyChanged(nameof(OccupancyState)); } } #endregion #region 扩展字段 private string _CableID; /// /// 电缆ID /// public string CableID { get { return _CableID; } set { _CableID = value; RaisePropertyChanged(nameof(CableID)); } } private string _CableName; /// /// 电缆名称,电缆位号 /// public string CableName { get { return _CableName; } set { _CableName = value; RaisePropertyChanged(nameof(CableName)); } } private string _CableSetID; /// /// 电缆对ID /// public string CableSetID { get { return _CableSetID; } set { _CableSetID = value; RaisePropertyChanged(nameof(CableSetID)); } } private string _StripName; /// /// 端子排名称 /// public string StripName { get { return _StripName; } set { _StripName = value; RaisePropertyChanged(nameof(StripName)); } } private string _UpdateUserID; /// /// 占用人 /// public string UpdateUserID { get { return _UpdateUserID; } set { _UpdateUserID = value; RaisePropertyChanged(nameof(UpdateUserID)); } } private bool _IsConned; /// /// 是否被连接 /// public bool IsConned { get { return _IsConned; } set { _IsConned = value; RaisePropertyChanged(nameof(IsConned)); } } #endregion } }