Blame view

src/utils/request.js 2.44 KB
9b7e125f   monkeyhouyi   属地页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  import axios from "axios";
  import { getToken, removeToken } from "@/utils/auth";
  import { Notification, MessageBox, Message, Loading } from 'element-ui'
  import errorCode from '@/utils/errorCode'
  import { tansParams, blobValidate } from "@/utils/index";
  
  // 是否显示重新登录
  export let isRelogin = { show: false };
  
  axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
  
  const service = axios.create({
      // axios中请求配置有baseURL选项,表示请求URL公共部分
      baseURL: '/api',
      // 超时
      // timeout: 20000
  })
  
  //拦截器(请求,响应)
  //请求
  service.interceptors.request.use(config => {
      // 是否需要设置 token
      const isToken = (config.headers || {}).isToken === false
      // 是否需要防止数据重复提交
      // const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
      // 判断token
      if (getToken() && !isToken) {
          config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
      }
      // get请求映射params参数
      if (config.method === 'get' && config.params) {
          let url = config.url + '?' + tansParams(config.params);
          url = url.slice(0, -1);
          config.params = {};
          config.url = url;
      }
      return config;
  })
  //响应
  service.interceptors.response.use(res => {
      const code = res.data.code || 200;
      const msg = errorCode[code] || res.data.msg || errorCode['default']
  
      if (code === 401 || code == 600) {
          if (!isRelogin.show) {
              isRelogin.show = true;
              MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
                  isRelogin.show = false;
                  removeToken();
                  location.href = '#/login';
              }).catch(() => {
                  isRelogin.show = false;
              });
          }
      } else if (code === 500) {
          Message({ message: msg, type: 'error' })
          return Promise.reject(new Error(msg))
      } else if (code === 601) {
          Message({ message: msg, type: 'warning' })
          return Promise.reject('error')
      } else if (code !== 200) {
          Notification.error({ title: msg })
          return Promise.reject('error')
      } else {
          return res.data
      }
  }, err => {
      //失败
      return Promise.reject(err)
  })
  
  
  export default service;