forked from TALL/check-work
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.
79 lines
2.0 KiB
79 lines
2.0 KiB
import axios from 'axios'
|
|
import store from '@/store'
|
|
import { Message } from 'element-ui'
|
|
let router = import('@/router')
|
|
|
|
// axios.defaults.baseURL = '/'
|
|
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
|
|
// axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
|
|
// axios.defaults.headers['Cache-Control'] = 'no-cache'
|
|
// axios.defaults.headers['pragma'] = 'no-cache'
|
|
|
|
let source = axios.CancelToken.source()
|
|
|
|
// 请求添加token
|
|
axios.interceptors.request.use(request => {
|
|
request.headers['Authorization'] = store.state.loginInfo ? 'Bearer ' + store.state.loginInfo.token : '' // 已将userId保存在store中
|
|
return request
|
|
})
|
|
|
|
// 切换页面取消请求
|
|
axios.interceptors.request.use(request => {
|
|
request.cancelToken = source.token
|
|
return request
|
|
})
|
|
router.then(lib => {
|
|
lib.default.beforeEach((to, from, next) => {
|
|
source.cancel()
|
|
source = axios.CancelToken.source()
|
|
next()
|
|
})
|
|
})
|
|
|
|
// 登录过期跳转
|
|
axios.interceptors.response.use(response => {
|
|
let data = response.data
|
|
if (
|
|
[10002].includes(data.ret)
|
|
) {
|
|
router.then(lib => lib.default.push({ name: 'login' })) // 跳转到登录页面
|
|
Message.warning(data.msg)
|
|
}
|
|
return response
|
|
})
|
|
|
|
// 返回值解构
|
|
axios.interceptors.response.use(response => {
|
|
let data = response.data
|
|
let isJson = (response.headers['content-type'] || '').includes('json')
|
|
if (isJson) {
|
|
if (data.code === 200) {
|
|
return Promise.resolve({
|
|
data: data.data,
|
|
msg: data.msg,
|
|
code: data.code
|
|
})
|
|
}
|
|
return Promise.reject(
|
|
data.msg || '网络错误'
|
|
)
|
|
} else {
|
|
return data
|
|
}
|
|
}, err => {
|
|
let isCancel = axios.isCancel(err)
|
|
if (isCancel) {
|
|
return new Promise(() => { })
|
|
}
|
|
return Promise.reject(
|
|
(err.response.data && err.response.data.msg) || '网络错误'
|
|
)
|
|
})
|
|
|
|
export function post (url, data, otherConfig) {
|
|
return axios.post(url, data, otherConfig)
|
|
}
|
|
|
|
export function get (url, data, otherConfig) {
|
|
return axios.get(url, { params: data, ...otherConfig })
|
|
}
|
|
|