| 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>
 |