u
This commit is contained in:
1 parent
8eedf281fd
commit
35bc29f356
13 files changed
+675
-171
No files matched your search
@@ -21,7 +21,9 @@ export default defineComponent({
|
||||
required: false,
|
||||
},
|
||||
beforeConfirm: {
|
||||
type: Function as PropType<() => boolean | Promise<boolean>>,
|
||||
type: Function as PropType<
|
||||
(done: (ok: boolean) => void) => void | boolean | Promise<boolean>
|
||||
>,
|
||||
},
|
||||
confirmBtn: {
|
||||
type: null,
|
||||
@@ -68,11 +70,27 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
const handleConfirm = async () => {
|
||||
confirmLoading.value = true
|
||||
let allow = true
|
||||
|
||||
if (props.beforeConfirm) {
|
||||
allow = await Promise.resolve(props.beforeConfirm())
|
||||
confirmLoading.value = true
|
||||
|
||||
try {
|
||||
allow = await new Promise<boolean>((resolve) => {
|
||||
const result = props.beforeConfirm!(ok => resolve(ok))
|
||||
|
||||
if (typeof result === 'boolean') {
|
||||
resolve(result)
|
||||
}
|
||||
else if (result instanceof Promise) {
|
||||
result.then(ok => resolve(ok)).catch(() => resolve(false))
|
||||
}
|
||||
// 如果是用 done 回调,就等调用方触发 resolve
|
||||
})
|
||||
}
|
||||
catch {
|
||||
allow = false
|
||||
}
|
||||
}
|
||||
|
||||
if (allow) {
|
||||
|
||||
Reference in new issue
Block a user