products.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <script lang='ts' setup>
  2. import {
  3. getFeatureListApi,
  4. } from '~/api/model/feature'
  5. const list = ref<any>([])
  6. async function getFeatureList(pageNo = 1, pageSize = 4) {
  7. const params = {
  8. pageNo,
  9. pageSize,
  10. }
  11. const res: any = await getFeatureListApi(params)
  12. list.value = res.records
  13. }
  14. getFeatureList()
  15. </script>
  16. <template>
  17. <div class="pt-160px text-center">
  18. <h2 class="fw-600 text-40px text-#363C40 custom-title-font">
  19. Product Collections
  20. </h2>
  21. <div class="mt-20px w-500px mx-auto text-#999 text-16px lh-24px">
  22. Stay ahead with our selection of trending and exclusive products across various categories.
  23. </div>
  24. <div class="flex my-60px">
  25. <div class="pos-relative mr-20px">
  26. <img :src="list[0]?.thumbnailUrl" alt="" class="w-580px h-860px object-cover b-rd-20px" srcset="">
  27. <div class="pos-absolute bottom-0 w-100% p-20px">
  28. <div class="text-#fff text-left">
  29. <h3 class="fw-600 w-400px filterText text-26px !mb-10px custom-title-font">
  30. {{ list[0]?.title }}
  31. </h3>
  32. <div class="text-18px w-400px line-clamp-2 filterText mb-20px text-#d9d4cf lh-28px">
  33. {{ list[0]?.headImageText }}
  34. </div>
  35. </div>
  36. <NuxtLink v-if="list[0]" class="cursor-pointer" :to="{ name: 'collections-name', params: { name: list[0]?.slug } }">
  37. <svgo-arrowRight
  38. class="!w-40px !h-40px cursor-pointer hover-effect !fill-#fff text-16px"
  39. :filled="true"
  40. />
  41. </NuxtLink>
  42. </div>
  43. <img src="~/assets/images/decorate.png" class="w-384px h-128px pos-absolute top-0 right-6px" alt="" srcset="">
  44. </div>
  45. <div>
  46. <div class="pos-relative">
  47. <img :src="list[1]?.thumbnailUrl" alt="" class="w-800px h-406px object-cover b-rd-20px" srcset="">
  48. <div class="pos-absolute bottom-0 w-100% p-20px">
  49. <div class="text-#fff text-left">
  50. <h3 class="fw-600 w-600px filterText text-26px !mb-10px custom-title-font">
  51. {{ list[1]?.title }}
  52. </h3>
  53. <div class="text-18px w-400px filterText line-clamp-2 mb-20px text-#d9d4cf lh-28px">
  54. {{ list[1]?.headImageText }}
  55. </div>
  56. </div>
  57. <NuxtLink v-if="list[1]" class="cursor-pointer" :to="{ name: 'collections-name', params: { name: list[1]?.slug } }">
  58. <svgo-arrowRight
  59. class="!w-40px !h-40px cursor-pointer hover-effect !fill-#fff text-16px"
  60. :filled="true"
  61. />
  62. </NuxtLink>
  63. </div>
  64. </div>
  65. <div class="flex mt-20px">
  66. <div class="pos-relative mr-20px">
  67. <img :src="list[2]?.thumbnailUrl" alt="" class="w-390px h-434px object-cover b-rd-20px" srcset="">
  68. <div class="pos-absolute bottom-0 w-100% p-20px">
  69. <div class="text-#fff text-left">
  70. <h3 class="fw-500 w-400px filterText text-26px !mb-10px custom-title-font">
  71. {{ list[2]?.title }}
  72. </h3>
  73. <div class="text-18px w-280px line-clamp-2 filterText mb-20px text-#d9d4cf lh-28px">
  74. {{ list[2]?.headImageText }}
  75. </div>
  76. </div>
  77. <NuxtLink v-if="list[2]" class="cursor-pointer" :to="{ name: 'collections-name', params: { name: list[2]?.slug } }">
  78. <svgo-arrowRight
  79. class="!w-40px !h-40px cursor-pointer hover-effect !fill-#fff text-16px"
  80. :filled="true"
  81. />
  82. </NuxtLink>
  83. </div>
  84. </div>
  85. <div class="pos-relative">
  86. <img :src="list[3]?.thumbnailUrl" alt="" class="w-390px h-434px object-cover b-rd-20px" srcset="">
  87. <div class="pos-absolute bottom-0 w-100% p-20px">
  88. <div class="text-#fff text-left">
  89. <h3 class="fw-600 w-400px filterText text-26px mb-10px custom-title-font">
  90. {{ list[3]?.title }}
  91. </h3>
  92. <div class="text-18px w-280px line-clamp-2 filterText mb-20px text-#d9d4cf lh-28px">
  93. {{ list[3]?.headImageText }}
  94. </div>
  95. </div>
  96. <NuxtLink v-if="list[3]" class="cursor-pointer" :to="{ name: 'collections-name', params: { name: list[3]?.slug } }">
  97. <svgo-arrowRight
  98. class="!w-40px !h-40px cursor-pointer hover-effect !fill-#fff text-16px"
  99. :filled="true"
  100. />
  101. </NuxtLink>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="flex justify-center items-center">
  108. <NuxtLink to="/collections" class="flex justify-center items-center cursor-pointer">
  109. <div class="underline fw-600 text-#5B463E text-22px hover:text-#CC9879 custom-title-font">
  110. View All
  111. </div>
  112. <svgo-arrow class="!w-20px !h-20px ml-16px" />
  113. </NuxtLink>
  114. </div>
  115. </div>
  116. </template>
  117. <style lang='less' scoped>
  118. .filterText{
  119. filter: drop-shadow(2px 4px 6px black);
  120. }
  121. </style>