132 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
import axios from 'axios'
 | 
						|
import { Message, MessageBox, Alert } from 'element-ui'
 | 
						|
import store from '@/store'
 | 
						|
import router from '@/router'
 | 
						|
import Vue from 'vue'
 | 
						|
axios.defaults.withCredentials = false
 | 
						|
const service = axios.create({
 | 
						|
  baseURL: '/api',
 | 
						|
  timeout: 2 * 360000, // request timeout
 | 
						|
  withCredentials: false
 | 
						|
})
 | 
						|
var path
 | 
						|
// request interceptor
 | 
						|
var lang = store.state.lang.language
 | 
						|
 | 
						|
service.interceptors.request.use(
 | 
						|
  config => {
 | 
						|
    path = router && router.app && router.app._route && router.app._route.path
 | 
						|
    config.headers['Content-Type'] = 'application/json;charset=UTF-8'
 | 
						|
 | 
						|
    config.headers['Accept-Language'] =lang === 'en'?'en-US,en;q=0.5':'zh-CN,zh;q=0.9'
 | 
						|
    if (store.getters.token) {
 | 
						|
      config.headers.Authorization = `Bearer ${store.getters.token}`
 | 
						|
    }
 | 
						|
    try {
 | 
						|
      if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
 | 
						|
        if (!path || path === '/login' || path === '/researchForm' || path === '/researchLogin' || path === '/email-recompose' || path === '/recompose' || path === '/resetpassword' || path === '/error') {
 | 
						|
          return config
 | 
						|
        }
 | 
						|
        if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {
 | 
						|
          window.location.href = `/login`
 | 
						|
          zzSessionStorage.removeItem('lastWorkbench')
 | 
						|
          Alert('同一浏览器只允许同时登陆一个账户',  {
 | 
						|
            type: 'warning',
 | 
						|
          })
 | 
						|
        }
 | 
						|
      }
 | 
						|
    } catch (e) {
 | 
						|
      console.log(e)
 | 
						|
    }
 | 
						|
    return config
 | 
						|
  },
 | 
						|
  error => {
 | 
						|
    // console.log(error)
 | 
						|
    return Promise.reject(error)
 | 
						|
  }
 | 
						|
)
 | 
						|
 | 
						|
service.interceptors.response.use(
 | 
						|
  response => {
 | 
						|
    const res = response.data
 | 
						|
    if (res.IsSuccess) {
 | 
						|
      return Promise.resolve(res)
 | 
						|
    } else if (res.IsSuccess === false) {
 | 
						|
      if (res.Code !== 5) {
 | 
						|
        MessageBox.confirm(res.ErrorMessage,  {
 | 
						|
          type: 'warning',
 | 
						|
          showCancelButton: false,
 | 
						|
          confirmButtonText: '确定',
 | 
						|
          callback: action => {}
 | 
						|
        })
 | 
						|
      }
 | 
						|
      return Promise.reject(res)
 | 
						|
    } else {
 | 
						|
      return Promise.resolve(res)
 | 
						|
    }
 | 
						|
  },
 | 
						|
  error => {
 | 
						|
    var message = ''
 | 
						|
    if (error && error.response) {
 | 
						|
      const status = error.response.status
 | 
						|
      if (error.response.data && error.response.data.Code === -1) {
 | 
						|
        store.dispatch('user/logout').then(() => {
 | 
						|
          router.push(`/login`)
 | 
						|
        })
 | 
						|
      }
 | 
						|
      switch (status) {
 | 
						|
        case 400: message = '请求错误'; break
 | 
						|
        case 401: message = '未授权或登陆超时,请重新登录'; break
 | 
						|
        case 403: message = error.response.data.ErrorMessage; break
 | 
						|
        case 404: message = `请求地址出错`; break
 | 
						|
        case 405: message = `接口参数传递错误,或者请求方法不一致`; break
 | 
						|
        case 408: message = '请求超时'; break
 | 
						|
        case 429: message = '应用服务限流,您的请求过于频繁,请稍后再试'; break
 | 
						|
        case 500: message = '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break
 | 
						|
        case 501: message = '服务未实现'; break
 | 
						|
        case 502: message = '系统正在升级,请耐心等待。'; break
 | 
						|
        case 503: message = '服务不可用'; break
 | 
						|
        case 504: message = '网关超时'; break
 | 
						|
        case 505: message = 'HTTP版本不受支持'; break
 | 
						|
        default: break
 | 
						|
      }
 | 
						|
      if (error.response.status === 401) {
 | 
						|
        if (store.getters.token) {
 | 
						|
          if(message !== ''){
 | 
						|
            Message({
 | 
						|
              message: message,
 | 
						|
              type: 'warning',
 | 
						|
              showClose: true
 | 
						|
            })
 | 
						|
          }
 | 
						|
          store.dispatch('user/logout').then(() => {
 | 
						|
            router.push(`/login`)
 | 
						|
          })
 | 
						|
        } else {
 | 
						|
          Message({
 | 
						|
            message: '您无权访问接口',
 | 
						|
            type: 'warning',
 | 
						|
            showClose: true
 | 
						|
          })
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        if(message !== ''){
 | 
						|
          MessageBox.confirm(message, '警告', {
 | 
						|
            type: 'warning',
 | 
						|
            showCancelButton: false,
 | 
						|
            confirmButtonText: '确定',
 | 
						|
            callback: action => {}
 | 
						|
          })
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return Promise.reject(new Error(message || 'Error'))
 | 
						|
  }
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
export default service
 |