1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /**
- * Created by ebi on 2017/5/11.
- */
- import axios from './axios.js'
- import router from '../router'
- import { removeToken, getToken } from '../utils/auth'
- import { ElMessage } from 'element-plus'
- axios.defaults.baseURL = ''
- axios.interceptors.request.use(config => {
- config.headers.token = getToken()
- // 小程序里用m的页面
- config.headers.Platform = 'pc'
- if (getToken() === null || getToken() === undefined) {
- delete config.headers.token
- }
- return config
- }, err => {
- return Promise.reject(err)
- })
- // insurance 保险 502 503 504时兜底的
- function fetch (url = '', params = {}, method = 'get', contentType = 'form', header = {}, insurance, timeout = 15000) {
- contentType === 'form' && (contentType = 'application/x-www-form-urlencoded')
- contentType === 'json' && (contentType = 'application/json')
- contentType === 'file' && (contentType = 'multipart/form-data')
- const query = []
- for (const k in params) {
- query.push(k + '=' + params[k])
- }
- let qs = query.join('&')
- if (contentType === 'application/x-www-form-urlencoded' && query.length > 0) {
- url += (url.indexOf('?') < 0 ? '?' : '&') + qs
- }
- if (contentType !== 'application/x-www-form-urlencoded' && method !== 'get') {
- qs = params
- }
- return new Promise((resolve, reject) => {
- const requestParams = {
- timeout,
- method,
- url: '/api' + url,
- data: qs,
- headers: {
- 'Content-Type': contentType,
- ...header
- }
- }
- const success = (response) => {
- const {
- status,
- data = {},
- statusText
- } = response
- if (status >= 200 && status <= 401) {
- if (data.code === 401) { // 未登录c
- removeToken()
- router.push(`/?redirect=${encodeURIComponent(window.location.href)}`)
- reject(new Error('需要登录'))
- ElMessage.error('登录过期,请重新登录')
- return
- }
- resolve(data)
- } else if (status === 500) {
- resolve(data)
- router.push('/500')
- } else {
- resolve(data)
- ElMessage.success(status + '-' + statusText)
- }
- }
- axios(requestParams).then(success).catch((err) => {
- if (/502|503|504/.test(err.message) || (err + '').indexOf('timeout') > -1) {
- if (insurance) {
- resolve(insurance)
- return
- }
- let msg = '系统繁忙,正在为您排队中,请稍后再试'
- if (window.location.href.indexOf('/zu') > -1) {
- msg += ` ${err.message}`
- }
- ElMessage.error(msg)
- } else {
- resolve(err.data)
- // ElMessage.error(err.data.error_description ? err.data.error_description : '网络异常,请点击重试')
- }
- })
- })
- }
- export default fetch
|