useResourceStore.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import {
  2. getResourceList,
  3. ResourceListResponse,
  4. ResourceListItem,
  5. ResourceItemDetail,
  6. GetResourceListParams,
  7. deleteResourceItem,
  8. getResourceItem,
  9. saveResourceItem,
  10. putResourceItem,
  11. } from '@/api/resource';
  12. import { ElMessage } from 'element-plus';
  13. import { defineStore } from 'pinia';
  14. export interface ResourceStateType {
  15. resources: ResourceListResponse;
  16. resourceDetail: ResourceItemDetail;
  17. loading: boolean;
  18. }
  19. export interface ResourceActionsType {
  20. toggleLoading(): void;
  21. getResourceList(params: GetResourceListParams): void;
  22. saveResourceItem(data: ResourceItemDetail): Promise<boolean>;
  23. deleteResourceItem(id: number): void;
  24. putResourceItem(data: ResourceItemDetail): Promise<null>;
  25. getResourceItem(id: string): void;
  26. }
  27. export default defineStore<
  28. 'resource',
  29. ResourceStateType,
  30. {},
  31. ResourceActionsType
  32. >('resource', {
  33. state: () => ({
  34. resources: {
  35. rows: [],
  36. total: 0,
  37. },
  38. resourceDetail: {},
  39. loading: false,
  40. }),
  41. actions: {
  42. toggleLoading() {
  43. this.loading = !this.loading;
  44. },
  45. async getResourceList({ name, manageUnit, resourceType }) {
  46. try {
  47. this.toggleLoading();
  48. this.resources = await getResourceList({
  49. name,
  50. manageUnit,
  51. resourceType,
  52. });
  53. } finally {
  54. this.toggleLoading();
  55. }
  56. },
  57. async deleteResourceItem(id) {
  58. try {
  59. this.toggleLoading();
  60. await deleteResourceItem(id);
  61. ElMessage.success({ message: '删除成功' });
  62. } finally {
  63. this.toggleLoading();
  64. }
  65. },
  66. async getResourceItem(id) {
  67. try {
  68. this.toggleLoading();
  69. const { data } = await getResourceItem(id);
  70. this.resourceDetail = data;
  71. } finally {
  72. this.toggleLoading();
  73. }
  74. },
  75. async saveResourceItem(data) {
  76. try {
  77. this.toggleLoading();
  78. await saveResourceItem(data);
  79. ElMessage.success({ message: '新增成功' });
  80. return true;
  81. } finally {
  82. this.toggleLoading();
  83. }
  84. },
  85. async putResourceItem(data) {
  86. try {
  87. this.toggleLoading();
  88. await putResourceItem(data);
  89. ElMessage.success({ message: '修改成功' });
  90. return null;
  91. } finally {
  92. this.toggleLoading();
  93. }
  94. },
  95. },
  96. });