Skip to content

对话框 Dialog

何时使用

  • 在当前页面正中打开一个浮层,承载相应的操作或者展示内容

基本使用

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
function showDialog () {
  visible.value = true
}
function onClose () {
  visible.value = false
}
</script>
<template>
  <Button type="primary" @click="showDialog">默认对话框</Button>
  <Dialog :visible="visible" @close="onClose">
    <template #title>Title</template>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
  </Dialog>
</template>

内容高度自定义

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
function showCustomHeightDialog (info: string) {
  visible.value = true
}
function onClose () {
  visible.value = false
}
</script>
<template>
  <Button type="primary" @click="showCustomHeightDialog">内容高度自定义</Button>
  <Dialog
    :height="360"
    @close="onClose"
    :visible="visible">
    <template #title>Title</template>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
  </Dialog>
</template>

有底部按钮

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
const loading = ref(false)
function showFooterDialog () {
  visible.value = true
}
function onClose () {
  visible.value = false
}
function onCancel () { // “取消”按钮回调
  visible.value = false
}
function onConfirm () { // “确定”按钮回调
  loading.value = true // 开启加载状态
  setTimeout(() => {
    visible.value = false
    loading.value = false
  }, 500)
}
</script>
<template>
  <Button type="primary" @click="showFooterDialog">有底部按钮</Button>
  <Dialog
    footer
    @close="onClose"
    @cancel="onCancel"
    @ok="onConfirm"
    :loading="loading"
    :visible="visible">
    <template #title>Title</template>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
  </Dialog>
</template>

位置高度自定义

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
function showFixPositionDialog () {
  visible.value = true
}
function onClose () {
  visible.value = false
}
</script>
<template>
  <Button type="primary" @click="showFixPositionDialog">位置高度自定义</Button>
  <Dialog
    :center="false"
    :top="120"
    @close="onClose"
    :visible="visible">
    <template #title>Title</template>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
  </Dialog>
</template>

允许切换全屏

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
function showFullScreenDialog () {
  visible.value = true
}
function onClose () {
  visible.value = false
}
</script>
<template>
  <Button type="primary" @click="showFullScreenDialog">允许切换全屏</Button>
  <Dialog
    switch-fullscreen
    @close="onClose"
    :visible="visible">
    <template #title>Title</template>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
  </Dialog>
</template>

body 样式自定义

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const visible = ref(false)
function showCustomHBodyDialog () {
  visible.value = true
}
function onClose () {
  visible.value = false
}
</script>
<template>
  <Button type="primary" @click="showCustomHBodyDialog">body 样式自定义</Button>
  <Dialog
    :body-style="{fontSize: '20px', color: '#eb2f96'}"
    @close="onClose"
    :visible="visible">
    <template #title>Title</template>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
    <p>Bla bla ...</p>
  </Dialog>
</template>

APIs

参数说明类型默认值必传
title标题string | slot'提示'false
content内容string | slot''false
width宽度,单位pxnumber540false
height高度,默认 auto,自适应内容高度number | string'auto'false
switchFullscreen是否允许切换全屏,允许后右上角会出现一个按钮booleanfalsefalse
cancelText取消按钮文字string'取消'false
okText确定按钮文字string'确定'false
footer是否显示底部按钮,默认不显示booleanfalsefalse
centertrue: 水平垂直居中;false: 固定高度水平居中booleantruefalse
top固定高度水平居中时,距顶部高度,单位pxnumber100false
loading加载中booleanfalsefalse
bodyStyle对话框 body 样式CSSProperties{}false
visible是否可见booleanfalsefalse

Events

事件名称说明参数
close点击遮罩层或右上角叉的回调() => void
cancel点击取消回调() => void
ok点击确定回调() => void

Released under the MIT License.