You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

248 lines
5.9 KiB

import axios from 'axios'
import router from '@/router'
import { Message } from 'element-ui'
import { removeToken, getToken } from '@/utils/auth'
// 统一请求路径前缀
const base = process.env.VUE_APP_BASE_API
// 超时设定
axios.defaults.timeout = 120000
axios.interceptors.request.use(
config => {
// console.log('请求拦截器数据', config)
return config
},
err => {
Message.error('请求超时')
return Promise.resolve(err)
}
)
// http response 拦截器
axios.interceptors.response.use(
response => {
const data = response.data
// console.log('响应拦截器数据', response)
// console.log('data.code:' + data.code)
// 根据返回的code值来做不同的处理(和后端约定)
switch (data.code) {
case 401:
// Message.error('登录失效,请重新登录!')
console.log('登录失效,请重新登录!')
// 未登录
// removeToken().then(() => { // 清除已登录状态
// router.push('/login')
// })
// if (router.history.current.name !== 'login') {
// console.log(router.history.current.name)
// if (data.msg !== null) {
// Message.error(data.msg)
// } else {
// Message.error('未知错误,请重新登录')
// }
// }
break
case 403:
// 没有权限
if (data.msg !== null) {
Message.error(data.msg)
} else {
Message.error('未知错误')
}
break
case 500:
// 错误
if (data.msg !== null) {
Message.error(data.msg)
} else {
Message.error('未知错误')
}
break
case 99:
if (data.msg !== null) {
if (data.msg == '登录状态已过期') {
// 未登录
// removeToken().then(() => { // 清除已登录状态
// router.push('/login')
// })
} else {
// Message.error(data.msg)
return data
}
} else {
Message.error('未知错误')
}
break
default:
return data
}
return Promise.reject(new Error(response.msg || 'Error'))
},
error => {
// 返回状态码不为200时候的错误处理
Message.error(error.toString())
if (error.request.responseURL.indexOf('/sys/security/needLogin')) {
// removeToken().then(() => { // 清除已登录状态
// router.push('/login')
// })
}
// return err
return Promise.reject(error)
}
)
export const getRequest = (url, params) => {
const accessToken = getToken()
console.log(`-------------------${base}${url}`)
return axios({
method: 'get',
url: `${base}${url}`,
params: params,
headers: {
accessToken: accessToken
}
})
}
export const postRequest = (url, params) => {
const accessToken = getToken()
return axios({
method: 'post',
url: `${base}${url}`,
data: params,
transformRequest: [
function(data) {
let ret = ''
for (const it in data) {
ret +=
encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}
],
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
accessToken: accessToken
}
})
}
export const post = (url, params) => {
const accessToken = getToken()
return axios({
method: 'post',
url: `${base}${url}`,
data: params,
headers: {
'Content-Type': 'application/json;charset=utf-8',
// 'Content-Type': 'multipart/form-data',
accessToken: accessToken
}
})
}
// export const postExport = (url, params) => {
// const accessToken = getToken()
// return axios({
// method: 'post',
// url: `${base}${url}`,
// data: params,
// headers: {
// 'Content-Type': 'application/json;charset=utf-8',
// // 'Content-Type': 'multipart/form-data',
// accessToken: accessToken
// },
// responseType: 'blob' // 表明返回服务器返回的数据类型
// })
// }
export const putRequest = (url, params) => {
const accessToken = getToken()
return axios({
method: 'put',
url: `${base}${url}`,
data: params,
transformRequest: [
function(data) {
let ret = ''
for (const it in data) {
ret +=
encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}
],
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
accessToken: accessToken
}
})
}
export const deleteRequest = (url, params) => {
const accessToken = getToken()
return axios({
method: 'delete',
url: `${base}${url}`,
params: params,
headers: {
accessToken: accessToken
}
})
}
export const importRequest = (url, params) => {
const accessToken = getToken()
return axios({
method: 'post',
url: `${base}${url}`,
data: params,
headers: {
accessToken: accessToken
}
})
}
export const uploadFileRequest = (url, params) => {
const accessToken = getToken()
return axios({
method: 'post',
url: `${base}${url}`,
params: params,
headers: {
accessToken: accessToken
}
})
}
export const getDownLoadUrl = (url) => {
const accessToken = getToken()
return base + url + '?accessToken=' + accessToken
}
export const uploadFileRequestJianCai = (url, params) => {
const accessToken = getToken()
return axios({
method: 'post',
url: `${base}${url}`,
data: params,
headers: {
'Content-Type': 'multipart/form-data',
contentType: false,
processData: false,
accessToken: accessToken
}
})
}
export const postBodyRequest = (url, params) => {
const accessToken = getToken()
return axios({
method: 'post',
url: `${base}${url}`,
data: params,
headers: {
accessToken: accessToken
}
})
}