ClientCacher.cs 4.4 KB

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