import type { UseFetchOptions } from '#app'; import {useToken} from "~/composables/configState"; import {getTenantId} from "~/utils/domain"; export const request = (url:string, options?: UseFetchOptions) => { const nuxtApp = useNuxtApp() const config = useRuntimeConfig() const TenantId = localStorage.getItem('TenantId') || `${config.public.tenantId}`; return useFetch(url,{ baseURL: config.public.apiBaseUrl, onRequest({ options }: any){ let token = '' if(import.meta.client){ token = `${useToken().value}` } options.headers = { TenantId, 'Authorization': `${token}`, ...options.headers } }, onResponse({ response }: any){ // 200xx 以内错误 if(response.status >= 200 && response.status < 300){ if(response._data.code !== 0){ console.log('>>>>200xx 以内错误') if(import.meta.client){ ElMessage.error(response._data.message) nuxtApp.runWithContext(() => { // navigateTo({ // path: '/404', // query: { // code: response.status, // message: response._data.message // } // }) }) } } } }, onResponseError({ response }: any){ // 200xx 以外错误 if(import.meta.client){ console.log('200xx 以外错误',response) ElMessage.error(isArray(response._data.data.message) ? response._data.data.message[0] : response._data.data.message); } }, ...options } as any) } export const get = (url: string,options?: UseFetchOptions) => { return new Promise((resolve,reject) => { request(url,{ method: 'get', ...options }).then(res => { resolve(res.data.value) }).catch(err => { reject(err) }) }) } export const post = (url:string,data?: any) => { return new Promise((resolve,reject) => { request(url,{ method: 'post', body: data }).then(res => { resolve(res.data.value) }).catch(err => { reject(err) }) }) } export const put = (url:string,data?: any) => { return new Promise((resolve,reject) => { request(url,{ method: 'put', body: data }).then(res => { resolve(res.data.value) }).catch(err => { reject(err) }) }) } export const del = (url:string,data?: any) => { return new Promise((resolve,reject) => { request(url,{ method: 'delete', ...data }).then(res => { resolve(res.data.value) }).catch(err => { reject(err) }) }) } export default { request, get, post, put, del }