index.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <route lang="json">
  2. { "style": { "navigationBarTitleText": "主页数据", "navigationBarBackgroundColor": "#fff" } }
  3. </route>
  4. <script setup lang="ts">
  5. import SectionHeading from '@/components/section-heading.vue'
  6. import {
  7. getDesignerInfo,
  8. getBrowseHistories,
  9. getReserveHistory,
  10. } from '../../../../core/libs/requests'
  11. import { useUserStore } from '../../../../store'
  12. import { storeToRefs } from 'pinia'
  13. import Card from '@/components/card.vue'
  14. import PageHelper from '@/components/page-helper.vue'
  15. import dayjs from 'dayjs'
  16. import PageHelperEvo from '@/components/page-helper-evo.vue'
  17. const userStore = useUserStore()
  18. const { userInfo } = storeToRefs(userStore)
  19. const { data, run: setData } = useRequest(() => getDesignerInfo(userInfo.value.userId))
  20. const info = computed(() => [
  21. { label: '分享', value: data.value?.shareCount || 0, unit: '次' },
  22. { label: '浏览', value: data.value?.viewCount || 0, unit: '次' },
  23. { label: '获客', value: data.value?.winCustomerCount || 0, unit: '人' },
  24. ])
  25. const tab = ref('分享')
  26. const tabs = ref([
  27. { label: '分享明细', value: '分享' },
  28. { label: '浏览明细', value: '浏览' },
  29. { label: '获客明细', value: '获客' },
  30. ])
  31. const current = ref('累计')
  32. const query = computed(() => ({}))
  33. onMounted(async () => {
  34. await setData()
  35. })
  36. </script>
  37. <template>
  38. <div class="flex-grow flex flex-col gap-5 px-3.5 py-6">
  39. <Card>
  40. <SectionHeading title="主页数据">
  41. <template #append>
  42. <div>
  43. <wd-segmented v-model:value="current" :options="['累计']"></wd-segmented>
  44. </div>
  45. </template>
  46. </SectionHeading>
  47. <div class="flex mt-7">
  48. <template v-for="(it, i) in info" :key="i">
  49. <div class="flex-1 flex flex-col items-center gap-2">
  50. <div class="flex items-end gap-0.5">
  51. <div class="text-black text-2xl font-medium font-['DIN'] leading-6">
  52. {{ it.value }}
  53. </div>
  54. <div class="text-[#333333] text-sm font-normal font-['PingFang_SC']">
  55. {{ it.unit }}
  56. </div>
  57. </div>
  58. <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
  59. {{ it.label }}
  60. </div>
  61. </div>
  62. </template>
  63. </div>
  64. </Card>
  65. <Card>
  66. <wd-tabs v-model="tab">
  67. <template v-for="(it, i) in tabs" :key="i">
  68. <wd-tab :title="it.label" :name="it.value"></wd-tab>
  69. </template>
  70. </wd-tabs>
  71. <template v-if="tab === '分享'">
  72. <PageHelper :request="getBrowseHistories" :query="{ bizType: 1 }">
  73. <template #default="{ source }">
  74. <template v-for="(it, i) in source.list" :key="i">
  75. <div class="py-4">
  76. <div class="flex">
  77. <div
  78. class="flex-1 text-black text-sm font-normal font-['PingFang_SC'] leading-normal"
  79. >
  80. <!-- 银色飞行船 -->
  81. {{ it.creatorName }}
  82. </div>
  83. <div
  84. class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal"
  85. >
  86. <!-- 浏览时长:{{ (Number(it.duration) / 60).toFixed(2) }}分钟 -->
  87. </div>
  88. </div>
  89. <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
  90. 分享时间:
  91. <!-- 2024/04/01 14:52 -->
  92. {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm') }}
  93. </div>
  94. </div>
  95. <div v-if="i < source.list.length - 1" class="bg-[#f6f6f6] h-.25"></div>
  96. </template>
  97. </template>
  98. </PageHelper>
  99. </template>
  100. <template v-if="tab === '浏览'">
  101. <PageHelper :request="getBrowseHistories" :query="query">
  102. <template #default="{ source }">
  103. <template v-for="(it, i) in source.list" :key="i">
  104. <div class="py-4">
  105. <div class="flex">
  106. <div
  107. class="flex-1 text-black text-sm font-normal font-['PingFang_SC'] leading-normal"
  108. >
  109. <!-- 银色飞行船 -->
  110. {{ it.creatorName }}
  111. </div>
  112. <div
  113. class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal"
  114. >
  115. 浏览时长:{{ (Number(it.duration) / 60).toFixed(2) }}分钟
  116. </div>
  117. </div>
  118. <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
  119. 查看时间:
  120. <!-- 2024/04/01 14:52 -->
  121. {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm') }}
  122. </div>
  123. </div>
  124. <div v-if="i < source.list.length - 1" class="bg-[#f6f6f6] h-.25"></div>
  125. </template>
  126. </template>
  127. </PageHelper>
  128. </template>
  129. <template v-if="tab === '获客'">
  130. <PageHelperEvo :request="getReserveHistory" :query="query">
  131. <template #default="{ source }">
  132. <template v-for="(it, i) in source.list" :key="i">
  133. <div class="py-4">
  134. <div class="flex gap-3">
  135. <div class="text-black text-sm font-normal font-['PingFang_SC'] leading-normal">
  136. <!-- 银色飞行船 -->
  137. {{ it.appointmentName }}
  138. </div>
  139. <div class="text-black text-sm font-normal font-['PingFang_SC'] leading-normal">
  140. <!-- 浏览时长:{{ (Number(it.duration) / 60).toFixed(2) }}分钟 -->
  141. {{ it.appointmentPhone }}
  142. </div>
  143. </div>
  144. <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
  145. 获客时间:
  146. <!-- 2024/04/01 14:52 -->
  147. {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm') }}
  148. </div>
  149. </div>
  150. <div v-if="i < source.list.length - 1" class="bg-[#f6f6f6] h-.25"></div>
  151. </template>
  152. </template>
  153. </PageHelperEvo>
  154. </template>
  155. </Card>
  156. </div>
  157. </template>