import { getResourceList, ResourceListResponse, ResourceListItem, ResourceItemDetail, GetResourceListParams, deleteResourceItem, getResourceItem, saveResourceItem, putResourceItem, } from '@/api/resource'; import { ElMessage } from 'element-plus'; import { defineStore } from 'pinia'; export interface ResourceStateType { resources: ResourceListResponse; resourceDetail: ResourceItemDetail; loading: boolean; } export interface ResourceActionsType { toggleLoading(): void; getResourceList(params: GetResourceListParams): void; saveResourceItem(data: ResourceItemDetail): Promise; deleteResourceItem(id: number): void; putResourceItem(data: ResourceItemDetail): Promise; getResourceItem(id: string): void; } export default defineStore< 'resource', ResourceStateType, {}, ResourceActionsType >('resource', { state: () => ({ resources: { rows: [], total: 0, }, resourceDetail: {}, loading: false, }), actions: { toggleLoading() { this.loading = !this.loading; }, async getResourceList({ name, manageUnit, resourceType }) { try { this.toggleLoading(); this.resources = await getResourceList({ name, manageUnit, resourceType, }); } finally { this.toggleLoading(); } }, async deleteResourceItem(id) { try { this.toggleLoading(); await deleteResourceItem(id); ElMessage.success({ message: '删除成功' }); } finally { this.toggleLoading(); } }, async getResourceItem(id) { try { this.toggleLoading(); const { data } = await getResourceItem(id); this.resourceDetail = data; } finally { this.toggleLoading(); } }, async saveResourceItem(data) { try { this.toggleLoading(); await saveResourceItem(data); ElMessage.success({ message: '新增成功' }); return true; } finally { this.toggleLoading(); } }, async putResourceItem(data) { try { this.toggleLoading(); await putResourceItem(data); ElMessage.success({ message: '修改成功' }); return null; } finally { this.toggleLoading(); } }, }, });