productRecommend.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <script lang='ts' setup>
  2. import { PageSizeEnum } from '~/enums/sizeEnum'
  3. import {
  4. getRecommendListOneApi,
  5. getRecommendListTwoApi,
  6. } from '~/api/model/goods'
  7. const props = defineProps({
  8. id: { type: String, default: '' },
  9. })
  10. watch(() => props.id, (mId: any) => {
  11. if (!mId)
  12. return
  13. getGoodsListOne({ mId })
  14. getGoodsListTwo({ mId })
  15. }, {
  16. immediate: true,
  17. })
  18. const goodsListOne = ref<any>([])
  19. const goodsListTwo = ref<any>([])
  20. async function getGoodsListOne(params?: any, pageNo = PageSizeEnum.PAGE, pageSize = 4) {
  21. const data: any = await getRecommendListOneApi({
  22. ...params,
  23. pageNo,
  24. pageSize,
  25. })
  26. goodsListOne.value = data.records
  27. }
  28. async function getGoodsListTwo(params?: any, pageNo = PageSizeEnum.PAGE, pageSize = 4) {
  29. const data: any = await getRecommendListTwoApi({
  30. ...params,
  31. pageNo,
  32. pageSize,
  33. })
  34. goodsListTwo.value = data.records
  35. }
  36. </script>
  37. <template>
  38. <div v-if="goodsListOne.length || goodsListTwo.length" class="w-1400px mx-auto mb-160px">
  39. <h2 class="!mb-60px fw-700 text-40px text-#363C40 text-center custom-title-font">
  40. Product recommendation
  41. </h2>
  42. <div class="grid grid-gap-66px grid-cols-4 mb-66px">
  43. <div v-for="item in goodsListOne" :key="item.id">
  44. <common-goods-item :item @update:login="goodsListOne" />
  45. </div>
  46. </div>
  47. <div class="grid grid-gap-66px grid-cols-4">
  48. <div v-for="item in goodsListTwo" :key="item.id">
  49. <common-goods-item :item @update:login="goodsListTwo" />
  50. </div>
  51. </div>
  52. </div>
  53. </template>
  54. <style lang='less' scoped>
  55. </style>