Modal.vue 811 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <template>
  2. <a-modal wrapClassName="bs-modal" :bodyStyle="bodyStyle" :open="visible" :title="title" centered :width="width" v-bind="modalExtraProps">
  3. <slot v-if="visible" />
  4. </a-modal>
  5. </template>
  6. <script setup>
  7. import { computed } from 'vue';
  8. defineProps({
  9. width: {
  10. required: true,
  11. default: '500px',
  12. },
  13. visible: {
  14. required: true,
  15. default: false,
  16. },
  17. title: {
  18. required: true,
  19. default: '标题',
  20. },
  21. modalExtraProps: {
  22. required: false,
  23. default: {},
  24. },
  25. });
  26. const bodyStyle = computed(() => {
  27. return {
  28. maxHeight: `calc(100vh - 300px)`,
  29. overflow: 'auto',
  30. };
  31. });
  32. </script>
  33. <style lang="scss" scoped>
  34. .bs-modal {
  35. :deep(.ant-modal-content) {
  36. background-color: #f8f8f8;
  37. }
  38. }
  39. </style>