/* * @LastEditors: Please set LastEditors * @LastEditTime: 2023-08-02 14:58:23 */ import axios from 'axios'; import UtilVar from "@/config/UtilVar"; import router from '@/router' let baseUrl = UtilVar.baseUrl const CancelToken = axios.CancelToken; export { baseUrl }; // axios.defaults.withCredentials = true; // 添加请求拦截器 axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 传token let token = localStorage.getItem("token"); config.headers.common['Content-Type'] = "application/json;charset=utf-8"; config.headers.common['token'] = token; //Authorization return config; }, function (error) { // 对请求错误做些什么 console.log(error) return Promise.reject(error); }); /** * @响应拦截 */ axios.interceptors.response.use(response => { if (response.status !== 200) { return Promise.reject(response) } /** * @code 登录过期 token验证失败 根据后端调 */ if (response.data.code == UtilVar.code) { // router.push("/login") } return response.data }, error => { console.error(error); let err = { success: false, msg: "未知异常,请联系管理员!" } return Promise.reject(err) }) let configs_ENC = { headers: { 'enc': UtilVar.ENC } } //处理是否加密数据 let isEncryptionParam = (params) => { return params } export const GET = async (url, params) => { try { params = isEncryptionParam(params) const data = await axios.get(`${baseUrl}${url}`, { params: params, headers: configs_ENC.headers }, configs_ENC); return data; } catch (error) { return error; } } //没有基地址 访问根目录下文件 export const GETNOBASE = async (url, params) => { try { const data = await axios.get(url, { params: params, }); return data; } catch (error) { return error; } } export const POST = async (url, params) => { try { params = isEncryptionParam(params) const data = await axios.post(`${baseUrl}${url}`, params, configs_ENC); return data; } catch (error) { return error; } } export const PUT = async (url, params) => { try { params = isEncryptionParam(params) const data = await axios.put(`${baseUrl}${url}`, params, configs_ENC); return data; } catch (error) { return error; } } export const DELETE = async (url, params) => { // console.log(params) try { params = isEncryptionParam(params) const data = await axios.delete(`${baseUrl}${url}`, { data: params, headers: configs_ENC.headers }, configs_ENC); return data; } catch (error) { return error; } } /** * @文件类型提交方法 */ let configs = { headers: { 'Content-Type': 'multipart/form-data' }, } export const FILESubmit = async (url, params, config) => { try { const data = await axios.post(`${baseUrl}${url}`, params, { ...configs, cancelToken: new CancelToken(function executor(c) { config.setCancel && config.setCancel(c) }), onUploadProgress: (e) => { if (e.total > 0) { e.percent = e.loaded / e.total * 100; } // console.log(config) config.onProgress && config.onProgress(e) }, }); return data; } catch (err) { return err; } } /** * 下载文档流 * @param {config.responseType} 下载文件流根据后端 配置 arraybuffer || blod */ export const FILE = async (config = {}, body, params) => { try { const data = await axios({ method: config.method || 'get', url: `${baseUrl}${config.url}`, data: body, params: params, responseType: config.responseType || 'blob', onDownloadProgress: (e) => { // console.log(e,e.currentTarget) // if (e.currentTarget.response.size > 0) { // e.percent = e.loaded / e.currentTarget.response.size * 100; // } // event.srcElement.getResponseHeader('content-length') config.onProgress && config.onProgress(e) }, }); return data; } catch (err) { return err; } }