fix(user): 放宽所在地区锁定,允许手动选择
- 取消 openRegionPicker 中对 regionLocked 的拦截,始终显示选择器 - 去掉 handleRegionChange 中的 regionLocked 拦截,设置手动修改后解除锁定 - 移除 chooseLocation 失败时对 regionLocked 的判断,确保手动选择始终可用 - 调整提示逻辑,取消“修改请重新选择定位”限制 - 保留 regionLocked 用于区分文本与地图地区显示,不阻止用户操作
This commit is contained in:
@@ -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` 通过。
|
||||
(未做:手动改地区时不自动清除旧经纬度,避免误删数据;如需坐标随地区失效可再加。)
|
||||
|
||||
@@ -328,42 +328,28 @@ const AddressEditPage: React.FC = () => {
|
||||
cancelText: '再试一次',
|
||||
}).then((modal) => {
|
||||
if (modal.confirm) {
|
||||
if (regionLocked) {
|
||||
Taro.showToast({title: '所在地区已由定位确定,修改请重新选择定位', icon: 'none'})
|
||||
} else {
|
||||
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)
|
||||
}
|
||||
|
||||
/** 保存地址 */
|
||||
|
||||
Reference in New Issue
Block a user