imagepreview.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <div class="nut-imagepreview">
  3. <nut-popup v-model="value">
  4. <nut-swiper class="nut-imagepreview-swiper" loop direction="horizontal" :swiperData="swiperData" @slideChangeEnd="slideChangeEnd">
  5. <div v-for="(item, index) in images" :key="index" class="nut-swiper-slide">
  6. <img :src="item.imgSrc" class="nut-imagepreview-img" />
  7. </div>
  8. </nut-swiper>
  9. <div class="nut-imagepreview-index">
  10. <nut-icon type="right" color="#fff" class="arrow" @click.native="$emit('close')" />
  11. {{ this.active }} / {{ this.images.length }}
  12. </div>
  13. </nut-popup>
  14. </div>
  15. </template>
  16. <script>
  17. export default {
  18. name: 'nut-imagepreview',
  19. props: {
  20. value: {
  21. type: Boolean,
  22. default: true,
  23. },
  24. images: {
  25. type: Array,
  26. default: () => [],
  27. },
  28. },
  29. watch: {
  30. value() {
  31. this.swiperData = [...this.images];
  32. },
  33. },
  34. data() {
  35. return {
  36. active: 1,
  37. swiperData: [],
  38. };
  39. },
  40. methods: {
  41. slideChangeEnd(page) {
  42. this.active = page;
  43. },
  44. },
  45. };
  46. </script>
  47. <style lang="scss"></style>