Blame view

wenjuan/src/utils/request.js 2.99 KB
e5b57447   杨鑫   '分包问卷'
1
2
3
4
5
6
7
8
9
10
11
  import Vue from 'vue'
  import axios from 'axios'
  import {
    MessageBox,
    Message
  } from 'element-ui'
  import store from '@/store'
  import router from '@/router'
  import {
    getToken, removeToken
  } from '@/utils/auth'
204490ca   “wangming”   1
12
  
82b7d84f   杨鑫   'z问卷'
13
  const baseURL = process.env.VUE_APP_DOMAIN_PREFIX_1;
e5b57447   杨鑫   '分包问卷'
14
15
16
  // const baseURL = process.env.VUE_APP_DOMAIN_PREFIX
  // create an axios instance
  Vue.prototype.axios = axios
ba37c587   杨鑫   '最新版本'
17
  axios.defaults.timeout = 1000000
e5b57447   杨鑫   '分包问卷'
18
  const service = axios.create({
bc51a62b   杨鑫   '最新'
19
20
    // baseURL:'/cdwlMall/meserver/admin-server/', // url = base url + request url
    baseURL, // url = base url + request url
e5b57447   杨鑫   '分包问卷'
21
    // withCredentials: true, // send cookies when cross-domain requests
ba37c587   杨鑫   '最新版本'
22
    timeout: 1000000 // request timeout
e5b57447   杨鑫   '分包问卷'
23
  })
156fa163   杨鑫   'z'
24
  // export const upurl = baseURL
01825d97   杨鑫   '问卷'
25
  export const uploadUrl = `${baseURL}/miniio/upload`
e5b57447   杨鑫   '分包问卷'
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  export const token = getToken()
  
  // request interceptor
  service.interceptors.request.use(
    config => {
      // console.log(config)
      if (store.getters.token) {
        config.headers['Authorization-admin'] = getToken()
        config.headers['Content-Type'] = 'application/json; charset=UTF-8'
        // config.headers['type'] = ' admin'
      }
      return config
    },
    error => {
      console.log(error) // for debug
      return Promise.reject(error)
    }
  )
  
  // response interceptor
  service.interceptors.response.use(
    response => {
      const res = response.data
      if (response.config.responseType === 'blob') {
        return response.data
      }
82b7d84f   杨鑫   'z问卷'
52
      if (res.code !== '' && res.code !== 200) {
e5b57447   杨鑫   '分包问卷'
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
        Message({
          message: res.message || 'Error',
          type: 'error',
          duration: 5 * 1000
        })
  
        // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
        /**
          token为空 20003
          public static final String TOKEN_IS_NULL = "20003";
          token认证失败
          public static final String TOKEN_APPROVE_ERROR = "20004";
          请先登录
          public static final String USER_NOT_LOGIN = "20005";
         */
        const tokenerr = [20003, '20003', 20004, '20004', 20005, '20005']
        if (tokenerr.includes(res.code)) {
          localStorage.clear()
          removeToken()
          router.push({ path: '/login' })
          location.reload()
        }
        if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
          // to re-login
          MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
            confirmButtonText: 'Re-Login',
            cancelButtonText: 'Cancel',
            type: 'warning'
          }).then(() => {
            store.dispatch('user/resetToken').then(() => {
              location.reload()
            })
          })
        }
        return Promise.reject(new Error(res.message || 'Error'))
      } else {
        return res
      }
    },
    // error => {
    //   if (!error.message.includes('timeout')) {
    //     // Message({
    //     //   message: '服务器暂无响应,请稍后重试',
    //     //   type: 'error',
    //     //   duration: 5 * 1000
    //     // })
    //   }
    //   return Promise.reject(error)
    // }
  )
  
  export default service