feat(user): 使用微信原生 Picker 替换所在地选择弹层

- 删除 NutUI Address 相关导入、状态及地区数据转换逻辑
- 新增派生 regionValue 用于绑定微信原生 Picker 的 value
- 将 handleRegionChange 调整为处理微信 Picker 的事件
- 将所在地选择 UI 修改为微信原生 Picker 包裹的视图结构
- 地图定位失败使用弹窗提示,引导用户手动选择或重试
- 移除手动打开地区选择器的函数及 NutUI 组件
- 保留 RegionData 用于文本智能识别解析
- 编译通过,提升在无地图或无权限环境下的地区选择稳定性
This commit is contained in:
2026-07-13 08:16:17 +08:00
parent 70ad1d030f
commit d6d6b1f5a7
16 changed files with 546 additions and 25 deletions

23
src/api/share.ts Normal file
View File

@@ -0,0 +1,23 @@
import { generateMiniProgramCode } from '@/api/shop/shopInvite'
/**
* 生成「分享海报」用的小程序码(二维码)图片地址。
*
* - scene 复用现有 uid_${inviterId} 约定,与邀请裂变逻辑一致;
* - page 指向被分享的页面(小程序码扫码后落地页)。
*
* 注意:当前后端 /wx-login/getOrderQRCodeUnlimited/{scene} 仅消费 scene
* 若希望扫码后直达指定页面而非默认页,需后端读取并转发 page 参数。
*
* @param page 被分享页路径,如 pages/shop/product-detail
* @param inviterId 当前登录用户 id用于裂变归因未登录可省略
*/
export function generateShareCode(page: string, inviterId?: number | string) {
const scene = inviterId ? `uid_${inviterId}` : 'share'
return generateMiniProgramCode({
page,
scene,
width: 200,
envVersion: 'release',
})
}

View File

@@ -111,7 +111,12 @@ export interface InviteRecordParam {
*/
export async function generateMiniProgramCode(data: MiniProgramCodeParam) {
try {
const url = '/wx-login/getOrderQRCodeUnlimited/' + data.scene;
let url = '/wx-login/getOrderQRCodeUnlimited/' + data.scene;
// 透传 page便于后端按要求生成指向指定页的小程序码
// (当前后端仅使用 scene若需扫码直达指定页后端需读取并转发 page 到微信 getwxacodeunlimit
if (data.page) {
url += `?page=${encodeURIComponent(data.page)}`;
}
// 由于接口直接返回图片buffer我们直接构建完整的URL
return `${BaseUrl}${url}`;
} catch (error: any) {