1234567891011121314151617181920212223242526272829303132333435 |
- /**
- * 全局loading效果:合并多次loading请求,避免重复请求
- * 当调用一次showLoading,则次数+1;当次数为0时,则显示loading
- * 当调用一次hideLoading,则次数-1; 当次数为0时,则结束loading
- */
- import { ElLoading } from "element-plus";
- // 定义一个请求次数的变量,用来记录当前页面总共请求的次数
- let loadingRequestCount = 0;
- // 初始化loading
- let loadingInstance: any;
- // 编写一个显示loading的函数 并且记录请求次数 ++
- const showLoading = (target?: any | null) => {
- if (loadingRequestCount === 0) {
- // element的服务方式 target 我这边取的是表格class
- // 类似整个表格loading和在表格配置v-loading一样的效果,这么做是全局实现了,不用每个页面单独去v-loading
- const params = Object.assign({lock: true,
- text: '加载中...',
- background: 'rgba(0, 0, 0, 0.7)'}, target);
- loadingInstance = ElLoading.service({ ...params });
- }
- loadingRequestCount++;
- };
- // 编写一个隐藏loading的函数,并且记录请求次数 --
- const hideLoading = () => {
- if (loadingRequestCount <= 0) return;
- loadingRequestCount--;
- if (loadingRequestCount === 0) {
- loadingInstance.close();
- }
- };
- export { showLoading, hideLoading };
|