新增功能

This commit is contained in:
Your Name
2026-03-04 15:32:30 +08:00
parent a07e844c47
commit ab77f5488d
2266 changed files with 177942 additions and 3444 deletions
+239
View File
@@ -0,0 +1,239 @@
# 预约系统问题修复指南
## 问题:没有时间段数据
### 原因分析
1.**API参数错误**:前端传 `date`,后端期望 `appointment_date` - 已修复
2.**数据库表未创建**:需要执行SQL脚本
3.**医生没有排班数据**:需要创建测试数据
## 修复步骤
### 步骤1:创建数据库表
```bash
# 执行预约表创建脚本
mysql -u username -p database < server/sql/doctor_appointment.sql
```
### 步骤2:创建测试排班数据
```bash
# 执行测试数据脚本
mysql -u username -p database < server/sql/test_appointment_data.sql
```
或者手动执行SQL
```sql
-- 为医生ID=1创建今天和明天的排班
INSERT INTO `la_doctor_roster`
(`doctor_id`, `date`, `period`, `status`, `quota`, `max_patients`, `create_time`, `update_time`)
VALUES
(1, CURDATE(), 'morning', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(1, CURDATE(), 'afternoon', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(1, DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'morning', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()),
(1, DATE_ADD(CURDATE(), INTERVAL 1 DAY), 'afternoon', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());
```
### 步骤3:验证数据
```sql
-- 查询医生排班
SELECT * FROM la_doctor_roster
WHERE doctor_id = 1
AND date >= CURDATE()
ORDER BY date, period;
```
应该看到类似输出:
```
+----+-----------+------------+---------+--------+-------+--------------+
| id | doctor_id | date | period | status | quota | max_patients |
+----+-----------+------------+---------+--------+-------+--------------+
| 1 | 1 | 2026-03-03 | morning | 1 | 10 | 15 |
| 2 | 1 | 2026-03-03 | afternoon| 1 | 10 | 15 |
+----+-----------+------------+---------+--------+-------+--------------+
```
### 步骤4:清除缓存
```bash
cd server
php think clear
```
### 步骤5:测试API
```bash
# 测试获取可用时间段
curl "http://localhost/adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-03&period=morning"
```
预期返回:
```json
{
"code": 1,
"msg": "success",
"data": {
"slots": [
{
"time": "09:00",
"available": true,
"quota": 10
},
{
"time": "09:30",
"available": true,
"quota": 10
},
...
]
}
}
```
## 前端修复内容
### 修复1API参数名称
**文件**: `admin/src/views/tcm/diagnosis/appointment.vue`
**修改前**:
```typescript
const morningRes = await getAvailableSlots({
doctor_id: selectedDoctorId.value,
date: form.date, // ❌ 错误
period: 'morning'
})
```
**修改后**:
```typescript
const morningRes = await getAvailableSlots({
doctor_id: selectedDoctorId.value,
appointment_date: form.date, // ✅ 正确
period: 'morning'
})
```
### 修复2:添加调试日志
添加了 `console.log` 输出,方便调试:
```typescript
console.log('上午时段:', morningRes)
console.log('下午时段:', afternoonRes)
console.log('合并后的时间段:', timeSlots.value)
```
## 调试检查清单
### 前端检查
- [ ] 打开浏览器开发者工具(F12
- [ ] 打开预约弹窗
- [ ] 选择医生
- [ ] 查看Network标签,找到 `availableSlots` 请求
- [ ] 检查请求参数是否包含 `appointment_date`
- [ ] 检查响应数据中是否有 `slots` 数组
### 后端检查
- [ ] 数据库表 `la_doctor_appointment` 已创建
- [ ] 数据库表 `la_doctor_roster` 有数据
- [ ] 医生排班状态为 1(出诊)
- [ ] 日期是今天或未来日期
- [ ] 后端日志没有错误
### 数据库检查
```sql
-- 1. 检查预约表是否存在
SHOW TABLES LIKE 'la_doctor_appointment';
-- 2. 检查排班表是否存在
SHOW TABLES LIKE 'la_doctor_roster';
-- 3. 检查医生排班数据
SELECT * FROM la_doctor_roster WHERE doctor_id = 1;
-- 4. 检查医生是否存在
SELECT id, name FROM la_admin WHERE role_id = 1;
```
## 常见问题
### Q1: 返回空数组 `Array(0)`
**原因**:
- 医生没有排班数据
- 排班状态不是"出诊"(status=1)
- 日期不匹配
**解决**: 执行 `test_appointment_data.sql` 创建测试数据
### Q2: 提示"预约日期不能为空"
**原因**:
- 前端参数名错误(已修复)
- 日期没有被选中
**解决**:
- 确保已更新前端代码
- 点击日期按钮选择日期
### Q3: 控制器不存在
**原因**: 缓存未清除
**解决**:
```bash
cd server
php think clear
```
### Q4: 数据库表不存在
**原因**: 未执行SQL脚本
**解决**:
```bash
mysql -u username -p database < server/sql/doctor_appointment.sql
```
## 完整测试流程
1. **创建数据库表**
```bash
mysql -u username -p database < server/sql/doctor_appointment.sql
```
2. **创建测试数据**
```bash
mysql -u username -p database < server/sql/test_appointment_data.sql
```
3. **清除缓存**
```bash
cd server && php think clear
```
4. **刷新前端页面**
- 按 Ctrl+F5 强制刷新
- 清除浏览器缓存
5. **测试预约流程**
- 打开预约弹窗
- 选择医生(医生2或医生1
- 查看是否显示时间段
- 选择时间段
- 点击确定
6. **查看控制台日志**
- 应该看到"上午时段"、"下午时段"、"合并后的时间段"的日志
- 应该看到时间段数组有数据
## 成功标志
当你看到以下情况时,说明修复成功:
1. ✅ 选择医生后,显示时间段网格
2. ✅ 时间段显示可用号源数量
3. ✅ 可以点击选择时间段
4. ✅ 点击确定后提示"预约成功"
5. ✅ 控制台没有错误信息
---
**最后更新**: 2024-02-26