talk_appAmin/utils/request.js

88 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import store from '@/store'
import config from '@/config'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import { toast, showConfirm, tansParams } from '@/utils/common'
let timeout = 10000
const baseUrl = config.baseUrl
const log = ''
const request = config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
config.header = config.header || {}
// 检查是否有 token并添加到请求头中
const token = getToken();
if (token && !isToken) {
config.header['Authorization'] = 'Bearer ' + token;
}
// 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 => {
// vue3 不再返回数组结构,失败直接进 catch
let res = response[1] || response[0] || response; // 捕获 response 不为数组的情况
const code = res.data.code || 200
const msg = errorCode[code] || res.data.msg || errorCode['default']
if (!token && code === 401) {
toast('您尚未登录');
reject('未登录');
return;
}
if (token && code === 401) {
showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
if (res.confirm) {
store.dispatch('LogOut').then(() => {
uni.reLaunch({ url: '/pages/login' })
})
}
})
reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
toast(msg)
reject('500')
} else if (code !== 200) {
toast(msg)
reject(code)
}
resolve(res.data)
})
.catch(error => {
/* let message = error.message || '服务端连接异常'; // 提供默认错误信息
if (message === 'Network Error') {
message = '后端接口连接异常'
} else if (message.includes && message.includes('timeout')) {
message = '系统接口请求超时'
} else if (message.includes && message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常'
}
toast(message)
reject(error) */
let message = '系统开小差,请稍后再试';
let log = errot.message
if (log === 'Network Error') {
console.log('后端接口连接异常')
} else if (message.includes && message.includes('timeout')) {
console.log('系统接口请求超时')
} else if (message.includes && message.includes('Request failed with status code')) {
console.log('系统接口' + message.substr(message.length - 3) + '异常')
}
toast(message)
})
})
}
export default request