122 lines
3.6 KiB
Markdown
122 lines
3.6 KiB
Markdown
# 签到地址显示修复完成
|
||
|
||
## 问题描述
|
||
|
||
陪伴员签到签退功能中,地址显示为 "453535" 等无效数字,而不是真实的地理位置(如:安徽省合肥市蜀山区xxx)。
|
||
|
||
## 问题原因
|
||
|
||
1. **数据库问题**:`order` 表的 `service_address` 字段存储了无效数据(纯数字)
|
||
2. **前端逻辑问题**:代码优先使用订单地址,即使是无效的纯数字也会显示
|
||
|
||
## 解决方案
|
||
|
||
### 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. 地址验证逻辑
|
||
|
||
```javascript
|
||
// 检查地址是否有效(不是纯数字、不为空)
|
||
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 脚本清理无效地址:
|
||
```bash
|
||
peidu/Archive/一次性文件/[一次性]修复订单地址数据-2026-01-26.sql
|
||
```
|
||
|
||
该脚本会将纯数字地址更新为 NULL,让前端自动使用逆地理编码。
|
||
|
||
## 配置要求
|
||
|
||
### 微信小程序域名白名单
|
||
|
||
需要在微信小程序后台添加以下域名到 request 合法域名:
|
||
|
||
```
|
||
https://apis.map.qq.com
|
||
```
|
||
|
||
**配置路径:**
|
||
微信公众平台 → 开发 → 开发管理 → 开发设置 → 服务器域名 → request合法域名
|
||
|
||
### 腾讯地图 API Key
|
||
|
||
已配置在 `peidu/uniapp/src/config/map.js`:
|
||
```javascript
|
||
key: 'Q7CBZ-CC2C5-5O6IA-IU5VM-KJGAF-IKBRO'
|
||
```
|
||
|
||
## 测试步骤
|
||
|
||
1. **编译小程序**
|
||
```bash
|
||
cd peidu/uniapp
|
||
npm run dev:mp-weixin
|
||
```
|
||
|
||
2. **测试签到功能**
|
||
- 进入陪伴员端
|
||
- 点击"签到签退"
|
||
- 查看地址显示是否为:安徽省合肥市蜀山区xxx
|
||
|
||
3. **测试订单签到**
|
||
- 进入待服务订单
|
||
- 点击"开始服务"
|
||
- 查看地址显示是否正确
|
||
|
||
## 预期效果
|
||
|
||
- ✅ 地址显示为:安徽省合肥市蜀山区xxx(具体到街道)
|
||
- ✅ 不再显示纯数字(如:453535)
|
||
- ✅ 自动使用逆地理编码获取真实位置
|
||
- ✅ 控制台输出详细日志,便于调试
|
||
|
||
## 注意事项
|
||
|
||
1. **首次使用需要授权定位权限**
|
||
2. **需要在真机上测试**(模拟器可能无法获取位置)
|
||
3. **确保网络连接正常**(需要调用腾讯地图API)
|
||
4. **建议执行数据库修复脚本**,清理历史无效数据
|
||
|
||
## 相关文件
|
||
|
||
- `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
|