在Vue中基于elementUI二次封装messagebox

在Vue 中基于elementUI二次封装messagebox

需求描述
为了解决频繁点击某按钮不断触发事件调接口弹出提示语的问题,项目中希望可以在第一次点击调用接口成功之后弹出弹框类提示语并在3秒后自动消失,提示语未消失的情况下不能再次点击,为此,我基于elementui的messagebox进行了二次封装。(样式简略意思一下)

在这里插入图片描述
在这里插入图片描述

一、封装confirm.js
/** confirm.js */
import Vue from 'vue';
import { MessageBox } from 'element-ui'
// 传入参数:提示语 持续时间 提示语类型
function handleConfirm(msg="",duration=1000,type="success") {//设置默认值
    if(type=='success'){
      var str = `<p style="color:#1aa365;font-size:18px">${msg}</p>`;
    }else{
      var str = `<p style="color:#E71C1C;font-size:18px">${msg}</p>`;
    }
     MessageBox.confirm(str, "", {
        dangerouslyUseHTMLString: true, //是否将 message 属性作为 HTML 片段处理
        showConfirmButton: false, //去掉确定按钮
        showCancelButton: false, //去掉取消按钮
        center: true,
        showClose: false,
      })
      .then(() => {
        // 此处可再调一次查询方法
      })
      .catch((err) => {console.log(err);});
      return new Promise((resolve,reject)=>{
      setTimeout(()=> {
        let closeBtn =document.body.getElementsByClassName("v-modal")[0];
        closeBtn.click();
          resolve();
          }, duration);
      })
}
function registryConfirm() {
  // 将组件注册到 vue 的 原型链里去,
  // 这样就可以在所有 vue 的实例里面使用 this.$toConfirm() //避免影响原项目的其他已用到了$confirm的地方,起名错开
  Vue.prototype.$toConfirm = handleConfirm
}
export default registryConfirm;

二、在入口文件main.js处引入
import registryConfirm from '@/common/confirm.js';
Vue.use(registryConfirm)
三、在组件中使用
this.axios
.post(
this.http + "...",
this.qs.stringify(data)
)
.then((res) => {
// console.log('登录成返回的数据' , res);
if (res.code == 0) {             
    this.$toConfirm(res.msg,3000,'success')
} else {
    this.$toConfirm(res.msg,3000,'error')
}
})
.catch((err) => {
console.log(err);
});
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值