Dialog 对话框

February 27, 2026 · View on GitHub

封装的对话框组件,支持全屏、拖拽、表单验证等功能。

引入

import { ADialog } from '@airpower/web'

Props

参数说明类型默认值必填
title弹窗标题string-
confirmText确定按钮文字string确认
cancelText取消按钮文字string取消
width宽度,支持像素和百分比string''
height高度,支持像素和百分比string''
minWidth最小宽度string500px
minHeight最小高度string300px
hideButtons隐藏底部按钮booleanfalse
hideFooter隐藏 Footer 区域booleanfalse
hideConfirm隐藏确认按钮booleanfalse
disableConfirm禁用确认按钮booleanfalse
showCancel显示取消按钮booleanfalse
hideClose隐藏右上角关闭按钮booleanfalse
loading是否正在 Loadingbooleanfalse
hideFullscreen隐藏全屏按钮booleanfalse
fullScreen是否全屏booleanfalse
movable允许拖拽移动booleantrue
formRefForm 的 Ref 实例,传入则自动校验FormInstanceundefined
isSelector是否是选择器模式booleanfalse
hoverClose支持点击遮罩层关闭booleanfalse

Emits

事件名说明回调参数
cancel取消/关闭弹窗-
fullscreenChange全屏状态变化(isFullScreen: boolean) => void
confirm确认按钮点击-

Slots

插槽名说明作用域参数
default对话框内容-
status底部左侧状态区域-
leftCtrl底部左侧控制按钮-
middleButton底部中间按钮-

示例

<template>
  <!-- 基础用法 -->
  <ADialog
    title="标题"
    @confirm="handleConfirm"
    @cancel="handleCancel"
  >
    <div>内容</div>
  </ADialog>

  <!-- 表单验证 -->
  <ADialog
    title="表单弹窗"
    :form-ref="formRef"
    @confirm="handleConfirm"
  >
    <ElForm ref="formRef" :model="form">
      <!-- 表单项 -->
    </ElForm>
  </ADialog>

  <!-- 自定义底部 -->
  <ADialog title="标题">
    <div>内容</div>
    <template #status>
      <span>状态信息</span>
    </template>
    <template #leftCtrl>
      <AButton>左侧按钮</AButton>
    </template>
  </ADialog>

  <!-- 选择器模式 -->
  <ADialog
    title="选择器"
    is-selector
    @confirm="handleSelect"
  >
    <!-- 选择器内容 -->
  </ADialog>
</template>

注意事项

  • 支持双击标题栏切换全屏
  • 支持拖拽移动(可通过 movable 禁用)
  • 如传入 formRef,点击确认时会自动触发表单验证
  • 选择器模式下底部样式会适配分页器
  • 支持所有 Element Plus 原生 Dialog 的属性和事件(通过 $attrs 透传)