alert-notice.component.ts 8.8 KB

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