index.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <div class="px-10">
  3. <Alert
  4. message="使用 useModal 进行弹窗操作,默认可以拖动,可以通过 draggable
  5. 参数进行控制是否可以拖动/全屏"
  6. show-icon
  7. class="my-4"
  8. />
  9. <a-button type="primary" class="mr-2" @click="openModalLoading"
  10. >打开弹窗 默认可以拖动/全屏</a-button
  11. >
  12. <Alert message="内外同时同时显示隐藏" show-icon class="my-4" />
  13. <a-button type="primary" class="mr-2" @click="openModal2">打开弹窗</a-button>
  14. <Alert message="自适应高度" show-icon class="my-4" />
  15. <a-button type="primary" class="mr-2" @click="openModal3">打开弹窗</a-button>
  16. <Alert
  17. message="内外数据交互,外部通过 transferModalData 发送,内部通过 receiveDrawerDataRef 接收。该数据具有响应式"
  18. show-icon
  19. class="my-4"
  20. />
  21. <a-button type="primary" class="mr-2" @click="send">打开弹窗并传递数据</a-button>
  22. <Modal1 @register="register1" />
  23. <Modal2 @register="register2" />
  24. <Modal3 @register="register3" />
  25. <Modal4 @register="register4" />
  26. </div>
  27. </template>
  28. <script lang="ts">
  29. import { defineComponent } from 'vue';
  30. import { Alert } from 'ant-design-vue';
  31. import { useModal } from '/@/components/Modal';
  32. import Modal1 from './Modal1.vue';
  33. import Modal2 from './Modal2.vue';
  34. import Modal3 from './Modal3.vue';
  35. import Modal4 from './Modal4.vue';
  36. export default defineComponent({
  37. components: { Alert, Modal1, Modal2, Modal3, Modal4 },
  38. setup() {
  39. const [register1, { openModal: openModal1, setModalProps }] = useModal();
  40. const [register2, { openModal: openModal2 }] = useModal();
  41. const [register3, { openModal: openModal3 }] = useModal();
  42. const [register4, { openModal: openModal4, transferModalData }] = useModal();
  43. function send() {
  44. transferModalData({
  45. data: 'content',
  46. info: 'Info',
  47. });
  48. // setTimeout(() => {
  49. // transferModalData({
  50. // data: 'content1',
  51. // info: 'Info1',
  52. // });
  53. // }, 3000);
  54. openModal4(true);
  55. }
  56. function openModalLoading() {
  57. openModal1();
  58. setModalProps({ loading: true });
  59. setTimeout(() => {
  60. setModalProps({ loading: false });
  61. }, 2000);
  62. }
  63. return {
  64. register1,
  65. openModal1,
  66. register2,
  67. openModal2,
  68. register3,
  69. openModal3,
  70. register4,
  71. openModal4,
  72. send,
  73. openModalLoading,
  74. };
  75. },
  76. });
  77. </script>