diff --git a/.workbuddy/memory/2026-07-12.md b/.workbuddy/memory/2026-07-12.md index b60370b..9cabd83 100644 --- a/.workbuddy/memory/2026-07-12.md +++ b/.workbuddy/memory/2026-07-12.md @@ -13,3 +13,14 @@ 注意:项目本地 `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` 通过。 +(未做:手动改地区时不自动清除旧经纬度,避免误删数据;如需坐标随地区失效可再加。) diff --git a/src/pages/user/address-edit.tsx b/src/pages/user/address-edit.tsx index 214f4e4..90f5eca 100644 --- a/src/pages/user/address-edit.tsx +++ b/src/pages/user/address-edit.tsx @@ -328,42 +328,28 @@ const AddressEditPage: React.FC = () => { cancelText: '再试一次', }).then((modal) => { if (modal.confirm) { - if (regionLocked) { - Taro.showToast({title: '所在地区已由定位确定,修改请重新选择定位', icon: 'none'}) - } else { - setRegionPickerVisible(true) - } + setRegionPickerVisible(true) } else { Taro.chooseLocation({}) .then((res: any) => applyChosenLocation(res)) - .catch(() => { - if (!regionLocked) setRegionPickerVisible(true) - }) + .catch(() => setRegionPickerVisible(true)) } - }).catch(() => { - if (!regionLocked) setRegionPickerVisible(true) - }) + }).catch(() => setRegionPickerVisible(true)) } } /** 打开地区选择器 */ const openRegionPicker = () => { - if (regionLocked) { - Taro.showToast({title: '所在地区已由定位确定,修改请重新选择定位', icon: 'none'}) - return - } setRegionPickerVisible(true) } /** 地区选择器确认 */ const handleRegionChange = (value: string[]) => { - if (regionLocked) { - Taro.showToast({title: '所在地区已由定位确定,修改请重新选择定位', icon: 'none'}) - return - } const [province, city, region] = value setFormData(prev => ({...prev, province, city, region})) setRegionText(value.join(' ')) + // 用户手动修改了所在地区,解除"由地图定位锁定"状态,后续可继续手动调整 + setRegionLocked(false) } /** 保存地址 */