import axios from 'axios' import qs from 'qs' // import store from '../store' import commonUtils from '../utils/Common' //base url // http://mf.kiisoo.com:58080/ // axios.defaults.baseURL = 'https://wxtk.bsdits.com/kiisoo-ic/'; axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? '/kiisoo-ic' : '/kiisoo-ic' //响应时间 axios.defaults.timeout = 120000 axios.defaults.withCredentials = true //配置请求头 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' /** * POST传参序列化(添加请求拦截器) */ axios.interceptors.request.use( (config) => { config.headers['X-Requested-With'] = 'XMLHttpRequest' config.headers['Content-Type'] = 'application/json;charset=UTF-8;' // config.headers['Authorization'] = sessionStorage.getItem("sessionId"); //在发送请求之前做某件事 if (config.method === 'post') { console.log(config) if (config.data.isGetActivityInfo === true) { config.headers['Content-Type'] = 'application/json;charset=UTF-8;' } else if ( Object.prototype.toString.call(config.data) === '[object FormData]' ) { config.headers['Content-Type'] = 'multipart/form-data' } else { config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' var str = qs.stringify(config.data) config.data = str } } return config }, (error) => { // console.log('错误的传参') return Promise.reject(error) } ) /** * 返回状态判断(添加响应拦截器) */ axios.interceptors.response.use( (res) => { let data = res.data.results if (res.data.code === '9999' || sessionStorage.getItem('logout')) { // iView.Message.error('会话超时,请重新登录'); // store.commit('LOGOUT'); commonUtils.goToLogin() return Promise.resolve(res) } //对响应数据做些事 if (!data) { return Promise.resolve(res) } if (data.code === '1001') { // iView.Message.error("账号不存在"); return Promise.resolve(res) } if (data.code === '1002') { // iView.Message.error("账号已停用"); return Promise.resolve(res) } if (data.code === '1003') { // iView.Message.error("密码错误"); return Promise.resolve(res) } if (data.code === '1004') { // iView.Message.error("账号已注销"); return Promise.resolve(res) } if (data.code === '1005') { // iView.Message.error("账号未绑定品牌"); return Promise.resolve(res) } if (data.code === '1006') { // iView.Message.error("账号未绑定店铺"); return Promise.resolve(res) } if (data.code === '1007') { // iView.Message.error("账号无权限"); return Promise.resolve(res) } if (data.code === '1009') { // iView.Message.error("账号已过时"); return Promise.resolve(res) } if (data.code === '0001') { // this.$Message.error("系统繁忙,请重试"); return Promise.resolve(res) } if (data.code !== '0000') { // this.$Message.error(data.errorMsg); return Promise.resolve(res) } return res }, (error) => { // iView.Message.error('网络异常'); return Promise.reject(error) } ) /** * 返回一个Promise(发送get请求) * @param url * @param param * @returns {Promise} */ export function get(url, param) { return new Promise((resolve, reject) => { // iView.LoadingBar.start(); axios .get(url, { params: param }) .then( (response) => { // iView.LoadingBar.finish(); resolve(response) }, (err) => { // iView.LoadingBar.finish(); reject(err) } ) .catch((error) => { // iView.LoadingBar.finish(); reject(error) }) }) } /** * 返回一个Promise(发送post请求) * @param url * @param params * @returns {Promise} */ export function post(url, params) { return new Promise((resolve, reject) => { // iView.LoadingBar.start(); axios .post(url, params) .then( (response) => { // iView.LoadingBar.finish(); resolve(response) }, (err) => { // iView.LoadingBar.finish(); reject(err) } ) .catch((error) => { // iView.LoadingBar.finish(); reject(error) }) }) } export function put(url, params) { return new Promise((resolve, reject) => { // iView.LoadingBar.start(); axios .put(url, params) .then( (response) => { // iView.LoadingBar.finish(); resolve(response) }, (err) => { // iView.LoadingBar.finish(); reject(err) } ) .catch((error) => { // iView.LoadingBar.finish(); reject(error) }) }) } export function fetchDelete(url, params) { return new Promise((resolve, reject) => { // iView.LoadingBar.start(); axios .delete(url, params) .then( (response) => { // iView.LoadingBar.finish(); resolve(response) }, (err) => { // iView.LoadingBar.finish(); reject(err) } ) .catch((error) => { // iView.LoadingBar.finish(); reject(error) }) }) } export function downloadZip(url, filename, options = {}) { return new Promise((resolve, reject) => { axios.defaults.headers['content-type'] = 'application/json;charset=UTF-8' axios({ method: 'post', url: url, // 请求地址 data: options, // 参数 responseType: 'blob', // 表明返回服务器返回的数据类型 }).then( (response) => { resolve(response.data) let blob = new Blob([response.data], { type: 'application/zip', }) console.log(blob) let fileName = filename + '.zip' if (window.navigator.msSaveOrOpenBlob) { // console.log(2) navigator.msSaveBlob(blob, fileName) } else { // console.log(3) var link = document.createElement('a') link.href = window.URL.createObjectURL(blob) link.download = fileName link.click() //释放内存 window.URL.revokeObjectURL(link.href) } }, (err) => { reject(err) } ) }) } export function downloadExcel(url, filename, options = {}) { let split = filename.split(',') if (split.length != 1) { filename = '店铺发起申请数报表' } else { filename = '零售公司拓客报表' } return new Promise((resolve, reject) => { axios.defaults.headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8' axios({ method: 'post', url: url, // 请求地址 data: options, // 参数 responseType: 'blob', // 表明返回服务器返回的数据类型 }).then( (response) => { resolve(response.data) let blob = new Blob([response.data], { type: 'application/vnd.ms-excel', }) console.log(blob) let fileName = filename + '.xls' if (window.navigator.msSaveOrOpenBlob) { // console.log(2) navigator.msSaveBlob(blob, fileName) } else { // console.log(3) var link = document.createElement('a') link.href = window.URL.createObjectURL(blob) link.download = fileName link.click() //释放内存 window.URL.revokeObjectURL(link.href) } }, (err) => { reject(err) } ) }) } export function downloadImg(url, filename, options = {}) { return new Promise((resolve, reject) => { axios.defaults.headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8' axios({ method: 'post', url: url, // 请求地址 data: options, // 参数 responseType: 'blob', // 表明返回服务器返回的数据类型 }).then( (response) => { resolve(response.data) let blob = new Blob([response.data], { type: 'application/png', }) console.log(blob) let fileName = filename + '.png' if (window.navigator.msSaveOrOpenBlob) { // console.log(2) navigator.msSaveBlob(blob, fileName) } else { // console.log(3) var link = document.createElement('a') link.href = window.URL.createObjectURL(blob) link.download = fileName link.click() //释放内存 window.URL.revokeObjectURL(link.href) } }, (err) => { reject(err) } ) }) } export function downloadFileToExcel(url, filename, options) { return new Promise((resolve, reject) => { axios.defaults.headers['content-type'] = 'application/json' axios.get(url, { params: options, responseType: 'blob' }).then( (response) => { resolve({ success: true }) let blob = new Blob([response.data], { type: 'application/vnd.ms-excel', }) console.log(blob) let fileName = filename + '.xls' if (window.navigator.msSaveOrOpenBlob) { // console.log(2) navigator.msSaveBlob(blob, fileName) } else { // console.log(3) var link = document.createElement('a') link.href = window.URL.createObjectURL(blob) link.download = fileName link.click() //释放内存 window.URL.revokeObjectURL(link.href) } }, (err) => { reject(err) } ) }) } export function getBaseUrl() { return axios.defaults.baseURL } export default { get, post, downloadZip, downloadExcel, downloadImg, put, fetchDelete, getBaseUrl, downloadFileToExcel, }