Procházet zdrojové kódy

feat: 添加跳转到首页功能;更新设计师详情页面样式;优化评论项和任务卡片组件的字体样式;重构跟进表单逻辑

EvilDragon před 3 měsíci
rodič
revize
4eabda1cc6

+ 19 - 0
packages/app/src/core/libs/models.ts

@@ -827,6 +827,25 @@ export interface AgentTask {
   roleTypeName: string
   statusName: string
 }
+export interface FollowUp {
+  id: number
+  brokerId: number
+  stylistId: number
+  stylistName: string
+  followTime: string
+  followType: string
+  remark: string
+  address: Address
+  imgUrl: string
+  isFollowFocus: string
+  followStatus: string
+}
+
+export interface Address {
+  address: string
+  longitude: string
+  latitude: string
+}
 
 export enum DictType {
   /**

+ 1 - 1
packages/app/src/pages/home/components/comment-item.vue

@@ -106,7 +106,7 @@ defineExpose({
           <span v-if="isChild">回复</span>
           <span
             v-if="isChild"
-            class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-[10.18px]"
+            class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"
           >
             {{ options.replayToUserName }}
             :

+ 2 - 2
packages/app/src/pages/mine/setting/mobile/index.vue

@@ -16,11 +16,11 @@ const handleModify = () => {
   <div class="flex-grow bg-white px-4">
     <div class="px-3.5">
       <div
-        class="mt-26.25 text-black/90 text-base font-normal font-['PingFang SC'] leading-[10.18px]"
+        class="mt-26.25 text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px]"
       >
         您已绑定手机号
       </div>
-      <div class="mt-8.25 text-black/90 text-2xl font-normal font-['PingFang SC'] leading-none">
+      <div class="mt-8.25 text-black/90 text-2xl font-normal font-['PingFang_SC'] leading-none">
         {{ userInfo.mobile?.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') }}
       </div>
     </div>

+ 2 - 2
packages/app/src/pages/mine/setting/mobile/modify/index.vue

@@ -72,7 +72,7 @@ const handleSubmit = async () => {
       ></wd-input>
     </div>
     <div class="form-item">
-      <div class="w-12 text-black/90 text-base font-normal font-['PingFang SC'] leading-relaxed">
+      <div class="w-12 text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed">
         验证码
       </div>
       <wd-input
@@ -82,7 +82,7 @@ const handleSubmit = async () => {
         placeholder="请输入验证码"
         class="flex-grow"
       ></wd-input>
-      <!-- <div class="text-[#3f598f] text-sm font-normal font-['PingFang SC'] leading-relaxed">
+      <!-- <div class="text-[#3f598f] text-sm font-normal font-['PingFang_SC'] leading-relaxed">
         获取验证码
       </div> -->
       <wd-button

+ 3 - 28
packages/merchant/src/components/data-form.vue

@@ -54,8 +54,9 @@ const verticalDefaultProps = {
 }
 const horizontalDefaultProps = {
   TextField: {
-    customClass: 'text-red!',
+    customClass: 'text-red! bg-[#f5f7f9]! h-10',
     placeholderClass: 'text-black/30',
+    noBorder: true,
   },
   Select: {
     customClass: 'text-black/30! border-b-1 border-b-[#e1e1e1] border-b-solid',
@@ -216,30 +217,4 @@ defineExpose({
     </wd-form>
   </wd-config-provider>
 </template>
-<style lang="less" scoped>
-:deep(.wd-input) {
-  background-color: #f5f7f9;
-  border-radius: 8px;
-  padding: 5px;
-  margin-left: 5px;
-}
-.wd-input::after {
-  height: 0;
-}
-:deep(.wd-picker) {
-  background-color: #f5f7f9;
-  border-radius: 8px;
-  padding: 5px;
-  margin-left: 5px;
-}
-:deep(.wd-textarea) {
-  background-color: #f5f7f9;
-  border-radius: 8px;
-}
-:deep(.wd-picker__cell) {
-  background: transparent;
-}
-:deep(.wd-textarea__value) {
-  background: transparent;
-}
-</style>
+<style lang="less" scoped></style>

+ 64 - 0
packages/merchant/src/composables/followUp.ts

@@ -0,0 +1,64 @@
+export const useFollowUp = () => {
+  const schema = ref<DataFormSchema>({
+    stylistId: {
+      required: true,
+      type: 'Select',
+      label: '设计师',
+      labelWidth: 64,
+      props: {
+        columns: [],
+      },
+    },
+    followTime: {
+      required: true,
+      type: 'TimePick',
+      label: '时间',
+      labelWidth: 64,
+      props: {
+        defaultValue: new Date(),
+      },
+    },
+    followType: {
+      required: true,
+      type: 'Select',
+      label: '类型',
+      labelWidth: 64,
+      props: {
+        columns: [
+          { label: '线下拜访', value: '1' },
+          { label: '线上跟进', value: '2' },
+        ],
+      },
+    },
+    remark: {
+      required: true,
+      type: 'TextField',
+      label: '备注',
+      labelWidth: 64,
+    },
+    address: {
+      // required: true,
+      type: 'TextField',
+      label: '地址',
+      labelWidth: 64,
+    },
+    imgUrl: {
+      required: true,
+      type: 'ImageUploader',
+      label: '图片',
+      labelWidth: 64,
+      props: {
+        // max: 9,
+      },
+    },
+  })
+  const rules = ref({
+    stylistId: [{ required: true, message: '请输入设计师' }],
+    followTime: [{ required: true, message: '请输入时间' }],
+    followType: [{ required: true, message: '请输入类型' }],
+    remark: [{ required: true, message: '请输入备注' }],
+    // address: [{ required: true, message: '请输入地址' }],
+    // images: [{ required: true, message: '请上传图片' }],
+  })
+  return { schema, rules }
+}

+ 8 - 0
packages/merchant/src/core/libs/actions.ts

@@ -25,3 +25,11 @@ export const handleUpvoteClick = async (
   }
   callback && callback()
 }
+
+export const toHomePage = (id: string) => {
+  uni.navigateToMiniProgram({
+    appId: 'wx4d95c9addba81089',
+    envVersion: 'trial',
+    path: '/pages/mine/homepage/index' + '?id=' + id,
+  })
+}

+ 62 - 2
packages/merchant/src/core/libs/agent-requests.ts

@@ -1,4 +1,4 @@
-import { httpDelete, httpGet } from '../../utils/http'
+import { httpDelete, httpGet, httpPost, httpPut } from '../../utils/http'
 import {
   PointsOrder,
   ResPageData,
@@ -7,8 +7,50 @@ import {
   Designer,
   AgentTask,
   ReportInfo,
+  FollowUp,
 } from '@designer-hub/app/src/core/libs/models'
-
+/**
+ * 通过ID获取用户信息
+ */
+export const getUserInfoById = (id) =>
+  httpGet<
+    Partial<{
+      mobile: string
+      status: string
+      nickname: string
+      avatar: string
+      name: string
+      sex: string
+      areaId: number
+      areaName: string
+      birthday: string
+      mark: string
+      tagIds: string
+      levelId: number
+      groupId: number
+      id: number
+      registerIp: string
+      loginIp: string
+      loginDate: string
+      createTime: string
+      point: number
+      totalPoint: number
+      tagNames: string
+      levelName: string
+      groupName: string
+      experience: number
+    }>
+  >('/app-api/member/user/getByUserId', { id })
+/**
+ * 获取设计师信息
+ */
+// export const getDesignerInfo = (userId: number) =>
+//   httpGet<Designer>('/app-api/member/designer/getDesignerInfo', { userId })
+/**
+ * 获取设计师基本信息
+ */
+export const getStylistBasicInfo = (userId: number) =>
+  httpGet<Designer>('/app-api/member/stylist-basic-info/get', { userId })
 /**
  * 设计师列表
  */
@@ -29,3 +71,21 @@ export const getReportInfoPage = (query = {}) =>
  */
 export const deleteReportInfo = (id: number) =>
   httpDelete(`/app-api/member/report-info/delete`, { id })
+/**
+ * 创建设计师跟进
+ */
+export const createFollowUp = (data: Partial<FollowUp>) =>
+  httpPost('/app-api/member/stylist-follow-up/create', data)
+/**
+ * 获取设计师跟进列表
+ */
+export const getFollowUpPage = (query = {}) =>
+  httpGet<ResPageData<FollowUp & { followTypeName: string; brokerName: string }>>(
+    '/app-api/member/stylist-follow-up/page',
+    query,
+  )
+/**
+ * 更新设计师跟进
+ */
+export const updateFollowUp = (data: Partial<FollowUp>) =>
+  httpPut('/app-api/member/stylist-follow-up/update', data)

+ 1 - 2
packages/merchant/src/core/libs/requests.ts

@@ -9,7 +9,6 @@ import {
   Agent,
   AgentTask,
 } from '@designer-hub/app/src/core/libs/models'
-import { get } from 'radash'
 
 export const getUserInfo = () =>
   httpGetMock<any>({
@@ -228,7 +227,7 @@ export const getReviewReplay = (query: { id: string }) =>
   httpGet('/app-api/member/circle-review/getReviewReplay', query)
 // 获取设计师列表
 export const getDesignerList = (query: { brokerId: string; pageNo: number; pageSize: any }) =>
-  httpGet('/app-api/member/report-info/pageStylistByBrokerId', query)
+  httpGet<ResPageData<any>>('/app-api/member/report-info/pageStylistByBrokerId', query)
 // 添加关系报备
 export const createReportInfo = (data) => httpPost<any>('/app-api/member/report-info/create', data)
 // 获取任务列表

+ 49 - 47
packages/merchant/src/layouts/tabbar.vue

@@ -12,11 +12,18 @@ import {
   channelTabbarMine,
   channelTabbarMineActive,
 } from '@designer-hub/assets/src/assets/svgs'
-import { DataFormSchema } from '../components/data-form'
+import { ComponentExposed } from 'vue-component-type-helpers'
+import { getDesignerList } from '../core/libs/requests'
+import { requestToast } from '@designer-hub/app/src/core/utils/common'
+import { createFollowUp } from '../core/libs/agent-requests'
+import { useFollowUp } from '../composables/followUp'
 
 const userStore = useUserStore()
 const { userInfo, isAgent, isMerchant } = storeToRefs(userStore)
+const { schema, rules } = useFollowUp()
 const publishState = ref(false)
+const dataForm = ref({})
+const dataFormRef = ref<ComponentExposed<typeof DataForm>>()
 const items = computed(() => {
   if (isAgent.value) {
     return [
@@ -58,49 +65,6 @@ const items = computed(() => {
     },
   ]
 })
-
-const schema = ref<DataFormSchema>({
-  user: {
-    required: true,
-    type: 'TextField',
-    label: '设计师',
-    labelWidth: 64,
-  },
-  dateTime: {
-    required: true,
-    type: 'TextField',
-    label: '时间',
-    labelWidth: 64,
-  },
-  type: {
-    required: true,
-    type: 'Select',
-    label: '类型',
-    labelWidth: 64,
-    props: {},
-  },
-  remark: {
-    required: true,
-    type: 'TextField',
-    label: '备注',
-    labelWidth: 64,
-  },
-  location: {
-    required: true,
-    type: 'TextField',
-    label: '地址',
-    labelWidth: 64,
-  },
-  images: {
-    required: true,
-    type: 'ImageUploader',
-    label: '图片',
-    labelWidth: 64,
-    props: {
-      // max: 9,
-    },
-  },
-})
 const handleTabbarItemClick = (path: string) => {
   if (path === '/pages/publish/index') {
     publishState.value = true
@@ -112,7 +76,37 @@ const handleAdd = async (e) => {
   console.log(e)
   publishState.value = true
 }
-onMounted(async () => {})
+const handleSubmit = async () => {
+  const { valid } = await dataFormRef.value.validate()
+  if (!valid) {
+    return
+  }
+  console.log(dataForm.value)
+  const { code } = await requestToast(
+    () =>
+      createFollowUp({ ...dataForm.value, address: { address: '', latitude: '', longitude: '' } }),
+    {
+      success: true,
+      successTitle: '跟进成功',
+    },
+  )
+  if (code === 0) {
+    publishState.value = false
+  }
+}
+onMounted(async () => {
+  const {
+    data: { list },
+  } = await getDesignerList({
+    brokerId: userInfo.value?.userId.toString(),
+    pageNo: 1,
+    pageSize: -1,
+  })
+  schema.value.stylistId.props.columns = list.map((item) => ({
+    value: item.id,
+    label: item.name,
+  }))
+})
 </script>
 
 <template>
@@ -130,8 +124,16 @@ onMounted(async () => {})
     />
     <wd-action-sheet v-model="publishState" title="创建跟进" @close="publishState = false">
       <view class="flex flex-col p-4">
-        <div><DataForm :schema="schema" direction="horizontal"></DataForm></div>
-        <div><wd-button block :round="false">提交</wd-button></div>
+        <div>
+          <DataForm
+            ref="dataFormRef"
+            :schema="schema"
+            :rules="rules"
+            direction="horizontal"
+            v-model="dataForm"
+          ></DataForm>
+        </div>
+        <div><wd-button block :round="false" @click="handleSubmit">提交</wd-button></div>
       </view>
     </wd-action-sheet>
     <wd-toast />

+ 3 - 2
packages/merchant/src/pages.json

@@ -62,8 +62,9 @@
       "path": "pages/designer/detail",
       "type": "page",
       "style": {
-        "navigationBarTitleText": "全部设计师",
-        "navigationBarBackgroundColor": "#fff"
+        "navigationBarTitleText": "设计师详情",
+        "navigationBarBackgroundColor": "#fff",
+        "navigationStyle": "custom"
       }
     },
     {

+ 261 - 264
packages/merchant/src/pages/designer/detail.vue

@@ -1,10 +1,13 @@
 <route lang="yaml">
 style:
-  navigationBarTitleText: 全部设计师
+  navigationBarTitleText: 设计师详情
   navigationBarBackgroundColor: '#fff'
+  navigationStyle: custom
 </route>
 
 <script setup lang="ts">
+import NavbarEvo from '@/components/navbar-evo.vue'
+import { getFollowUpPage, getUserInfoById } from '../../core/libs/agent-requests'
 import {
   desinTopBg,
   rightArrowIcon,
@@ -15,33 +18,41 @@ import {
   messageIcon,
   yinyongIcon,
 } from '@designer-hub/assets/src/svgs'
-const tab = ref(0)
+import PageHelperEvo from '@/components/page-helper-evo.vue'
+import { dayjs } from 'wot-design-uni'
+import { toHomePage } from '../../core/libs/actions'
+const id = ref()
+const { data, run: setData } = useRequest(() => getUserInfoById(id.value))
+const tab = ref('followUp')
 const tabs = ref([
   { label: '数据动态', value: 'integral' },
-  { label: '跟进记录', value: 'system' },
-  { label: '圈子动态', value: 'interact' },
+  { label: '跟进记录', value: 'followUp' },
+  // { label: '圈子动态', value: 'interact' },
   { label: '兑换商品', value: 'product' },
 ])
-const toHomePage = () => {
-  uni.navigateTo({ url: '/pages/designer/homepage' })
-}
+const followUpQuery = ref({})
 const toPointsDetails = () => {
   uni.navigateTo({ url: '/pages/designer/points_details/index' })
 }
 const toOrderDetails = () => {
   uni.navigateTo({ url: '/pages/mine/merchant/orders/detail/index' })
 }
+onLoad(async (query: { id: string }) => {
+  id.value = query.id
+  await setData()
+})
 </script>
 
 <template>
   <view>
+    <NavbarEvo placeholder transparent dark></NavbarEvo>
     <div class="aspect-[1.575/1] absolute left-0 right-0 top-0">
       <wd-img width="100%" height="100%" :src="desinTopBg" custom-class="vertical-top"></wd-img>
     </div>
     <div class="p-4 flex flex-col gap-4 relative">
       <div class="bg-white rounded-2xl shadow flex items-center p-4">
         <div>
-          <img class="w-16 h-16 rounded-full" src="https://via.placeholder.com/64x64" />
+          <img class="w-16 h-16 rounded-full" :src="data?.avatar" />
         </div>
         <div class="flex-1 ml-[11px]">
           <div class="flex flex-col w-[100%]">
@@ -50,7 +61,8 @@ const toOrderDetails = () => {
                 <div
                   class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px]"
                 >
-                  苏小萌
+                  <!-- 苏小萌 -->
+                  {{ data?.name }}
                 </div>
 
                 <div
@@ -67,314 +79,299 @@ const toOrderDetails = () => {
               </div>
               <div
                 class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-snug flex items-center"
-                @click="toHomePage"
+                @click="toHomePage(id.value)"
               >
                 <div>个人主页</div>
                 <wd-img width="13" height="13" :src="rightArrowIcon"></wd-img>
               </div>
             </div>
           </div>
-          <div class="mt-[20px] flex items-center">
-            <div class="text-[#2357e9] text-xs font-normal font-['PingFang_SC'] leading-none">
-              个人信息
+          <div
+            class="mt-4 px-1.5 py-1 bg-[#f0f3ff] rounded justify-center items-center gap-px inline-flex"
+          >
+            <div class="text-[#2357e9] text-xs font-normal font-['PingFang_SC'] leading-3">
+              个人档案
             </div>
-            <wd-img width="13" height="13" :src="rightArrowIcon"></wd-img>
+            <wd-icon name="arrow-right" size="13" color="#2357e9"></wd-icon>
           </div>
         </div>
       </div>
       <div>
         <wd-tabs v-model="tab">
-          <block v-for="(item, index) in tabs" :key="item">
-            <wd-tab :title="`${item.label}`">
-              <view class="content mt-[20px]" v-if="index === 0">
-                <div class="bg-white rounded-2xl shadow pa-[15px]">
-                  <div class="flex items-center justify-between">
-                    <div
-                      class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed"
-                    >
-                      积分动态
-                    </div>
-                    <div
-                      class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none"
-                      @click="toPointsDetails"
-                    >
-                      积分明细
-                    </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="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">
-                          <div
-                            class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
-                          >
-                            年新增
-                          </div>
-                          <div
-                            class="text-black/90 text-xs font-normal font-['D-DIN Exp'] leading-norma"
-                          >
-                            20
-                          </div>
-                        </div>
-                      </div>
-                    </template>
-                  </div>
-                </div>
-                <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px]">
-                  <div class="flex items-center justify-between">
-                    <div
-                      class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed"
-                    >
-                      使用动态
-                    </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="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">
-                          <div
-                            class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
-                          >
-                            年新增
-                          </div>
-                          <div
-                            class="text-black/90 text-xs font-normal font-['D-DIN Exp'] leading-norma"
-                          >
-                            20
-                          </div>
-                        </div>
-                      </div>
-                    </template>
+          <block v-for="(item, index) in tabs" :key="index">
+            <wd-tab :title="`${item.label}`" :name="item.value"></wd-tab>
+          </block>
+        </wd-tabs>
+        <view class="content mt-[20px]" v-if="tab === 'integral'">
+          <div class="bg-white rounded-2xl shadow pa-[15px]">
+            <div class="flex items-center justify-between">
+              <div class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed">
+                积分动态
+              </div>
+              <div
+                class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none"
+                @click="toPointsDetails"
+              >
+                积分明细
+              </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="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
+                    {{ name }}
                   </div>
-                </div>
-                <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px]">
-                  <div class="flex items-center justify-between">
-                    <div
-                      class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed"
-                    >
-                      最近动态
-                    </div>
+                  <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
+                    {{ value }}
                   </div>
-                  <div class="mt-3">
+                  <div class="flex items-center gap-1">
                     <div
-                      class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-none"
+                      class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
                     >
-                      苏小萌报名了早稻田深度设计游学
+                      年新增
                     </div>
-                    <div
-                      class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none mt-[10px]"
-                    >
-                      2024-09-08 14:12
+                    <div class="text-black/90 text-xs font-normal font-['D-DIN Exp'] leading-norma">
+                      20
                     </div>
                   </div>
                 </div>
-              </view>
-              <view class="content mt-[20px]" v-if="index === 1">
-                <div
-                  class="bg-white rounded-2xl shadow pl-[15px] py-[15px] mt-[20px] flex-col gap-2 flex"
-                >
-                  <div class="flex items-center justify-between">
-                    <div
-                      class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed"
-                    >
-                      2024-09-02 9:20
-                    </div>
-                    <div
-                      class="text-white text-xs font-normal font-['PingFang_SC'] leading-none bg-[#2357E9] pa-[8px]"
-                      style="border-top-left-radius: 15px; border-bottom-left-radius: 5px"
-                    >
-                      线下拜访
-                    </div>
-                  </div>
-                  <div
-                    class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal mr-[15px] mt-[29px]"
-                  >
-                    和周老师在工作碰了环球项目,选了瓷砖款式,后天客户交定金,订单金额初步为 304958
+              </template>
+            </div>
+          </div>
+          <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px]">
+            <div class="flex items-center justify-between">
+              <div class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed">
+                使用动态
+              </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="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
+                    {{ name }}
                   </div>
-                  <div class="mt-[15px]">
-                    <img
-                      class="w-[70px] h-[70px] rounded-lg"
-                      src="https://via.placeholder.com/70x70"
-                    />
+                  <div class="text-black/90 text-lg font-bold font-['D-DIN Exp'] leading-normal">
+                    {{ value }}
                   </div>
-                  <div class="flex items-center justify-between mt-[19px]">
+                  <div class="flex items-center gap-1">
                     <div
-                      class="h-[25px] px-1.5 bg-[#f4f4f4] rounded-md justify-center items-center gap-1 inline-flex"
+                      class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none"
                     >
-                      <wd-img width="15px" height="15px" :src="locationIcon"></wd-img>
-
-                      <div
-                        class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] leading-[25px]"
-                      >
-                        一间空间设计工作室
-                      </div>
+                      年新增
                     </div>
-                    <div
-                      class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-relaxed mr-[15px]"
-                    >
-                      渠道:李薇
+                    <div class="text-black/90 text-xs font-normal font-['D-DIN Exp'] leading-norma">
+                      20
                     </div>
                   </div>
                 </div>
-              </view>
-              <view class="content mt-[20px]" v-if="index === 2">
-                <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px] flex-col gap-2 flex">
-                  <div class="flex-row flex items-center justify-between w-full">
-                    <div class="flex-row flex items-center">
+              </template>
+            </div>
+          </div>
+          <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px]">
+            <div class="flex items-center justify-between">
+              <div class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-relaxed">
+                最近动态
+              </div>
+            </div>
+            <div class="mt-3">
+              <div class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-none">
+                苏小萌报名了早稻田深度设计游学
+              </div>
+              <div
+                class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none mt-[10px]"
+              >
+                2024-09-08 14:12
+              </div>
+            </div>
+          </div>
+        </view>
+        <view class="content mt-[20px]" v-if="tab === 'followUp'">
+          <PageHelperEvo :request="getFollowUpPage" :query="followUpQuery">
+            <template #default="{ source }">
+              <div class="flex flex-col gap-4">
+                <template v-for="(it, index) in source.list" :key="index">
+                  <div class="bg-white rounded-2xl shadow pl-[15px] py-[15px] flex-col gap-2 flex">
+                    <div class="flex items-center justify-between">
                       <div
-                        class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px]"
+                        class="text-black/90 text-base font-normal font-['PingFang SC'] leading-relaxed"
                       >
-                        苏小萌
+                        {{ dayjs(it.followTime).format('YYYY-MM-DD HH:mm') }}
                       </div>
-
                       <div
-                        class="h-4 bg-neutral-100 rounded-[20px] justify-start items-center inline-flex flex-row ml-[9px]"
+                        class="text-white text-xs font-normal font-['PingFang_SC'] leading-none pa-[8px]"
+                        :class="`${{ 1: 'bg-[#2357E9]', 2: 'bg-[#f8b344]' }[it.followType]}`"
+                        style="border-top-left-radius: 15px; border-bottom-left-radius: 5px"
                       >
-                        <wd-img width="17" height="17" :src="vipIcon"></wd-img>
-
-                        <div
-                          class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] px-[7px] leading-none"
-                        >
-                          白银会员
+                        <div class="flex items-center gap-1">
+                          <div class="w-1 h-1 bg-white rounded-full border"></div>
+                          <!-- 线下拜访 -->
+                          {{ it.followTypeName }}
                         </div>
                       </div>
                     </div>
                     <div
-                      class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"
+                      class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal mr-[15px] mt-[29px]"
                     >
-                      4小时前
+                      <!-- 和周老师在工作碰了环球项目,选了瓷砖款式,后天客户交定金,订单金额初步为
+                      304958 -->
+                      {{ it.remark }}
                     </div>
-                  </div>
-                  <div class="mt-[26px]">
-                    <img
-                      class="w-[165px] h-[220px] rounded-lg"
-                      src="https://via.placeholder.com/165x220"
-                    />
-                  </div>
-                  <div
-                    class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px] mt-[29px]"
-                  >
-                    用心做好设计,为客户创造美好家居环境
-                  </div>
-                  <div
-                    class="h-7 py-1.5 rounded-[50px] border border-black/20 justify-start items-center gap-[5px] inline-flex mt-[29px]"
-                  >
-                    <wd-img width="17" height="17" :src="yinyongIcon"></wd-img>
-
-                    <div
-                      class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none"
-                    >
-                      意大利游学设计班
-                    </div>
-                  </div>
-                  <div class="flex items-center justify-between mt-[19px]">
-                    <div class="flex items-center gap-[8px]">
-                      <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"
-                      >
-                        232
-                      </div>
+                    <div class="mt-[15px] flex gap-2.5">
+                      <template v-for="(src, index) in it?.imgUrl?.split(',')" :key="index">
+                        <wd-img
+                          custom-class="rounded-lg overflow-hidden"
+                          width="70"
+                          height="70"
+                          :src="src"
+                        />
+                      </template>
                     </div>
-                    <div class="flex items-center gap-[8px]">
-                      <wd-img width="17" height="17" :src="messageIcon"></wd-img>
+                    <div class="flex items-center justify-between mt-[19px]">
                       <div
-                        class="text-black/90 text-sm font-normal font-['D-DIN Exp'] leading-snug"
+                        class="h-[25px] px-1.5 bg-[#f4f4f4] rounded-md justify-center items-center gap-1 inline-flex"
                       >
-                        232
+                        <wd-img width="15px" height="15px" :src="locationIcon"></wd-img>
+
+                        <div
+                          class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] leading-[25px]"
+                        >
+                          <!-- 一间空间设计工作室 -->
+                          {{ it?.address.address }}
+                        </div>
                       </div>
-                    </div>
-                    <div class="flex items-center gap-[8px]">
-                      <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"
+                        class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-relaxed mr-[15px]"
                       >
-                        232
+                        渠道:{{ it?.brokerName }}
                       </div>
                     </div>
                   </div>
+                </template>
+              </div>
+            </template>
+          </PageHelperEvo>
+        </view>
+        <view class="content mt-[20px]" v-if="tab === ''">
+          <div class="bg-white rounded-2xl shadow pa-[15px] mt-[20px] flex-col gap-2 flex">
+            <div class="flex-row flex items-center justify-between w-full">
+              <div class="flex-row flex items-center">
+                <div
+                  class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px]"
+                >
+                  苏小萌
                 </div>
-              </view>
-              <view class="content mt-[20px]" v-if="index === 3">
+
                 <div
-                  class="bg-white rounded-2xl shadow pa-[15px] mt-[20px] flex-col gap-2 flex"
-                  @click="toOrderDetails"
+                  class="h-4 bg-neutral-100 rounded-[20px] justify-start items-center inline-flex flex-row ml-[9px]"
                 >
-                  <div class="bg-white rounded-2xl flex items-center justify-between w-full">
-                    <div>
-                      <img class="w-[76px] h-[101px]" src="https://via.placeholder.com/76x101" />
-                    </div>
-                    <div class="ml-[16px] flex flex-col justify-start">
-                      <div
-                        class="text-black text-base font-normal font-['PingFang_SC'] leading-normal"
-                      >
-                        阿芙佳朵
-                      </div>
-                      <div
-                        class="text-left text-black/30 text-sm font-normal font-['PingFang_SC'] leading-normal"
-                      >
-                        x2
-                      </div>
-                      <div
-                        class="text-left text-black/30 text-sm font-normal font-['PingFang_SC'] leading-normal"
-                      >
-                        600积分
-                      </div>
-                    </div>
-                    <div class="flex-1"></div>
-                    <div>
-                      <div
-                        class="text-[#2357e9] text-xs font-normal font-['PingFang_SC'] leading-normal"
-                      >
-                        已完成
-                      </div>
-                    </div>
+                  <wd-img width="17" height="17" :src="vipIcon"></wd-img>
+
+                  <div
+                    class="text-black/40 text-[10px] font-normal font-['PingFang_SC'] px-[7px] leading-none"
+                  >
+                    白银会员
                   </div>
                 </div>
-              </view>
-            </wd-tab>
-          </block>
-        </wd-tabs>
+              </div>
+              <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]">
+                4小时前
+              </div>
+            </div>
+            <div class="mt-[26px]">
+              <img
+                class="w-[165px] h-[220px] rounded-lg"
+                src="https://via.placeholder.com/165x220"
+              />
+            </div>
+            <div
+              class="text-black/90 text-base font-normal font-['PingFang_SC'] leading-[10.18px] mt-[29px]"
+            >
+              用心做好设计,为客户创造美好家居环境
+            </div>
+            <div
+              class="h-7 py-1.5 rounded-[50px] border border-black/20 justify-start items-center gap-[5px] inline-flex mt-[29px]"
+            >
+              <wd-img width="17" height="17" :src="yinyongIcon"></wd-img>
+
+              <div class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-none">
+                意大利游学设计班
+              </div>
+            </div>
+            <div class="flex items-center justify-between mt-[19px]">
+              <div class="flex items-center gap-[8px]">
+                <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">
+                  232
+                </div>
+              </div>
+              <div class="flex items-center gap-[8px]">
+                <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">
+                  232
+                </div>
+              </div>
+              <div class="flex items-center gap-[8px]">
+                <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">
+                  232
+                </div>
+              </div>
+            </div>
+          </div>
+        </view>
+        <view class="content mt-[20px]" v-if="tab === 'product'">
+          <div
+            class="bg-white rounded-2xl shadow pa-[15px] mt-[20px] flex-col gap-2 flex"
+            @click="toOrderDetails"
+          >
+            <div class="bg-white rounded-2xl flex items-center justify-between w-full">
+              <div>
+                <img class="w-[76px] h-[101px]" src="https://via.placeholder.com/76x101" />
+              </div>
+              <div class="ml-[16px] flex flex-col justify-start">
+                <div class="text-black text-base font-normal font-['PingFang_SC'] leading-normal">
+                  阿芙佳朵
+                </div>
+                <div
+                  class="text-left text-black/30 text-sm font-normal font-['PingFang_SC'] leading-normal"
+                >
+                  x2
+                </div>
+                <div
+                  class="text-left text-black/30 text-sm font-normal font-['PingFang_SC'] leading-normal"
+                >
+                  600积分
+                </div>
+              </div>
+              <div class="flex-1"></div>
+              <div>
+                <div class="text-[#2357e9] text-xs font-normal font-['PingFang_SC'] leading-normal">
+                  已完成
+                </div>
+              </div>
+            </div>
+          </div>
+        </view>
       </div>
     </div>
   </view>

+ 42 - 57
packages/merchant/src/pages/designer/index.vue

@@ -11,50 +11,19 @@
 import Card from '@/components/card.vue'
 import DataForm from '@/components/data-form.vue'
 import PageHelperEvo from '@/components/page-helper-evo.vue'
-import { getDesigners } from '../../core/libs/agent-requests'
+import { getDesigners, updateFollowUp } from '../../core/libs/agent-requests'
 import { vipIcon, rightArrowIcon, filterIcon } from '@designer-hub/assets/src/svgs'
+import { toHomePage } from '../../core/libs/actions'
+import { Designer, FollowUp } from '@designer-hub/app/src/core/libs/models'
+import { requestToast } from '@designer-hub/app/src/core/utils/common'
+import { ComponentExposed } from 'vue-component-type-helpers'
+import { pick } from 'radash'
+import { useFollowUp } from '../../composables/followUp'
+
 const searchText = ref('')
 const publishState = ref(false)
-
-const msgs = ref([
-  {
-    title: '王磊回复了你',
-    createdAt: Date.now(),
-    content: '设计师李家豪刚刚点赞了你的设计圈点击前往查看',
-  },
-  {
-    title: '李琳赞了你的设计圈',
-    createdAt: Date.now(),
-    content: '设计师李家豪刚刚点赞了你的设计圈点击前往查看',
-  },
-])
-const schema = ref({
-  user: {
-    type: 'TextField',
-    label: '设计师',
-  },
-  dateTime: {
-    type: 'TextField',
-    label: '时间',
-  },
-  type: {
-    type: 'TextField',
-    label: '类型',
-  },
-  remark: {
-    type: 'TextField',
-    label: '备注',
-  },
-  location: {
-    type: 'TextField',
-    label: '地址',
-  },
-  images: {
-    type: 'ImageUploader',
-    label: '图片',
-    max: 9,
-  },
-})
+const pageHelperRef = ref<ComponentExposed<typeof PageHelperEvo>>()
+const { schema, rules } = useFollowUp()
 const query = ref({})
 const searchFocus = () => {
   console.log('focus')
@@ -71,22 +40,38 @@ const cancelSearch = () => {
 const searchChange = (e: any) => {
   console.log(e)
 }
-const toDetail = async () => {
-  await uni.navigateTo({ url: '/pages/designer/detail' })
+const toDetail = async (designer: any) => {
+  await uni.navigateTo({ url: '/pages/designer/detail' + '?id=' + designer.id })
 }
 const callPhone = (phoneNumber) => {
-  const link = document.createElement('a')
-  link.href = 'tel:' + phoneNumber
-  link.click()
+  uni.makePhoneCall({
+    phoneNumber,
+  })
 }
 const filterData = () => {
   console.log('filter')
 }
+const handleImportant = async (designer: Designer) => {
+  // const { code } = await requestToast(
+  //   () =>
+  //     updateFollowUp({
+  //       ...pick(designer, ['id']),
+  //       isFollowFocus: true,
+  //     }),
+  //   {
+  //     success: true,
+  //     successTitle: '重点跟进成功',
+  //   },
+  // )
+  // if (code === 0) {
+  //   await pageHelperRef.value?.refresh()
+  // }
+}
 </script>
 
 <template>
   <view class="flex-grow">
-    <PageHelperEvo :request="getDesigners" :query="query">
+    <PageHelperEvo ref="pageHelperRef" :request="getDesigners" :query="query">
       <template #top>
         <div class="flex items-center justify-between bg-white pr-3.5">
           <div class="flex-1">
@@ -107,7 +92,7 @@ const filterData = () => {
         <div class="p-3.5 gap-3.5 flex flex-col">
           <template v-for="(it, i) in source.list" :key="i">
             <Card>
-              <div class="items-center">
+              <div class="items-center" @click="toDetail(it)">
                 <div class="">
                   <div class="flex items-center">
                     <div
@@ -140,9 +125,9 @@ const filterData = () => {
                         </div>
                         <div
                           class="text-black/60 text-xs font-normal font-['PingFang_SC'] leading-snug flex items-center"
-                          @click="toDetail"
+                          @click.stop="toHomePage(it.id)"
                         >
-                          <div>分享主页</div>
+                          <div>个人主页</div>
                           <wd-img width="13" height="13" :src="rightArrowIcon"></wd-img>
                         </div>
                       </div>
@@ -156,7 +141,7 @@ const filterData = () => {
                         <div
                           class="text-black/30 text-xs font-normal font-['PingFang_SC'] leading-none"
                         >
-                          积分:0
+                          积分:{{ it.points || 0 }}
                         </div>
                       </div>
                     </div>
@@ -165,7 +150,7 @@ const filterData = () => {
 
                 <div class="row-start-2 col-start-2 col-end-4">
                   <div class="flex items-center justify-between w-full mt-[20px]">
-                    <div class="flex items-center">
+                    <div v-if="!it.followUp30Days" class="flex items-center">
                       <div class="w-2 h-2 bg-[#89f4e2] rounded-full mr-[7px]"></div>
                       <div
                         class="text-black/90 text-xs font-normal font-['PingFang_SC'] leading-snug"
@@ -195,8 +180,8 @@ const filterData = () => {
                   class="row-start-5 col-start-2 col-end-4 flex items-center mt-[26px] justify-around"
                 >
                   <div
-                    class="px-3 py-1.5 rounded-[30px] border border-[#ff2d2d] justify-center items-center gap-1 flex"
-                    style="border: 1px solid #ff2d2d"
+                    class="px-3 py-1.5 rounded-[30px] border border-solid border-[#ff2d2d] justify-center items-center gap-1 flex"
+                    @click.stop="handleImportant(it)"
                   >
                     <span style="color: #ff2d2d" class="flex items-center">+</span>
                     <div
@@ -207,7 +192,7 @@ const filterData = () => {
                   </div>
                   <div
                     class="px-5 py-1 bg-[#e1ecff] rounded-[30px] border border-[#2357e9] justify-center items-center gap-1 inline-flex"
-                    @click="callPhone('13700000000')"
+                    @click.stop="callPhone(it.mobile)"
                   >
                     <div
                       class="text-center text-[#2357e9] text-sm font-normal font-['PingFang_SC'] leading-normal"
@@ -220,7 +205,7 @@ const filterData = () => {
                   >
                     <div
                       class="text-center text-white text-sm font-normal font-['PingFang_SC'] leading-normal"
-                      @click="publishState = true"
+                      @click.stop="publishState = true"
                     >
                       写跟进
                     </div>
@@ -235,7 +220,7 @@ const filterData = () => {
   </view>
   <wd-action-sheet v-model="publishState" title="创建跟进" @close="publishState = false">
     <view class="flex flex-col p-4">
-      <div><DataForm :schema="schema" direction="horizontal"></DataForm></div>
+      <div><DataForm :schema="schema" :rules="rules" direction="horizontal"></DataForm></div>
       <div><wd-button block :round="false">提交</wd-button></div>
     </view>
   </wd-action-sheet>

+ 5 - 5
packages/merchant/src/pages/home/agent/components/task-card.vue

@@ -91,17 +91,17 @@ const toDetail = () =>
         </span>
       </div>
       <div class="flex items-center border-t border-t-solid border-t-[#efefef] pt-1.5">
-        <div class="text-black/90 text-sm font-normal font-['PingFang SC']">
+        <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">
           目标 {{ options.storeQuantity }}
         </div>
         <template v-if="!options.receive">
           <div class="flex-1"></div>
-          <div class="text-black/90 text-sm font-normal font-['PingFang SC']">
+          <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">
             个人完成
             <span style="color: #2357e9">{{ options.personalCompletedNum }}</span>
           </div>
           <div class="flex-1"></div>
-          <div class="text-black/90 text-sm font-normal font-['PingFang SC']">
+          <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">
             累计完成
             <span style="color: #f1981b">{{ options.completedNum }}</span>
           </div>
@@ -114,14 +114,14 @@ const toDetail = () =>
             style="border: 1px solid #fe5053"
             @click.stop="acceptingNoOrders(options)"
           >
-            <div class="w-9 text-[#ff2d2d] text-xs font-normal font-['PingFang SC']">不接单</div>
+            <div class="w-9 text-[#ff2d2d] text-xs font-normal font-['PingFang_SC']">不接单</div>
           </div>
           <div
             v-if="options.receive"
             @click.stop="acceptingOrders(options)"
             class="w-[68px] h-7 px-2.5 py-[3px] bg-[#2357e9] rounded-[30px] justify-center items-center gap-2.5 inline-flex"
           >
-            <div class="text-white text-xs font-normal font-['PingFang SC']">接单</div>
+            <div class="text-white text-xs font-normal font-['PingFang_SC']">接单</div>
           </div>
         </template>
       </div>

+ 1 - 1
packages/merchant/src/pages/home/agent/report-infos/index.vue

@@ -111,7 +111,7 @@ const handleDelete = async (reportInfo: ReportInfo) => {
               </div>
               <template v-if="it.reviewStatus === ReportInfoReviewStatus.Rejected">
                 <div class="my-3 w-full h-.25 bg-[#f4f4f4]"></div>
-                <div class="text-[#ff2d2d] text-sm font-normal font-['PingFang SC'] leading-none">
+                <div class="text-[#ff2d2d] text-sm font-normal font-['PingFang_SC'] leading-none">
                   原因:{{ it.reason }}
                 </div>
                 <div class="flex justify-end">

+ 21 - 21
packages/merchant/src/pages/home/tasks/detail/index.vue

@@ -101,7 +101,7 @@ onLoad(async (query: { taskId: string }) => {
   <view class="flex-grow flex flex-col p-4 gap-4" style="position: relative">
     <Card :custom-class="`${getBgClass(Number(taskDetails?.taskType))} px-0 py-0`">
       <div class="flex items-center py-[20px] px-[15px]">
-        <div class="text-black/90 text-lg font-normal font-['PingFang SC'] leading-none">
+        <div class="text-black/90 text-lg font-normal font-['PingFang_SC'] leading-none">
           {{ taskDetails?.name }}
         </div>
         <div class="flex-1"></div>
@@ -128,7 +128,7 @@ onLoad(async (query: { taskId: string }) => {
                   {{ (taskDetails.completedNum / taskDetails.storeQuantity) * 100 }}%
                 </div>
                 <div
-                  class="w-[22.71px] h-[10.82px] text-black/60 text-[7px] font-normal font-['PingFang SC']"
+                  class="w-[22.71px] h-[10.82px] text-black/60 text-[7px] font-normal font-['PingFang_SC']"
                 >
                   达成率
                 </div>
@@ -147,21 +147,21 @@ onLoad(async (query: { taskId: string }) => {
         </div>
         <div class="flex flex-row items-center justify-between gap-2 p-[20px]">
           <div class="flex items-center justify-center flex-col">
-            <div class="text-black/60 text-xs font-normal font-['PingFang SC']">目标</div>
+            <div class="text-black/60 text-xs font-normal font-['PingFang_SC']">目标</div>
             <div class="w-5 text-black/90 text-lg font-medium font-['DIN'] leading-normal">
               {{ taskDetails?.storeQuantity }}
             </div>
           </div>
           <div style="width: 1px; height: 10px; background: #e8e8e8"></div>
           <div class="flex items-center justify-center flex-col">
-            <div class="text-black/60 text-xs font-normal font-['PingFang SC']">个人完成</div>
+            <div class="text-black/60 text-xs font-normal font-['PingFang_SC']">个人完成</div>
             <div class="w-5 text-black/90 text-lg font-medium font-['DIN'] leading-normal">
               {{ taskDetails?.personalCompletedNum }}
             </div>
           </div>
           <div style="width: 1px; height: 5px; background: #e8e8e8"></div>
           <div class="flex items-center justify-center flex-col">
-            <div class="text-black/60 text-xs font-normal font-['PingFang SC']">累计完成</div>
+            <div class="text-black/60 text-xs font-normal font-['PingFang_SC']">累计完成</div>
             <div class="w-5 text-black/90 text-lg font-medium font-['DIN'] leading-normal">
               {{ taskDetails?.completedNum }}
             </div>
@@ -174,7 +174,7 @@ onLoad(async (query: { taskId: string }) => {
           <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             任务名称:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
             {{ taskDetails?.name }}
           </span>
         </div>
@@ -182,7 +182,7 @@ onLoad(async (query: { taskId: string }) => {
           <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             发起方:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
             {{ taskDetails?.bearerName }}
           </span>
         </div>
@@ -190,7 +190,7 @@ onLoad(async (query: { taskId: string }) => {
           <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             适用店面:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
             {{ taskDetails?.shopNames }}
           </span>
         </div>
@@ -198,7 +198,7 @@ onLoad(async (query: { taskId: string }) => {
           <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             任务时间:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
             {{ dayjs(taskDetails?.startTime).format('YYYY/MM/DD') }}-{{
               dayjs(taskDetails?.endTime).format('YYYY/MM/DD')
             }}
@@ -208,7 +208,7 @@ onLoad(async (query: { taskId: string }) => {
           <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             详细说明:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
             {{ taskDetails?.detail }}
           </span>
         </div>
@@ -216,7 +216,7 @@ onLoad(async (query: { taskId: string }) => {
           <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             完成方式:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
             {{ taskDetails?.finalTypeName }}
           </span>
         </div>
@@ -226,7 +226,7 @@ onLoad(async (query: { taskId: string }) => {
           <div class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-none">
             已接单经纪人
           </div>
-          <div class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+          <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
             共{{ taskDetails?.brokerList.length }}人
           </div>
         </div>
@@ -235,7 +235,7 @@ onLoad(async (query: { taskId: string }) => {
             <div class="my-[23px]">
               <img class="w-[46px] h-[46px] rounded-full" :src="item.headImgUrl" alt="" />
               <div
-                class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none mt-[10px]"
+                class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none mt-[10px]"
               >
                 {{ item.brokerName }}
               </div>
@@ -273,29 +273,29 @@ onLoad(async (query: { taskId: string }) => {
         <template v-for="(item, i) in taskDetails?.reportList" :key="i">
           <div class="bg-[#f7fbff] rounded-[10px] py-[22px] px-[16px] mt-[20px]">
             <div class="flex items-center justify-between">
-              <div class="text-black/40 text-xs font-normal font-['PingFang SC'] leading-normal">
+              <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
                 {{ dayjs(item.createTime).format('YYYY/MM/DD HH:mm') }}
               </div>
-              <div class="text-[#2357e9] text-xs font-normal font-['PingFang SC'] leading-normal">
+              <div class="text-[#2357e9] text-xs font-normal font-['PingFang_SC'] leading-normal">
                 {{ item.status == '0' ? '审核通过' : item.status == '1' ? '审核中' : '驳回' }}
               </div>
             </div>
             <div class="mt-[7px]">
-              <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-normal">
+              <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">
                 个人完成量:
               </span>
-              <span class="text-black/90 text-sm font-normal font-['PingFang SC'] leading-normal">
+              <span class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-normal">
                 {{ item.num }}
               </span>
             </div>
             <div class="mt-[2px]">
-              <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-normal">
+              <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">
                 上报说明
               </span>
-              <span class="text-black/90 text-sm font-normal font-['PingFang SC'] leading-normal">
+              <span class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-normal">
               </span>
-              <span class="text-black/90 text-sm font-normal font-['PingFang SC'] leading-normal">
+              <span class="text-black/90 text-sm font-normal font-['PingFang_SC'] leading-normal">
                 {{ item.remark }}
               </span>
             </div>
@@ -333,7 +333,7 @@ onLoad(async (query: { taskId: string }) => {
           <div class="px-5 py-3 bg-[#2357e9] rounded-md justify-center items-center gap-1">
             <div
               @click="publishState = true"
-              class="text-center text-white text-base font-normal font-['PingFang SC'] leading-normal"
+              class="text-center text-white text-base font-normal font-['PingFang_SC'] leading-normal"
             >
               上报
             </div>

+ 5 - 5
packages/merchant/src/pages/home/tasks/index.vue

@@ -132,17 +132,17 @@ onMounted(async () => {
                   </span>
                 </div>
                 <div class="flex items-center border-t border-t-solid border-t-[#efefef] pt-1.5">
-                  <div class="text-black/90 text-sm font-normal font-['PingFang SC']">
+                  <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">
                     目标 {{ item.storeQuantity }}
                   </div>
                   <template v-if="!item.receive">
                     <div class="flex-1"></div>
-                    <div class="text-black/90 text-sm font-normal font-['PingFang SC']">
+                    <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">
                       个人完成
                       <span style="color: #2357e9">{{ item.personalCompletedNum }}</span>
                     </div>
                     <div class="flex-1"></div>
-                    <div class="text-black/90 text-sm font-normal font-['PingFang SC']">
+                    <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">
                       累计完成
                       <span style="color: #f1981b">{{ item.completedNum }}</span>
                     </div>
@@ -155,7 +155,7 @@ onMounted(async () => {
                       style="border: 1px solid #fe5053"
                       @click.stop="acceptingNoOrders(item)"
                     >
-                      <div class="w-9 text-[#ff2d2d] text-xs font-normal font-['PingFang SC']">
+                      <div class="w-9 text-[#ff2d2d] text-xs font-normal font-['PingFang_SC']">
                         不接单
                       </div>
                     </div>
@@ -164,7 +164,7 @@ onMounted(async () => {
                       @click.stop="acceptingOrders(item)"
                       class="w-[68px] h-7 px-2.5 py-[3px] bg-[#2357e9] rounded-[30px] justify-center items-center gap-2.5 inline-flex"
                     >
-                      <div class="text-white text-xs font-normal font-['PingFang SC']">接单</div>
+                      <div class="text-white text-xs font-normal font-['PingFang_SC']">接单</div>
                     </div>
                   </template>
                 </div>