alert-notice.component.ts 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. import { Component, OnInit } from '@angular/core';
  2. import {NzNotificationService} from "ng-zorro-antd/notification";
  3. import {NoticeReceiverService} from "../../../service/notice-receiver.service";
  4. import {NoticeRuleService} from "../../../service/notice-rule.service";
  5. import {NoticeReceiver} from "../../../pojo/NoticeReceiver";
  6. import {finalize} from "rxjs/operators";
  7. import {NoticeRule} from "../../../pojo/NoticeRule";
  8. @Component({
  9. selector: 'app-alert-notice',
  10. templateUrl: './alert-notice.component.html',
  11. styles: [
  12. ]
  13. })
  14. export class AlertNoticeComponent implements OnInit {
  15. constructor(private notifySvc: NzNotificationService,
  16. private noticeReceiverSvc: NoticeReceiverService,
  17. private noticeRuleSvc : NoticeRuleService) { }
  18. receivers!: NoticeReceiver[];
  19. receiverTableLoading: boolean = true;
  20. rules!: NoticeRule[];
  21. ruleTableLoading: boolean = true;
  22. ngOnInit(): void {
  23. this.loadReceiversTable();
  24. this.loadRulesTable();
  25. }
  26. loadReceiversTable() {
  27. this.receiverTableLoading = true;
  28. let receiverInit$ = this.noticeReceiverSvc.getReceivers()
  29. .subscribe(message => {
  30. this.receiverTableLoading = false;
  31. if (message.code === 0) {
  32. this.receivers = message.data;
  33. } else {
  34. console.warn(message.msg);
  35. }
  36. receiverInit$.unsubscribe();
  37. }, error => {
  38. console.error(error.msg);
  39. this.receiverTableLoading = false;
  40. receiverInit$.unsubscribe();
  41. });
  42. }
  43. loadRulesTable() {
  44. this.ruleTableLoading = true;
  45. let rulesInit$ = this.noticeRuleSvc.getNoticeRules()
  46. .subscribe(message => {
  47. this.ruleTableLoading = false;
  48. if (message.code === 0) {
  49. this.rules = message.data;
  50. } else {
  51. console.warn(message.msg);
  52. }
  53. rulesInit$.unsubscribe();
  54. }, error => {
  55. console.error(error.msg);
  56. this.ruleTableLoading = false;
  57. rulesInit$.unsubscribe();
  58. });
  59. }
  60. onDeleteOneNoticeReceiver(receiveId : number) {
  61. const deleteReceiver$ = this.noticeReceiverSvc.deleteReceiver(receiveId)
  62. .pipe(finalize(() => {
  63. deleteReceiver$.unsubscribe();
  64. }))
  65. .subscribe(message => {
  66. if (message.code === 0) {
  67. this.notifySvc.success("删除成功!", "");
  68. this.loadReceiversTable();
  69. } else {
  70. this.notifySvc.error("删除失败!", message.msg);
  71. }
  72. }, error => {
  73. this.notifySvc.error("删除失败!", error.msg);
  74. })
  75. }
  76. onDeleteOneNoticeRule(ruleId : number) {
  77. const deleteRule$ = this.noticeRuleSvc.deleteNoticeRule(ruleId)
  78. .pipe(finalize(() => {
  79. deleteRule$.unsubscribe();
  80. }))
  81. .subscribe(message => {
  82. if (message.code === 0) {
  83. this.notifySvc.success("删除成功!", "");
  84. this.loadRulesTable();
  85. } else {
  86. this.notifySvc.error("删除失败!", message.msg);
  87. }
  88. }, error => {
  89. this.notifySvc.error("删除失败!", error.msg);
  90. })
  91. }
  92. // start 新增或修改通知接收人弹出框
  93. isManageReceiverModalVisible : boolean = false;
  94. isManageReceiverModalAdd: boolean = true;
  95. isManageReceiverModalOkLoading: boolean = false;
  96. receiver!: NoticeReceiver;
  97. onNewNoticeReceiver() {
  98. this.receiver = new NoticeReceiver();
  99. this.isManageReceiverModalVisible = true;
  100. this.isManageReceiverModalAdd = true;
  101. }
  102. onEditOneNoticeReceiver(receiver : NoticeReceiver) {
  103. this.receiver = receiver;
  104. this.isManageReceiverModalVisible = true;
  105. this.isManageReceiverModalAdd = false;
  106. }
  107. onManageReceiverModalCancel() {
  108. this.isManageReceiverModalVisible = false;
  109. }
  110. onManageReceiverModalOk() {
  111. this.isManageReceiverModalOkLoading = true;
  112. if (this.isManageReceiverModalAdd) {
  113. const modalOk$ = this.noticeReceiverSvc.newReceiver(this.receiver)
  114. .pipe(finalize(() => {
  115. modalOk$.unsubscribe();
  116. this.isManageReceiverModalOkLoading = false;
  117. }))
  118. .subscribe(message => {
  119. if (message.code === 0) {
  120. this.isManageReceiverModalVisible = false;
  121. this.notifySvc.success("新增成功!", "");
  122. this.loadReceiversTable();
  123. } else {
  124. this.notifySvc.error("新增失败!", message.msg);
  125. }
  126. }, error => {
  127. this.notifySvc.error("新增失败!", error.msg);
  128. })
  129. } else {
  130. const modalOk$ = this.noticeReceiverSvc.editReceiver(this.receiver)
  131. .pipe(finalize(() => {
  132. modalOk$.unsubscribe();
  133. this.isManageReceiverModalOkLoading = false;
  134. }))
  135. .subscribe(message => {
  136. if (message.code === 0) {
  137. this.isManageReceiverModalVisible = false;
  138. this.notifySvc.success("修改成功!", "");
  139. this.loadReceiversTable();
  140. } else {
  141. this.notifySvc.error("修改失败!", message.msg);
  142. }
  143. }, error => {
  144. this.notifySvc.error("修改失败!", error.msg);
  145. })
  146. }
  147. }
  148. // start 新增或修改通知策略弹出框
  149. isManageRuleModalVisible : boolean = false;
  150. isManageRuleModalAdd: boolean = true;
  151. isManageRuleModalOkLoading: boolean = false;
  152. rule!: NoticeRule;
  153. receiversOption: any[] = [];
  154. onNewNoticeRule() {
  155. this.rule = new NoticeRule();
  156. this.isManageRuleModalVisible = true;
  157. this.isManageRuleModalAdd = true;
  158. }
  159. onEditOneNoticeRule(rule : NoticeRule) {
  160. this.rule = rule;
  161. this.isManageRuleModalVisible = true;
  162. this.isManageRuleModalAdd = false;
  163. this.receiversOption.push({
  164. value: rule.receiverId,
  165. label: rule.receiverName
  166. })
  167. }
  168. loadReceiversOption() {
  169. let receiverOption$ = this.noticeReceiverSvc.getReceivers()
  170. .subscribe(message => {
  171. if (message.code === 0) {
  172. let data = message.data;
  173. this.receiversOption = [];
  174. data.forEach(item => {
  175. let label = item.name + '-';
  176. switch (item.type) {
  177. case 0: label = label + 'Phone';break;
  178. case 1: label = label + 'Email';break;
  179. case 2: label = label + 'WebHook';break;
  180. case 3: label = label + 'WeChat';break;
  181. }
  182. this.receiversOption.push({
  183. value: item.id,
  184. label: label
  185. });
  186. })
  187. } else {
  188. console.warn(message.msg);
  189. }
  190. receiverOption$.unsubscribe();
  191. }, error => {
  192. console.error(error.msg);
  193. receiverOption$.unsubscribe();
  194. });
  195. }
  196. onManageRuleModalCancel() {
  197. this.isManageRuleModalVisible = false;
  198. }
  199. onManageRuleModalOk() {
  200. this.receiversOption.forEach(option => {
  201. if (option.value == this.rule.receiverId) {
  202. this.rule.receiverName = option.label;
  203. }
  204. });
  205. this.isManageRuleModalOkLoading = true;
  206. if (this.isManageRuleModalAdd) {
  207. const modalOk$ = this.noticeRuleSvc.newNoticeRule(this.rule)
  208. .pipe(finalize(() => {
  209. modalOk$.unsubscribe();
  210. this.isManageRuleModalOkLoading = false;
  211. }))
  212. .subscribe(message => {
  213. if (message.code === 0) {
  214. this.isManageRuleModalVisible = false;
  215. this.notifySvc.success("新增成功!", "");
  216. this.loadRulesTable();
  217. } else {
  218. this.notifySvc.error("新增失败!", message.msg);
  219. }
  220. }, error => {
  221. this.notifySvc.error("新增失败!", error.msg);
  222. })
  223. } else {
  224. const modalOk$ = this.noticeRuleSvc.editNoticeRule(this.rule)
  225. .pipe(finalize(() => {
  226. modalOk$.unsubscribe();
  227. this.isManageRuleModalOkLoading = false;
  228. }))
  229. .subscribe(message => {
  230. if (message.code === 0) {
  231. this.isManageRuleModalVisible = false;
  232. this.notifySvc.success("修改成功!", "");
  233. this.loadRulesTable();
  234. } else {
  235. this.notifySvc.error("修改失败!", message.msg);
  236. }
  237. }, error => {
  238. this.notifySvc.error("修改失败!", error.msg);
  239. })
  240. }
  241. }
  242. }