Преглед на файлове

feat: 添加活动报名信息接口,优化活动和游学报名列表获取逻辑,更新照片列表请求参数

EvilDragon преди 5 месеца
родител
ревизия
42bbd7d61a

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

@@ -375,6 +375,34 @@ export interface StudyTour {
   activityEndTime?: any
   activityAddr?: any
 }
+/**
+ * 游学/活动的报名信息
+ */
+export interface ActivitySignUp {
+  id: number
+  userId: number
+  applyTime: number
+  applyType: number
+  applyStatus: number
+  applyPoints: any
+  isJoin: string
+  createTime: number
+  name: string
+  headImgUrl: string
+  mobile: string
+  brokerId: any
+  brokerName: string
+  memberLevelId: number
+  memberLevelName: any
+  /**
+   * 游学ID
+   */
+  studyId?: number
+  /**
+   * 活动ID
+   */
+  activityId?: number
+}
 export interface MyStudyTour {
   id: number
   name: string

+ 5 - 44
packages/app/src/core/libs/requests.ts

@@ -22,6 +22,7 @@ import {
   Badge,
   Certificate,
   UserBasicInfo,
+  ActivitySignUp,
 } from './models'
 import dayjs from 'dayjs'
 
@@ -589,27 +590,7 @@ export const activitySignup = (data: { id: number }) =>
  * 获取活动报名列表
  */
 export const getActivitySignups = (query: { activityId: string }) =>
-  httpGet<{
-    list: {
-      id: number
-      activityId: number
-      userId: number
-      applyTime: number
-      applyType: number
-      applyStatus: number
-      applyPoints: any
-      isJoin: string
-      createTime: number
-      name: string
-      headImgUrl: string
-      mobile: string
-      brokerId: any
-      brokerName: string
-      memberLevelId: number
-      memberLevelName: any
-    }[]
-    total: number
-  }>('/app-api/member/activity/signup/page', query)
+  httpGet<ResPageData<ActivitySignUp>>('/app-api/member/activity/signup/page', query)
 /**
  * 获取游学列表
  */
@@ -629,32 +610,12 @@ export const studyTourSignup = (data: { id: number }) =>
  * 获取游学报名列表
  */
 export const getStudyTourSignups = (query: { studyId: string }) =>
-  httpGet<{
-    list: {
-      id: number
-      activityId: number
-      userId: number
-      applyTime: number
-      applyType: number
-      applyStatus: number
-      applyPoints: any
-      isJoin: string
-      createTime: number
-      name: string
-      headImgUrl: string
-      mobile: string
-      brokerId: any
-      brokerName: string
-      memberLevelId: number
-      memberLevelName: any
-    }[]
-    total: number
-  }>('/app-api/member/app-study-abroad/signup/page', query)
+  httpGet<ResPageData<ActivitySignUp>>('/app-api/member/app-study-abroad/signup/page', query)
 /**
  * 获取游学或活动的照片列表
- * @param query {{bizId: string; bizType: '1'|'2'}} bizId: 游学或活动id, bizType: 1-游学, 2-活动
+ * @param query {{bizId: string; bizType: '1'|'2'}} bizId: 游学或活动id, bizType: 2-游学, 1-活动
  */
-export const getPhotoList = (query: { bizId: string; bizType: '1' | '2' }) =>
+export const getPhotoList = (query: { bizId: string; bizType: '1' | '2'; pageSize?: number }) =>
   httpGet<
     ResPageData<{
       id: number

+ 12 - 2
packages/app/src/pages/home/activity/detail/index.vue

@@ -12,6 +12,7 @@ import {
   getActivity,
   getActivitySignups,
   getAppMemberLevelConfigs,
+  getPhotoList,
   getStudyTour,
   getStudyTourSignups,
   studyTourSignup,
@@ -60,6 +61,15 @@ const { data: signups, run: setSignups } = useRequest(
 const { data: levels, run: setLevels } = useRequest(() => getAppMemberLevelConfigs(), {
   initialData: [],
 })
+const { data: photos, run: setPhotos } = useRequest(
+  () =>
+    getPhotoList({
+      bizId: id.value,
+      bizType: { studyTour: '2', activity: '1' }[type.value],
+      pageSize: -1,
+    }),
+  { initialData: { list: [], total: 0 } },
+)
 const show = ref(false)
 const successShow = ref(false)
 const listShow = ref(false)
@@ -210,8 +220,7 @@ onLoad(async (query: { id: string; type: 'activity' | 'studyTour' }) => {
       })
     })
     .exec()
-  await setSignups()
-  await setLevels()
+  await Promise.all([setSignups(), setLevels(), setPhotos()])
 })
 
 onShareAppMessage(() => ({ title: data.value.name, imageUrl: data.value.thumbnailUrl }))
@@ -437,6 +446,7 @@ onShareTimeline(() => ({ title: data.value.name, imageUrl: data.value.thumbnailU
     ></wd-fab> -->
     <!-- <wd-fab  :expandable="false" :gap="{ bottom: 0, top: 0 }"></wd-fab> -->
     <div
+      v-if="photos.total"
       class="fixed bottom-30 right-8 bg-[#0cbe7c] w-15 h-15 rounded-full flex flex-col items-center justify-center"
       @click="
         router.push(`/pages/home/activity/images/index?id=${id}&type=${type}&title=${data.name}`)

+ 1 - 1
packages/app/src/pages/home/index.vue

@@ -192,7 +192,7 @@ onShareAppMessage(async ({ from, target }) => {
       </view>
       <view class="mx-3.5 text-5 font-400">设计圈</view>
       <view class="mx-3.5">
-        <PageHelperEvo ref="pageHelperRef" :request="getCircles" :query="{}" class="">
+        <PageHelperEvo ref="pageHelperRef" :request="getCircles" class="">
           <template #default="{ source }">
             <template v-for="it of source.list" :key="it.id">
               <view class="my-3">