root 2 роки тому
батько
коміт
ebe168b184
1 змінених файлів з 114 додано та 96 видалено
  1. 114 96
      src/api/fetch.js

+ 114 - 96
src/api/fetch.js

@@ -1,96 +1,114 @@
-/**
- * Created by ebi on 2017/5/11.
- */
-import axios from './axios.js'
-import router from '../router'
-import { getToken, removeToken } 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'
-  config.headers.type = 'web'
-  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 = {}, responseType = '', 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 && method === 'get') {
-    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,
-      responseType,
-      headers: {
-        'Content-Type': contentType,
-        ...header
-      }
-    }
-    const success = (response) => {
-      const {
-        status,
-        data = {},
-        statusText
-      } = response
-      if (status >= 200 && status <= 401) {
-        if (data.code === 401 || data.code === 400) { // 未登录
-          console.log(data)
-          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) => {
-      console.log(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
+/**
+ * Created by ebi on 2017/5/11.
+ */
+import axios from './axios.js'
+import router from '../router'
+import { getToken, removeToken } 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'
+    config.headers.type = 'web'
+    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 = {},
+  responseType = '',
+  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 &&
+    method === 'get'
+  ) {
+    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,
+      responseType,
+      headers: {
+        'Content-Type': contentType,
+        ...header
+      }
+    }
+    const success = response => {
+      const { status, data = {}, statusText } = response
+      if (status >= 200 && status <= 401) {
+        if (data.code === 401 || data.code === 400) {
+          // 未登录
+          console.log(data)
+          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 => {
+        console.log(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