牛栏山防伪赋码系统
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.
 
 
 
 
 

104 lines
3.4 KiB

import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
import store from '../store/index'
import qs from 'qs'
import router from '@/router'
import { getToken } from '@/utils/auth'
// import { config } from 'vue/types/umd'
axios.defaults.withCredentials = true; //允许跨域设置
var isToken = true //token标记位,用来防止多个请求token超时弹出多个重新登录框
// 创建axios实例
const service = axios.create({
baseURL: config.API_URL, // api 的 base_url
//timeout: 5000 // 请求超时时间
// headers: {
// crossDomain: true,
// }
})
// request拦截器
service.interceptors.request.use((config) => {
let isKey = false
//统一在header中添加token
if (store.getters.token &&  !config.isLogin) {
config.headers['token'] = getToken()
}
if (config.method == 'post' || config.method == 'put') {
//----------------End---------------------------------
config.data = qs.stringify(config.data)
// qs.stringify(config.params, { indices: false })
} else if (config.method == 'get') {
config.paramsSerializer = params => {
return qs.stringify(params, { indices: false })
}
}
//包含敏感字眼,拦截请求并报错,反之发送请求
if (isKey) {
Message({
message: '输入内容包含敏感字符。',
type: 'error',
duration: 5 * 1000
})
Promise.reject('输入内容包含敏感字符。')
} else {
return config
}
}, (error) => {
// Do something with request error
console.log(error) // for debug
Promise.reject(error)
})
// respone拦截器
service.interceptors.response.use(
(response) => {
/**
* code为非200是抛错 可结合自己业务进行修改
*/
const res = response.data
// const res = JSON.parse(response.data)
if (res.code !== 200) {
// 511:失效的token;弹出弹框,返回登录页
if (res.code === 207) {
if (isToken) {
isToken = false //防止下个一个token失效的请求在弹出第二个框
MessageBox.alert('你已被登出,请重新登录', '确定登出', {
confirmButtonText: '重新登录',
type: 'warning',
callback: () => {
store.dispatch('FedLogOut').then(() => {
isToken = true
router.replace({ name: 'login' })
// location.reload();
});
},
});
}
} else {
//接口失败统一报错
Message({
message: res.message,
type: 'error',
duration: 5 * 1000
})
}
return Promise.reject(res)
} else {
return response.data
}
},
(error) => {
console.log('err' + error) // for debug
const res = error.response;
Message({
message: res.message,
type: 'error',
duration: 3 * 1000
})
return Promise.reject(error)
}
)
export default service