!740 修复弹窗表单重复提交的问题

Merge pull request !740 from tzdxf/fix-dialog-submit
This commit is contained in:
芋道源码 2025-06-15 08:32:07 +00:00 committed by Gitee
commit f37fcefd32
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

View File

@ -1,9 +1,11 @@
<script lang="ts" setup>
import { propTypes } from '@/utils/propTypes'
import { isNumber } from '@/utils/is'
defineOptions({ name: 'Dialog' })
const slots = useSlots()
const emits = defineEmits(['update:modelValue'])
const props = defineProps({
modelValue: propTypes.bool.def(false),
@ -55,6 +57,17 @@ const dialogStyle = computed(() => {
height: unref(dialogHeight)
}
})
const closing = ref(false)
function closeHandler() {
emits('update:modelValue', false)
closing.value = true
}
function closedHandler() {
closing.value = false
}
</script>
<template>
@ -68,7 +81,8 @@ const dialogStyle = computed(() => {
draggable
class="com-dialog"
:show-close="false"
@close="$emit('update:modelValue', false)"
@close="closeHandler"
@closed="closedHandler"
>
<template #header="{ close }">
<div class="relative h-54px flex items-center justify-between pl-15px pr-15px">
@ -102,7 +116,9 @@ const dialogStyle = computed(() => {
</ElScrollbar>
<slot v-else></slot>
<template v-if="slots.footer" #footer>
<div :style="{ 'pointer-events': closing ? 'none' : 'auto' }">
<slot name="footer"></slot>
</div>
</template>
</ElDialog>
</template>