import api from './request'; import { message, Spin } from 'antd' import ReactDOM from 'react-dom'; import '../common/common.less' const axios=require('axios'); //axios.defaults.baseURL = 'http://192.168.3.184:8871';//'http://192.168.2.237:8871/'; // 当前正在请求的数量 let requestCount = 0 // 显示loading function showLoading () { if (requestCount === 0) { var dom = document.createElement('div') dom.setAttribute('id', 'loading') document.body.appendChild(dom) ReactDOM.render(, dom) } requestCount++ } // 隐藏loading function hideLoading () { requestCount-- if (requestCount === 0) { document.body.removeChild(document.getElementById('loading')) } } const post=(url,data)=>{ return axios({ method:'post', url:url, data }); }; // 表单 form封装接口 const xPost=(url,data)=>{ let param = new URLSearchParams(); for(let i in data){ param.append(i,data[i]); } return axios({ method:'post', contentType:'application/x-www-form-urlencoded', url:url, data:param }); }; // 导出 const expJson = (url,data) =>{ return axios({ method:'post', url, data, contentType: "application/vnd.ms-excel;charset=UTF-8" , responseType: 'blob' //必须添加,否则会乱码 }); } const get=(url,data)=>{ return axios({ method:'get', url:url, data }); }; function interceptors(){ //拦截所有请求添加token axios.interceptors.request.use(function (req) { const tokenStr = localStorage.getItem('token'); const sysId = localStorage.getItem('systemId'); const hisId = localStorage.getItem('hospitalId'); if (tokenStr && req.headers.isLoading !== false) { (req.headers.Authorization = `Bearer ${tokenStr}`); sysId&&(req.headers.softwareId=sysId); hisId&&(req.headers.hospitalId=hisId); showLoading() return req; } else { showLoading() return req; } }, function (error) { if(error.config.headers.isLoading !== false){ hideLoading() } return Promise.reject(error); }); //拦截响应 axios.interceptors.response.use(function (res) { const code = res.data.code; if (code===401 || code === 403 && res.config.headers.isLoading !== false) { //401/403返回登录 localStorage.removeItem("token"); localStorage.removeItem("systemId"); localStorage.removeItem("hospitalId"); message.error("登录信息失效,请重新登录"); window.location = '/'; hideLoading() }else{ hideLoading() return res; } }, function (error) { if(error.config.headers.isLoading !== false){ hideLoading() } return Promise.reject(error); }); } const obj = { post, xPost, get, api, interceptors }; export default obj;