index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <route lang="yaml">
  2. style:
  3. navigationStyle: custom
  4. navigationBarTitleText: 游学日程
  5. </route>
  6. <script setup lang="ts">
  7. import TiltedButton from '@/components/tilted-button.vue'
  8. import { getMyStudyTours, getSchedule, getUserInfo } from '../../../core/libs/requests'
  9. import { camera, map } from '../../../core/libs/svgs'
  10. import { useUserStore } from '../../../store'
  11. import { storeToRefs } from 'pinia'
  12. import { group } from 'radash'
  13. import dayjs from 'dayjs'
  14. import NavbarEvo from '@/components/navbar-evo.vue'
  15. const userStore = useUserStore()
  16. const { userInfo } = storeToRefs(userStore)
  17. const { data, run } = useRequest(() => getMyStudyTours(), { initialData: [] })
  18. onMounted(() => {
  19. run()
  20. })
  21. </script>
  22. <template>
  23. <view class="">
  24. <NavbarEvo transparent dark></NavbarEvo>
  25. <view class="bg-black w-full pos-relative aspect-[1.26/1]">
  26. <!-- <wd-img width="100%" height="100%" :src="data?.cover" /> -->
  27. <div
  28. class="w-[375px] h-[90px] bg-gradient-to-t from-black to-black/0 absolute left-0 bottom-0 w-full flex items-center"
  29. >
  30. <view class="mx-7">
  31. <wd-button plain custom-class="bg-transparent! border-white! text-white!">
  32. 02:30
  33. </wd-button>
  34. </view>
  35. </div>
  36. </view>
  37. <view class="bg-white relative bottom-4 rounded-t-2xl p-6.5">
  38. <template v-for="(it, i) in data" :key="i">
  39. <view class="border-b border-black/10 border-b-solid pb-5">
  40. <div class="text-black/90 text-2xl font-normal font-['PingFang_SC'] leading-normal">
  41. {{ it.name }}
  42. </div>
  43. <template
  44. v-for="(date, index) in group(it.studyTravelDOList, (it) =>
  45. dayjs(it.travelTime).format('YYYY-MM-DD'),
  46. )"
  47. :key="index"
  48. >
  49. <view class="flex mt-5">
  50. <wd-img
  51. custom-class="rounded-full overflow-hidden mr-1"
  52. width="22"
  53. height="22"
  54. :src="userInfo?.avatar"
  55. />
  56. <div class="text-black/40 text-base font-normal font-['PingFang_SC'] leading-normal">
  57. {{ userInfo?.nickname }}
  58. </div>
  59. <div
  60. class="flex text-black/40 text-base font-normal font-['PingFang_SC'] leading-normal"
  61. >
  62. <view class="mx-3.5">|</view>
  63. <!-- 6月26日 第二天 -->
  64. {{
  65. // Object.keys(
  66. // group(it.studyTravelDOList, (it) => dayjs(it.travelTime).format('YYYY-MM-DD')),
  67. // )
  68. dayjs(date.at(i).travelTime).format('MM月DD日')
  69. }}
  70. </div>
  71. </view>
  72. <template v-for="(item, itemIndex) in date" :key="itemIndex">
  73. <view class="grid grid-gap-2 mt-8">
  74. <view class="col-start-1 row-start-1 flex items-center justify-center">
  75. <view
  76. class="w-[27px] h-[27px] bg-[#f6f6f6] rounded-full flex justify-center items-center"
  77. >
  78. <wd-img width="16" height="16" :src="map"></wd-img>
  79. </view>
  80. </view>
  81. <view class="col-start-2 row-start-1 flex">
  82. <div
  83. class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-normal mr-5"
  84. >
  85. {{ dayjs(item.travelTime).format('HH:mm') }}
  86. </div>
  87. <div
  88. class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-normal"
  89. >
  90. {{ item.title }}
  91. </div>
  92. </view>
  93. <view class="col-start-2 row-start-2 border-b border-black/10 border-b-solid pb-5">
  94. <div class="">
  95. <span
  96. class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-[23px]"
  97. >
  98. 行程介绍:
  99. </span>
  100. <span
  101. class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[23px]"
  102. v-html="item.travelDesc"
  103. ></span>
  104. </div>
  105. <view class="flex items-center my-4">
  106. <wd-img width="16" height="16" :src="camera"></wd-img>
  107. <div
  108. class="ml-1 text-black/90 text-xs font-normal font-['PingFang_SC'] leading-normal"
  109. >
  110. 打卡示例
  111. </div>
  112. </view>
  113. <img class="w-[285px] h-[157px] rounded-lg" :src="item.clockExplainUrl" />
  114. <div
  115. class="mt-2.5 text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal"
  116. >
  117. {{ item.clockExplainDesc }}
  118. </div>
  119. </view>
  120. </view>
  121. </template>
  122. <!-- <template v-for="(it, index) in data.items" :key="index">
  123. </template> -->
  124. </template>
  125. </view>
  126. </template>
  127. </view>
  128. <!-- <div
  129. class="mx-3.5 p-3.5 bg-white/90 rounded-2xl backdrop-blur-[20px] fixed bottom-4 left-0 right-0 flex items-center justify-between"
  130. >
  131. <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[34px]">
  132. 发布圈子可得
  133. </div>
  134. <div class="text-[#ef4343] text-[22px] font-normal font-['D-DIN Exp'] leading-normal">
  135. 16000
  136. </div>
  137. <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[34px]">积分</div>
  138. <view class="flex-1"></view>
  139. <view>
  140. <TiltedButton size="large" custom-class="">
  141. <view class="px-3">发圈子</view>
  142. </TiltedButton>
  143. </view>
  144. </div> -->
  145. </view>
  146. </template>