talk_appAmin/utils/request.js

93 lines
3.4 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
// 假设 response.data 是从服务器返回的数据
let res = response[1] || response[0] || response;
const { code, msg } = res.data;
// 如果没有 token因为用户没有登录
if (!token && code === 401) {
toast('您尚未登录');
reject('未登录');
return;
}
// 如果用户有 token但服务器返回了 401那么 token 可能已过期
if (token && code === 401) {
showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
if (res.confirm) {
store.dispatch('LogOut').then(() => {
uni.reLaunch({ url: '/pages/login' });
});
}
});
reject('无效的会话,或者会话已过期,请重新登录。');
return;
} 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 = error.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