hot-activity-item.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <script lang="ts" setup>
  2. import dayjs from 'dayjs'
  3. import { Activity, StudyTour } from '../core/libs/models'
  4. import TiltedButton from './tilted-button.vue'
  5. import ActivityCountDown from '@/pages/home/components/activity-count-down.vue'
  6. import ButtonEvo from './button-evo.vue'
  7. import { useRouter } from '../core/utils/router'
  8. withDefaults(defineProps<{ options?: StudyTour | Activity; type?: 'studyTour' | 'activity' }>(), {})
  9. const router = useRouter()
  10. </script>
  11. <template>
  12. <view class="relative w-full h-full box-border flex m-a">
  13. <view class="w-full h-full flex flex-col justify-between pt-14 box-border px-3.5">
  14. <!-- <view class="flex"></view> -->
  15. <div class="w-[321px] h-[88px] relative">
  16. <div class="w-[94px] h-3 left-[185px] top-[64px] absolute">
  17. <div
  18. class="left-0 top-0 absolute text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[34px] flex items-center"
  19. >
  20. <!-- 07.15 08.10 -->
  21. {{ dayjs(options?.studyStartTime || options?.planStudyStartTime).format('MM.DD') }}
  22. <wd-icon name="play" size="22px"></wd-icon>
  23. {{ dayjs(options?.studyEndTime || options?.planStudyEndTime).format('MM.DD') }}
  24. </div>
  25. </div>
  26. <wd-img
  27. custom-class="w-[110px] h-[88px] left-0 top-0 absolute rounded-[10px] overflow-hidden vertical-bottom"
  28. :src="options?.thumbnailUrl"
  29. mode="scaleToFill"
  30. />
  31. <div
  32. class="w-[202px] left-[119px] top-0 absolute text-black text-base font-normal font-['PingFang_SC'] leading-relaxed"
  33. >
  34. <!-- 活动预告 | 日本研学·东京艺术大学设计游学 -->
  35. {{ options?.name }}
  36. </div>
  37. <div
  38. class="left-[119px] top-[64px] absolute text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[34px]"
  39. >
  40. 游学时间:
  41. </div>
  42. </div>
  43. <view class="flex items-center justify-between mb-1.5">
  44. <ActivityCountDown
  45. :start-at="options?.applyStartTime"
  46. :end-at="options?.applyEndTime"
  47. ></ActivityCountDown>
  48. <div>
  49. <ButtonEvo
  50. size="md"
  51. @click="router.push(`/pages/home/activity/detail/index?id=${options?.id}&type=${type}`)"
  52. >
  53. 立即报名
  54. </ButtonEvo>
  55. </div>
  56. </view>
  57. </view>
  58. </view>
  59. </template>