3.6 KiB
3.6 KiB
签到地址显示修复完成
问题描述
陪伴员签到签退功能中,地址显示为 "453535" 等无效数字,而不是真实的地理位置(如:安徽省合肥市蜀山区xxx)。
问题原因
- 数据库问题:
order表的service_address字段存储了无效数据(纯数字) - 前端逻辑问题:代码优先使用订单地址,即使是无效的纯数字也会显示
解决方案
1. 前端修复(已完成)
修改了 3 个签到页面,添加地址有效性检测:
✅ peidu/uniapp/src/teacher-package/pages/teacher/checkin.vue
- 在
getAddress()方法中添加地址验证 - 检测纯数字地址,自动使用逆地理编码
✅ peidu/uniapp/teacher-package/pages/teacher/watermark-checkin.vue
- 在
loadOrderInfo()方法中添加地址验证 - 无效地址设为空字符串,避免显示
✅ peidu/uniapp/src/teacher-package/pages/teacher/checkout.vue
- 在
getAddress()方法中添加地址验证 - 检测纯数字地址,自动使用逆地理编码
2. 地址验证逻辑
// 检查地址是否有效(不是纯数字、不为空)
const orderAddress = this.orderInfo?.serviceAddress
const isValidAddress = orderAddress &&
orderAddress.trim() !== '' &&
!/^\d+$/.test(orderAddress.trim())
if (isValidAddress) {
// 使用订单地址
this.address = orderAddress
} else {
// 使用逆地理编码获取真实地址
const result = await reverseGeocode(lat, lng)
this.address = result.address
}
3. 数据库修复(待执行)
执行 SQL 脚本清理无效地址:
peidu/Archive/一次性文件/[一次性]修复订单地址数据-2026-01-26.sql
该脚本会将纯数字地址更新为 NULL,让前端自动使用逆地理编码。
配置要求
微信小程序域名白名单
需要在微信小程序后台添加以下域名到 request 合法域名:
https://apis.map.qq.com
配置路径: 微信公众平台 → 开发 → 开发管理 → 开发设置 → 服务器域名 → request合法域名
腾讯地图 API Key
已配置在 peidu/uniapp/src/config/map.js:
key: 'Q7CBZ-CC2C5-5O6IA-IU5VM-KJGAF-IKBRO'
测试步骤
-
编译小程序
cd peidu/uniapp npm run dev:mp-weixin -
测试签到功能
- 进入陪伴员端
- 点击"签到签退"
- 查看地址显示是否为:安徽省合肥市蜀山区xxx
-
测试订单签到
- 进入待服务订单
- 点击"开始服务"
- 查看地址显示是否正确
预期效果
- ✅ 地址显示为:安徽省合肥市蜀山区xxx(具体到街道)
- ✅ 不再显示纯数字(如:453535)
- ✅ 自动使用逆地理编码获取真实位置
- ✅ 控制台输出详细日志,便于调试
注意事项
- 首次使用需要授权定位权限
- 需要在真机上测试(模拟器可能无法获取位置)
- 确保网络连接正常(需要调用腾讯地图API)
- 建议执行数据库修复脚本,清理历史无效数据
相关文件
peidu/uniapp/src/config/map.js- 地图配置和工具函数peidu/uniapp/src/teacher-package/pages/teacher/checkin.vue- 签到页面peidu/uniapp/teacher-package/pages/teacher/watermark-checkin.vue- 水印签到页面peidu/uniapp/src/teacher-package/pages/teacher/checkout.vue- 签退页面peidu/Archive/一次性文件/[一次性]修复订单地址数据-2026-01-26.sql- 数据库修复脚本
修复完成时间: 2026-01-26 修复人员: Kiro AI