|
- import axios from 'axios'
- import { serialize } from '@/util/util'
- import { getStore } from '@/util/store'
- import NProgress from 'nprogress' // progress bar
- import errorCode from '@/const/errorCode'
- import router from '@/router/router'
- import { Message } from 'element-ui'
- import 'nprogress/nprogress.css'
- import qs from 'qs'
- import store from '@/store' // progress bar style
- axios.defaults.timeout = 30000
- // 返回其他状态吗
- axios.defaults.validateStatus = function (status) {
- return status >= 200 && status <= 500 // 默认的
- }
- // 跨域请求,允许保存cookie
- axios.defaults.withCredentials = true
- // NProgress Configuration
- NProgress.configure({
- showSpinner: false
- })
-
- // HTTPrequest拦截
- axios.interceptors.request.use(config => {
- NProgress.start() // start progress bar
- const TENANT_ID = getStore({ name: 'tenantId' })
- const isToken = (config.headers || {}).isToken === false
- const token = store.getters.access_token
- if (token && !isToken) {
- config.headers['Authorization'] = 'Bearer ' + token// token
- }
- if (TENANT_ID) {
- config.headers['TENANT-ID'] = TENANT_ID // 租户ID
- }
- // 白单验证
- // let arr=['/auth/oauth/token','/auth/token/logout','/code/check','/admin/tenant/list','/code','/admin/menu']
- // if(arr.indexOf(config.url)==-1){
- // Object.assign(config.params,{orgType:localStorage.getItem('orgType')||''})
- // }
- // console.log(config.params,'data')
- // headers中配置serialize为true开启序列化
- if (config.method === 'post' && config.headers.serialize) {
- // console.log(config.data,'data')
- config.data = serialize(config.data)
- delete config.data.serialize
- }
-
- if (config.method === 'get') {
- config.paramsSerializer = function (params) {
- // console.log(params,'get')
- // console.log(Object.assign(params,{orgType:localStorage.getItem('orgType')}))
- return qs.stringify(params, { arrayFormat: 'repeat' })
- }
- }
- // console.log(config,'config')
- return config
- }, error => {
- return Promise.reject(error)
- })
- let idx=0
- // HTTPresponse拦截
- axios.interceptors.response.use(res => {
- NProgress.done()
- const status = Number(res.status) || 200
- const message = res.data.msg || errorCode[status] || errorCode['default']
- if ((status === 401 || status === 500) && process.env.NODE_ENV === 'production') {
- idx++
- if(idx==1){
- Message({
- message: '当前登录状态异常,请重新登录~',
- type: 'error'
- })
- }
- store.dispatch('LogOut').then(() => {
- router.push({ path: '/login' })
- })
- return
- }else{
- idx=0
- }
- // console.log(idx);
- if (status !== 200 || res.data.code === 1) {
- Message({
- message: message,
- type: 'error'
- })
- return Promise.reject(new Error(message))
- }
-
- return res.data
- }, error => {
- NProgress.done()
- return Promise.reject(new Error(error))
- })
-
- export default axios
|