import axios from 'axios'
import qs from 'qs'
import {Message} from 'element-ui'
let Promise = require('promise')
// 请求成功,返回的状态码不是200时调用
const statusError = (err) => {
Message({
showClose: true,
message: '错误:' + err.msg,
type: 'error'
})
}
// 网络出错时调用
const requestError = (err) => {
let errorText = ''
if (err.response && err.response.status) {
errorText = '请求错误:' + err.response.status + ',' + err.response.statusText
}
if (/Error/.test(err)) {
console.log(21, err)
errorText = '请求超时'
}
Message({
showClose: true,
message: errorText,
type: 'error'
})
}
axios.defaults.timeout = 30 * 1000
axios.defaults.withCredentials = true
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
axios.defaults.baseURL = process.env.NODE_ENV !== 'production' ? 'http://bestsign.test.com' : `${window.location.protocol}//${window.location.host}`
axios.interceptors.request.use((config) => {
if (config.data && config.data.isValidateRequest) {
axios.isValidateRequest = config.data.isValidateRequest
} else {
axios.isValidateRequest = null
}
if (config.method === 'post') {
config.data = qs.stringify(config.data)
}
return config
}, (err) => {
return Promise.reject(err)
})
axios.interceptors.response.use((rs) => {
if (rs.data.code !== 200 && rs.data.code !== '200') {
if (axios.isValidateRequest !== true && rs.data.code !== '401') {
statusError(rs.data)
}
return Promise.reject(rs)
}
return rs
}, (err) => {
requestError(err)
// return Promise.reject(err)
})
export default function (options) {
if (!options) {
return
}
let config = {
url: options.url,
method: options.method
}
if (options.method === 'get') {
config.params = options.data
}
if (options.method === 'post') {
config.data = options.data
}
return new Promise((resolve, reject) => {
axios(config).then((rs) => {
resolve(rs.data)
}, (err) => {
reject(err)
}).catch((err) => {
reject(err)
})
})
}