import Token from '@/utils/token'; import SystemConst from '@/utils/const'; import { request } from 'umi'; interface IBaseService { query: (params: any) => Promise; save: (data: T) => Promise; remove: (id: string) => Promise; } class BaseService implements IBaseService { protected uri: string; protected headers = { 'X-Access-Token': Token.get(), }; constructor(uri?: string) { this.uri = `/${SystemConst.API_BASE}/${uri}`; } query(data: any): Promise { return request(`${this.uri}/_query/`, { data, method: 'POST' }); } queryNoPagingPost(data: any): Promise { return request(`${this.uri}/_query/no-paging?paging=false`, { data, method: 'POST' }); } queryNoPaging(params?: any): Promise { return request(`${this.uri}/_query/no-paging?paging=false`, { params, method: 'GET' }); } remove(id: string): Promise { return request(`${this.uri}/${id}`, { method: 'DELETE' }); } save(data: Partial): Promise { return request(this.uri, { data, method: 'POST' }); } savePatch(data: Partial): Promise { return request(this.uri, { data, method: 'PATCH' }); } update(data: Partial): Promise { // @ts-ignore return data.id ? request(this.uri, { data, method: 'PATCH' }) : this.save(data); } detail(id: string): Promise { return request(`${this.uri}/${id}`, { method: 'GET' }); } modify(id: string, data: Partial): Promise { return request(`${this.uri}/${id}`, { method: 'PUT', data, }); } getUri() { return this.uri; } POST(url: string, data: Partial = {}, params?: any, options?: any): Promise { return request(url, { method: 'POST', data, params, ...options, }); } GET(url: string, params?: Partial, options?: any): Promise { return request(url, { method: 'GET', params, ...options, }); } PATCH(url: string, data?: Partial, options?: any): Promise { return request(url, { method: 'PATCH', data, ...options, }); } DELETE(url: string, params?: Partial, options?: any): Promise { return request(url, { method: 'DELETE', params, ...options, }); } PUT(url: string, data?: Partial, options?: any): Promise { return request(url, { method: 'PUT', data, ...options, }); } } export default BaseService;