You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bsdgy-front/src/services/CommonHttp.js

389 lines
9.8 KiB
JavaScript

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<any>}
*/
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<any>}
*/
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,
}