Parcourir la source

feat: 添加获取客服列表、设计师统计和跟进统计接口,更新个人主页数据展示逻辑

EvilDragon il y a 3 mois
Parent
commit
b9817311a9

+ 4 - 0
packages/app/src/core/libs/requests.ts

@@ -951,6 +951,10 @@ export const getRidings = (query) =>
       radeKmTotal: string
     }>
   >('/app-api/member/app-riding/page', query)
+/**
+ * 获取客服列表
+ */
+export const getAgents = () => httpGet('getCustomerServiceList')
 export const refreshToken = (refreshToken: string) =>
   httpPost<any>('/app-api/member/auth/refresh-token', {}, { refreshToken })
 export const httpGetMock = <T>(data: T) =>

+ 13 - 0
packages/merchant/src/core/libs/requests.ts

@@ -370,6 +370,19 @@ export const getYearTarget = (query?: { brokerId?: string }) =>
       remark: any
     }[]
   >('/app-api/member/app-broker/statisticsThisYearTask')
+/**
+ * 渠道端-获取设计师统计
+ */
+export const getDesignerStatistics = (query) =>
+  httpPost<any>('/app-api/member/app-broker/statisticsStylist', query)
+/**
+ * 渠道端-获取跟进统计
+ */
+export const getFollowStatistics = (query) =>
+  httpPost<{ type: number; typeName: string; quantity?: number; thisYearQuantity?: number }[]>(
+    '/app-api/member/app-broker/statisticsFollowUp',
+    query,
+  )
 export const httpGetMock = <T>(data: T) =>
   new Promise<IResData<T>>((resolve) => resolve({ code: 1, msg: '', data } as IResData<T>))
 export interface Circle {

+ 16 - 25
packages/merchant/src/pages/mine/index.vue

@@ -4,7 +4,13 @@
 
 <script setup lang="ts">
 import { onMounted, ref } from 'vue'
-import { getOrders, getVendorAppInfo, getYearTarget } from '../../core/libs/requests'
+import {
+  getOrders,
+  getVendorAppInfo,
+  getYearTarget,
+  getDesignerStatistics,
+  getFollowStatistics,
+} from '../../core/libs/requests'
 
 import { storeToRefs } from 'pinia'
 import { isEmpty } from 'radash'
@@ -25,6 +31,8 @@ const avatar = computed(() =>
 const { data, run: setData } = useRequest(() => getVendorAppInfo())
 const { data: orders, run: setOrders } = useRequest(() => getOrders())
 const { data: yearTarget, run: setYearTarget } = useRequest(() => getYearTarget())
+const { data: designerData, run: setdesignerData } = useRequest(() => getDesignerStatistics())
+const { data: followData, run: setFollowData } = useRequest(() => getFollowStatistics())
 const nickNameClickHandle = async () => {
   if (isLogined.value) return
 
@@ -42,7 +50,7 @@ onShow(async () => {
 
   if (isLogined.value && isAgent?.value) {
     // await setData()
-    await Promise.all([setYearTarget()])
+    await Promise.all([setYearTarget(), setdesignerData(), setFollowData()])
   }
 })
 onMounted(async () => {
@@ -160,23 +168,13 @@ onPageScroll(({ scrollTop }: { scrollTop: number }) => {
         <Card>
           <SectionHeading title="设计师数据" size="base"></SectionHeading>
           <div class="mt-3 grid grid-cols-3 gap-2.5">
-            <template
-              v-for="{ name, value } of [
-                { name: '设计师总数', value: 220 },
-                { name: '成交过', value: 220 },
-                { name: '未成交过', value: 220 },
-                { name: '消耗积分', value: 220 },
-                { name: '参加游学', value: 220 },
-                { name: '参与活动', value: 220 },
-              ]"
-              :key="name"
-            >
+            <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">
-                  {{ name }}
+                  {{ it.typeName }}
                 </div>
                 <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
-                  {{ value }}
+                  {{ it.quantity }}
                 </div>
                 <div class="flex items-center gap-1">
                   <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none">
@@ -193,20 +191,13 @@ onPageScroll(({ scrollTop }: { scrollTop: number }) => {
         <Card>
           <SectionHeading title="跟进数据" size="base"></SectionHeading>
           <div class="mt-3 grid grid-cols-3 gap-2.5">
-            <template
-              v-for="{ name, value } of [
-                { name: '累计跟进', value: 220 },
-                { name: '线下拜访', value: 220 },
-                { name: '线上跟进', value: 220 },
-              ]"
-              :key="name"
-            >
+            <template v-for="(it, i) in followData" :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">
-                  {{ name }}
+                  {{ it.typeName }}
                 </div>
                 <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
-                  {{ value }}
+                  {{ it.quantity }}
                 </div>
                 <div class="flex items-center gap-1">
                   <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none">