| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | <template>  <div class="shop"  :class="'terminal' + terminal">    <swiper class="swiper" :indicator-dots="false" :autoplay="true" @change="swiperChange">      <swiper-item class="shop-item" v-for="(item,index) in imgList" :key="index">        <div class="shop-item-warp">          <img class="img" :src="item.img" mode="widthFix">          <div class="a-link" @click="jumpLink(item.linkObj)">            进店逛逛<i class="iconfont icon-arrow-right"></i>          </div>        </div>      </swiper-item>    </swiper>    <view class="swiper-dots" v-if="imgList && imgList.length">      <text class="dot" :class="index === swiperCurrent  && 'dot-active'" v-for="(dot, index) in imgList.length"            :key="index"></text>    </view>  </div></template><script>// import { directive, Swiper, SwiperSlide } from 'vue-awesome-swiper'// import 'swiper/css/swiper.css'import {funMixin} from '../config/mixin'export default {  name: 'shop',  mixins: [funMixin],  data () {    return {      swiperCurrent: 0,    }  },  methods:{    swiperChange(e) {      this.swiperCurrent = e.detail.current;    }  },  props: {    terminal: {      type: Number,      default: 4    },    componentContent: {      type: Object    }  },  // components: {  //   Swiper,  //   SwiperSlide  // },  // directives: {  //   swiper: directive  // },  computed: {    imgList: function () {      return this.componentContent.imgTextData.filter(function (item) {        return item.img      })    }  }}</script><style lang="scss" scoped>.shop{  position: relative;  .swiper{    height: 460upx;  }  &-item{    &-warp{      position: relative;      padding: 0 20upx;      .img{        width: 100%;        height: 420upx;      }      .a-link{        width: 220upx;        height: 80upx;        line-height: 80upx;        background: linear-gradient(225deg, #585858 0%, #333333 100%);        box-shadow: 0px 20upx 40upx rgba(0, 0, 0, 0.3);        display: block;        color: #fff;        font-size: 28upx;        text-align: center;        position: absolute;        right: 0;        bottom: 30upx;        .icon{          margin-left: 20upx;        }      }    }  }  //.pagination{  //  display: flex;  //  justify-content: center;  //  padding:20upx 0;  //  ::v-deep .swiper-pagination-bullet{  //    width: 12upx;  //    height: 12upx;  //    background: #333333;  //    border-radius: 50%;  //    opacity: 0.2;  //    margin: 0 10upx;  //  }  //  ::v-deep .swiper-pagination-bullet-active{  //    width: 24upx;  //    height: 12upx;  //    background: #333333;  //    opacity: 1;  //    border-radius: 8upx;  //  }  //}  //::v-deep .uni-swiper-dots{  //  display: flex;  //  justify-content: center;  //  padding: 0upx 0;  //  .uni-swiper-dot{  //    width: 10upx;  //    height: 10upx;  //    background: #333333;  //    opacity: 0.3;  //    border-radius: 5upx;  //    margin: 0 5upx;  //    &-active{  //      width: 20upx;  //      height: 10upx;  //      opacity: 1;  //    }  //  }  //}  .swiper-dots {    display: flex;    position: absolute;    left: 50%;    transform: translateX(-50%);    bottom: 15rpx;    z-index: 66;    .dot {      width: 10upx;      height: 10upx;      background: #333333;      opacity: 0.3;      border-radius: 5upx;      margin: 0 10upx;    }    .dot-active {      width: 20upx;      opacity: 1;    }  }}</style>
 |