|
@@ -7,7 +7,15 @@ style:
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
import NavbarEvo from '@/components/navbar-evo.vue'
|
|
import NavbarEvo from '@/components/navbar-evo.vue'
|
|
-import { getFollowUpPage, getUserInfoById } from '../../../core/libs/agent-requests'
|
|
|
|
|
|
+import {
|
|
|
|
+ getFollowUpPage,
|
|
|
|
+ getPointsCounts,
|
|
|
|
+ getUserInfoById,
|
|
|
|
+ getPointsOrders,
|
|
|
|
+ getBrowseRecordCount,
|
|
|
|
+ getBrowseRecords,
|
|
|
|
+ getBrowseRecordRemarks,
|
|
|
|
+} from '@/core/libs/agent-requests'
|
|
import {
|
|
import {
|
|
desinTopBg,
|
|
desinTopBg,
|
|
rightArrowIcon,
|
|
rightArrowIcon,
|
|
@@ -21,13 +29,13 @@ import {
|
|
import PageHelperEvo from '@/components/page-helper-evo.vue'
|
|
import PageHelperEvo from '@/components/page-helper-evo.vue'
|
|
import { dayjs } from 'wot-design-uni'
|
|
import { dayjs } from 'wot-design-uni'
|
|
import { toHomePage } from '@/core/libs/actions'
|
|
import { toHomePage } from '@/core/libs/actions'
|
|
-import arcBottom from '@designer-hub/assets/src/libs/assets/arcBottom'
|
|
|
|
|
|
+import arcBottomBlue from '@designer-hub/assets/src/libs/assets/arcBottomBlue'
|
|
import { useMemberLevelsStore } from '@/store/member-levles'
|
|
import { useMemberLevelsStore } from '@/store/member-levles'
|
|
-import TaskCard from '@/pages/agent/components/task-card.vue'
|
|
|
|
-import {getDesignerPointsActivities, getPointsOrders} from '@/core/libs/requests'
|
|
|
|
|
|
+import { getDesignerPointsActivities } from '@/core/libs/requests'
|
|
import { useUserStore } from '@/store'
|
|
import { useUserStore } from '@/store'
|
|
import { storeToRefs } from 'pinia'
|
|
import { storeToRefs } from 'pinia'
|
|
import Card from '@designer-hub/app/src/components/card.vue'
|
|
import Card from '@designer-hub/app/src/components/card.vue'
|
|
|
|
+import ListHelperEvo from '@/components/list-helper-evo.vue'
|
|
|
|
|
|
const userStore = useUserStore()
|
|
const userStore = useUserStore()
|
|
const { userInfo } = storeToRefs(userStore)
|
|
const { userInfo } = storeToRefs(userStore)
|
|
@@ -44,7 +52,56 @@ const tabs = ref([
|
|
])
|
|
])
|
|
const status = ref({ '0': '已报名', '1': '已完成', '2': '未核销', '3': '已取消', '4': '待交付' })
|
|
const status = ref({ '0': '已报名', '1': '已完成', '2': '未核销', '3': '已取消', '4': '待交付' })
|
|
const followUpQuery = ref({})
|
|
const followUpQuery = ref({})
|
|
-const pointsActivitiesQuery = computed(() => ({ brokerId: userInfo.value.userId }))
|
|
|
|
|
|
+const { data: browseRecordCount, run: setBrowseRecordCount } = useRequest(() =>
|
|
|
|
+ getBrowseRecordCount(id.value),
|
|
|
|
+)
|
|
|
|
+const browseRecordCountItems = computed(() => [
|
|
|
|
+ {
|
|
|
|
+ title: '打开次数',
|
|
|
|
+ subTitle: '最近',
|
|
|
|
+ value: browseRecordCount.value?.openNumber ?? 0,
|
|
|
|
+ subValue: browseRecordCount.value?.openTime
|
|
|
|
+ ? dayjs(browseRecordCount.value.openTime).format('YY/MM/DD')
|
|
|
|
+ : '暂无',
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '浏览时长',
|
|
|
|
+ subTitle: '本年',
|
|
|
|
+ value: browseRecordCount.value?.duration ?? 0,
|
|
|
|
+ subValue: browseRecordCount.value?.durationYear ?? 0,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '发圈次数',
|
|
|
|
+ subTitle: '本年',
|
|
|
|
+ value: browseRecordCount.value?.circleNumber ?? 0,
|
|
|
|
+ subValue: browseRecordCount.value?.circleNumberYear ?? 0,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '主页分享数',
|
|
|
|
+ subTitle: '本年',
|
|
|
|
+ value: browseRecordCount.value?.homeShareNumber ?? 0,
|
|
|
|
+ subValue: browseRecordCount.value?.homeShareNumberYear ?? 0,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '分享浏览数',
|
|
|
|
+ subTitle: '本年',
|
|
|
|
+ value: browseRecordCount.value?.shareViewNumber ?? 0,
|
|
|
|
+ subValue: browseRecordCount.value?.shareViewNumberYear ?? 0,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ title: '分享获客数',
|
|
|
|
+ subTitle: '本年',
|
|
|
|
+ value: browseRecordCount.value?.customersAcquired ?? 0,
|
|
|
|
+ subValue: browseRecordCount.value?.customersAcquiredYear ?? 0,
|
|
|
|
+ },
|
|
|
|
+])
|
|
|
|
+const recentActivities = computed(() => [
|
|
|
|
+ { label: '最近浏览品牌', value: '' },
|
|
|
|
+ { label: '最近到店品牌', value: '' },
|
|
|
|
+ { label: '最近浏览游学', value: '' },
|
|
|
|
+ { label: '最近浏览活动', value: '' },
|
|
|
|
+])
|
|
|
|
+const pointsActivitiesQuery = computed(() => ({ stylistId: id.value }))
|
|
const toPointsDetails = () => {
|
|
const toPointsDetails = () => {
|
|
uni.navigateTo({ url: `/pages/agent/designer/points/index?id=${id.value}` })
|
|
uni.navigateTo({ url: `/pages/agent/designer/points/index?id=${id.value}` })
|
|
}
|
|
}
|
|
@@ -54,9 +111,10 @@ const toOrderDetails = (it: any) => {
|
|
const toArchives = () => {
|
|
const toArchives = () => {
|
|
uni.navigateTo({ url: '/pages/agent/designer/archives/index?id=' + id.value })
|
|
uni.navigateTo({ url: '/pages/agent/designer/archives/index?id=' + id.value })
|
|
}
|
|
}
|
|
-onLoad((query) => {
|
|
|
|
|
|
+onLoad(async (query) => {
|
|
id.value = query?.id
|
|
id.value = query?.id
|
|
- setData()
|
|
|
|
|
|
+ await setData()
|
|
|
|
+ await Promise.all([setBrowseRecordCount()])
|
|
})
|
|
})
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -83,15 +141,15 @@ onLoad((query) => {
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<wd-img
|
|
<wd-img
|
|
- v-if="data.levelId"
|
|
|
|
|
|
+ v-if="data?.levelId"
|
|
width="63"
|
|
width="63"
|
|
height="18.6"
|
|
height="18.6"
|
|
- :src="getMemberLevelLogo(data.levelId)"
|
|
|
|
|
|
+ :src="getMemberLevelLogo(data?.levelId)"
|
|
></wd-img>
|
|
></wd-img>
|
|
</div>
|
|
</div>
|
|
<div
|
|
<div
|
|
class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-snug flex items-center"
|
|
class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-snug flex items-center"
|
|
- @click="toHomePage(id.value)"
|
|
|
|
|
|
+ @click="toHomePage(id)"
|
|
>
|
|
>
|
|
<div>个人主页</div>
|
|
<div>个人主页</div>
|
|
<wd-img width="13" height="13" :src="rightArrowIcon"></wd-img>
|
|
<wd-img width="13" height="13" :src="rightArrowIcon"></wd-img>
|
|
@@ -113,7 +171,7 @@ onLoad((query) => {
|
|
<div>
|
|
<div>
|
|
<div class="flex items-center justify-around">
|
|
<div class="flex items-center justify-around">
|
|
<template v-for="(it, i) in tabs" :key="i">
|
|
<template v-for="(it, i) in tabs" :key="i">
|
|
- <div class="flex flex-col items-center gap-1" @click="active = it.value">
|
|
|
|
|
|
+ <div class="flex flex-col items-center gap-0" @click="active = it.value">
|
|
<div
|
|
<div
|
|
class="text-center font-normal font-['PingFang_SC'] visible"
|
|
class="text-center font-normal font-['PingFang_SC'] visible"
|
|
:class="`${it.value === active ? 'text-black text-lg leading-relaxed ' : 'text-black/60 text-base leading-normal'}`"
|
|
:class="`${it.value === active ? 'text-black text-lg leading-relaxed ' : 'text-black/60 text-base leading-normal'}`"
|
|
@@ -124,7 +182,7 @@ onLoad((query) => {
|
|
:style="{ visibility: it.value === active ? 'visible' : 'hidden' }"
|
|
:style="{ visibility: it.value === active ? 'visible' : 'hidden' }"
|
|
width="17"
|
|
width="17"
|
|
height="5.6"
|
|
height="5.6"
|
|
- :src="arcBottom"
|
|
|
|
|
|
+ :src="arcBottomBlue"
|
|
></wd-img>
|
|
></wd-img>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -144,38 +202,33 @@ onLoad((query) => {
|
|
<wd-icon size="12" name="arrow-right" color="rgba(0,0,0,.3)"></wd-icon>
|
|
<wd-icon size="12" name="arrow-right" color="rgba(0,0,0,.3)"></wd-icon>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="mt-3 grid grid-cols-3 gap-2.5">
|
|
|
|
- <template
|
|
|
|
- v-for="{ name, value } of [
|
|
|
|
- { name: '当前剩余积分', des: '最近', value: 220 },
|
|
|
|
- { name: '累计获得积分', des: '本年', value: 220 },
|
|
|
|
- { name: '累计消耗积分', des: '本年', value: 220 },
|
|
|
|
- { name: '累计跟进次数', des: '本年', value: 220 },
|
|
|
|
- { name: '累计消耗次数', des: '本年', value: 220 },
|
|
|
|
- { name: '累计获得次数', des: '本年', value: 220 },
|
|
|
|
- ]"
|
|
|
|
- :key="name"
|
|
|
|
- >
|
|
|
|
- <div class="rounded-lg aspect-[1/1] flex flex-col justify-around p-2.5">
|
|
|
|
|
|
+ <div class="mt-2 w-full h-.25 bg-[#f9f9f9]"></div>
|
|
|
|
+ <ListHelperEvo
|
|
|
|
+ :request="getPointsCounts"
|
|
|
|
+ :query="{ userId: id }"
|
|
|
|
+ content-class="grid grid-cols-3 gap-7 py-4"
|
|
|
|
+ >
|
|
|
|
+ <template #default="{ item }">
|
|
|
|
+ <div class="rounded-lg aspect-[1/1] flex flex-col justify-around">
|
|
<div class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
|
|
<div class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
|
|
- {{ name }}
|
|
|
|
|
|
+ {{ item.title }}
|
|
</div>
|
|
</div>
|
|
- <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
|
|
|
|
- {{ value }}
|
|
|
|
|
|
+ <div class="text-black/90 text-lg font-bold font-['D-DIN_Exp'] leading-normal">
|
|
|
|
+ {{ item.value }}
|
|
</div>
|
|
</div>
|
|
<div class="flex items-center gap-1">
|
|
<div class="flex items-center gap-1">
|
|
<div
|
|
<div
|
|
class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
|
|
class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
|
|
>
|
|
>
|
|
- 年新增
|
|
|
|
|
|
+ {{ item.subTitle }}
|
|
</div>
|
|
</div>
|
|
- <div class="text-black/90 text-xs font-normal font-['D-DIN Exp'] leading-norma">
|
|
|
|
- 20
|
|
|
|
|
|
+ <div class="text-black/90 text-xs font-normal font-['D-DIN_Exp'] leading-norma">
|
|
|
|
+ {{ item.subValue }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
- </div>
|
|
|
|
|
|
+ </ListHelperEvo>
|
|
</Card>
|
|
</Card>
|
|
|
|
|
|
<Card custom-class="my-4">
|
|
<Card custom-class="my-4">
|
|
@@ -184,37 +237,37 @@ onLoad((query) => {
|
|
使用动态
|
|
使用动态
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="mt-3 grid grid-cols-3 gap-2.5">
|
|
|
|
- <template
|
|
|
|
- v-for="{ name, value } of [
|
|
|
|
- { name: '打开次数', des: '最近', value: 220 },
|
|
|
|
- { name: '浏览时长', des: '本年', value: 220 },
|
|
|
|
- { name: '发圈次数', des: '本年', value: 220 },
|
|
|
|
- { name: '主页分享数', des: '本年', value: 220 },
|
|
|
|
- { name: '分享浏览数', des: '本年', value: 220 },
|
|
|
|
- { name: '分享获客数', des: '本年', value: 220 },
|
|
|
|
- ]"
|
|
|
|
- :key="name"
|
|
|
|
|
|
+ <div class="mt-3">
|
|
|
|
+ <ListHelperEvo
|
|
|
|
+ :content-class="`grid grid-cols-3 gap-2.5`"
|
|
|
|
+ :items="browseRecordCountItems"
|
|
|
|
+ custom-class="grid grid-cols-3 gap-2.5"
|
|
>
|
|
>
|
|
- <div class="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">
|
|
|
|
- {{ name }}
|
|
|
|
- </div>
|
|
|
|
- <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
|
|
|
|
- {{ value }}
|
|
|
|
- </div>
|
|
|
|
- <div class="flex items-center gap-1">
|
|
|
|
|
|
+ <template #default="{ item }">
|
|
|
|
+ <div class="rounded-lg aspect-[1/1] flex flex-col justify-around p-2.5">
|
|
<div
|
|
<div
|
|
- class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
|
|
|
|
|
|
+ class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none"
|
|
>
|
|
>
|
|
- 年新增
|
|
|
|
|
|
+ {{ item.title }}
|
|
</div>
|
|
</div>
|
|
- <div class="text-black/90 text-xs font-normal font-['D-DIN Exp'] leading-norma">
|
|
|
|
- 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-black/90 text-xs font-normal font-['D-DIN_Exp'] leading-norma"
|
|
|
|
+ >
|
|
|
|
+ {{ item.subValue }}
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
|
|
+ </template>
|
|
|
|
+ </ListHelperEvo>
|
|
</div>
|
|
</div>
|
|
</Card>
|
|
</Card>
|
|
|
|
|
|
@@ -228,18 +281,22 @@ onLoad((query) => {
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="w-full h-.25 bg-[#f9f9f9]"></div>
|
|
<div class="w-full h-.25 bg-[#f9f9f9]"></div>
|
|
- <div class="flex flex-col gap-6 py-5">
|
|
|
|
- <template v-for="(it, index) in [1, 2, 3]" :key="index">
|
|
|
|
- <div class="h-4 relative">
|
|
|
|
|
|
+ <ListHelperEvo
|
|
|
|
+ :request="getBrowseRecordRemarks"
|
|
|
|
+ :query="{ userId: id }"
|
|
|
|
+ custom-class="flex flex-col gap-6"
|
|
|
|
+ >
|
|
|
|
+ <template #default="{ item }">
|
|
|
|
+ <div class="mx-2 flex items-center gap-1 my-6">
|
|
|
|
+ <div class="w-1 h-1 bg-[#2357e9] rounded-full"></div>
|
|
<div
|
|
<div
|
|
- class="left-[11px] top-0 absolute text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none"
|
|
|
|
|
|
+ class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none"
|
|
>
|
|
>
|
|
- 最近浏览品牌:Imola
|
|
|
|
|
|
+ {{ item }}
|
|
</div>
|
|
</div>
|
|
- <div class="w-1 h-1 left-0 top-[6px] absolute bg-[#2357e9] rounded-full"></div>
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
- </div>
|
|
|
|
|
|
+ </ListHelperEvo>
|
|
</Card>
|
|
</Card>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -382,19 +439,19 @@ onLoad((query) => {
|
|
<div class="flex items-center justify-between mt-[19px]">
|
|
<div class="flex items-center justify-between mt-[19px]">
|
|
<div class="flex items-center gap-[8px]">
|
|
<div class="flex items-center gap-[8px]">
|
|
<wd-img width="17" height="17" :src="shareIcon"></wd-img>
|
|
<wd-img width="17" height="17" :src="shareIcon"></wd-img>
|
|
- <div class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug">
|
|
|
|
|
|
+ <div class="text-black/90 text-sm font-normal font-['D-DIN_Exp'] leading-snug">
|
|
232
|
|
232
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-center gap-[8px]">
|
|
<div class="flex items-center gap-[8px]">
|
|
<wd-img width="17" height="17" :src="messageIcon"></wd-img>
|
|
<wd-img width="17" height="17" :src="messageIcon"></wd-img>
|
|
- <div class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug">
|
|
|
|
|
|
+ <div class="text-black/90 text-sm font-normal font-['D-DIN_Exp'] leading-snug">
|
|
232
|
|
232
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-center gap-[8px]">
|
|
<div class="flex items-center gap-[8px]">
|
|
<wd-img width="17" height="17" :src="praiseIcon"></wd-img>
|
|
<wd-img width="17" height="17" :src="praiseIcon"></wd-img>
|
|
- <div class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug">
|
|
|
|
|
|
+ <div class="text-black/90 text-sm font-normal font-['D-DIN_Exp'] leading-snug">
|
|
232
|
|
232
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -403,11 +460,11 @@ onLoad((query) => {
|
|
</view>
|
|
</view>
|
|
|
|
|
|
<view class="content mt-[20px]" v-if="active === 'product'">
|
|
<view class="content mt-[20px]" v-if="active === 'product'">
|
|
- <div class="flex-grow flex flex-col gap-4 px-3.5 py-5">
|
|
|
|
|
|
+ <div class="flex-grow flex flex-col gap-4">
|
|
<PageHelperEvo
|
|
<PageHelperEvo
|
|
ref="pageHelperRef"
|
|
ref="pageHelperRef"
|
|
:request="getPointsOrders"
|
|
:request="getPointsOrders"
|
|
- :query="{}"
|
|
|
|
|
|
+ :query="{ orderType: 2 }"
|
|
class="flex-grow flex flex-col"
|
|
class="flex-grow flex flex-col"
|
|
>
|
|
>
|
|
<template #default="{ source }">
|
|
<template #default="{ source }">
|