requestSjkg.js 2.33 KB
Newer Older
1
import axiosSJKG from 'axios'
2
import store from '../store'
潘琦 committed
3
import { Toast } from 'mint-ui'
4 5 6
import baseUrl from '@/util/baseUrl'
// import router from '@/router/index'
import { removeUrlParam } from '@/util/index'
潘琦 committed
7

8 9 10 11 12 13
// 创建axios实例
const service = axiosSJKG.create({
  baseURL: baseUrl.sjkgUrl,
  timeout: 30000 // 请求超时时间
})

潘琦 committed
14
// 返回其他状态吗
15
service.defaults.validateStatus = function (status) {
潘琦 committed
16 17 18
  return status // 默认的
}
// 跨域请求,允许保存cookie
19
// axiosSJKG.defaults.withCredentials = true
潘琦 committed
20
// request拦截器
21
service.interceptors.request.use(config => {
22
  let token = store.getters.access_token
潘琦 committed
23
  if (token) {
24
    // config.headers['Authorization'] = 'Bearer ' + token
潘琦 committed
25 26 27 28 29 30 31 32 33
  }
  return config
}, error => {
  // Do something with request error
  console.log(error) // for debug
  Promise.reject(error)
})

// respone拦截器
34
service.interceptors.response.use(response => {
35
  const res = response.data && (response.data.code === 0 || response.data.code === 200) ? response.data : response
潘琦 committed
36
  const status = Number(response.status) || 200
37
  console.log('response status:' + status)
潘琦 committed
38 39 40 41 42 43 44
  if (status !== 200) {
    if (status === 401) {
      Toast({
        message: '您因长时间逗留,验证已过期,正在刷新!',
        position: 'center',
        duration: 5 * 1000
      })
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
      store.dispatch('setToken', '')
      store.dispatch('setUserId', '')
      store.dispatch('setCode', '')
      setTimeout(function () {
        window.location.href = removeUrlParam('code')
      }, 4 * 1000)
    } else if (status === 403) {
      if (res.msg === '请先进行实名认证') { // 跳转至社区推荐页
        Toast({
          message: '您还未实名认证,进入实名认证页面中...',
          position: 'center',
          duration: 5 * 1000
        })
        setTimeout(() => {
          // router.push({
          //   path: '/recommend'
          // })
62
          window.location.href = 'http://' + location.host + '/recommend/list'
63 64
        }, 4 * 1000)
      }
潘琦 committed
65 66 67
    } else {
      return Promise.reject(new Error(res.msg))
    }
68 69 70 71 72
  } else if (res.code === 1) {
    if (!res.msg) {
      res.msg = '内部服务器错误[500]'
    }
    return Promise.reject(new Error(res.msg))
潘琦 committed
73 74 75 76 77 78 79 80
  }

  return res
}, error => {
  console.log('错误' + error)// for debug
  return Promise.reject(new Error(error))
})

81
export default service