Skip to content

PenModal 对话框组件

代码示例

vue
<template>
    <!-- 对话框 -->
    <pen-modal v-model="visible" :title="title" :loading="saveLoading" @save="saveEvent">
        <!-- 对话框内容 -->
    </pen-modal>
</template>

<script setup lang="ts">
import { ref } from 'vue';

const visible = ref(false);
const title = ref('新增');
const saveLoading = ref(false);

const saveEvent = () => {
    saveLoading.value = true;
    setTimeout(() => {
        saveLoading.value = false;
        visible.value = false;
        // 保存事件
    }, 1000)
}
</script>

插槽

插槽名说明
default默认插槽,可以自定义对话框的内容

属性类型

ts
import type { DialogProps } from 'element-plus';

// PenModal 组件的属性,继承自DialogProps
interface Props extends Partial<DialogProps> {
    loading?: boolean // 确认按钮的loading状态
    showFooter?: boolean // 是否显示底部按钮
    showConfirmBtn?: boolean // 是否显示确认按钮
    confirmText?: string // 确认按钮文字
    save?: () => void // 确认按钮点击事件
}

事件

事件名说明
openDialog 打开的回调
openedDialog 打开动画结束时的回调
closeDialog 关闭的回调
closedDialog 关闭动画结束时的回调
open-auto-focus输入焦点聚焦在 Dialog 内容时的回调
close-auto-focus输入焦点从 Dialog 内容失焦时的回调
save确认按钮点击事件