- 新增微信地址导入流程,支持从微信原生地址选择后跳转到编辑页面完善定位 - 添加WxAddressDraft缓存机制用于存储微信返回的地址草稿数据 - 实现一键导航功能,支持通过订单地址ID或地址信息进行地图导航 - 添加一键呼叫功能,支持直接拨打电话联系骑手或门店 - 优化地址编辑页面支持微信导入模式和默认地址检查
62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
import {useEffect} from "react";
|
|
import Taro from '@tarojs/taro'
|
|
|
|
const WxAddress = () => {
|
|
/**
|
|
* 从微信API获取用户收货地址
|
|
* 调用微信原生地址选择界面,获取成功后跳转到“新增收货地址”页面,让用户选择定位后再保存
|
|
*/
|
|
const getWeChatAddress = () => {
|
|
Taro.chooseAddress()
|
|
.then(async res => {
|
|
// 仅填充微信地址信息,不要用“当前定位”覆盖经纬度(会造成经纬度与地址不匹配)。
|
|
// 选择后跳转到“新增/编辑收货地址”页面,让用户手动选择地图定位后再保存。
|
|
const addressDraft = {
|
|
name: res.userName,
|
|
phone: res.telNumber,
|
|
country: res.nationalCode || '中国',
|
|
province: res.provinceName,
|
|
city: res.cityName,
|
|
region: res.countyName,
|
|
address: res.detailInfo,
|
|
isDefault: false,
|
|
}
|
|
Taro.setStorageSync('WxAddressDraft', addressDraft)
|
|
// 用 redirectTo 替换当前页面,避免保存后 navigateBack 回到空白的 wxAddress 页面。
|
|
await Taro.redirectTo({ url: '/user/address/add?fromWx=1&skipDefaultCheck=1' })
|
|
})
|
|
.catch(err => {
|
|
console.error('获取微信地址失败:', err)
|
|
// 用户取消选择地址:直接返回上一页
|
|
if (String(err?.errMsg || '').includes('cancel')) {
|
|
setTimeout(() => Taro.navigateBack(), 200)
|
|
return
|
|
}
|
|
// 处理用户拒绝授权的情况
|
|
if (String(err?.errMsg || '').includes('auth deny')) {
|
|
Taro.showModal({
|
|
title: '授权失败',
|
|
content: '请在设置中允许获取地址权限',
|
|
showCancel: false
|
|
})
|
|
setTimeout(() => Taro.navigateBack(), 300)
|
|
return
|
|
}
|
|
|
|
Taro.showToast({ title: '获取微信地址失败', icon: 'none' })
|
|
setTimeout(() => Taro.navigateBack(), 300)
|
|
})
|
|
}
|
|
|
|
useEffect(() => {
|
|
getWeChatAddress()
|
|
}, []);
|
|
|
|
return (
|
|
<>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default WxAddress;
|