This commit is contained in:
2026-01-29 10:43:43 +08:00
commit 4a76df3391
426 changed files with 74975 additions and 0 deletions

114
utils/request.ts Normal file
View File

@@ -0,0 +1,114 @@
import type { UseFetchOptions } from '#app';
import {useToken} from "~/composables/configState";
export const request = <T>(url:string, options?: UseFetchOptions<T, unknown>) => {
const nuxtApp = useNuxtApp()
const config = useRuntimeConfig()
let TenantId = localStorage.getItem('TenantId') || `${config.public.tenantId}`;
const body = options?.body;
// @ts-ignore
const tenantIdByOptions = body?.tenantId;
if(tenantIdByOptions){
// 自定义传TenantId
TenantId = tenantIdByOptions;
}
return useFetch<T>(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 = <T>(url: string,options?: UseFetchOptions<T, unknown>) => {
return <T>new Promise((resolve,reject) => {
request(url,{
method: 'get',
...options
}).then(res => {
resolve(res.data.value)
}).catch(err => {
reject(err)
})
})
}
export const post = <T>(url:string,data?: any) => {
return <T>new Promise((resolve,reject) => {
request(url,{
method: 'post',
body: data
}).then(res => {
resolve(res.data.value)
}).catch(err => {
reject(err)
})
})
}
export const put = <T>(url:string,data?: any) => {
return <T>new Promise((resolve,reject) => {
request(url,{
method: 'put',
body: data
}).then(res => {
resolve(res.data.value)
}).catch(err => {
reject(err)
})
})
}
export const del = <T>(url:string,data?: any) => {
return <T>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
}