element-ui全局添加加载遮罩层
创建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': '系统未知错误,请反馈给管理员'
}
分类:
element使用问题整合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现