item.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <script lang='ts' setup>
  2. import dayjs from 'dayjs'
  3. import { useUserStore } from '@/stores/modules/user'
  4. defineProps({
  5. item: Object as any,
  6. })
  7. const router = useRouter()
  8. const userStore = useUserStore()
  9. const { isLogin } = storeToRefs(userStore)
  10. const { openLoginModal } = useLoginModal()
  11. async function openFeaturedDetail(item: any) {
  12. if (!item.userEnable) {
  13. router.push({
  14. path: `/collections/${item.slug}`,
  15. })
  16. return
  17. }
  18. const { status } = await openLoginModal()
  19. if (status) {
  20. router.push({
  21. path: `/collections/${item.slug}`,
  22. query: {
  23. id: item.id,
  24. },
  25. })
  26. }
  27. }
  28. </script>
  29. <template>
  30. <div class="pos-relative cursor-pointer" @click="openFeaturedDetail(item)">
  31. <div v-if="!isLogin && item.userEnable" class="flex text-#666 items-center pos-absolute top-20px right-20px cursor-pointer">
  32. <svgo-lock class="!w-20px !h-20px ml-4px" />
  33. </div>
  34. <!-- <NuxtLink class="cursor-pointer" :to="{ name: 'collections-name', params: { name: item.title }, query: { id: item.id } }"> -->
  35. <img :src="item.thumbnailUrl" alt="" srcset="" class="w-680px b-rd-14px h-385px object-cover mr-100px">
  36. <div class="mt-28px">
  37. <div class="text-32px fw-700 line-clamp-2 text-#363C40 lh-40px custom-title-font">
  38. {{ item.title }}
  39. </div>
  40. <div class="flex mt-20px mb-24px text-#7C7C7C text-18px">
  41. <div class="mr-48px">
  42. {{ dayjs(item.createTime).format('MMMM D, YYYY') }}
  43. </div>
  44. <div>{{ item.merchandiseQuantity }} products</div>
  45. </div>
  46. <div class="text-18px lh-24px line-clamp-1 text-#666">
  47. {{ item.headImageText }}
  48. </div>
  49. </div>
  50. <!-- </NuxtLink> -->
  51. </div>
  52. </template>