2024-12-31 10:05:55 +08:00
|
|
|
|
import { CustomRequestOptions } from '@/interceptors/request'
|
2025-01-03 10:32:00 +08:00
|
|
|
|
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) {
|
2025-01-03 10:32:00 +08:00
|
|
|
|
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) {
|
2025-01-03 10:32:00 +08:00
|
|
|
|
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
|