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' }); } 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: T): Promise { return request(this.uri, { data, method: 'POST' }); } update(data: Partial): Promise { return request(this.uri, { data, method: 'PATCH' }); } 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; } } export default BaseService;