import axios from 'axios'
import Qs from 'qs'
import { Message, Loading } from 'element-ui'
// axios.defaults.baseURL = 'http://xx.xxx.xx.xxx:8082/' //伺服器域名
axios.defaults.baseURL = window.CONFIG.baseUrl;
axios.defaults.timeout = '10000' //請求逾時時間
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;multipart/form-data'
axios.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded'
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'
/**
* request interceptor 請求攔截(請求發出前處理請求)
*/
axios.interceptors.request.use(
config => {
return config
},
error => {
return Promise.reject(error)
}
)
/**
* response interceptor 響應攔截器(處理響應資料)
*/
axios.interceptors.response.use(
response => {
const res = response.data
if (res.state || res.state === 200 || res.code === 200 || res.code === '0000' || res.returnCode === '0000' || res.code === 10000) {
return res
} else {
Message({
message: res.description || 'error',
type: 'error',
duration: 5 * 1000
})
return Promise.reject(res)
}
},
error => {
Message({
message: error.msg,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
},
error => {
Message({
message: error.msg,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
/**
* api請求方法
*
* @param {String} method 請求方法
* @param {String} url 接口
* @param {Object} params 送出資料
*/
const apiRequest = (method, url, params) => {
const loading = Loading.service ({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
return new Promise((resolve, reject) => {
axios({
method: method,
url: url,
data: method !== 'get' ? Qs.stringify(params) : null,
params: method === 'get' ? params : null
}).then(res => {
resolve(res)
loading.close()
}).catch(err => {
reject(err)
loading.close()
})
})
}
export default apiRequest;