base.json
{
"getUserInfo":{
"url":"/rd-service/rest/v1/excel/getUserInfo",
"method":"post",
"desc":"索取用户权限"
}
}
index.js
import axios from 'axios'
import { ElMessage } from 'element-plus'
import Qs from 'qs'
import BaseApi from './base.json';
//请求取消
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
export const isCredPlat = () => true;
export const platform = 'credible'
//实例化
const url = import.meta.env.VITE_APP_HOST
const instance = axios.create(
{
baseUrl: url,
timeout: 100000,// 超时
withCredentials: true,
cancelToken: source.token,
// paramsSerializer: function (params) {
// return Qs.stringify(params, {
// arrayFormat: 'brackets'
// });
// }
});
//请求拦截
instance.interceptors.request.use((config) => {
if (config.option && config.option.mock) {
config.baseURL = process.env.VUE_APP_BASE_API;
}
config.headers.currenturl = window.location.href;
return config;
});
// 响应拦截
instance.interceptors.response.use(
(response) => {
const { data, status, statusText } = response;
let dataCode = data.code || data.status
let message = data.msg || data.message
if (status !== 200) {
ElMessage({
title: '网络错误',
type: 'error',
message: statusText
});
return Promise.reject(new Error(data.data));
} else if (dataCode !== undefined && (dataCode !== '200' || dataCode === 'error')) {
//未登录
if (dataCode == 401) {
window.location.href = data.data.redireactUrl;
} else {
ElMessage({
title: '错误提示',
type: 'error',
message
});
}
return Promise.reject(new Error(data.data));
} else {
return Promise.resolve(data.data);
}
}, //请求失败
(error) => {
const { response } = error;
if (response) {
// 请求已发出,但是不在2xx范围
ElMessage({
title: '错误提示',
type: 'error',
message: '服务器错误,请稍后再试~'
});
} else {
ElMessage({
title: '错误提示',
type: 'error',
message: '网络错误,请检查网络~'
});
}
return Promise.reject(new Error());
}
);
export default instance;
export const fileHttp = axios.create(
{
responseType:'blob',
timeout:3000,//超时
withCredentials:true,
cancelToken:source.token//取消请求
}
)
fileHttp.interceptiors.request.use(config=>
return config;
)
const AllApis = { ...BaseApi }
export const requestApi = function (apiName, apiParams = null, config = {}) {
if (typeof apiName === 'string' && AllApis[apiName]) {
let apiParameters = {};
const api = AllApis[apiName]
if (apiParams !== null) {
let method = api.method.toLowerCase();
if (method === 'get' || method === 'delete') {
apiParameters.params = apiParams
} else {
apiParameters.data = apiParams
}
}
return instance.request({
...api,
...apiParameters,
...config
});
} else if (typeof apiName == 'object') {
return instance.request(apiName);
} else {
return null
}
}
// instance.requestApi = requestApi
//使用
import {requestApi} from '@/http/index'
const getA =()=>{
requestApi('aa',params).then(res=>
});
}
//文件下载
requestApi('download',request,{responseType:'blob',timeout:200000})
.then((data) =>
{
const blob = new Blob([data.data]);
blob.text().then((result => {
try {
const jsonData= JSON.parsr(result);
if(jsonData.code =='500'){
console.log('下载错误')
}
}catch (err) => {
if(type== 'excel'){
fileName = window.decodeURI(
data.headers['content-dusposition'].split('=')[1],'UTF-8')
)
}else{
fileName ='xxx' +'.zip'
}
commonFunction.downloadFile(data.data,fileName);
}
}
downloadFile(resp , fileName) {
let data = resp
let url = window.URL.createObjectURL(new Blob([data]));
let link = document.createElement('a')
link.style.display = 'none'
link.href= url
// 文件名在后端设置
link.setAttribute('download',fileName);
documenr.body.appendChild(link);
link.click();
}







网友评论