在使用 confirm 弹窗时,如果点击确定按钮,需要异步请求接口,请求成功后,需要关闭弹窗,此时需要设置 confirmButtonLoading 属性为 true,但是 element-ui 的 confirm 弹窗没有提供异步请求的回调函数,因此需要使用 beforeClose 属性,在点击确定按钮时,设置 confirmButtonLoading 属性为 true,然后异步请求接口,请求成功后,设置 confirmButtonLoading 属性为 false,然后关闭弹窗。
const title = '你当前处于【离线状态】无法正常使用批量拨打列表功能,请先切换到在线状态再进行操作'
const isConfirm = await this.$confirm(title, '提示', {
confirmButtonText: '立即切换',
cancelButtonText: '暂不切换',
type: 'warning',
closeOnPressEscape: false,
closeOnClickModal: false,
beforeClose: async (action, instance, done) => {
if (action !== 'confirm') {
done()
return
}
try {
instance.confirmButtonText = '切换中...'
instance.confirmButtonLoading = true
await changeCallOnline(this)
} finally {
instance.confirmButtonLoading = false
done()
}
},
})
.then(() => true)
.catch(() => false)
if (!isConfirm) return
MessageBox.confirm(title, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
beforeClose: async (action, instance, done) => {
if (action !== 'confirm') {
done()
return
}
try {
instance.confirmButtonText = '分配中...'
instance.confirmButtonLoading = true
await myCommonServer.disableSigningBiz({ bizId: id })
} finally {
instance.confirmButtonLoading = false
instance.confirmButtonText = '确定'
done()
}
},
})
.then(() => {})
.catch(() => {})