|
@@ -15,6 +15,7 @@ import { getFollowUpPage } from '@/core/libs/agent-requests'
|
|
|
import { locationIcon } from '@designer-hub/assets/src/svgs'
|
|
|
import { dayjs } from 'wot-design-uni'
|
|
|
import PageHelperEvo from '@/components/page-helper-evo.vue'
|
|
|
+import ListHelperEvo from '@/components/list-helper-evo.vue'
|
|
|
|
|
|
const userStore = useUserStore()
|
|
|
const { userInfo } = storeToRefs(userStore)
|
|
@@ -22,8 +23,21 @@ const { data: agent, run: setAgent } = useRequest(() =>
|
|
|
getBroker({ brokerId: String(userInfo.value.userId) }),
|
|
|
)
|
|
|
const { data: yearTarget, run: setYearTarget } = useRequest(() => getYearTarget())
|
|
|
-const { data: designerData, run: setdesignerData } = useRequest(() => getDesignerStatistics())
|
|
|
+const { data: designerData, run: setDesignerData } = useRequest(() => getDesignerStatistics())
|
|
|
const { data: followData, run: setFollowData } = useRequest(() => getFollowStatistics())
|
|
|
+const designerDataList = computed(() =>
|
|
|
+ designerData.value
|
|
|
+ ?.filter((it: any) => it.type !== 2)
|
|
|
+ .map((it: any, index: number) => ({
|
|
|
+ title: it.typeName,
|
|
|
+ value: it.quantity ?? 0,
|
|
|
+ subTitle: index === 0 ? designerData.value[1].typeName : '占比',
|
|
|
+ subValue:
|
|
|
+ index === designerData.value[1].quantity
|
|
|
+ ? 0
|
|
|
+ : `${((it.quantity / designerData.value[0].quantity) * 100).toFixed(0)}%`,
|
|
|
+ })),
|
|
|
+)
|
|
|
const bgClass = [
|
|
|
'bg-gradient-to-r from-[#fef3ee] to-[#f0f4f9]',
|
|
|
'bg-gradient-to-r from-[#fef8ee] to-[#f0f4f9]',
|
|
@@ -38,7 +52,7 @@ const toInvite = () => {
|
|
|
}
|
|
|
onMounted(async () => {
|
|
|
await setAgent()
|
|
|
- await Promise.all([setYearTarget(), setdesignerData(), setFollowData()])
|
|
|
+ await Promise.all([setYearTarget(), setDesignerData(), setFollowData()])
|
|
|
})
|
|
|
</script>
|
|
|
<template>
|
|
@@ -171,25 +185,32 @@ onMounted(async () => {
|
|
|
</Card>
|
|
|
<Card>
|
|
|
<SectionHeading title="设计师数据" size="base"></SectionHeading>
|
|
|
- <div class="mt-3 grid grid-cols-3 gap-2.5">
|
|
|
- <template v-for="(it, i) in designerData" :key="i">
|
|
|
- <div class="bg-[#f6f7ff] rounded-lg aspect-[1/1] flex flex-col justify-around p-2.5">
|
|
|
- <div class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
|
|
|
- {{ it.typeName }}
|
|
|
- </div>
|
|
|
- <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
|
|
|
- {{ it.quantity }}
|
|
|
- </div>
|
|
|
- <div class="flex items-center gap-1">
|
|
|
- <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none">
|
|
|
- 年新增
|
|
|
+ <div class="mt-3">
|
|
|
+ <ListHelperEvo
|
|
|
+ v-if="designerDataList.length"
|
|
|
+ :items="designerDataList"
|
|
|
+ content-class="grid grid-cols-3 gap-2.5"
|
|
|
+ >
|
|
|
+ <template #default="{ item }">
|
|
|
+ <div class="bg-[#f6f7ff] rounded-lg aspect-[1/1] flex flex-col justify-around p-2.5">
|
|
|
+ <div class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
|
|
|
+ {{ item.title }}
|
|
|
</div>
|
|
|
- <div class="text-[#ff2d2d] text-xs font-normal font-['D-DIN Exp'] leading-normal">
|
|
|
- 20
|
|
|
+ <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
|
|
|
+ {{ item.value }}
|
|
|
+ </div>
|
|
|
+ <div class="flex items-center gap-1">
|
|
|
+ <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none">
|
|
|
+ {{ item.subTitle }}
|
|
|
+ </div>
|
|
|
+ <div class="text-[#ff2d2d] text-xs font-normal font-['D-DIN Exp'] leading-normal">
|
|
|
+ {{ item.subValue }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
+ </template>
|
|
|
+ </ListHelperEvo>
|
|
|
+ <!-- <template v-for="(it, i) in designerData" :key="i"></template>-->
|
|
|
</div>
|
|
|
</Card>
|
|
|
<Card>
|