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

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: {
  //   'componentContent': {
  //     handler(newVal, oldVal) {
  //       this.getData()
  //     },
  //     deep: true
  //   }
  // },
  created() {
    this.getData(true)
  },
  computed: {
    swiper() {
      if(this.$refs.mySwiper){
        return this.$refs.mySwiper.$swiper
      }
    }
  },
  methods: {
    async getData(isFirst) {
      let params = {
        page: 1,
        pageSize: 99
      }
      if (this.componentContent.productData.sourceType === '1') {
        if(this.componentContent.productData.productIdList && this.componentContent.productData.productIdList.length>0){
          params.ids = `${this.componentContent.productData.productIdList}`
        } else {
          this.productData = []
          return
        }
      } else if(this.componentContent.productData.sourceType === '2'){
        if(this.componentContent.productData.categoryId) {
          params.classifyId = this.componentContent.productData.categoryId
        } else {
          this.productData = {
            products:[]
          }
          return
        }
      } else {
        return
      }
      const response = await getProducts(params)
      const res = response.data
      this.productData = res.data.list
      if(isFirst){
        this.componentContent.productData.imgTextData = this.productData
      }
    },
  }
}