ClientCacher.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using Prism.Mvvm;
  2. using Prism.Regions;
  3. using Prism.Services.Dialogs;
  4. using SKMC.Api.Client.Model;
  5. using SKMC.Api.Client.Access;
  6. using SKMC.Api.Client.Views;
  7. using SKMC.Api.Common.Exceptions;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Collections.ObjectModel;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace SKMC.Api.Client
  15. {
  16. /// <summary>
  17. /// 客户端缓存器
  18. /// </summary>
  19. public abstract class ClientCacher : BindableBase
  20. {
  21. /// <summary>
  22. /// UI的区域管理器
  23. /// </summary>
  24. public IRegionManager RegionManager { get; set; }
  25. /// <summary>
  26. /// UI的对话框管理器
  27. /// </summary>
  28. public IDialogService DialogService { get; set; }
  29. /// <summary>
  30. /// 角色权限访问接口
  31. /// </summary>
  32. public IClientRoleAccesser ClientRoleAccesser { get; set; }
  33. /// <summary>
  34. /// 异常窗口的抽象视图模型
  35. /// </summary>
  36. public ExceptionsViewModel ExceptionsViewModel { get; set; }
  37. /// <summary>
  38. /// 当前登录角色
  39. /// </summary>
  40. public string CurrentRole { get; set; }
  41. /// <summary>
  42. /// 当前选择的分类
  43. /// </summary>
  44. public string CurrentCatalog { get; set; }
  45. /// <summary>
  46. /// 分类更改事件
  47. /// </summary>
  48. public event Action<string> CatalogChanged;
  49. /// <summary>
  50. /// 分类更改动作
  51. /// </summary>
  52. /// <param name="catalog"></param>
  53. public void CatalogChange(string catalog)
  54. {
  55. CurrentCatalog = catalog;
  56. CatalogChanged?.Invoke(catalog);
  57. }
  58. //private string _selectView;
  59. //public string SelectView
  60. //{
  61. // get { return _selectView; }
  62. // set { _selectView = value; RaisePropertyChanged(); }
  63. //}
  64. /// <summary>
  65. /// 客户端消息集
  66. /// </summary>
  67. public ObservableCollection<ClientMessage> ClientMessages { get; set; } = new ObservableCollection<ClientMessage>();
  68. /// <summary>
  69. /// 当前未处理的异常
  70. /// </summary>
  71. public ObservableCollection<ExceptionShow> CurrentExceptions { get; set; } = new ObservableCollection<ExceptionShow>();
  72. /// <summary>
  73. /// 历史异常记录
  74. /// </summary>
  75. public ObservableCollection<ExceptionShow> HistoryExceptions { get; set; } = new ObservableCollection<ExceptionShow>();
  76. /// <summary>
  77. /// 已弹窗的提醒对话框
  78. /// </summary>
  79. public List<IShowDialog> ShowCommonDialogs = new List<IShowDialog>();
  80. /// <summary>
  81. /// 已弹窗的异常对话框
  82. /// </summary>
  83. public List<IShowDialog> ShowExceptionDialogs = new List<IShowDialog>();
  84. /// <summary>
  85. /// 界面跳转
  86. /// </summary>
  87. /// <param name="view"></param>
  88. public abstract void Forward(string view);
  89. /// <summary>
  90. /// 弹出通用的对话框
  91. /// </summary>
  92. /// <param name="viewName">UI的view层显示名称</param>
  93. /// <param name="parms">参数表</param>
  94. /// <param name="callback">回调函数</param>
  95. /// <param name="blocked">是否阻塞控制流程</param>
  96. public abstract string ShowCommonDialog(string viewName, DialogParameters parms, Action<IDialogResult> callback, bool blocked = true);
  97. /// <summary>
  98. /// 弹出异常对话框
  99. /// </summary>
  100. /// <param name="viewName">UI的view层显示名称</param>
  101. /// <param name="exception">异常对象</param>
  102. /// <param name="blocked">是否阻塞控制流程</param>
  103. public abstract string ShowExceptionDialog(string viewName, ExceptionShow exception, bool blocked = true);
  104. /// <summary>
  105. /// 查询弹窗是否显示
  106. /// </summary>
  107. /// <param name="id"></param>
  108. /// <returns></returns>
  109. public abstract bool IsDialogShow(string id);
  110. /// <summary>
  111. /// 关闭指定id的对话框(通知或异常)
  112. /// </summary>
  113. /// <param name="id"></param>
  114. public abstract void CloseDialog(string id);
  115. /// <summary>
  116. /// 关闭所有已弹出的对话框(通知或异常)
  117. /// </summary>
  118. public abstract void CloseAllDialogs();
  119. /// <summary>
  120. /// 清除当前异常 (转移到历史异常中)
  121. /// </summary>
  122. public void ClearExceptions()
  123. {
  124. HistoryExceptions.AddRange(CurrentExceptions);
  125. CurrentExceptions.Clear();
  126. }
  127. }
  128. }