Files
xinlong-shop-taro/.workbuddy/memory/2026-07-12.md
赵忠林 be130408de fix(user): 放宽所在地区锁定,允许手动选择
- 取消 openRegionPicker 中对 regionLocked 的拦截,始终显示选择器
- 去掉 handleRegionChange 中的 regionLocked 拦截,设置手动修改后解除锁定
- 移除 chooseLocation 失败时对 regionLocked 的判断,确保手动选择始终可用
- 调整提示逻辑,取消“修改请重新选择定位”限制
- 保留 regionLocked 用于区分文本与地图地区显示,不阻止用户操作
2026-07-12 23:08:55 +08:00

27 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-07-12
## address-edit 地图选点「打开地图失败」修复
客户反馈部分手机无法通过选择地图填写地址/所在区,提示「打开地图失败,请重试」。
根因按概率①微信隐私授权未处理新版基础库强制最契合「部分手机」②chooseLocation 传 undefined 经纬度;③权限流程不完整;④失败无兜底。
已修复 `src/pages/user/address-edit.tsx`(四层):
1. 调 chooseLocation 前 `ensurePrivacyAuthorized()`wx.getPrivacySetting/requirePrivacyAuthorize旧基础库无接口则放行
2. 仅当 lat/lng 为有效数字时才传给 chooseLocation否则 `chooseLocation({})`
3. `ensureLocationPermission()`getSetting 预检 + authorize 申请 + openSetting 引导并回读确认。
4. 失败兜底:弹窗「手动选择」(打开所在地区选择器)/「再试一次」(chooseLocation({}))regionLocked 时不再误开选择器。
注意:项目本地 `tsc --noEmit` / `npm run type-check` 在本机因 Taro 类型入口缺失(`@tarojs/taro` 不在 @types)会报错,与本次改动无关;以 `taro build --type weapp` 为准。
另:如仍偶发,需确认微信公众平台后台已配置《隐私保护指引》并发布。
## 跟进:放宽所在地区锁定,始终可手动选择
用户要求「万一地图不可用也能手动选所在地区、填地址提交」。分析发现该路径原本已通所在地区行→NutUI Address 选择器、详细地址 Input、save 不强制经纬度)。
唯一拦截点:`regionLocked` 在地图选点/编辑带坐标地址后置 true导致「所在地区」行与 handleRegionChange 被拦。
已放宽(仍保留 regionLocked 用于「识别」文本不覆盖地图地区):
- openRegionPicker去掉 regionLocked 拦截,始终打开选择器。
- handleRegionChange去掉拦截手动改后 setRegionLocked(false)。
- chooseGeoLocation 兜底:去掉 regionLocked 分支,地图失败「手动选择」始终打开地区选择器。
编译验证:`taro build --type weapp` 通过。
(未做:手动改地区时不自动清除旧经纬度,避免误删数据;如需坐标随地区失效可再加。)