首页 > 其他分享 >element-ui全局添加加载遮罩层

element-ui全局添加加载遮罩层

时间:2023-11-21 17:13:43浏览次数:31  
标签:遮罩 code const res element ui error message else

创建loading.js文件

import {
  Loading
} from 'element-ui';

let loadingCount = 0;
let loading;
const startLoading = () => {
  loading = Loading.service({
    lock:false,
    spinner:'el-icon-loading',
    background:'rgba(0,0,0,.5)',
    text:'数据加载中,请稍后。。。'
  });
};

const endLoading = () => {
  loading.close();
};

export const showLoading = () => {
    startLoading();
};

export const hideLoading = () => {
    endLoading();
};

拦截器文件

import axios from "axios"
import {showLoading, hideLoading } from '@/utils/loading';

//相关的api接口
const request = axios.create({
    baseURL: '/api',
    timeout: 20000, // 请求超时时间
    showLoading: true // 请求接口附加参数,打开遮罩层
});

// 请求拦截器
request.interceptors.request.use(config=>{
    if (config.showLoading == true) {
        showLoading()
    }
    if(localStorage.getItem("token")){ //如果token存在
        config.headers["Authorization"] = localStorage.getItem("token")
    }
    return config
}, error => {
    hideLoading();
    console.log(error)
    Promise.reject(error)
})

//获取后端给我们的数据做一个响应后拦截操作
request.interceptors.response.use(res=>{
    hideLoading();
    // 未设置状态码则默认成功状态
    const code = res.status || 200;
    // 截取code开头数字
    const codeSub = res.status.toString().substr(0, 1)
    // 判断code是几位数
    const codeLength = res.status.toString()
    // 获取错误信息
    const msg = errorCode[code] || res.data.message || errorCode['default']  // errorCode文件可以封装一些常见错误状态码
    if (code === 401) {
        MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
        confirmButtonText: '重新登录',
        cancelButtonText: '取消',
        type: 'warning'
        }
        ).then(() => {
        store.dispatch('LogOut').then(() => {
            location.href = '/index';
        })
        })
    } else if (code === 500) {
        MessageBox.alert(msg, '错误提示', {
        dangerouslyUseHTMLString: true,
        confirmButtonText: '确定',
        type: 'error',
        callback: action => {

        }
        });
    } else if (codeSub == 5 && codeLength.length == 4) {
        return res.data
    } else if (code === 304) {//自定义错误状态码
        return res.data
    } else if (code !== 200) {
        Message({
        message: msg,
        type: 'error'
        })
        return Promise.reject('error')
    } else {
        return res.data
    }
},
error => {
  hideLoading();
  console.log('err' + error)
  let { message } = error;
  if (message == "Network Error") {
    message = "后端接口连接异常";
  }

  else if (message.includes("timeout")) {
    message = "系统接口请求超时";
  }
  else if (message.includes("Request failed with status code")) {
    message = "系统接口" + message.substr(message.length - 3) + "异常";
  }
  Message({
    message: message,
    type: 'error',
    duration: 5 * 1000
  })
  return Promise.reject(error)
})
export {request}  

封装常见错误状态码文件errorCode.js

export default {
  '401': '认证失败,无法访问系统资源',
  '403': '当前操作没有权限',
  '404': '访问资源不存在',
  'default': '系统未知错误,请反馈给管理员'
}

标签:遮罩,code,const,res,element,ui,error,message,else
From: https://www.cnblogs.com/axingya/p/17846998.html

相关文章

  • Android 11 -- 关于dialog和悬浮窗导致SystemUI状态栏下拉频繁闪烁(窗口焦点问题)
    bug描述:如果当前app是全屏的属性,导致状态栏隐藏且有dialog弹出时,这个情况下想下拉显示状态栏,会导致状态栏频繁闪烁。//services/core/java/com/android/server/wm/DisplayPolicy.java//更新系统状态栏的属性intupdateSystemUiVisibilityLw(){//Ifthereisnow......
  • Element UI树形表格刷新保留之前展开的列
     完整链接: ElementUI树形表格刷新自动展开_element表格刷新之后仍然是展开状态_HyunDerek的博客-CSDN博客......
  • YonBuilder应用构建实战案例-体检管理(上)
    YonBuilder平台为开发者提供无代码和低代码的可视化开发能力,并结合开发资产复用,实现快速、简单的应用构建。体检管理是应用构建的典型案例之一,接下来将用两篇文章来讲述此案例。一.业务流程二.功能概述三.使用能力介绍四.实操教程(一).体检套餐1.业务对象创建体检套餐业务对象,以下......
  • YonBuilder应用构建实战案例-体检管理(下)
    紧接着上篇文章,我们将继续讲解体检管理案例操作。体检单一、业务对象创建体检单业务对象,以下是业务对象下的实体为主子孙结构1.体检单2.体检项目_体检单子表二、页面建模1、根据业务对象创建一主多子结构单据命名为体检单2、设置主表字段不允许修改组织、客户、累计出库年月、单据......
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)
    DevExpressWPFDiagram(流程图)控件帮助用户完美复制MicrosoftVisioUI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着......
  • 神经网络入门篇:直观理解反向传播(Backpropagation intuition)
    详细推导反向传播下图是逻辑回归的推导:回想一下逻辑回归的公式(参考公式1.2、公式1.5、公式1.6、公式1.15)公式1.38:\[\left. \begin{array}{l} {x}\\ {w}\\ {b} \end{array} \right\} \implies{z={w}^Tx+b} \implies{\alpha=\sigma(z)} \implies{{L}\left(a,y......
  • 解放VSCode+Vue的完整组件库智能提示(包括ant-design-vue、element-plus等)
    解放VSCode+Vue的完整组件库智能提示最近因为一些原因从WebStrom转回VSCode,首先感受到的就是组件库没有智能提示了:这能忍吗?根本不可能!接下来,我带你花三分钟找回遗失的智能提示~首先,本篇文章适用于通过unplugin-vue-components自动引入组件的项目;也就是说,在你的vite.config.js......
  • element-form动态切换会触发rules校验问题
      增加key属性......
  • vue-ui创建项目
    1、命令提示行输入vueui2、他会跳出浏览器界面,之后选择路径创建3、选择条件命令提示框开始创建项目......
  • 在OpenGL中使用Dear ImGui
    在众多GUI库中,DearImGui用起来最简单,它很容易集成到程序中,绘制的窗口看起来也还不错。可以用它画出非常炫酷的GUI界面:而我则不同:无论使用哪个GUI库,画出来的窗口都惨不忍睹。下面简要介绍如何在OpenGL中使用DearImGui. 1.DearImGui简介以下是DearImGui的相关链接:源代......