12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import axios from 'axios'
- import qs from 'qs'
- import router from '../router'
- import { Message } from 'element-ui'
-
- const token = function (headers) {
- let JWT
- if (headers) {
- localStorage.setItem('JWT', headers.authorization)
- JWT = headers.authorization
- }
- return JWT ? JWT : localStorage.getItem('JWT') // eslint-disable-line
- }
-
- const Axios = axios.create({
- timeout: 60000,
- responseType: 'json',
- withCredentials: true,
- queryData: {},
- urlData: {},
- headers: {
- 'Content-Type': 'multipart/form-data',
- 'authorization': token()
- }
- })
-
- Axios.interceptors.request.use((config) => {
- config.headers.authorization = token()
- config.urlData = { ...config.urlData, org: 'MQ' }
- // 处理请求data,若为get请求,拼到url后面,若为post请求,直接添加到body中
- let urlData = qs.stringify(config.urlData)
- let queryData = qs.stringify(config.queryData)
- // 判断是通过斜杠传参
- if (config.url.indexOf(':') > -1) {
- if (typeof config.urlData === 'object') {
- config.url = Object.keys(config.urlData).reduce((url, k) => { // 此方法对每个元素进行处理
- const re = new RegExp(`:${k}(?!w)`, 'i')
- return url.replace(re, config.urlData[k])
- }, config.url)
- } else {
- config.url = config.url.slice(0, config.url.indexOf(':')) + urlData
- }
- }
- if (queryData) {
- config.url += '?' + queryData
- }
- let fm = new FormData()
- for (let k in config.data) {
- if (Array.isArray(config.data[k])) {
- config.data[k].forEach((v) => {
- fm.append(k, v)
- })
- } else {
- fm.append(k, config.data[k])
- }
- }
- config.data = fm
- return config
- }, (error) => {
- console.log(error)
- })
-
- const ajax = (...args) => {
- return new Promise((resolve, reject) => {
- Axios(...args).then(({ data, headers }) => {
- if (headers.authorization) {
- token(headers)
- }
- const { code, message, result } = data
- if (code === 200) {
- resolve(result)
- } else if (code === 401) {
- router.push({ name: 'login' })
- } else {
- Message({
- message: message,
- type: 'error'
- })
- reject(data)
- }
- }).catch(reject)
- })
- }
-
- export default ajax
|