소스 검색

refactor(app): 优化活动和游学相关页面

- 移除不必要的导入和变量
-调整活动和游学报名列表的请求参数,添加 pageSize: - 以获取所有数据- 优化用户头像展示逻辑,过滤掉未登录用户
- 更新消息页面相关组件
- 调整游学列表页面布局
EvilDragon 1 개월 전
부모
커밋
b920d70ce8

+ 2 - 2
packages/app/src/core/libs/requests.ts

@@ -592,7 +592,7 @@ export const activitySignup = (data: { id: number }) =>
 /**
  * 获取活动报名列表
  */
-export const getActivitySignups = (query: { activityId: string }) =>
+export const getActivitySignups = (query: { activityId: string; pageSize?: number }) =>
   httpGet<ResPageData<ActivitySignUp>>('/app-api/member/activity/signup/page', query)
 /**
  * 获取游学列表
@@ -612,7 +612,7 @@ export const studyTourSignup = (data: { id: number }) =>
 /**
  * 获取游学报名列表
  */
-export const getStudyTourSignups = (query: { studyId: string }) =>
+export const getStudyTourSignups = (query: { studyId: string; pageSize?: number }) =>
   httpGet<ResPageData<ActivitySignUp>>('/app-api/member/app-study-abroad/signup/page', query)
 /**
  * 获取游学或活动的照片列表

+ 9 - 15
packages/app/src/pages/home/activity/detail/index.vue

@@ -17,7 +17,6 @@ import {
   getStudyTourSignups,
   studyTourSignup,
 } from '../../../../core/libs/requests'
-import { bell, map, rightFill } from '@designer-hub/assets/src/assets/svgs'
 import dayjs from 'dayjs'
 import BottomAppBar from '@/components/bottom-app-bar.vue'
 import { useRouter } from '../../../../core/utils/router'
@@ -44,7 +43,7 @@ import ActivityAsOf from '../../components/activity-as-of.vue'
 import images from '@designer-hub/assets/src/libs/assets/images'
 import { usePermissions } from '../../../../composables/permissions'
 import { useAnalysis } from '@/composables/analysis'
-import mapGray from "@designer-hub/assets/src/libs/assets/mapGray";
+import mapGray from '@designer-hub/assets/src/libs/assets/mapGray'
 const themeVars = ref<ConfigProviderThemeVars>({
   tableBorderColor: 'white',
   tabsNavLineBgColor: 'white',
@@ -96,15 +95,6 @@ const places = computed(() => {
   }
   return '不限制'
 })
-const remainedCount = computed(() => {
-  if (isActivity.value && data.value?.activityAllowType === '1') {
-    return data.value?.activityAllowCount - signups.value.total
-  }
-  if (isStudyTour.value && data.value?.studyAllowType === '1') {
-    return data.value?.studyAllowCount - signups.value.total
-  }
-  return '不限制'
-})
 const infos = computed(() => [
   {
     icon: clock,
@@ -178,11 +168,11 @@ onLoad(async (query: { id: string; type: 'activity' | 'studyTour' }) => {
   type.value = query.type
   if (type.value === 'activity') {
     request.value = () => getActivity(id.value)
-    signUpsReq.value = () => getActivitySignups({ activityId: id.value })
+    signUpsReq.value = () => getActivitySignups({ activityId: id.value, pageSize: -1 })
   }
   if (type.value === 'studyTour') {
     request.value = () => getStudyTour(id.value)
-    signUpsReq.value = () => getStudyTourSignups({ studyId: id.value })
+    signUpsReq.value = () => getStudyTourSignups({ studyId: id.value, pageSize: -1 })
   }
   await setData()
   option.value = {
@@ -243,7 +233,7 @@ onShareTimeline(() => ({ title: data.value.name, imageUrl: data.value.thumbnailU
         canvas-id="firstCanvas"
         id="firstCanvas"
       ></canvas>
-      <ImageEvo :src="data?.backgroundUrl"></ImageEvo>
+      <ImageEvo :src="data?.bannerUrl"></ImageEvo>
       <!-- <wd-img width="100%" height="100%" :src="data?.backgroundUrl"></wd-img> -->
       <div class="absolute left-3.5 bottom-3" @click="isActivity && (listShow = true)">
         <!--        <div-->
@@ -260,7 +250,11 @@ onShareTimeline(() => ({ title: data.value.name, imageUrl: data.value.thumbnailU
         <!--        </div>-->
         <div class="flex items-center gap-1.25">
           <AvatarGroupCasual
-            :urls="signups.list.map((it) => it.headImgUrl || NetImages.DefaultAvatar)"
+            :urls="
+              signups.list
+                .filter((it) => it.userId)
+                .map((it) => it.headImgUrl || NetImages.DefaultAvatar)
+            "
             :width="40"
             :height="40"
           ></AvatarGroupCasual>

+ 1 - 1
packages/app/src/pages/home/components/info-card.vue

@@ -12,7 +12,7 @@ const props = defineProps<{
       {{ props.title }}
     </div>
     <div
-      class="w-[319px] h-[264px] text-justify text-black/40 text-base font-normal font-['PingFang_SC'] leading-relaxed"
+      class="text-justify text-black/40 text-base font-normal font-['PingFang_SC'] leading-relaxed"
     >
       {{ props.desc }}
     </div>

+ 6 - 2
packages/app/src/pages/home/components/register-card.vue

@@ -16,7 +16,7 @@ const props = defineProps<{
 }>()
 const router = useRouter()
 const { data: signups, run: setSignups } = useRequest(
-  () => getActivitySignups({ activityId: props.options!.id.toString() }),
+  () => getActivitySignups({ activityId: props.options!.id.toString(), pageSize: -1 }),
   { initialData: { list: [], total: 0 } },
 )
 const activityOptions = computed(() => omit(props.options, ['levelsByMemberLevel']))
@@ -48,7 +48,11 @@ onMounted(async () => {
         <view class="flex items-center mx-4 my-2.5 gap-1">
           <avatar-group-casual
             :show-number="3"
-            :urls="signups.list.map((it) => it.avatar || NetImages.DefaultAvatar)"
+            :urls="
+              signups.list
+                .filter((it) => it.userId)
+                .map((it) => it.headImgUrl || NetImages.DefaultAvatar)
+            "
           ></avatar-group-casual>
           <div
             class="ml-1 text-white/60 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"

+ 6 - 2
packages/app/src/pages/home/study-tour/components/register-card.vue

@@ -16,7 +16,7 @@ const props = defineProps<{
 }>()
 const router = useRouter()
 const { data: signups, run: setSignups } = useRequest(
-  () => getStudyTourSignups({ studyId: props.options!.id.toString() }),
+  () => getStudyTourSignups({ studyId: props.options!.id.toString(), pageSize: -1 }),
   { initialData: { list: [], total: 0 } },
 )
 const activityOptions = computed(() => omit(props.options, ['levelsByMemberLevel']))
@@ -47,7 +47,11 @@ onMounted(async () => {
         <view class="flex items-center mx-4 my-2.5 gap-1">
           <avatar-group-casual
             :show-number="3"
-            :urls="signups.list.map((it) => it.avatar || NetImages.DefaultAvatar)"
+            :urls="
+              signups.list
+                .filter((it) => it.userId)
+                .map((it) => it.headImgUrl || NetImages.DefaultAvatar)
+            "
           ></avatar-group-casual>
           <div
             class="ml-1 text-white/60 text-sm font-normal font-['PingFang_SC'] leading-[10.18px]"

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

@@ -62,7 +62,7 @@ onMounted(async () => {
             :src="banners[0].bannerImgUrl"
             @click="
               router.push(
-                `/pages/home/study-tour/list?designStudyAbroadYear=${banners[0].designStudyAbroadYear}`,
+                `/pages/home/study-tour/list?designStudyAbroadYear=${banners[0].designStudyAbroadYear}&designDesc=${banners[0].designDesc}`,
               )
             "
           ></wd-img>

+ 7 - 3
packages/app/src/pages/home/study-tour/list.vue

@@ -16,6 +16,7 @@ import PageHelper from '@/components/page-helper.vue'
 const designStudyAbroadYear = ref('')
 const title = ref('')
 const studyYear = ref('')
+const designDesc = ref()
 
 const { data: levels, run: setLevels } = useRequest(() => getAppMemberLevelConfigs(), {
   initialData: [],
@@ -26,10 +27,12 @@ const levelsByMemberLevel = computed(() =>
     return acc
   }, {}),
 )
-onLoad(async (query) => {
-  console.log('designStudyAbroadYear=', query)
+onLoad(async (query?: Record<string | 'designStudyAbroadYear' | 'designDesc', string>) => {
   designStudyAbroadYear.value = query.designStudyAbroadYear
   title.value = `${designStudyAbroadYear.value}年游学计划`
+  if (query.designDesc) {
+    designDesc.value = query.designDesc
+  }
 })
 
 onMounted(async () => {
@@ -48,7 +51,8 @@ onShareTimeline(() => ({
     <div
       class="mx-3.5 relative top--4 text-justify text-black/40 text-sm font-normal font-['PingFang_SC'] leading-relaxed"
     >
-      *我们为您精心打造了一个独特且极具价值的游学项目。这个项目的核心旨在全方位提升
+      <!--      *我们为您精心打造了一个独特且极具价值的游学项目。这个项目的核心旨在全方位提升-->
+      {{ designDesc }}
     </div>
     <PageHelper
       :request="getStudyTours"

+ 2 - 2
packages/app/src/pages/messages/components/message-card.vue

@@ -122,12 +122,12 @@ onMounted(async () => {
             "
             v-html="options.detailBody"
           ></div>
-          <div class="grid grid-cols-[auto_1fr] gap-x-5 gap-y-4.5">
+          <div class="grid grid-cols-[auto_1fr] gap-x-1 gap-y-4.5">
             <template v-if="options.messageSubType === 31 && options.isRead !== '1'">
               <div
                 class="text-black/40 text-sm font-normal font-['PingFang_SC'] h-5.5 flex items-center"
               >
-                积分券
+                销售积分券
               </div>
               <div
                 class="flex items-center h-full overflow-hidden"

+ 0 - 2
packages/app/src/pages/messages/index.vue

@@ -11,9 +11,7 @@
 <script setup lang="ts">
 import PageHelper from '@/components/page-helper.vue'
 import {
-  deleteMessage,
   getMessages,
-  getPointsCoupons,
   orderPointsCancel,
   orderPointsSubmit,
   updateMessage,