173 lines
4.3 KiB
JavaScript
173 lines
4.3 KiB
JavaScript
import axios from 'axios'
|
||
import { storageKey } from '@/utils/constants'
|
||
import store from '@/store'
|
||
|
||
const CancelToken = axios.CancelToken
|
||
|
||
axios.interceptors.request.use(config => {
|
||
const token = localStorage.getItem(storageKey.token)
|
||
|
||
// 添加http请求终止方法
|
||
const arr = []
|
||
const cancelToken = new CancelToken(function executor (c) {
|
||
arr.push(c)
|
||
store.commit('setHttpCancel', arr)
|
||
})
|
||
|
||
config.cancelToken = cancelToken
|
||
if (token) {
|
||
config.headers['Cn-Authorization'] = token // 请求头token
|
||
}
|
||
return config
|
||
},
|
||
err => Promise.reject(err)
|
||
)
|
||
const accountErrorCode = [518003, 518004, 518005, 518006, 518007, 518008] // 账号锁定等
|
||
const licenceErrorCode = [711001]
|
||
|
||
// 若get请求的url中带问号,则将url上的参数截取,改为对象形式传参
|
||
axios.interceptors.request.use(
|
||
config => {
|
||
if (config.method === 'get') {
|
||
const url = config.url
|
||
const index = url.indexOf('?')
|
||
if (index > -1) {
|
||
const pre = url.substring(0, index)
|
||
const suf = url.substring(index + 1, url.length)
|
||
const paramsArr = suf.split('&')
|
||
const params = {}
|
||
paramsArr.forEach(p => {
|
||
const i = p.indexOf('=')
|
||
if (i > -1) {
|
||
params[p.substring(0, i)] = p.substring(i + 1, p.length)
|
||
} else {
|
||
params[p] = ''
|
||
}
|
||
})
|
||
config = { ...config, url: pre, params: params }
|
||
}
|
||
}
|
||
return config
|
||
}
|
||
)
|
||
axios.interceptors.response.use(
|
||
response => {
|
||
if (licenceErrorCode.indexOf(response.data.code) !== -1) {
|
||
localStorage.removeItem(storageKey.token)
|
||
window.location.href = '/'
|
||
} else if (response.status === 200) {
|
||
if (accountErrorCode.indexOf(response.data.code) !== -1) {
|
||
localStorage.removeItem(storageKey.token)
|
||
window.location.href = '/'
|
||
}
|
||
}
|
||
return response
|
||
},
|
||
error => {
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
export function getForDebug (url, params) {
|
||
return new Promise((resolve) => {
|
||
axios.get(url, {
|
||
params: params
|
||
}).then(response => {
|
||
resolve(response)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
export function postForDebug (url, params, headers) {
|
||
return new Promise(resolve => {
|
||
axios.post(url, params, { headers: headers }).then(response => {
|
||
resolve(response, response)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
export function get (url, params) {
|
||
return new Promise((resolve) => {
|
||
axios.get(url, {
|
||
params: params
|
||
}).then(response => {
|
||
resolve(response.data)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response.data)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
export function post (url, params, headers) {
|
||
return new Promise(resolve => {
|
||
axios.post(url, params, { headers: headers }).then(response => {
|
||
resolve(response.data, response)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response.data)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
export function put (url, params, headers) {
|
||
return new Promise((resolve) => {
|
||
axios.put(url, params, { headers: headers }).then(response => {
|
||
resolve(response.data, response)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response.data)
|
||
console.error(err)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
export function patch (url, params, headers) {
|
||
return new Promise((resolve) => {
|
||
axios.patch(url, params, { headers: headers }).then(response => {
|
||
resolve(response.data, response)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response.data)
|
||
console.error(err)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
export function del (url, params) {
|
||
return new Promise((resolve) => {
|
||
axios.delete(url, params).then(response => {
|
||
resolve(response.data, response)
|
||
}).catch(err => {
|
||
if (err.response) {
|
||
resolve(err.response.data)
|
||
} else if (err.message) {
|
||
resolve(err.message)
|
||
}
|
||
})
|
||
})
|
||
}
|