Modal 对话框

一、概述

定义

用于提示用户当前操作,或是完成某个任务时需要的一些其他额外的信息。对话框用确定/取消的简单的应答模式。

使用场景

  • 用户在进行重要操作的时候,需要进行二次确认

  • 用于重要的反馈提示,告知用户提示

类型

  • 提示类

  • 二次确认类

  • 自定义类

二、提示类

消息提示类对话框,用于告知用户当前情况。

交互说明

1.对话框居中展示。用户点击取消或者叉号对话框消失

2.用户对警示框进行操作后,才能对其他界面进行操作。强阻断类型。

Modal 对话框 - 图1

  1. <template>
  2. <se-button @click="visible = !visible">打开对话框</se-button>
  3. <se-modal title="提示标题" :visible.sync="visible" mask :mask-closable="false" @close="handler">
  4. <span>提示内容,告知状态、信息和解决方法描述尽量控制在两行内</span>
  5. <template v-slot:footer>
  6. <se-button type="primary" @click="handler2">
  7. 确定
  8. </se-button>
  9. </template>
  10. </se-modal>
  11. </template>
  12. <script>
  13. export default {
  14. data() {
  15. return {
  16. visible: false
  17. }
  18. },
  19. methods: {
  20. handler() {
  21. console.log('close modal')
  22. },
  23. handler2() {
  24. this.visible = false
  25. console.log('confirm')
  26. }
  27. }
  28. }
  29. </script>

三、二次确认类

用户对于操作的二次确认。

交互说明

1.用户点击操作出现二次确认对话框

2.强阻断类型,用户需要对弹窗进行操作后,才能进行其他界面操作。

Modal 对话框 - 图2

  1. <template>
  2. <se-button @click="visible1 = !visible1">打开对话框</se-button>
  3. <se-modal title="提示标题" :visible.sync="visible1">
  4. <span>提示内容,告知状态、信息和解决方法描述尽量控制在两行内</span>
  5. <template v-slot:footer>
  6. <a class="operation-button" @click="visible1 = false">操作</a>
  7. <span>
  8. <se-button @click="visible1 = false">取消</se-button>
  9. <se-button type="primary" @click="firstConfirmHandle">确定</se-button>
  10. </span>
  11. </template>
  12. </se-modal>
  13. <se-modal :visible.sync="visible2">
  14. <span>确认取消吗?</span>
  15. <template v-slot:footer>
  16. <span>
  17. <se-button @click="backHandle">返回</se-button>
  18. <se-button type="primary" @click="confirmHandle">确定取消</se-button>
  19. </span>
  20. </template>
  21. </se-modal>
  22. </template>
  23. <script>
  24. export default {
  25. data() {
  26. return {
  27. visible1: false,
  28. visible2: false
  29. }
  30. },
  31. methods: {
  32. firstConfirmHandle() {
  33. this.visible1 = false
  34. this.visible2 = true
  35. },
  36. backHandle() {
  37. this.visible1 = true
  38. this.visible2 = false
  39. },
  40. confirmHandle() {
  41. this.visible1 = false
  42. this.visible2 = false
  43. }
  44. }
  45. }
  46. </script>
  47. <style lang="scss">
  48. .operation-button {
  49. position: absolute;
  50. bottom: 20px;
  51. left: 20px;
  52. color: #01d567;
  53. font-size: 14px;
  54. line-height: 34px;
  55. &:hover {
  56. cursor: pointer;
  57. }
  58. }
  59. </style>

四、自定义

可在对话框中自定义内容。

交互说明

1.最高高度为 480px

2.超过最高高度出现滚动条

Modal 对话框 - 图3

  1. <template>
  2. <se-button @click="visible = !visible">打开对话框</se-button>
  3. <se-modal title="选择内容" customize :visible.sync="visible" :maskClosable="false">
  4. <div>
  5. <se-checkbox-group :value="selected" name="fruit" @change="handleChange">
  6. <se-checkbox
  7. v-for="(item, i) in 50"
  8. :key="i"
  9. :value="String(item)"
  10. :disabled="item.disabled"
  11. >
  12. 多选项{{item}}
  13. </se-checkbox>
  14. </se-checkbox-group>
  15. </div>
  16. <template v-slot:footer>
  17. <span>
  18. <se-button @click="visible = false">取消</se-button>
  19. <se-button type="primary" @click="visible = false">确定</se-button>
  20. </span>
  21. </template>
  22. </se-modal>
  23. </template>
  24. <script>
  25. export default {
  26. data() {
  27. return {
  28. visible: false,
  29. selected: ['1', '2', '3']
  30. }
  31. },
  32. methods: {
  33. handleChange(e) {
  34. this.selected = e.detail.value
  35. }
  36. }
  37. }
  38. </script>
  39. <style>
  40. .se-checkbox-group {
  41. display: flex;
  42. flex-direction: column;
  43. padding: 14px 0;
  44. }
  45. .se-checkbox {
  46. margin-bottom: 30px;
  47. }
  48. .se-checkbox:last-child {
  49. margin-bottom: 0;
  50. }
  51. </style>

Modal Props

属性类型默认值必填说明
titlestring标题, 可以通过文本传递
customizebooleanfalse自定义对话框类型
topstring50%顶部距离
visiblebooleanfalse控制显示隐藏
maskbooleanfalse是否显示遮罩
mask-closablebooleantrue是否可以通过点击遮罩层关闭对话框

Modal Events

事件名说明参数
open对话框打开的回调EventHandle
close对话框关闭的回调EventHandle

五、$showModal

可以通过调用 this.$showModal(options) 快捷打开一个对话框。

Modal 对话框 - 图4

options 参数

属性类型默认值必填说明
titlestring提示的标题
contentstring提示的内容
buttonSizestringdefault按钮尺寸,可选值:default | mini | large
showCancelbooleantrue是否显示取消按钮
cancelTextstring取消取消按钮的文字
cancelTypestringdefault取消按钮的类型,可选值:primary / default / warn / danger / text
confirmTextstring确定确认按钮的文字
confirmTypestringprimary确认按钮的类型,可选值同取消按钮
successfunction接口调用成功的回调函数,其参数见下面的表格
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

success 方法回调

属性类型说明
confirmbooleantrue 时,表示用户点击了确定按钮
cancelbooleantrue 时,表示用户点击了取消