import axios from 'axios' import vue from 'vue' const request = function (loadtip, query) { let loading if (loadtip) { loading = vue.prototype.$loading({ lock: false, text: '正在加载中…', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.5)' }) } return axios.request(query) .then(res => { if (loadtip) { loading.close() } if (res.data.code === 401) { vue.prototype.$$router.push({ path: '/login' }) return Promise.reject(res.data) } else if (res.data.code === 500) { return Promise.reject(res.data) } else if (res.data.code === 501) { return Promise.reject(res.data) } else if (res.data.code === 502) { vue.prototype.$$router.push({ path: '/login' }) return Promise.reject(res.data) } else { return Promise.resolve(res.data) } }) .catch(e => { if (loadtip) { loading.close() } vue.prototype.$message.error(e.message) return Promise.reject(e.message) }) } const post = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'post', withCredentials: true, timeout: 30000, data: params, headers: { 'Content-Type': 'application/json', 'request-ajax': true } } return request(false, query) } const postWithLoadTip = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'post', withCredentials: true, timeout: 30000, data: params, headers: { 'Content-Type': 'application/json', 'request-ajax': true } } return request(true, query) } const postWithOutLoadTip = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'post', withCredentials: true, timeout: 30000, data: params, headers: { 'Content-Type': 'application/json', 'request-ajax': true } } return request(false, query) } const get = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'get', withCredentials: true, timeout: 30000, params: params, headers: { 'request-ajax': true } } return request(false, query) } const form = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'post', withCredentials: true, timeout: 30000, data: params, responseType: 'blob', // 关键 headers: { 'Content-Type': 'application/vnd.ms-excel' }// 类型修改为excel } return request(false, query) } const download = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'get', withCredentials: true, timeout: 300000, params: params, responseType: 'blob', // 关键 headers: { 'Content-Type': 'application/vnd.ms-excel' }// 类型修改为excel } return request(false, query) } const downloadPost = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'post', withCredentials: true, timeout: 300000, data: params, responseType: 'blob' // 关键 } return request(false, query) } export const down = function (url, params) { const query = { baseURL: process.env.VUE_APP_URL, url: url, method: 'get', withCredentials: true, timeout: 30000, data: params, headers: { responseType: 'blob', 'Content-Type': 'multipart/form-data', 'request-ajax': true } } return request(false, query) } export { post, postWithLoadTip, postWithOutLoadTip, get, form, download, downloadPost }