useIncidentStore.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import {
  2. getIncidentList,
  3. getIncidentItem,
  4. getHDIncidentList,
  5. GetIncidentListParams,
  6. IncidentItemDetail,
  7. IncidentListResponse,
  8. IncidentItem,
  9. putIncidentItem,
  10. postIncidentItem,
  11. } from '@/api/incident';
  12. import { ElMessage } from 'element-plus';
  13. import { defineStore } from 'pinia';
  14. export interface IncidentStateType {
  15. incidents: IncidentListResponse;
  16. loading: boolean;
  17. incidentDetail: IncidentItemDetail;
  18. }
  19. export interface IncidentActionsType {
  20. toggleLoading(): void;
  21. getIncidentList(params: GetIncidentListParams): void;
  22. getIncidentItem(id: number | string): void;
  23. putIncidentItem(params: IncidentItem): Promise<boolean | null | undefined>;
  24. postIncidentItem(params: IncidentItem): Promise<boolean | null | undefined>;
  25. }
  26. export default defineStore<
  27. 'incident',
  28. IncidentStateType,
  29. {},
  30. IncidentActionsType
  31. >('incident', {
  32. state: () => ({
  33. incidents: {
  34. data: [],
  35. },
  36. incidentDetail: {
  37. baseInfo: {},
  38. process: [],
  39. task: [],
  40. },
  41. loading: false,
  42. }),
  43. actions: {
  44. toggleLoading() {
  45. this.loading = !this.loading;
  46. },
  47. async getIncidentList(params) {
  48. try {
  49. this.toggleLoading();
  50. this.incidents = await getHDIncidentList(params);
  51. } finally {
  52. this.toggleLoading();
  53. }
  54. },
  55. async getIncidentItem(id) {
  56. try {
  57. this.toggleLoading();
  58. const { data } = await getIncidentItem(id);
  59. this.incidentDetail = data;
  60. } finally {
  61. this.toggleLoading();
  62. }
  63. },
  64. async postIncidentItem(params) {
  65. try {
  66. this.toggleLoading();
  67. await postIncidentItem(params);
  68. ElMessage.success({ message: '修改成功' });
  69. return true;
  70. } catch {
  71. ElMessage.error({ message: '修改失败' });
  72. } finally {
  73. this.toggleLoading();
  74. }
  75. },
  76. /** 修改事件状态 */
  77. /** */
  78. async putIncidentItem(params) {
  79. try {
  80. this.toggleLoading();
  81. await putIncidentItem(params);
  82. if (params.madinDept || params.assistDept) {
  83. ElMessage.success({ message: `派发成功` });
  84. return true;
  85. }
  86. ElMessage.success({ message: '修改成功' });
  87. return true;
  88. } catch {
  89. ElMessage.error({ message: '修改失败' });
  90. } finally {
  91. this.toggleLoading();
  92. }
  93. },
  94. },
  95. });