gaosp
2024-01-05 ea911d3b42cac8948eb6f1285c7ad46706707643
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
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
/*
 * @Date: 2022-11-09 12:37:25
 * @LastEditors: Sneed
 * @LastEditTime: 2024-01-05 23:08:20
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/mdc/src/utils/ajax.js
 */
import axios from 'axios'
import { Message } from 'element-ui'
import store from '../store'
import { getToken, setToken } from '@/utils/auth'
import qs from 'qs'
const URL_CFG = {
  BASE_URL: '',
  WEB_SOCKET_URL: ''
}
 
// 创建axios实例
const service = axios.create({
  // baseURL: process.env.BASE_API, // api的base_url
  timeout: 3000 // 请求超时时间
})
 
// request拦截器
service.interceptors.request.use(config => {
  config.url = `${URL_CFG.BASE_URL}${config.url}`
  if (store.getters.token) {
    config.headers['mdc-token'] = getToken().value // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  config.transformRequest = [function(data) {
    return qs.stringify(data)
  }]
  return config
}, error => {
  // Do something with request error
  // console.log(error) // for debug
  Promise.reject(error)
})
// respone拦截器
service.interceptors.response.use(
  response => {
    // 更新token有效时间与服务端同步
    setToken(getToken().value)
    /**
     * status为非200时抛错 可结合自己业务进行修改
     */
    const status = response.status
    if (status !== 200) {
      Message({
        message: '服务连接异常,请稍后重试或联系管理员',
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject('error')
    } else {
      // const data = response.data || {}
      // if (data.errCode === '402' || data.errCode === '401') {
      //   store.dispatch('LogOut').then(() => {
      //     Message({
      //       message: '由于您长时间没有操作,需重新登录!',
      //       type: 'error',
      //       duration: 2 * 1000
      //     })
      //   })
      //   setTimeout(() => {
      //     location.reload() // 为了重新实例化vue-router对象 避免bug
      //   }, 2000)
      // } else {
      //   return response.data
      // }
      return response.data
    }
  },
  error => {
    // console.log('err' + error)// for debug
    Message({
      message: '服务连接异常,请稍后重试或联系管理员',
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)
export default {
  URL_CFG,
  // post请求
  post: function(url, params) {
    return service({
      url: url,
      method: 'post',
      data: params
    })
  },
  // get请求
  get: function(url, params) {
    return service({
      url: url,
      method: 'get',
      params: params
    })
  }
}