| | |
| | | import { Notification, MessageBox, Message } from 'element-ui'
|
| | | import store from '@/store'
|
| | | import { getToken } from '@/utils/auth'
|
| | | import errorCode from '@/utils/errorCode'
|
| | |
|
| | | axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
|
| | | // 创建axios实例
|
| | |
| | | timeout: 10000
|
| | | })
|
| | | // request拦截器
|
| | | service.interceptors.request.use(
|
| | | config => {
|
| | | if (getToken()) {
|
| | | config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
| | | }
|
| | | return config
|
| | | },
|
| | | error => {
|
| | | service.interceptors.request.use(config => {
|
| | | // 是否需要设置 token
|
| | | const isToken = (config.headers || {}).isToken === false
|
| | | if (getToken() && !isToken) {
|
| | | config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
| | | }
|
| | | return config
|
| | | }, error => {
|
| | | console.log(error)
|
| | | Promise.reject(error)
|
| | | }
|
| | | )
|
| | | })
|
| | |
|
| | | // 响应拦截器
|
| | | service.interceptors.response.use(res => {
|
| | | const code = res.data.code
|
| | | // 未设置状态码则默认成功状态
|
| | | const code = res.data.code || 200;
|
| | | // 获取错误信息
|
| | | const message = errorCode[code] || res.data.msg || errorCode['default']
|
| | | if (code === 401) {
|
| | | MessageBox.confirm(
|
| | | '登录状态已过期,您可以继续留在该页面,或者重新登录',
|
| | |
| | | location.reload() // 为了重新实例化vue-router对象 避免bug
|
| | | })
|
| | | })
|
| | | } else if (code === 500) {
|
| | | Message({
|
| | | message: message,
|
| | | type: 'error'
|
| | | })
|
| | | return Promise.reject(new Error(message))
|
| | | } else if (code !== 200) {
|
| | | Notification.error({
|
| | | title: res.data.msg
|
| | | title: message
|
| | | })
|
| | | return Promise.reject('error')
|
| | | } else {
|