86 lines
2.4 KiB
Markdown
86 lines
2.4 KiB
Markdown
# 预约时段显示错误调试文档
|
|
|
|
## 问题描述
|
|
当医生只排了上午班(出诊),下午未排班时,预约页面仍然显示下午的时间段。
|
|
|
|
## 问题示例
|
|
- 医生1 在 2026-03-06
|
|
- 上午: 出诊(20) ✓
|
|
- 下午: 未排班 ✗
|
|
- 但预约页面显示:
|
|
- 上午时段: 09:00-11:45 ✓ 正确
|
|
- 下午时段: 14:00-17:45 ✗ 不应该显示
|
|
|
|
## 可能的原因
|
|
|
|
### 原因1: 数据库中有多条记录
|
|
数据库中可能存在两条记录:
|
|
```sql
|
|
-- 记录1: 上午出诊
|
|
doctor_id=1, date='2026-03-06', period='morning', status=1
|
|
|
|
-- 记录2: 下午未排班(但status可能也是1?)
|
|
doctor_id=1, date='2026-03-06', period='afternoon', status=?
|
|
```
|
|
|
|
### 原因2: 前端缓存问题
|
|
前端可能缓存了之前的时间段数据。
|
|
|
|
### 原因3: API返回数据问题
|
|
后端API可能返回了错误的数据。
|
|
|
|
## 调试步骤
|
|
|
|
### 1. 检查数据库实际数据
|
|
运行 `CHECK_DOCTOR_1_ROSTER_0306.sql` 查看实际的排班记录。
|
|
|
|
### 2. 检查API返回
|
|
访问: `adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-06&period=all`
|
|
|
|
查看返回的 slots 数组,确认是否包含下午时段。
|
|
|
|
### 3. 检查日志
|
|
查看 `runtime/log/` 目录下的日志文件,搜索关键字:
|
|
- "查询到的排班数据"
|
|
- "该日期所有排班数据"
|
|
- "处理排班时段"
|
|
|
|
### 4. 前端调试
|
|
在浏览器控制台查看:
|
|
```javascript
|
|
console.log('时间段数据:', response)
|
|
console.log('处理后的时间段:', timeSlots.value)
|
|
```
|
|
|
|
## 修复方案
|
|
|
|
### 已实施的修复
|
|
1. 在查询排班时,明确只查询 `status = 1` 的记录
|
|
2. 在循环处理排班时,再次检查 `status == 1`
|
|
3. 添加详细的日志记录
|
|
|
|
### 待验证
|
|
需要确认数据库中的实际数据结构和状态值。
|
|
|
|
## 测试用例
|
|
|
|
### 测试1: 只有上午排班
|
|
- 数据: doctor_id=1, date='2026-03-06', period='morning', status=1
|
|
- 期望: 只显示 09:00-11:45 的时间段
|
|
- 实际: 待测试
|
|
|
|
### 测试2: 只有下午排班
|
|
- 数据: doctor_id=1, date='2026-03-07', period='afternoon', status=1
|
|
- 期望: 只显示 14:00-17:45 的时间段
|
|
- 实际: 待测试
|
|
|
|
### 测试3: 上下午都排班
|
|
- 数据: doctor_id=2, date='2026-03-04', period='morning'+'afternoon', status=1
|
|
- 期望: 显示 09:00-11:45 和 14:00-17:45 的时间段
|
|
- 实际: 待测试
|
|
|
|
## 下一步
|
|
1. 运行 SQL 查询确认数据库数据
|
|
2. 测试 API 接口返回
|
|
3. 根据结果调整代码
|