http请求的代码如下:

import axios from 'axios'
import { Message} from 'element-ui'
import store from '../store' //vuex
import { getToken } from '@/utils/auth' //token // 创建axios实例 const service = axios.create({
//baseURL: "https://www.cnblogs.com", // api的base_url
timeout: 5000 // 请求超时时间
}) //http request 拦截器
service.interceptors.request.use( config => {
config.headers = {
'Content-Type':'application/x-www-form-urlencoded',
'X-Token':getToken()
}
if(store.state.neddloding==0){ //等于0打开loading store.commit('gbfullscreenLoading') }
store.commit('show')//每开始一次请求neddloding加一
console.log(store.state.neddloding) return config;
},
error => {
return Promise.reject(err);
}
); //响应拦截器即异常处理
service.interceptors.response.use(response => {
console.log(response)
//store.commit('gbfullscreenLoadinga')
//hide() return response
}, err => {
if (err && err.response) { switch (err.response.status) {
case 400:
//console.log('错误请求')
Message({message: '错误请求', type: 'error'});
break;
case 401:
console.log('未授权,请重新登录')
break;
case 403:
console.log('拒绝访问')
break;
case 404:
console.log('请求错误,未找到该资源')
break;
case 405:
console.log('请求方法未允许')
break;
case 408:
console.log('请求超时')
break;
case 500:
console.log('服务器端出错')
break;
case 501:
console.log('网络未实现')
break;
case 502:
console.log('网络错误')
break;
case 503:
console.log('服务不可用')
break;
case 504:
console.log('网络超时')
break;
case 505:
console.log('http版本不支持该请求')
break;
default:
console.log(`连接错误${err.response.status}`)
}
} else {
console.log('连接到服务器失败')
}
return Promise.resolve(err.response)
}) var that=this;
function fromdata(type, url, data) {
return new Promise((reslove, reject) => {
service({
method: type,
url: url,
data: data //java后台用qs转
})
.then(res => {
// store.commit('UPDATE_LOADING', false); //隐藏loading
//这里可以添加指定对应状态码的处理方式,比如登陆过期,res.data.code === '6666' 路由跳转到login
if(res.data.code==0){
reslove(res);
console.log(store.state.neddloding)
store.commit('hide') //每完成一次请求减一
if(store.state.neddloding==0){ //等于0关闭loding
console.log(store.state.neddloding)
store.commit('gbfullscreenLoadinga')
} }else{
console.log(res.data.message)
console.log(res)
Message({message: '错误请求', type: 'error'});
}
})
.catch(err => {
//store.commit('UPDATE_LOADING', false); //隐藏loading
reject(err.message);
Message({message: '错误请求', type: 'error'});
//Message.error(e.message);
});
});
} export default fromdata

store代码

import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex) var state={
fullscreenLoading:true,//设置loading是否显示
neddloding:0//根据是否为0来判断是否关闭loading
} var mutations={
gbfullscreenLoading(state){
state.fullscreenLoading=true;//loading显示
},
gbfullscreenLoadinga(state){
state.fullscreenLoading=false;//loading关闭
},
show(state){//每请求一次加一
state.neddloding++
},
hide(state){//每完成请求一次减一
state.neddloding--
} } export default new Vuex.Store({
state,
mutations
})

app.vue中设置loading

<template>
<div id="app" v-loading.fullscreen.lock="fullscreenLoading">
<router-view></router-view>
</div>
</template>
<script>
export default { computed:{
fullscreenLoading(){
return this.$store.state.fullscreenLoading
}
}
}
</script>

vue和element全局loading的更多相关文章

  1. [vue开发记录]全局loading组件

    上图不上种,菊花万人捅: loading.js: import './loading.css' let Loading = {} // 避免重复install,设立flag Loading.insta ...

  2. AXIOS构建请求处理全局loading状态&&AXIOS避免重复请求loading多次出现

    一般情况下,在 vue 中结合 axios 的拦截器控制 loading 展示和关闭,是这样的:在 App.vue 配置一个全局 loading. <div class="app&qu ...

  3. vue axios拦截器 + 自编写插件 实现全局 loading 效果;

    项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...

  4. vue-cli的项目中关于axios的全局配置,结合element UI,配置全局loading,header中做token传输

    在src目录中建立plugins文件夹,在文件夹内建立axios.js文件 "use strict"; import Vue from 'vue'; import axios fr ...

  5. element取消全局loading

    背景 前两天在开发一个管理后台项目时, 遇到了一个问题,后端接口返回特别慢,由于该接口调用的是第三方API,无法通过后端去处理.此时想到用loading动画,但随之而来也产生了不少问题, 在此记录一下 ...

  6. vue 配置了全局的http拦截器,单独某个组件不需要这个拦截器,如何设置

    之前写过关于全局配置http拦截器的随笔,现在有个需求,在微信支付时,生成二维码,页面显示一个遮罩层,二维码页面需要每两秒请求一次接口,若返回结果为已支付,则进行页面跳转,但因为全局http中load ...

  7. 使用vue与element组件

    1.安装element npm i element-ui -S 2.引入 在main.js写入一下内容 import Vue from 'vue'; import ElementUI from 'el ...

  8. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  9. vue+npm+Element插件+路由

    首先安装node.js 之后使用管理员输入命令 然后,就可以使用 npm 命令安装了: npm install -g @vue/cli安装完后,打开命令行窗口,会有一个 vue 命令:vue -v v ...

随机推荐

  1. 莫烦pytorch学习笔记(一)——torch or numpy

    Q1:什么是神经网络? Q2:torch vs numpy Numpy:NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(neste ...

  2. Joomla - 模块系统(新建模块、模块类别、自定义模块)

    Joomla - 模块系统,模块配合模板的布局设置.菜单分配.权限分配能创建出一个内容丰富且易于管理的高度自定义前端页面架构 一.新建模块 进入后台,点击顶栏菜单 扩展管理 -> 模块管理 ,进 ...

  3. php curl的隐藏BUG

    <?php $a = array( 'a' => 2, 'b' => 3, ); $curl = curl_init(); $b = $a; curl_setopt_array($c ...

  4. hdu 1754 I Hate It (线段树)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 线段树的模板题,详细的都写在代码里了 //不知道为什么定义单个字符,用%c输入会超时,换成字符数 ...

  5. 图像的K-L变换

    1 问题的提出 2 K-L变换的原理 3 K-L变换的计算过程 4 K-L变换的性质 5 K-L变换的深入讨论 6 K-L变换的应用

  6. python 拷贝某个文件到另一个目录下

    python的shutil包含有很多文件拷贝的函数,各种各样的,要实现我文章题目的目的,使用shutil.copy函数即可 shutil.copy(文件的路径,另一个目录)

  7. 【Redis安装】部署与基本配置 --基于Mac和Linux

    Redis安装与部署[基于Mac和Linux] 一.Redis简介 基于内存的Key-Value高性能NoSQL数据库 二.Redis下载和解压 进入官网下载最新版的Redis,目前是5.0.0,这个 ...

  8. PAT甲级——A1019 General Palindromic Number

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  9. centos 6.8 搭建禅道 Linux一件安装、进程自起

    禅道官网:http://www.zentao.net/ linux一键安装包内置了apache, php, mysql这些应用程序,只需要下载解压缩即可运行禅道.Linux 64位一键安装包(适用于L ...

  10. eclipse设置提示信息

    1.设置 java 文件的代码提示功能  .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ () 2.设置 xml 文件的代码提示功能 打 开 ...