feat: element plus中使用messageBox技巧

flex-api
LCJ-MinYa 4 weeks ago
parent 6d4869d90f
commit 76d762d7c6

@ -41,6 +41,12 @@
> >
弹出确认框同步处理 弹出确认框同步处理
</el-button> </el-button>
<el-button
type="primary"
@click="doHandleCancelAndClose"
>
弹出确认框同步处理,点X和取消不同处理
</el-button>
</div> </div>
</el-card> </el-card>
</div> </div>
@ -176,6 +182,72 @@ const doConfirm = async () => {
await hanldeNewFlowWithLoading(); await hanldeNewFlowWithLoading();
mockRequest('我是原始请求'); mockRequest('我是原始请求');
}; };
// ElMessageBox.confirmX
const hanldeNewFlowWithLoadingAndAction = async () => {
return new Promise(async (resolve) => {
if (newSwitch.value !== 'ON') {
resolve('pass');
return;
}
let res = await mockRequest('我是新请求1', newDialogSwitch.value === 'ON');
if (res) {
try {
await ElMessageBox.confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
closeOnClickModal: false,
// cancelxclose
distinguishCancelAndClose: true,
beforeClose: async (action, instance, done) => {
try {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
await mockRequest('我是新请求2');
} else if (action === 'cancel') {
instance.cancelButtonLoading = true;
await mockRequest('我是新请求3');
}
} finally {
instance.confirmButtonLoading = false;
instance.cancelButtonLoading = false;
done();
resolve(action);
}
},
});
} catch {
// ElMessageBox.confirmcancel
console.log('点击取消');
}
} else {
resolve('pass');
}
});
};
const doHandleCancelAndClose = async () => {
//
let params = {
id: 1,
};
if (!params.id) {
ElMessage.error('id不存在');
return;
}
/**
* 注意这里这里是新代码执行逻辑
*/
let action = await hanldeNewFlowWithLoadingAndAction();
// Xactionclose
if (action === 'close') {
return;
}
mockRequest('我是原始请求');
};
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

Loading…
Cancel
Save