Files
workspace/code/g3soft-libs/docs/examples/modal/confirm-async.vue
T
2026-10-08 22:38:34 +08:00

36 lines
1.1 KiB
Vue

<script setup lang="ts">
// 异步确认:onConfirm 返回 Promise 时按钮进入 loading
// resolve → 关闭;reject → 保持打开,让用户重试或取消
import { G3Button, G3Message, G3Modal, G3Space } from '@g3soft/ui'
function openSuccess() {
G3Modal.confirm({
title: '提交审批',
content: 'onConfirm 返回 Promise,等待期间按钮显示 loading。',
onConfirm: async () => {
await new Promise((resolve) => setTimeout(resolve, 1200))
G3Message.success('审批已提交')
},
})
}
function openFailure() {
G3Modal.confirm({
title: '可能失败的提交',
content: '这次会 reject:弹窗保持打开,按钮恢复可点。',
onConfirm: async () => {
await new Promise((resolve) => setTimeout(resolve, 1000))
G3Message.error('服务不可用,请重试')
throw new Error('failed')
},
})
}
</script>
<template>
<G3Space :size="12" wrap>
<G3Button @click="openSuccess">异步成功</G3Button>
<G3Button type="outline" @click="openFailure">异步失败</G3Button>
</G3Space>
</template>