peixue-dev/Archive/peidu-temp-files/docs/[一次性]服务日历跳转问题-调试指南-2026-01-26.md

335 lines
8.3 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-01-26
**问题:** 选择家长身份后,从服务日历点击订单仍然跳转到陪伴员端
---
## 📋 问题现象
从日志可以看到:
```
at teacher-package/pages/order/detail.vue:308
```
这说明当前跳转到了**陪伴员端**的订单详情页面,而不是**家长端**。
---
## 🔍 诊断步骤
### 步骤1确认修改是否生效
在服务日历页面的 `handleOrderClick` 方法中添加调试日志:
**文件:** `peidu/uniapp/src/user-package/pages/calendar/index.vue`
```javascript
handleOrderClick(order) {
// 🔍 调试日志 - 开始
console.log('=== 订单点击调试 ===')
console.log('1. 订单ID:', order.id)
const userInfo = uni.getStorageSync('userInfo')
console.log('2. userInfo:', JSON.stringify(userInfo))
console.log('3. userType:', userInfo?.userType)
let detailUrl = ''
if (userInfo?.userType === 'teacher') {
detailUrl = `/teacher-package/pages/order/detail?id=${order.id}`
console.log('4. 判断结果: 陪伴员端')
} else if (userInfo?.userType === 'manager') {
detailUrl = `/manager-package/pages/manager/work-order-detail?id=${order.id}`
console.log('4. 判断结果: 管理师端')
} else {
detailUrl = `/order-package/pages/order/detail?id=${order.id}`
console.log('4. 判断结果: 家长端 (默认)')
}
console.log('5. 跳转路径:', detailUrl)
console.log('=== 调试结束 ===')
// 🔍 调试日志 - 结束
uni.navigateTo({ url: detailUrl })
}
```
### 步骤2查看控制台输出
点击订单后,查看控制台输出:
**预期输出(家长身份):**
```
=== 订单点击调试 ===
1. 订单ID: 332
2. userInfo: {"userType":"parent",...}
3. userType: parent
4. 判断结果: 家长端 (默认)
5. 跳转路径: /order-package/pages/order/detail?id=332
=== 调试结束 ===
```
**实际输出(如果仍然跳转到陪伴员端):**
```
=== 订单点击调试 ===
1. 订单ID: 332
2. userInfo: {"userType":"teacher",...}
3. userType: teacher
4. 判断结果: 陪伴员端
5. 跳转路径: /teacher-package/pages/order/detail?id=332
=== 调试结束 ===
```
---
## 🎯 根据输出结果采取行动
### 情况A没有看到调试日志
**原因:** 修改没有生效,缓存问题
**解决方案:**
1. 执行脚本:`Archive/peidu-temp-files/scripts/[一次性]强制清除缓存重新编译-2026-01-26.bat`
2. 或手动执行以下步骤:
- 停止开发服务器Ctrl+C
- 删除 `peidu/uniapp/dist` 目录
- 删除 `peidu/uniapp/unpackage` 目录
- 清除微信开发者工具缓存
- 重新运行 `npm run dev:mp-weixin`
- 在微信开发者工具中重新编译
### 情况B看到调试日志但 userType 是 'teacher'
**原因:** 用户信息中的 `userType` 值不正确
**解决方案:**
#### 方案1检查用户信息存储
在"个人中心"页面,添加调试代码:
```javascript
onShow() {
const userInfo = uni.getStorageSync('userInfo')
console.log('=== 个人中心 - 用户信息 ===')
console.log('userInfo:', JSON.stringify(userInfo))
console.log('userType:', userInfo?.userType)
}
```
#### 方案2修改身份切换逻辑
找到身份切换的代码,确保正确更新 `userType`
```javascript
// 切换到家长身份
switchToParent() {
const userInfo = uni.getStorageSync('userInfo')
userInfo.userType = 'parent' // 确保设置为 'parent'
uni.setStorageSync('userInfo', userInfo)
console.log('已切换到家长身份:', userInfo.userType)
}
// 切换到陪伴员身份
switchToTeacher() {
const userInfo = uni.getStorageSync('userInfo')
userInfo.userType = 'teacher' // 确保设置为 'teacher'
uni.setStorageSync('userInfo', userInfo)
console.log('已切换到陪伴员身份:', userInfo.userType)
}
```
#### 方案3手动修复 userType
在控制台执行:
```javascript
// 获取当前用户信息
const userInfo = uni.getStorageSync('userInfo')
console.log('当前 userInfo:', userInfo)
// 修改为家长身份
userInfo.userType = 'parent'
uni.setStorageSync('userInfo', userInfo)
console.log('已修改为家长身份')
// 验证
const newUserInfo = uni.getStorageSync('userInfo')
console.log('新的 userInfo:', newUserInfo)
```
### 情况C看到调试日志userType 是 'parent',但仍跳转到陪伴员端
**原因:** 可能有其他地方也在处理跳转逻辑
**解决方案:**
#### 检查是否有多个跳转逻辑
搜索所有可能的跳转代码:
```bash
cd peidu/uniapp/src
grep -r "teacher-package/pages/order/detail" .
```
#### 检查日历组件
查看 `components/calendar/calendar.vue` 是否也有跳转逻辑:
```javascript
// 如果日历组件中有 @schedule-click 事件
handleScheduleClick(schedule) {
// 确保这里也根据身份跳转
const userInfo = uni.getStorageSync('userInfo')
const userType = userInfo?.userType || 'parent'
let url = ''
if (userType === 'teacher') {
url = `/teacher-package/pages/order/detail?id=${schedule.orderId}`
} else if (userType === 'manager') {
url = `/manager-package/pages/manager/work-order-detail?id=${schedule.orderId}`
} else {
url = `/order-package/pages/order/detail?id=${schedule.orderId}`
}
uni.navigateTo({ url })
}
```
---
## 🛠️ 终极解决方案
如果以上方法都不行,使用全局混入统一处理:
**文件:** `peidu/uniapp/src/main.js`
```javascript
// 添加全局混入
Vue.mixin({
methods: {
// 统一的订单详情跳转方法
$goToOrderDetail(orderId) {
const userInfo = uni.getStorageSync('userInfo')
const userType = userInfo?.userType || 'parent'
console.log('[全局跳转] 订单ID:', orderId, '身份:', userType)
let url = ''
if (userType === 'teacher') {
url = `/teacher-package/pages/order/detail?id=${orderId}`
} else if (userType === 'manager') {
url = `/manager-package/pages/manager/work-order-detail?id=${orderId}`
} else {
url = `/order-package/pages/order/detail?id=${orderId}`
}
console.log('[全局跳转] 跳转到:', url)
uni.navigateTo({ url })
}
}
})
```
然后在所有需要跳转的地方使用:
```javascript
// 服务日历页面
handleOrderClick(order) {
this.$goToOrderDetail(order.id)
}
// 日历组件
handleScheduleClick(schedule) {
this.$goToOrderDetail(schedule.orderId)
}
// 订单列表页面
goToDetail(orderId) {
this.$goToOrderDetail(orderId)
}
```
---
## 📝 验证清单
完成修改后,按以下步骤验证:
- [ ] 控制台显示调试日志
- [ ] `userType` 的值是 `'parent'`
- [ ] 跳转路径是 `/order-package/pages/order/detail?id=xxx`
- [ ] 成功跳转到家长端订单详情页面
- [ ] 订单详情页面显示"查看打卡记录"按钮
- [ ] 点击"查看打卡记录"按钮能正常跳转
---
## 🎉 预期效果
**家长身份:**
1. 点击订单 → 跳转到家长端订单详情
2. 看到"查看打卡记录"按钮
3. 点击按钮 → 跳转到打卡记录列表
**陪伴员身份:**
1. 点击订单 → 跳转到陪伴员端订单详情
2. 看到"接单"、"开始服务"等按钮
**管理师身份:**
1. 点击订单 → 跳转到管理师端工单详情
2. 看到"派单"、"查看详情"等按钮
---
## 💡 常见问题
### Q1为什么修改后没有效果
**A** 可能是缓存问题。请完全清除缓存并重新编译:
1. 停止开发服务器
2. 删除 `dist``unpackage` 目录
3. 清除微信开发者工具缓存
4. 重新编译
### Q2如何确认当前身份
**A** 在控制台执行:
```javascript
const userInfo = uni.getStorageSync('userInfo')
console.log('当前身份:', userInfo?.userType)
```
### Q3如何手动切换身份
**A** 在控制台执行:
```javascript
// 切换到家长
const userInfo = uni.getStorageSync('userInfo')
userInfo.userType = 'parent'
uni.setStorageSync('userInfo', userInfo)
// 切换到陪伴员
userInfo.userType = 'teacher'
uni.setStorageSync('userInfo', userInfo)
// 切换到管理师
userInfo.userType = 'manager'
uni.setStorageSync('userInfo', userInfo)
```
---
## 📞 需要帮助?
如果问题仍然存在,请提供以下信息:
1. 控制台完整输出
2. `userInfo` 的完整内容
3. 当前选择的身份
4. 跳转的实际路径
5. 是否执行了清除缓存操作
这些信息将帮助我们更快地定位问题。