vue封装全局loading

2023-11-05

首先创建一个loading文件

<template>
    <div>
        <div v-loading.fullscreen.lock="loadingAll" element-loading-background="rgba(0, 0, 0, 0.6)">
        </div>
    </div>
</template>
<script>
export default {
    computed: {
      loadingAll() { return this.$store.state.user.loadingAll}
    }
}
</script>

在store中添加变量

在这里插入图片描述

在app.vue中引入loading文件

在这里插入图片描述

然后就可以使用啦

 //在需要用到的页面添加如下代码
 computed: {
     loadingAll() { return this.$store.state.user.loadingAll}
 },
 methods: {
 	 submitForm() {
 	 	 //提交表单打开loading,响应后关闭
	     this.$store.state.user.loadingAll = true
	      // this.loadingAll = true
	      this.$refs["form"].validate(valid => {
	          if (valid) {
	              if (this.form.id != null) {
	                  updateStructure(this.form).then(response => {
	                      this.msgSuccess("修改成功");
	                      this.open = false;
	                      // this.loadingAll = false
	                      this.$store.state.user.loadingAll = false
	                      this.getList();
	                  });
	              } else {
	                  addStructure(this.form).then(response => {
	                      this.msgSuccess("新增成功");
	                      this.open = false;
	                      // this.loadingAll = true
	                      this.$store.state.user.loadingAll = false
	                      this.getList();
	                  });
	              }
	          }else {
	              this.$store.state.user.loadingAll = false
	              // this.loadingAll = false
	          }
	      });
	  },
 }

全局使用

// request拦截器
service.interceptors.request.use(config => {
  // 是否需要设置 token
  const isToken = (config.headers || {}).isToken === false
  if (getToken() && !isToken) {
    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  }
  store.state.user.loadingAll = true
  return config
}, error => {
    Promise.reject(error)
})

// 响应拦截器
service.interceptors.response.use(res => {
    store.state.user.loadingAll = false
    // 未设置状态码则默认成功状态
    const code = res.data.code || 200;
    // 获取错误信息
    const msg = errorCode[code] || res.data.msg || errorCode['default']
    if (code === 401) {
      MessageBox.alert('登录状态已过期,请重新登录', '系统提示', {
        confirmButtonText: '确定',
        showClose:false,
        type: 'warning',
        callback: action => {
            store.dispatch('LogOut').then(() => {
                location.href = '/index';
              })
            }
        })
    } else if (code === 500) {
      Message({
        message: msg,
        type: 'error'
      })
      store.state.user.loadingAll = false
      
      return Promise.reject(new Error(msg))
    } else if (code !== 200) {
      Notification.error({
        title: msg
      })
      store.state.user.loadingAll = false
      
      return Promise.reject('error')
    } else {
      return res.data
    }
  },
  error => {
    console.log('err' + error)
    store.state.user.loadingAll = false
    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)
  }
)

各位客官要是感觉有用的话能留个小心心嘛,谢谢啦!!!^ v ^

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue封装全局loading 的相关文章

  • 空间(蓝桥杯)

    空间 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 小蓝准备用 256MB 的内存空间开一个数组 数组的每个元素都是 32 位 二进制整数 如果不考虑程序占用的空间和维护内存需要的辅助空间 请问 256MB 的空间
  • 定义内部类 继承 AsyncTask 来实现异步网络请求

    异步任务处理 创建内部类 来实现网络异步请求 新建内部类 继承 AsyncTask SuppressLint StaticFieldLeak class RequestNetworkDataTask extends AsyncTask
  • Docker、Portainer、K8S环境搭建

    Docker Portainer K8S环境搭建 安装Docker 安装步骤 安装依赖包 yum install y yum utils device mapper persistent data lvm2 配置阿里云yum源 以便加速下载

随机推荐

  • Vue 安装开发者工具

    1 下载开发者工具 下载地址 http book wiyp top App Vue3开发者工具 谷歌 Vue3 crx 2 打开谷歌浏览器 点击扩展 点击管理扩展程序 3 开启开发者模式 将 Vue3 开发者工具文件拖拽到浏览器中进行安装
  • 设计模式(十三)代理模式

    代理模式也是一种结构性模式 它的主要作用是创建一个现有对象的代理 以便我们能够针对对象的生命周期 访问权限等进行控制 代理模式和适配器模式的区别是 适配器模式主要用于现有接口和新接口之间的转换和衔接 而代理模式对现有接口进行控制 所以代理模
  • 【机器学习】PyTorch如何选择最优初始学习率

    众所周知 机器学习尤其是现在的深度学习 大量的工作都集中在调参上 一个模型能否很好的解决问题 调参占了很大的比重 而学习率又是模型众多超参数中最重要和最容易调节的一个 1 什么是学习率 目前深度学习优化的基本思想是梯度下降法 已经有很多优秀
  • Java DAO模式

    Java DAO模式 Data Access Objects 作用 隔离了数据库访问代码和业务逻辑代码 隔离了数据库连接代码 代码实现 DAO接口 DAO实现 实体类 连接数据库类和关闭数据库连接类
  • 研一寒假C++复习笔记--左值和右值的理解和使用

    目录 1 左值和右值的定义 2 简单理解左值和右值的代码 3 非const引用只能接受左值 1 左值和右值的定义 左值 L Value L理解为 Location 表示可寻 右值 R Value R理解为 Read 表示可读 左值和右值是相
  • 分布式数据库DBLE

    分布式数据库DBLE 第一章 绪论 研究背景 目前 在电商 金融 O2O 零售 电信等行业普遍存在用户基数大 营销活动频繁 核心交易系统响应日益变慢的问题 随着业务数据增长迅速 超过单机数据库的承受极限 制约业务的发展 在电力 气象 农业
  • 07、环境-虚拟机网络设置、开启远程登录

    1 Oracle VM VirtualBox默认网络方式 Oracle VM VirtualBox创建的虚拟机默认使用的是 网络地址转换 端口转发的方式 2 默认虚拟机ip地址不是固定IP 不方便开发 修改Vagrantfile confi
  • LaTeX怎样引用想要的包

    到网上下载相应包 得到 ins文件 官网 https www ctan org pkg 然后cmd运行latex ins即可得到 sty文件 放到LaTeX目录下即可
  • SSL工作原理

    SSL工作原理 关键词 SSL PKI MAC 摘 要 SSL利用数据加密 身份验证和消息完整性验证机制 为基于TCP等可靠连接的应用层协议提供安全性保证 本文介绍了SSL的产生背景 安全机制 工作过程及典型组网应用 缩略语 缩略语 英文全
  • 【Wi-Fi】IEEE 802.11 Standards 之 802.11a/b/g/n/ac/ax初探

    前言 日常在配置家里路由器以及在工作中学习到WiFi相关的知识的时候总是对于WiFi 标准协议 IEEE 802 11的几个版本不太理解 所以本文主要是介绍关于IEEE 802 11 中各个版本的由来和基本含义 各版本WiFi标准协议 IE
  • 剑指 Offer 30. 包含min函数的栈

    剑指 Offer 30 包含min函数的栈 方法一 使用两个栈 class MinStack Deque
  • C++学习(四八九)Could not download aapt2-windows.jar

    问题描述 Android Studio在编译生成Apk时报此错误 解决办法 去掉Gradle的offline模式 点击AndroidStudio的文件 gt 设置 选择Gradle标签页 去掉Offline work前面的对钩
  • BUU 【ACTF2020 新生赛】Include 1 解题大致思路

    1 首先打开靶场环境 看到链接tips 打开tips 2 首先看一下url中有什么东西 看到file 猜测可能是文件包含 3 文件包含读取的是他文件里的内容 要想读取源文件内容 我们可以用base64编码的方式来读文件flag php 构造
  • OAuth2.0原理和理解

    1 oauth简述 oauth本身不是技术 而是一项资源授权协议 重点是协议 Apache基金会提供了针对Java的oauth封装 我们做Java web项目想要实现oauth协议进行资源授权访问 直接使用该封装就可以 2 概述 2 1 官
  • imagenet图片

    imagenet数据集图片大小3 224 224
  • prometheus 添加 login 登录认证界面(nginx + flask 实现)

    前言 prometheus是现在一个比较主流的监控软件 随着容器的普及 prometheus的应用越来越广泛 前面我也有专门讲到prometheus的相关文章 但是跟传统老牌的zabbix监控不一样 prometheus的web UI是没有
  • 从计算机中删除勒索软件的 6 种方法

    勒索软件是一种恶意软件 它会加密计算机上的文件 然后要求付费才能解密它们 对于企业主和个人来说 这可能是一个非常头疼的问题 未能删除勒索软件可能会导致永久性数据丢失 有些信息对企业至关重要 应不惜一切代价防止丢失或损坏 有几种方法可以删除它
  • ajax.parse,GitHub - srhyne/jQuery-Parse: An AJAX wrapper for the Parse.com REST API

    What is it It s a super light weight AJAX wrapper for Parse com s wonderful database service Why did you build it I want
  • 源码学习时间,Window Manager in Android

    今日科技快讯 近日消息 京东百亿补贴被曝已开始少量上线测试 已有用户可看到活动页面 据网友反馈 京东部分商品现已有 百亿补贴 的标签 目前上线的商品包括手机 家电 酒水 食品 服饰等众多品类 作者简介 大家周五好 咱们下周再见 祝大家周末愉
  • vue封装全局loading

    首先创建一个loading文件