87 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-12-31 10:05:55 +08:00
import { CustomRequestOptions } from '@/interceptors/request'
import { useUserStore } from '@/store'
2024-12-31 10:05:55 +08:00
export const http = <T>(options: CustomRequestOptions) => {
return new Promise<IResData<T>>((resolve, reject) => {
2025-01-02 16:11:01 +08:00
const timestamp = new Date().getTime()
2024-12-31 10:05:55 +08:00
uni.request({
...options,
dataType: 'json',
// #ifndef MP-WEIXIN
responseType: 'json',
// #endif
// 响应成功
success(res) {
if (res.statusCode >= 200 && res.statusCode < 300) {
2024-12-31 10:58:07 +08:00
if (res.data.errorCode === 403) {
const $user = useUserStore()
$user.logout()
uni.switchTab({
url: '/pages/home/home'
})
uni.showToast({
icon: 'none',
title: '登录已过期,请重新登录'
})
2024-12-31 10:58:07 +08:00
reject(res)
} else {
resolve(res.data as IResData<T>)
}
2024-12-31 10:05:55 +08:00
} else {
2024-12-31 10:58:07 +08:00
uni.showToast({
icon: 'none',
title: '网络错误,请重试'
})
2024-12-31 10:05:55 +08:00
reject(res)
}
},
// 响应失败
fail(err) {
console.log('请求失败', err)
2024-12-31 10:05:55 +08:00
uni.showToast({
icon: 'none',
2024-12-31 10:58:07 +08:00
title: '网络错误,请重试'
2024-12-31 10:05:55 +08:00
})
reject(err)
2025-01-02 16:11:01 +08:00
},
complete(res) {
console.log(options.url, {
env: import.meta.env.VITE_APP_ENV,
statusCode: res?.statusCode,
code: res?.data?.errorCode,
baseUrl: import.meta.env.VITE_SERVER_BASEURL,
url: options.url,
req: options.data,
res: res?.data?.data,
2025-01-02 19:26:12 +08:00
header: options.header,
2025-01-02 16:11:01 +08:00
message: res?.data?.errorMsg,
duration: new Date().getTime() - timestamp
})
2024-12-31 10:19:20 +08:00
}
2024-12-31 10:05:55 +08:00
})
})
}
/**
* POST
* @param url
* @param data body参数
* @param query query参数post请求也支持query
* @returns
*/
export const httpPost = <T>(
url: string,
data?: Record<string, any>,
2024-12-31 10:19:20 +08:00
query?: Record<string, any>
2024-12-31 10:05:55 +08:00
) => {
return http<T>({
url,
query,
data,
2024-12-31 10:19:20 +08:00
method: 'POST'
2024-12-31 10:05:55 +08:00
})
}
http.post = httpPost