mixin.js 2.45 KB
import { directive, Swiper, SwiperSlide } from 'vue-awesome-swiper'
import {funMixin} from '../../config/mixin'
import 'swiper/css/swiper.css'
import api from '../../config/api'
import { mapGetters } from 'vuex'

export const commonMixin = {
  name: 'productList',
  mixins: [funMixin],
  props: {
    terminal: {
      type: Number,
      default: 4
    },
    typeId: {
      type: Number,
      default: 1
    },
    shopId: {
      type: Number,
      default: 0
    },
    componentContent: {
      type: Object
    }
  },
  components: {
    Swiper,
    SwiperSlide
  },
  directives: {
    swiper: directive
  },
  data () {
    return {
      productData: []
    }
  },
  watch: {
    'productNum': {
      handler(newVal, oldVal) {
        this.getData()
      },
      deep: true
    }
  },
  mounted() {
    this.getData(true)
  },
  computed: {
    ...mapGetters([
      'productNum'
    ]),
    swiper() {
      if(this.$refs.mySwiper){
        return this.$refs.mySwiper.$swiper
      }
    }
  },
  methods: {
    getData(isFirst) {
      const _ = this
      if (_.componentContent.productData.sourceType === '1') {
        if(_.componentContent.productData.productIdList && _.componentContent.productData.productIdList.length>0){
          this.beforeGetData()
          _.sendReq({
            url: `${api.getProducts}?page=1&pageSize=99&ids=${_.componentContent.productData.productIdList}`,
            method: 'GET'
          }, (proRes) => {
            _.afterGetData()
            _.productData = proRes.data.list
            if(isFirst){
              _.componentContent.productData.imgTextData = _.productData
            }
          },(err)=>{
            _.afterGetData()
          })
        } else {
          _.productData = []
        }
      } else if(_.componentContent.productData.sourceType === '2'){
        if(_.componentContent.productData.categoryId) {
          this.beforeGetData()
          _.sendReq({
            url: `${api.getProducts}?page=1&pageSize=99&classifyId=${_.componentContent.productData.categoryId}`,
            method: 'GET'
          }, (proRes) => {
            _.afterGetData()
            _.productData = proRes.data.list
            if(isFirst){
              _.componentContent.productData.imgTextData = _.productData
            }
            // _.swiper.update()
          },(err)=>{
            _.afterGetData()
          })
        } else {
          _.productData = {
            products:[]
          }
        }
      }
    },
  }
}