fix(ActivitiesDetail): 修复分享海报缺少活动ID的问题
**问题描述**: 点击分享海报按钮时提示"缺少活动ID" **根本原因**: 1. ActivitiesDetail 页面跳转到海报页面时没有传递 activityId 参数 2. PosterCheckinDetail 页面调用 posterAPI 时没有传递 activity_id 参数 **修改内容**: ### src/pages/ActivitiesDetail/index.vue - 修复 onSharePoster 函数,跳转时传递 activityId 参数 - 优化 useLoad 钩子,支持 id/activityId/activity_id 三种参数名 - 移除默认ID逻辑,改为友好提示并返回上一页 ### src/pages/PosterCheckinDetail/index.vue - 修改 onMounted 钩子,读取 URL 中的 activityId 参数 - 修改 fetchPosterDetail 函数,将 activityId 传递给 posterAPI ### src/pages/CheckinMap/index.vue - 更新 LastEditTime **测试建议**: 1. 打开活动详情页(确保URL有activityId参数) 2. 点击"分享海报"按钮 3. 应该能正常显示海报打卡页面 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Showing
3 changed files
with
29 additions
and
8 deletions
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2026-02-09 | 2 | * @Date: 2026-02-09 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2026-02-09 18:55:56 | 4 | + * @LastEditTime: 2026-02-10 09:58:37 |
| 5 | * @FilePath: /lls_program/src/pages/ActivitiesDetail/index.vue | 5 | * @FilePath: /lls_program/src/pages/ActivitiesDetail/index.vue |
| 6 | * @Description: 活动详情页面 - 完全使用 map_activity.js 新接口,支持多活动详情展示 | 6 | * @Description: 活动详情页面 - 完全使用 map_activity.js 新接口,支持多活动详情展示 |
| 7 | --> | 7 | --> |
| ... | @@ -156,6 +156,7 @@ import { mockMapActivityDetailAPI } from '@/utils/mockData' | ... | @@ -156,6 +156,7 @@ import { mockMapActivityDetailAPI } from '@/utils/mockData' |
| 156 | 156 | ||
| 157 | // 环境变量:是否使用 mock 数据 | 157 | // 环境变量:是否使用 mock 数据 |
| 158 | const USE_MOCK_DATA = process.env.NODE_ENV === 'development' | 158 | const USE_MOCK_DATA = process.env.NODE_ENV === 'development' |
| 159 | +// const USE_MOCK_DATA = false | ||
| 159 | 160 | ||
| 160 | // 默认海报图 | 161 | // 默认海报图 |
| 161 | const defaultPoster = ref( | 162 | const defaultPoster = ref( |
| ... | @@ -633,8 +634,9 @@ defineExpose({ | ... | @@ -633,8 +634,9 @@ defineExpose({ |
| 633 | */ | 634 | */ |
| 634 | const onSharePoster = () => { | 635 | const onSharePoster = () => { |
| 635 | console.log('分享海报') | 636 | console.log('分享海报') |
| 637 | + // 传递 activityId 参数给海报页面 | ||
| 636 | Taro.navigateTo({ | 638 | Taro.navigateTo({ |
| 637 | - url: '/pages/PosterCheckinDetail/index', | 639 | + url: `/pages/PosterCheckinDetail/index?activityId=${activityId.value}`, |
| 638 | }) | 640 | }) |
| 639 | } | 641 | } |
| 640 | 642 | ||
| ... | @@ -1045,15 +1047,26 @@ const initPageData = async () => { | ... | @@ -1045,15 +1047,26 @@ const initPageData = async () => { |
| 1045 | useLoad(options => { | 1047 | useLoad(options => { |
| 1046 | console.log('[ActivitiesCover] 页面加载, 参数:', options) | 1048 | console.log('[ActivitiesCover] 页面加载, 参数:', options) |
| 1047 | 1049 | ||
| 1048 | - // 获取活动 ID(如果有) | 1050 | + // 获取活动 ID(必须有) |
| 1049 | if (options.id) { | 1051 | if (options.id) { |
| 1050 | activityId.value = options.id | 1052 | activityId.value = options.id |
| 1053 | + } else if (options.activityId) { | ||
| 1054 | + activityId.value = options.activityId | ||
| 1051 | } else if (options.activity_id) { | 1055 | } else if (options.activity_id) { |
| 1052 | activityId.value = options.activity_id | 1056 | activityId.value = options.activity_id |
| 1053 | } else { | 1057 | } else { |
| 1054 | - // 如果没有活动ID,使用默认ID | 1058 | + // 如果没有活动ID,提示用户并返回 |
| 1055 | - activityId.value = '1' | 1059 | + Taro.showToast({ |
| 1056 | - console.warn('[ActivitiesCover] 未提供活动ID,使用默认ID: 1') | 1060 | + title: '缺少活动ID参数', |
| 1061 | + icon: 'none', | ||
| 1062 | + duration: 2000, | ||
| 1063 | + }) | ||
| 1064 | + console.error('[ActivitiesDetail] 缺少活动ID参数') | ||
| 1065 | + // 返回上一页 | ||
| 1066 | + setTimeout(() => { | ||
| 1067 | + Taro.navigateBack() | ||
| 1068 | + }, 2000) | ||
| 1069 | + return | ||
| 1057 | } | 1070 | } |
| 1058 | 1071 | ||
| 1059 | // 处理分享页面的授权逻辑 | 1072 | // 处理分享页面的授权逻辑 | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2026-02-05 19:48:00 | 2 | * @Date: 2026-02-05 19:48:00 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2026-02-05 20:09:34 | 4 | + * @LastEditTime: 2026-02-10 10:19:50 |
| 5 | * @FilePath: /lls_program/src/pages/CheckinMap/index.vue | 5 | * @FilePath: /lls_program/src/pages/CheckinMap/index.vue |
| 6 | * @Description: 便民地图列表页 | 6 | * @Description: 便民地图列表页 |
| 7 | --> | 7 | --> |
| ... | @@ -43,6 +43,7 @@ import { useLoad } from '@tarojs/taro' | ... | @@ -43,6 +43,7 @@ import { useLoad } from '@tarojs/taro' |
| 43 | 43 | ||
| 44 | // ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API | 44 | // ⚠️ MOCK 数据开关 - 开发环境使用 mock 数据,生产环境使用真实 API |
| 45 | const USE_MOCK_DATA = process.env.NODE_ENV === 'development' | 45 | const USE_MOCK_DATA = process.env.NODE_ENV === 'development' |
| 46 | +// const USE_MOCK_DATA = false | ||
| 46 | 47 | ||
| 47 | // 默认封面图 | 48 | // 默认封面图 |
| 48 | const DEFAULT_COVER = | 49 | const DEFAULT_COVER = | ... | ... |
| ... | @@ -209,7 +209,13 @@ const fetchPosterDetail = async () => { | ... | @@ -209,7 +209,13 @@ const fetchPosterDetail = async () => { |
| 209 | // 小程序版本。正式版为 "release",体验版为 "trial"。默认是正式版 | 209 | // 小程序版本。正式版为 "release",体验版为 "trial"。默认是正式版 |
| 210 | const env_version = envVersion === 'release' ? 'release' : 'trial' | 210 | const env_version = envVersion === 'release' ? 'release' : 'trial' |
| 211 | 211 | ||
| 212 | - const response = await posterAPI({ env_version }) | 212 | + // 构建请求参数,包含 activity_id |
| 213 | + const requestParams = { env_version } | ||
| 214 | + if (pageParams.value.activityId) { | ||
| 215 | + requestParams.activity_id = pageParams.value.activityId | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + const response = await posterAPI(requestParams) | ||
| 213 | 219 | ||
| 214 | if (response.code === 1) { | 220 | if (response.code === 1) { |
| 215 | apiData.value = response.data | 221 | apiData.value = response.data |
| ... | @@ -557,6 +563,7 @@ onMounted(async () => { | ... | @@ -557,6 +563,7 @@ onMounted(async () => { |
| 557 | 563 | ||
| 558 | pageParams.value = { | 564 | pageParams.value = { |
| 559 | id: params.id || '', | 565 | id: params.id || '', |
| 566 | + activityId: params.activityId || params.activity_id || params.id || '', // 接收 activityId 参数 | ||
| 560 | } | 567 | } |
| 561 | 568 | ||
| 562 | console.log('海报打卡页面接收到的参数:', pageParams.value) | 569 | console.log('海报打卡页面接收到的参数:', pageParams.value) | ... | ... |
-
Please register or login to post a comment