// 引入接口 import initApi from '@/apis/index' import Vue from 'vue' import { Dialog, Toast } from 'vant' export default function (context) { const { $axios, redirect, store } = context // 初始化接口及挂载接口 const apiMap = initApi($axios) Vue.prototype.$http = context.$http = { api: apiMap } // 设置请求头 $axios.onRequest(() => { $axios.setHeader('X-Token', store.getters.accessToken) }) // 响应拦截 $axios.onResponse(async (response) => { const res = response.data // 请求成功 if (!res.code) return res // 请求失败 if (res.code === -1) { Toast(res.msg || '服务器开小差了') } // 登录过期 if (res.code === -99) { const result = await Dialog.alert({ title: '提示', message: '登录已过期,请重新登录', theme: 'round-button', confirmButtonColor: 'linear-gradient(to left, #404040, #101010)', }) if (result === 'confirm') { console.log(store.getters.routePrefix) redirect(store.getters.routePrefix) } } return Promise.reject(res) }) // 错误拦截 $axios.onError((error) => { const code = parseInt(error.response && error.response.status) if (code === 400) { redirect('/400') } }) }