Files
SPDM/src/api/request.ts

105 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from 'axios';
import { ElMessage } from 'element-plus';
const env = import.meta.env;
const w: any = window;
const $wujie: any = w.$wujie;
const service = axios.create({
baseURL: env.VITE_API_BASE_URL,
timeout: 60000,
headers: {
'Content-Type': 'application/json;application/xml;charset=utf-8;',
},
});
service.interceptors.request.use(
(config) => {
config.headers['company'] = 'carsafe';
config.headers['jobNumber'] = $wujie?.props?.USER_ID || '1980235559149838337';
config.headers['token'] = $wujie?.props?.TOKEN || '';
config.headers['userId'] = $wujie?.props?.USER_ID || '1980235559149838337';
config.headers['tenantId'] = $wujie?.props?.TENANT_ID || '1979091834410176514';
return config;
},
(error) => {
return Promise.reject(error);
}
);
service.interceptors.response.use(
(res) => {
// 判断响应类型,如果是 blob返回完整响应对象
if (res.config.responseType === 'blob') {
return res;
}
// 普通接口返回原来的 res.data
if (res.data.code !== 200) {
ElMessage.error(res.data.message);
}
return res.data;
},
(error) => {
ElMessage.error('系统繁忙,请稍后再试');
return Promise.reject(error);
}
);
const get = (url: string, params = {}) => {
return service.get(url, { params });
};
const post = (url: string, data = {}) => {
return service.post(url, data);
};
const upload = (url: string, formData = {}, onProgress?: any) => {
return service.post(url, formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
onUploadProgress: (event: any) => {
if (onProgress) {
onProgress({
loaded: event.loaded,
total: event.total,
});
}
},
});
};
const download = (url: string, params = {}, filename = 'download') => {
return service
.post(url, params, {
responseType: 'blob',
})
.then((res: any) => {
// 从响应头获取文件名
const contentDisposition = res.headers?.['content-disposition'] || '';
let fileName = filename;
const match = contentDisposition.match(/filename\*?=(?:UTF-8'')?["']?([^;"']+)/i);
if (match && match[1]) {
fileName = decodeURIComponent(match[1]);
}
const blob = new Blob([res.data]);
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(link.href);
})
.catch(() => {
ElMessage.error('下载失败');
});
};
export {
get,
post,
upload,
download,
};