ClientCacher.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. /// <summary>
  59. /// 客户端消息集
  60. /// </summary>
  61. public ObservableCollection<ClientMessage> ClientMessages { get; set; } = new ObservableCollection<ClientMessage>();
  62. /// <summary>
  63. /// 当前未处理的异常
  64. /// </summary>
  65. public ObservableCollection<ExceptionShow> CurrentExceptions { get; set; } = new ObservableCollection<ExceptionShow>();
  66. /// <summary>
  67. /// 历史异常记录
  68. /// </summary>
  69. public ObservableCollection<ExceptionShow> HistoryExceptions { get; set; } = new ObservableCollection<ExceptionShow>();
  70. /// <summary>
  71. /// 已弹窗的提醒对话框
  72. /// </summary>
  73. public List<IShowDialog> ShowCommonDialogs = new List<IShowDialog>();
  74. /// <summary>
  75. /// 已弹窗的异常对话框
  76. /// </summary>
  77. public List<IShowDialog> ShowExceptionDialogs = new List<IShowDialog>();
  78. /// <summary>
  79. /// 界面跳转
  80. /// </summary>
  81. /// <param name="view"></param>
  82. public abstract void Forward(string view);
  83. /// <summary>
  84. /// 弹出通用的对话框
  85. /// </summary>
  86. /// <param name="viewName">UI的view层显示名称</param>
  87. /// <param name="parms">参数表</param>
  88. /// <param name="callback">回调函数</param>
  89. /// <param name="blocked">是否阻塞控制流程</param>
  90. public abstract string ShowCommonDialog(string viewName, DialogParameters parms, Action<IDialogResult> callback, bool blocked = true);
  91. /// <summary>
  92. /// 弹出异常对话框
  93. /// </summary>
  94. /// <param name="viewName">UI的view层显示名称</param>
  95. /// <param name="exception">异常对象</param>
  96. /// <param name="blocked">是否阻塞控制流程</param>
  97. public abstract string ShowExceptionDialog(string viewName, ExceptionShow exception, bool blocked = true);
  98. /// <summary>
  99. /// 查询弹窗是否显示
  100. /// </summary>
  101. /// <param name="id"></param>
  102. /// <returns></returns>
  103. public abstract bool IsDialogShow(string id);
  104. /// <summary>
  105. /// 关闭指定id的对话框(通知或异常)
  106. /// </summary>
  107. /// <param name="id"></param>
  108. public abstract void CloseDialog(string id);
  109. /// <summary>
  110. /// 关闭所有已弹出的对话框(通知或异常)
  111. /// </summary>
  112. public abstract void CloseAllDialogs();
  113. /// <summary>
  114. /// 清除当前异常 (转移到历史异常中)
  115. /// </summary>
  116. public void ClearExceptions()
  117. {
  118. HistoryExceptions.AddRange(CurrentExceptions);
  119. CurrentExceptions.Clear();
  120. }
  121. }
  122. }