CardLoginWindowViewModel.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using Prism.Commands;
  4. using Prism.Events;
  5. using Prism.Ioc;
  6. using Prism.Mvvm;
  7. using Prism.Regions;
  8. using Prism.Services.Dialogs;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Net.Http;
  13. using System.Text;
  14. using System.Windows;
  15. using TeamAAS_VP.Core;
  16. using TeamAAS_VP.Core.Lights;
  17. using TeamAAS_VP.Interfaces;
  18. using TeamAAS_VP.Views;
  19. using TeamAAS_VP.Views.User;
  20. namespace TeamAAS_VP.ViewModels.User
  21. {
  22. public class CardLoginWindowViewModel : BindableBase
  23. {
  24. #region 字段
  25. IRegionManager _regionManager;
  26. IRegionNavigationService _regionNavigationService;
  27. IContainerProvider _container;
  28. IDialogService _dialogService;
  29. IEventAggregator _eventAggregator;
  30. IConfigService _configService;
  31. System.Net.Http.HttpClient httpClient;
  32. #endregion
  33. #region 属性
  34. private string _Name;
  35. public string Name
  36. {
  37. get { return _Name; }
  38. set { SetProperty(ref _Name, value); }
  39. }
  40. private string _Password;
  41. public string Password
  42. {
  43. get { return _Password; }
  44. set { SetProperty(ref _Password, value); }
  45. }
  46. public bool IsLocal { get; private set; }
  47. public CardLoginWindow View { get; set; }
  48. //正在登录中
  49. private bool _IsLogining;
  50. public bool IsLogining
  51. {
  52. get { return _IsLogining; }
  53. set { SetProperty(ref _IsLogining, value); }
  54. }
  55. private int _PageIndex;
  56. public int PageIndex
  57. {
  58. get { return _PageIndex; }
  59. set { SetProperty(ref _PageIndex, value); }
  60. }
  61. private Visibility _CardBtnVisibility = Visibility.Visible;
  62. public Visibility CardBtnVisibility
  63. {
  64. get { return _CardBtnVisibility; }
  65. set { SetProperty(ref _CardBtnVisibility, value); }
  66. }
  67. public SerialPortProtocol serialPortProtocol { get; set; }
  68. #endregion
  69. #region 命令
  70. private DelegateCommand _LoginCommand;
  71. public DelegateCommand LoginCommand =>
  72. _LoginCommand ?? (_LoginCommand = new DelegateCommand(ExecuteLoginCommand, CanExecuteLoginCommand).ObservesProperty(() => Name).ObservesProperty(() => Password).ObservesProperty(() => IsLogining));
  73. private DelegateCommand _CloseCommand;
  74. public DelegateCommand CloseCommand =>
  75. _CloseCommand ?? (_CloseCommand = new DelegateCommand(ExecuteCloseCommand));
  76. private DelegateCommand<string> _TransitionerCommand;
  77. public DelegateCommand<string> TransitionerCommand =>
  78. _TransitionerCommand ?? (_TransitionerCommand = new DelegateCommand<string>(ExecuteTransitionerCommand));
  79. private DelegateCommand _LoadedCommand;
  80. public DelegateCommand LoadedCommand =>
  81. _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(ExecuteLoadedCommand));
  82. #endregion
  83. #region 事件
  84. #endregion
  85. public CardLoginWindowViewModel(IRegionManager regionManager, IEventAggregator ea, IRegionNavigationService regionNavigationService, IContainerProvider container, IDialogService dialogService, IConfigService configService)
  86. {
  87. _regionManager = regionManager;
  88. _regionNavigationService = regionNavigationService;
  89. _container = container;
  90. _dialogService = dialogService;
  91. _configService = configService;
  92. _eventAggregator = ea;
  93. if (httpClient == null)
  94. {
  95. httpClient = new System.Net.Http.HttpClient();
  96. }
  97. }
  98. #region 方法
  99. /// <summary>
  100. /// 加载
  101. /// </summary>
  102. async void ExecuteLoadedCommand()
  103. {
  104. //获取刷卡器配置
  105. var cardConfig = _configService.GetCardReaderConfig();
  106. //创建刷卡器通讯
  107. serialPortProtocol = new SerialPortProtocol(cardConfig);
  108. serialPortProtocol.DataReceived += CardSerial_DataReceived;
  109. await serialPortProtocol.ConnectAsync();
  110. }
  111. private async void CardSerial_DataReceived(object sender, string code)
  112. {
  113. if (PageIndex == 0)
  114. {
  115. if (string.IsNullOrEmpty(code))
  116. {
  117. return;
  118. }
  119. }
  120. }
  121. public void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  122. {
  123. serialPortProtocol?.Dispose();
  124. }
  125. async void ExecuteLoginCommand()
  126. {
  127. IsLogining = true;
  128. try
  129. {
  130. }
  131. catch (Exception ex)
  132. {
  133. MessageBox.Show(ex.Message);
  134. }
  135. finally
  136. {
  137. IsLogining = false;
  138. }
  139. }
  140. bool CanExecuteLoginCommand()
  141. {
  142. return !string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Password) && !IsLogining;
  143. }
  144. void ExecuteCloseCommand()
  145. {
  146. View.DialogResult = false;
  147. }
  148. void ExecuteTransitionerCommand(string parameter)
  149. {
  150. PageIndex = int.Parse(parameter);
  151. }
  152. public void SetModel(bool isAdmin)
  153. {
  154. PageIndex = isAdmin ? 1 : 0;
  155. CardBtnVisibility = isAdmin ? Visibility.Collapsed : Visibility.Visible;
  156. }
  157. #endregion
  158. }
  159. }