¶Ô±ÈÐÂÎļþ |
| | |
| | | import config from '@/config' |
| | | import { getToken } from '@/utils/auth' |
| | | import errorCode from '@/utils/errorCode' |
| | | import { toast, showConfirm, tansParams } from '@/utils/common' |
| | | import { RequestConfig, ResponseData } from '@/types/request' |
| | | import useUserStore from '@/store/modules/user' |
| | | |
| | | let timeout = 10000 |
| | | const baseUrl = config.baseUrl |
| | | |
| | | const request = <T>(config: RequestConfig): Promise<ResponseData<T>> => { |
| | | // æ¯å¦éè¦è®¾ç½® token |
| | | const isToken = (config.headers || {}).isToken === false |
| | | config.header = config.header || {} |
| | | if (getToken() && !isToken) { |
| | | config.header['Authorization'] = 'Bearer ' + getToken() |
| | | } |
| | | // getè¯·æ±æ å°paramsåæ° |
| | | if (config.params) { |
| | | let url = config.url + '?' + tansParams(config.params) |
| | | url = url.slice(0, -1) |
| | | config.url = url |
| | | } |
| | | return new Promise((resolve, reject) => { |
| | | uni.request({ |
| | | method: config.method || 'GET', |
| | | timeout: config.timeout || timeout, |
| | | url: (config.baseUrl || baseUrl) + config.url, |
| | | data: config.data, |
| | | header: config.header, |
| | | dataType: 'json' |
| | | }).then(response => { |
| | | /* let [error, res] = response |
| | | if (error) { |
| | | toast('å端æ¥å£è¿æ¥å¼å¸¸') |
| | | reject('å端æ¥å£è¿æ¥å¼å¸¸') |
| | | return |
| | | } */ |
| | | const res = response |
| | | const data: ResponseData<T> = res.data as ResponseData<T> |
| | | const code = data.code || 200 |
| | | // @ts-ignore |
| | | const msg: string = errorCode[code] || data.msg || errorCode['default'] |
| | | if (code === 401) { |
| | | showConfirm('ç»å½ç¶æå·²è¿æï¼æ¨å¯ä»¥ç»§ç»çå¨è¯¥é¡µé¢ï¼æè
éæ°ç»å½?').then(res => { |
| | | if (res.confirm) { |
| | | useUserStore().logOut().then(res => { |
| | | uni.reLaunch({ url: '/pages/login' }) |
| | | }) |
| | | } |
| | | }) |
| | | reject('æ æçä¼è¯ï¼æè
ä¼è¯å·²è¿æï¼è¯·éæ°ç»å½ã') |
| | | } else if (code === 500) { |
| | | toast(msg) |
| | | reject('500') |
| | | } else if (code !== 200) { |
| | | toast(msg) |
| | | reject(code) |
| | | } |
| | | resolve(data) |
| | | }) |
| | | .catch(error => { |
| | | let { message } = error |
| | | if (message === 'Network Error') { |
| | | message = 'å端æ¥å£è¿æ¥å¼å¸¸' |
| | | } else if (message.includes('timeout')) { |
| | | message = 'ç³»ç»æ¥å£è¯·æ±è¶
æ¶' |
| | | } else if (message.includes('Request failed with status code')) { |
| | | message = 'ç³»ç»æ¥å£' + message.substr(message.length - 3) + 'å¼å¸¸' |
| | | } |
| | | toast(message) |
| | | reject(error) |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | export function postAction(url: string, data?: any, isToken: boolean = true) { |
| | | return request({ data, url, method: 'POST', headers: { isToken }, }) |
| | | } |
| | | export function getAction(url: string, params?: any, isToken: boolean = true) { |
| | | return request({ params, url, method: 'GET', headers: { isToken }, }) |
| | | } |
| | | export function putAction(url: string, data?: any, isToken: boolean = true) { |
| | | return request({ data, url, method: 'PUT', headers: { isToken }, }) |
| | | } |
| | | export function deleteAction(url: string, data?: any, isToken: boolean = true) { |
| | | return request({ data, url, method: 'DELETE', headers: { isToken }, }) |
| | | } |
| | | |
| | | export default request |