element的 ElMessageBox 倒计时操作

时间:2025-03-29 12:35:13
// customClass配置项 是修改此弹框提示的关键, 可在外部引入css文件等 确保可以修改样式。 distinguishCancelAndClose 确保区分开 取消按钮 及 点击遮罩层和叉号的操作。 // 注意:cancelButtonClass 主要声明给取消按钮一个 soleClass 属性。 这里按钮名称是相反的(这里取消的操作是确认回调 确认的操作是取消回调),组件自定义按钮还需 研究 let messageBoxTimer; let countdown = 60; // 秒数 ElMessageBox.confirm( `这里是弹框提示内容 可以是html形成的内容 可加class等,必要属性:dangerouslyUseHTMLString为true`, '标题titl', { confirmButtonText: '取消', cancelButtonText: '确认(60)', customClass: 'use-message-box-fjshfksj', cancelButtonClass: 'el-button--primary soleClass', confirmButtonClass: 'el-button--info', dangerouslyUseHTMLString: true, distinguishCancelAndClose: true, autofocus: false, } ) .then(() => { if (messageBoxTimer) clearInterval(messageBoxTimer) // 这里是 点击取消的操作(按钮位置调换) }) .catch((action: Action) => { if (messageBoxTimer) clearInterval(messageBoxTimer) // 点击遮罩层 叉号 esc 等关闭相当于点击取消操作 if (action === 'close') { // 关闭,取消的操作 } // 这里虽然是取消按钮的回调 上方按钮互换了名称 if (action === 'cancel') { // 确定按钮的回调 } }) // 定时器 messageBoxTimer = setInterval(() => { if (countdown <= 1) { if (messageBoxTimer) clearInterval(messageBoxTimer) countdown= 60 // 倒计时结束 执行事件 ....... ElMessageBox.close() // 关闭弹框 return } countdown -= 1 // 获取demo元素 因为页面可能有多个提示 加唯一标识 soleClass 修改内容 const domeInfo: any = document.querySelector('.soleClass') domeInfo.querySelector('span').remove() domeInfo.insertAdjacentHTML( 'beforeend', `<span>确认(${countdown})</span>` ) }, 1000)