feat(user): 使用微信原生 Picker 替换所在地选择弹层
- 删除 NutUI Address 相关导入、状态及地区数据转换逻辑 - 新增派生 regionValue 用于绑定微信原生 Picker 的 value - 将 handleRegionChange 调整为处理微信 Picker 的事件 - 将所在地选择 UI 修改为微信原生 Picker 包裹的视图结构 - 地图定位失败使用弹窗提示,引导用户手动选择或重试 - 移除手动打开地区选择器的函数及 NutUI 组件 - 保留 RegionData 用于文本智能识别解析 - 编译通过,提升在无地图或无权限环境下的地区选择稳定性
This commit is contained in:
@@ -1,11 +1,17 @@
|
||||
import React, { useState, useEffect } from 'react'
|
||||
import React, { useState, useEffect, useRef } from 'react'
|
||||
import { View, Text, ScrollView, Image } from '@tarojs/components'
|
||||
import Taro from '@tarojs/taro'
|
||||
import { getShopEvent, getRegistrationStatus, getEventStatusLabel } from '@/api/shop/shopEvent'
|
||||
import type { ShopEvent, RegistrationStatus, EventFormField } from '@/api/shop/shopEvent'
|
||||
import { getCompressedImageUrl } from '@/utils/image'
|
||||
import { useShare } from '@/hooks/useShare'
|
||||
import SharePoster, { SharePosterHandle } from '@/components/SharePoster'
|
||||
|
||||
definePageConfig({ navigationBarTitleText: '赛事详情' })
|
||||
definePageConfig({
|
||||
navigationBarTitleText: '赛事详情',
|
||||
enableShareAppMessage: true,
|
||||
enableShareTimeline: true,
|
||||
})
|
||||
|
||||
const EventDetailPage: React.FC = () => {
|
||||
const { id } = Taro.getCurrentInstance().router?.params || {}
|
||||
@@ -13,6 +19,30 @@ const EventDetailPage: React.FC = () => {
|
||||
const [regStatus, setRegStatus] = useState<RegistrationStatus | null>(null)
|
||||
const [loading, setLoading] = useState(true)
|
||||
|
||||
// 分享 / 朋友圈
|
||||
const posterRef = useRef<SharePosterHandle>(null)
|
||||
const [posterPath, setPosterPath] = useState('')
|
||||
useShare({
|
||||
title: event?.name || '精彩赛事推荐',
|
||||
path: `/pages/event/detail?id=${id}`,
|
||||
query: `id=${id}`,
|
||||
imageUrl: posterPath || event?.image || undefined,
|
||||
})
|
||||
|
||||
// 数据加载完成后异步生成分享海报(带小程序码)
|
||||
useEffect(() => {
|
||||
if (event) {
|
||||
posterRef.current
|
||||
?.generate({
|
||||
cover: event.image,
|
||||
title: event.name || '精彩赛事',
|
||||
page: 'pages/event/detail',
|
||||
})
|
||||
.then(setPosterPath)
|
||||
.catch(() => {})
|
||||
}
|
||||
}, [event])
|
||||
|
||||
useEffect(() => {
|
||||
if (id) {
|
||||
fetchDetail(Number(id))
|
||||
@@ -189,6 +219,8 @@ const EventDetailPage: React.FC = () => {
|
||||
</View>
|
||||
)}
|
||||
</View>
|
||||
{/* 分享海报画布(离屏,用于生成带小程序码的海报图) */}
|
||||
<SharePoster ref={posterRef} />
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user