hookehuyr

refactor(Activities): 优化地图URL传递方式

- ActivitiesDetail页面通过detailAPI获取地图URL并保留
- 导航时通过URL参数传递地图URL,避免Activities页面重复调用API
- Activities页面从URL参数读取地图URL,移除getMapUrlAPI调用
- 提升性能,减少不必要的网络请求

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
......@@ -39,7 +39,6 @@ import Taro from '@tarojs/taro'
import BottomNav from '../../components/BottomNav.vue'
// 获取接口信息
import { getUserProfileAPI } from '@/api/user'
import { getMapUrlAPI } from '@/api/map'
/**
* 活动页面WebView组件
......@@ -131,18 +130,22 @@ const initPageData = async () => {
try {
console.log('=== WebView 初始化开始 ===')
// 获取地图URL
const mapUrlResponse = await getMapUrlAPI()
if (mapUrlResponse.code && mapUrlResponse.data?.url) {
baseUrl.value = mapUrlResponse.data.url
console.log('✅ 获取到的地图URL:', baseUrl.value)
// 从 URL 参数中获取地图 URL(由 ActivitiesDetail 页面传递)
const instance = Taro.getCurrentInstance()
const { mapUrl, current_lng, current_lat, discount_title, activityId } =
instance.router?.params || {}
// 解码地图 URL
if (mapUrl) {
baseUrl.value = decodeURIComponent(mapUrl)
console.log('✅ 从 URL 参数获取到的地图URL:', baseUrl.value)
} else {
console.error('❌ 获取地图URL失败:', mapUrlResponse.msg)
// 显示错误提示,不使用默认URL
console.error('❌ 未接收到地图URL参数')
// 显示错误提示
error.value = true
loading.value = false
Taro.showToast({
title: mapUrlResponse.msg || '获取地图信息失败',
title: '缺少地图信息',
icon: 'none',
})
return
......@@ -151,10 +154,6 @@ const initPageData = async () => {
// 获取用户信息
const { code, data } = await getUserProfileAPI()
if (code) {
// 获取路由参数中的经纬度信息
const instance = Taro.getCurrentInstance()
const { current_lng, current_lat, discount_title, activityId } = instance.router?.params || {}
console.log('✅ 接收到的位置参数:', { current_lng, current_lat, discount_title, activityId })
// 处理用户信息
const openid = data?.user.openid || ''
......
......@@ -579,9 +579,9 @@ const handleJoinActivity = async () => {
}
}
// 跳转到Activities页面,并传递位置参数
// 跳转到Activities页面,并传递位置参数和地图 URL
await Taro.navigateTo({
url: `/pages/Activities/index?current_lng=${userLocation.value.lng}&current_lat=${userLocation.value.lat}&discount_title=${activityData.value.discount_title}&activityId=${activityId.value}`,
url: `/pages/Activities/index?current_lng=${userLocation.value.lng}&current_lat=${userLocation.value.lat}&discount_title=${activityData.value.discount_title}&activityId=${activityId.value}&mapUrl=${encodeURIComponent(activityData.value.mapUrl)}`,
})
} catch (error) {
console.error('参加活动失败:', error)
......@@ -975,6 +975,7 @@ const transformApiDataToActivityData = apiData => {
rewards: rewards,
discount_title: apiData.discount_title || '打卡点专属优惠',
activityId: apiData.id || '',
mapUrl: apiData.url || '', // 保留地图 URL
}
}
......