index.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <route lang="json">
  2. {
  3. "layout": "tabbar",
  4. "style": {
  5. "navigationBarTitleText": "消息",
  6. "navigationBarBackgroundColor": "#fff"
  7. }
  8. }
  9. </route>
  10. <script setup lang="ts">
  11. import Card from '@/components/card.vue'
  12. import PageHelper from '@/components/page-helper.vue'
  13. import { getMessages } from '../../core/libs/requests'
  14. import { integral, interact, system } from '../../core/libs/svgs'
  15. import { beforeNow } from '../../utils/date-util'
  16. import dayjs from 'dayjs'
  17. const tab = ref('integral')
  18. const tabs = ref([
  19. { label: '积分消息', value: 'integral' },
  20. { label: '系统消息', value: 'system' },
  21. { label: '互动消息', value: 'interact' },
  22. ])
  23. const msgs = ref({
  24. integral: [
  25. { title: '积分变动通知', createdAt: Date.now() },
  26. { title: '请确认积分', createdAt: '2023-05-05' },
  27. ],
  28. system: [
  29. {
  30. title: '新豪轩门窗入驻筑巢荟',
  31. createdAt: Date.now(),
  32. content: '新豪轩材料商加入筑巢荟,为筑巢荟设计师提供更好的材料和服务!',
  33. img: 'https://via.placeholder.com/279x164',
  34. },
  35. { title: '平台通知', createdAt: Date.now(), content: '有新的材料商入驻平台,点击查看!' },
  36. ],
  37. interact: [
  38. {
  39. title: '王磊回复了你',
  40. createdAt: Date.now(),
  41. content: '设计师李家豪刚刚点赞了你的设计圈点击前往查看',
  42. },
  43. {
  44. title: '李琳赞了你的设计圈',
  45. createdAt: Date.now(),
  46. content: '设计师李家豪刚刚点赞了你的设计圈点击前往查看',
  47. },
  48. ],
  49. })
  50. const messageTypes = ref([{}])
  51. </script>
  52. <template>
  53. <view class="flex-grow flex flex-col">
  54. <wd-tabs v-model="tab">
  55. <block v-for="({ label, value }, i) in tabs" :key="i">
  56. <wd-tab :title="`${label}`" :name="value"></wd-tab>
  57. </block>
  58. </wd-tabs>
  59. <PageHelper
  60. :request="() => ({ list: [] })"
  61. :query="{ messageType: '1' }"
  62. class="flex-grow flex flex-col"
  63. >
  64. <template #default="{ source }">
  65. <div class="p-3.5 gap-3.5 flex flex-col">
  66. <template v-for="(it, i) in source.list" :key="i">
  67. <Card>
  68. <div class="grid items-center grid-cols-[38px_auto_100px]">
  69. <div class="row-start-1 col-start-1">
  70. <div
  71. class="w-[30px] h-[30px] bg-neutral-100 rounded-full mr-2 flex items-center justify-center"
  72. >
  73. <wd-img
  74. width="18"
  75. height="18"
  76. :src="{ integral: integral, system: system, interact: interact }[tab]"
  77. ></wd-img>
  78. </div>
  79. </div>
  80. <div class="row-start-1 col-start-2 text-start">
  81. <div
  82. class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[30px]"
  83. >
  84. {{ it.title }}
  85. </div>
  86. </div>
  87. <div class="row-start-1 col-start-3 text-end">
  88. <div
  89. class="text-black/30 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"
  90. >
  91. {{ beforeNow(dayjs(it.createdAt).toDate()) }}
  92. </div>
  93. </div>
  94. <div class="row-start-2 col-start-2 col-end-4">
  95. <div
  96. class="my-3 text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[25px]"
  97. >
  98. {{ it.content }}
  99. </div>
  100. </div>
  101. <div v-if="it.img" class="row-start-3 col-start-2 col-end-4">
  102. <img class="w-[279px] h-[164px] rounded-md" :src="it.img" />
  103. </div>
  104. <div class="row-start-4 col-start-1 col-end-4 my-2">
  105. <div v-if="!it.img" class="bg-[#dadada] w-full h-[1px]"></div>
  106. </div>
  107. <div class="row-start-5 col-start-2 col-end-4">
  108. <div
  109. class="text-black/90 text-xs font-normal font-['PingFang_SC'] leading-[25px]"
  110. >
  111. 查看详情
  112. </div>
  113. </div>
  114. </div>
  115. </Card>
  116. </template>
  117. </div>
  118. </template>
  119. </PageHelper>
  120. </view>
  121. </template>
  122. <style scoped lang="scss"></style>