ImageSwiper.vue 975 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <swiper
  3. class="image-swiper"
  4. circular
  5. :indicator-dots="true"
  6. :autoplay="true"
  7. :interval="2000"
  8. :duration="1000"
  9. >
  10. <swiper-item v-for="(item, key) in images" :key="key">
  11. <view class="item">
  12. <Image
  13. :src="item"
  14. width="100%"
  15. :radius="15"
  16. mode="aspectFill"
  17. touchable
  18. @click="onPreviewImage(key)"
  19. />
  20. </view>
  21. </swiper-item>
  22. </swiper>
  23. </template>
  24. <script setup lang="ts">
  25. import { useSwiperImagePreview } from '@/common/composeabe/SwiperImagePreview';
  26. import Image from '@/components/basic/Image.vue';
  27. import type { PropType } from 'vue';
  28. const props = defineProps({
  29. images: {
  30. type: Array as PropType<string[]>,
  31. default: () => [],
  32. },
  33. })
  34. const { onPreviewImage } = useSwiperImagePreview(() => props.images || [])
  35. </script>
  36. <style lang="scss">
  37. .image-swiper {
  38. height: 400rpx;
  39. image {
  40. border-radius: 20rpx;
  41. }
  42. }
  43. </style>