123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <route lang="json">
- { "style": { "navigationBarTitleText": "主页数据", "navigationBarBackgroundColor": "#fff" } }
- </route>
- <script setup lang="ts">
- import SectionHeading from '@/components/section-heading.vue'
- import {
- getDesignerInfo,
- getBrowseHistories,
- getReserveHistory,
- countThisYear,
- } from '../../../../core/libs/requests'
- import { useUserStore } from '../../../../store'
- import { storeToRefs } from 'pinia'
- import Card from '@/components/card.vue'
- import PageHelper from '@/components/page-helper.vue'
- import dayjs from 'dayjs'
- import PageHelperEvo from '@/components/page-helper-evo.vue'
- const userStore = useUserStore()
- const { userInfo } = storeToRefs(userStore)
- const current = ref('累计')
- const request =
- ref<
- () => Promise<IResData<{ shareCount: number; viewCount: number; winCustomerCount: number }>>
- >()
- const data = ref()
- const info = computed(() => [
- { label: '分享', value: data.value?.shareCount || 0, unit: '次' },
- { label: '浏览', value: data.value?.viewCount || 0, unit: '次' },
- { label: '获客', value: data.value?.winCustomerCount || 0, unit: '人' },
- ])
- const tab = ref('分享')
- const tabs = ref([
- { label: '分享明细', value: '分享' },
- { label: '浏览明细', value: '浏览' },
- { label: '获客明细', value: '获客' },
- ])
- const query = computed(() => ({}))
- const setData = async ({ value }) => {
- console.log(1111)
- console.log(value)
- request.value = {
- 累计: () =>
- getDesignerInfo(userInfo.value.userId).then((res) => ({
- code: res.code,
- msg: res.msg,
- data: {
- shareCount: res.data.shareCount,
- viewCount: res.data.viewCount,
- winCustomerCount: res.data.winCustomerCount,
- },
- })),
- 本年: () =>
- countThisYear({ userId: userInfo.value.userId, year: new Date().getFullYear() }).then(
- (res) => ({
- code: res.code,
- msg: res.msg,
- data: {
- shareCount: res.data.find((it) => String(it.bizType) === '1')?.quantity || 0,
- viewCount: res.data.find((it) => String(it.bizType) === '3')?.quantity || 0,
- winCustomerCount: res.data.find((it) => String(it.bizType) === '2')?.quantity || 0,
- },
- }),
- ),
- }[value]
- const { data: resData } = await request.value()
- data.value = resData
- console.log(data.value)
- }
- onMounted(async () => {
- console.log(1111)
- await setData({ value: current.value })
- console.log(data.value)
- // await countThisYear({ userId: userInfo.value.userId, year: new Date().getFullYear() })
- })
- </script>
- <template>
- <div class="flex-grow flex flex-col gap-5 px-3.5 py-6">
- <Card>
- <SectionHeading title="主页数据">
- <template #append>
- <div>
- <wd-segmented
- v-model:value="current"
- :options="['累计', '本年']"
- @change="setData"
- ></wd-segmented>
- </div>
- </template>
- </SectionHeading>
- <div class="flex mt-7">
- <template v-for="(it, i) in info" :key="i">
- <div class="flex-1 flex flex-col items-center gap-2">
- <div class="flex items-end gap-0.5">
- <div class="text-black text-2xl font-medium font-['DIN'] leading-6">
- {{ it.value }}
- </div>
- <div class="text-[#333333] text-sm font-normal font-['PingFang_SC']">
- {{ it.unit }}
- </div>
- </div>
- <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
- {{ it.label }}
- </div>
- </div>
- </template>
- </div>
- </Card>
- <Card>
- <wd-tabs v-model="tab">
- <template v-for="(it, i) in tabs" :key="i">
- <wd-tab :title="it.label" :name="it.value"></wd-tab>
- </template>
- </wd-tabs>
- <template v-if="tab === '分享'">
- <PageHelper :request="getBrowseHistories" :query="{ bizType: 1 }">
- <template #default="{ source }">
- <template v-for="(it, i) in source.list" :key="i">
- <div class="py-4">
- <div class="flex">
- <div
- class="flex-1 text-black text-sm font-normal font-['PingFang_SC'] leading-normal"
- >
- <!-- 银色飞行船 -->
- {{ it.creatorName }}
- </div>
- <div
- class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal"
- >
- <!-- 浏览时长:{{ (Number(it.duration) / 60).toFixed(2) }}分钟 -->
- </div>
- </div>
- <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
- 分享时间:
- <!-- 2024/04/01 14:52 -->
- {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm') }}
- </div>
- </div>
- <div v-if="i < source.list.length - 1" class="bg-[#f6f6f6] h-.25"></div>
- </template>
- </template>
- </PageHelper>
- </template>
- <template v-if="tab === '浏览'">
- <PageHelper :request="getBrowseHistories" :query="query">
- <template #default="{ source }">
- <template v-for="(it, i) in source.list" :key="i">
- <div class="py-4">
- <div class="flex">
- <div
- class="flex-1 text-black text-sm font-normal font-['PingFang_SC'] leading-normal"
- >
- <!-- 银色飞行船 -->
- {{ it.creatorName }}
- </div>
- <div
- class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal"
- >
- 浏览时长:{{ (Number(it.duration) / 60).toFixed(2) }}分钟
- </div>
- </div>
- <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
- 查看时间:
- <!-- 2024/04/01 14:52 -->
- {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm') }}
- </div>
- </div>
- <div v-if="i < source.list.length - 1" class="bg-[#f6f6f6] h-.25"></div>
- </template>
- </template>
- </PageHelper>
- </template>
- <template v-if="tab === '获客'">
- <PageHelperEvo :request="getReserveHistory" :query="query">
- <template #default="{ source }">
- <template v-for="(it, i) in source.list" :key="i">
- <div class="py-4">
- <div class="flex gap-3">
- <div class="text-black text-sm font-normal font-['PingFang_SC'] leading-normal">
- <!-- 银色飞行船 -->
- {{ it.appointmentName }}
- </div>
- <div class="text-black text-sm font-normal font-['PingFang_SC'] leading-normal">
- <!-- 浏览时长:{{ (Number(it.duration) / 60).toFixed(2) }}分钟 -->
- {{ it.appointmentPhone }}
- </div>
- </div>
- <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
- 获客时间:
- <!-- 2024/04/01 14:52 -->
- {{ dayjs(it.createTime).format('YYYY/MM/DD HH:mm') }}
- </div>
- </div>
- <div v-if="i < source.list.length - 1" class="bg-[#f6f6f6] h-.25"></div>
- </template>
- </template>
- </PageHelperEvo>
- </template>
- </Card>
- </div>
- </template>
|