|
@@ -11,6 +11,7 @@ import {
|
|
|
activitySignup,
|
|
|
getActivity,
|
|
|
getActivitySignups,
|
|
|
+ getMemberLevels,
|
|
|
getStudyTour,
|
|
|
getStudyTourSignups,
|
|
|
studyTourSignup,
|
|
@@ -30,7 +31,7 @@ import { NetImages } from '../../../../core/libs/net-images'
|
|
|
import signupListDialogBg from '@designer-hub/assets/src/libs/assets/signupListDialogBg'
|
|
|
import { getActivityStatusText, getCountsArr } from '../../../../core/utils/common'
|
|
|
import { extractColorsFromImageData } from 'extract-colors/lib/extract-colors.mjs'
|
|
|
-import { sort } from 'radash'
|
|
|
+import { group, sort } from 'radash'
|
|
|
import { Activity, StudyTour } from '../../../../core/models/moment'
|
|
|
|
|
|
const themeVars = ref<ConfigProviderThemeVars>({
|
|
@@ -49,6 +50,7 @@ const { data: signups, run: setSignups } = useRequest(
|
|
|
() => getActivitySignups({ activityId: id.value }),
|
|
|
{ initialData: { list: [], total: 0 } },
|
|
|
)
|
|
|
+const { data: levels, run: setLevels } = useRequest(() => getMemberLevels(), { initialData: [] })
|
|
|
const show = ref(false)
|
|
|
const successShow = ref(false)
|
|
|
const listShow = ref(false)
|
|
@@ -56,6 +58,18 @@ const dominantColor = ref()
|
|
|
const palette = ref()
|
|
|
const isActivity = computed(() => type.value === 'activity')
|
|
|
const isStudyTour = computed(() => type.value === 'studyTour')
|
|
|
+const levelsById = computed(() =>
|
|
|
+ levels.value.reduce((acc, item) => {
|
|
|
+ acc[item.id] = item
|
|
|
+ return acc
|
|
|
+ }, {}),
|
|
|
+)
|
|
|
+const levelsByMemberLevel = computed(() =>
|
|
|
+ levels.value.reduce((acc, item) => {
|
|
|
+ acc[item.memberLevel] = item
|
|
|
+ return acc
|
|
|
+ }, {}),
|
|
|
+)
|
|
|
const infos = computed(() => [
|
|
|
{
|
|
|
icon: clock,
|
|
@@ -71,14 +85,10 @@ const infos = computed(() => [
|
|
|
title: `${activityTypes.value[type.value]}时间`,
|
|
|
content: [
|
|
|
dayjs(
|
|
|
- 'activityStartTime' in data.value
|
|
|
- ? data.value.activityStartTime
|
|
|
- : data.value.studyStartTime || data.value.planStudyStartTime,
|
|
|
+ data.value.activityStartTime || data.value.studyStartTime || data.value.planStudyStartTime,
|
|
|
).format('YYYY.MM.DD'),
|
|
|
dayjs(
|
|
|
- 'activityEndTime' in data.value
|
|
|
- ? data.value.activityEndTime
|
|
|
- : data.value.studyEndTime || data.value.planStudyEndTime,
|
|
|
+ data.value.activityEndTime || data.value.studyEndTime || data.value.planStudyEndTime,
|
|
|
).format('YYYY.MM.DD'),
|
|
|
],
|
|
|
visable: true,
|
|
@@ -86,7 +96,7 @@ const infos = computed(() => [
|
|
|
{
|
|
|
icon: location,
|
|
|
title: `${activityTypes.value[type.value]}地点`,
|
|
|
- content: ['activityAddr' in data.value ? data.value.activityAddr : ''],
|
|
|
+ content: [data.value.activityAddr || ''],
|
|
|
visable: isActivity.value,
|
|
|
},
|
|
|
{
|
|
@@ -98,7 +108,11 @@ const infos = computed(() => [
|
|
|
{
|
|
|
icon: funnel,
|
|
|
title: `等级限制`,
|
|
|
- content: [data.value.memberLevel?.join('、')],
|
|
|
+ content: [
|
|
|
+ data.value.memberLevel
|
|
|
+ ?.map((it) => levelsByMemberLevel.value[String(it)]?.memberLevelName)
|
|
|
+ .join(',') || '',
|
|
|
+ ],
|
|
|
visable: true,
|
|
|
},
|
|
|
])
|
|
@@ -159,6 +173,7 @@ onLoad(async (query: { id: string; type: 'activity' | 'studyTour' }) => {
|
|
|
})
|
|
|
.exec()
|
|
|
await setSignups()
|
|
|
+ await setLevels()
|
|
|
})
|
|
|
</script>
|
|
|
<template>
|
|
@@ -222,8 +237,9 @@ onLoad(async (query: { id: string; type: 'activity' | 'studyTour' }) => {
|
|
|
<div
|
|
|
class="px-4 py-6 bg-[#010102]/30 backdrop-blur-[20px] rounded-2xl my-8 flex flex-col gap-3"
|
|
|
>
|
|
|
+ <!-- {{ levelsById }} -->
|
|
|
<template v-for="(it, i) in infos" :key="i">
|
|
|
- <div v-if="it.show" class="flex items-center gap-1.5">
|
|
|
+ <div v-if="it.visable" class="flex items-center gap-1.5">
|
|
|
<wd-img width="16" height="16" :src="it.icon"></wd-img>
|
|
|
<div
|
|
|
class="w-[70px] text-[#c1c1c1] text-base font-normal font-['PingFang_SC'] leading-normal"
|