# 医生预约系统安装检查清单 ## ✅ 文件创建检查 ### 后端文件 - [x] `server/app/common/model/doctor/Appointment.php` (1,893 bytes) - [x] `server/app/adminapi/controller/doctor/AppointmentController.php` (2,588 bytes) - [x] `server/app/adminapi/logic/doctor/AppointmentLogic.php` (8,624 bytes) - [x] `server/app/adminapi/validate/doctor/AppointmentValidate.php` (1,922 bytes) - [x] `server/app/adminapi/lists/doctor/AppointmentLists.php` (1,163 bytes) - [x] `server/sql/doctor_appointment.sql` (1,310 bytes) ### 前端文件 - [x] `admin/src/api/doctor.ts` (已更新) - [x] `admin/src/views/tcm/diagnosis/appointment.vue` (新建) - [x] `admin/src/views/tcm/diagnosis/index.vue` (已更新) ### 文档文件 - [x] `server/APPOINTMENT_BACKEND_SETUP.md` - [x] `admin/APPOINTMENT_SYSTEM.md` - [x] `admin/APPOINTMENT_UI_UPDATE.md` - [x] `admin/APPOINTMENT_IMPLEMENTATION_SUMMARY.md` - [x] `APPOINTMENT_QUICK_START.md` - [x] `APPOINTMENT_COMPLETE.md` - [x] `INSTALLATION_CHECKLIST.md` (本文件) ### 安装脚本 - [x] `install_appointment_system.bat` (Windows) - [x] `install_appointment_system.sh` (Linux/Mac) - [x] `server/test_appointment_api.php` (API测试脚本) ## 📋 安装步骤 ### 步骤 1: 创建数据库表 ⏳ ```bash # Windows (CMD) mysql -u username -p database < server\sql\doctor_appointment.sql # Linux/Mac mysql -u username -p database < server/sql/doctor_appointment.sql # 或使用phpMyAdmin导入 server/sql/doctor_appointment.sql ``` **验证:** ```sql SHOW TABLES LIKE 'la_doctor_appointment'; DESC la_doctor_appointment; ``` ### 步骤 2: 清除缓存 ⏳ ```bash cd server php think clear ``` **验证:** ```bash # 应该看到缓存清除成功的消息 ``` ### 步骤 3: 测试API接口 ⏳ ```bash # 方法1: 使用测试脚本 cd server php test_appointment_api.php # 方法2: 使用curl curl "http://localhost/adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-04&period=morning" ``` **预期结果:** ```json { "code": 1, "msg": "success", "data": { "slots": [...] } } ``` ### 步骤 4: 创建测试数据 ⏳ ```sql -- 创建医生排班 INSERT INTO `la_doctor_roster` (`doctor_id`, `date`, `period`, `status`, `quota`, `max_patients`, `create_time`, `update_time`) VALUES (1, '2026-03-04', 'morning', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()), (1, '2026-03-04', 'afternoon', 1, 10, 15, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()); ``` **验证:** ```sql SELECT * FROM la_doctor_roster WHERE doctor_id = 1 AND date = '2026-03-04'; ``` ### 步骤 5: 配置权限 ⏳ 在后台权限管理中添加以下权限节点: ``` doctor.appointment/availableSlots doctor.appointment/create doctor.appointment/cancel doctor.appointment/lists doctor.appointment/detail doctor.appointment/doctorAvailability ``` ### 步骤 6: 测试前端功能 ⏳ 1. 登录后台管理系统 2. 进入"中医诊断"页面 3. 点击任意患者的"挂号"按钮 4. 验证以下功能: - [ ] 医生列表正确显示 - [ ] 日期选择器显示未来7天 - [ ] 时间段根据医生和日期加载 - [ ] 可以选择时间段 - [ ] 可以提交预约 - [ ] 预约成功后有提示 ## 🔍 验证检查 ### 数据库检查 ```sql -- 检查表是否存在 SHOW TABLES LIKE 'la_doctor_appointment'; -- 检查表结构 DESC la_doctor_appointment; -- 检查索引 SHOW INDEX FROM la_doctor_appointment; -- 检查排班数据 SELECT COUNT(*) FROM la_doctor_roster WHERE status = 1; ``` ### 文件检查 ```bash # Windows dir server\app\adminapi\controller\doctor\AppointmentController.php dir server\app\adminapi\logic\doctor\AppointmentLogic.php dir server\app\adminapi\validate\doctor\AppointmentValidate.php dir server\app\adminapi\lists\doctor\AppointmentLists.php dir server\app\common\model\doctor\Appointment.php # Linux/Mac ls -la server/app/adminapi/controller/doctor/AppointmentController.php ls -la server/app/adminapi/logic/doctor/AppointmentLogic.php ls -la server/app/adminapi/validate/doctor/AppointmentValidate.php ls -la server/app/adminapi/lists/doctor/AppointmentLists.php ls -la server/app/common/model/doctor/Appointment.php ``` ### API检查 ```bash # 测试获取可用时间段 curl -X GET "http://localhost/adminapi/doctor.appointment/availableSlots?doctor_id=1&appointment_date=2026-03-04&period=morning" # 测试创建预约 curl -X POST "http://localhost/adminapi/doctor.appointment/create" \ -H "Content-Type: application/json" \ -d '{ "patient_id": 1, "doctor_id": 1, "appointment_date": "2026-03-04", "period": "morning", "appointment_time": "09:00", "appointment_type": "video" }' ``` ## ⚠️ 常见问题 ### 问题 1: 控制器不存在 **症状:** ``` 控制器不存在: app\adminapi\controller\doctor\AppointmentController ``` **解决方案:** ```bash cd server php think clear ``` ### 问题 2: 数据库表不存在 **症状:** ``` Table 'database.la_doctor_appointment' doesn't exist ``` **解决方案:** ```bash mysql -u username -p database < server/sql/doctor_appointment.sql ``` ### 问题 3: 没有可用时间段 **症状:** API返回空的slots数组 **解决方案:** 1. 检查医生排班是否存在 2. 检查排班状态是否为1(出诊) 3. 检查日期和时段是否匹配 ```sql SELECT * FROM la_doctor_roster WHERE doctor_id = 1 AND date = '2026-03-04' AND period = 'morning'; ``` ### 问题 4: 预约失败 **症状:** 创建预约时返回错误 **可能原因:** 1. 时间段已被占用 2. 号源已满 3. 医生未排班 4. 排班状态不是出诊 **检查方法:** ```sql -- 检查已有预约 SELECT * FROM la_doctor_appointment WHERE doctor_id = 1 AND appointment_date = '2026-03-04' AND status = 1; -- 检查排班信息 SELECT * FROM la_doctor_roster WHERE doctor_id = 1 AND date = '2026-03-04'; ``` ## 📊 性能检查 ### 数据库索引 ```sql -- 检查索引是否正确创建 SHOW INDEX FROM la_doctor_appointment; -- 应该看到以下索引: -- PRIMARY (id) -- unique_appointment (doctor_id, appointment_date, appointment_time, status) -- idx_patient (patient_id) -- idx_doctor_date (doctor_id, appointment_date) -- idx_roster (roster_id) ``` ### 查询性能 ```sql -- 测试查询性能 EXPLAIN SELECT * FROM la_doctor_appointment WHERE doctor_id = 1 AND appointment_date = '2026-03-04' AND status = 1; -- 应该使用 idx_doctor_date 索引 ``` ## 🎯 最终检查 完成以下所有项目后,系统即可投入使用: - [ ] 数据库表创建成功 - [ ] 后端缓存已清除 - [ ] API接口测试通过 - [ ] 测试数据已创建 - [ ] 权限节点已配置 - [ ] 前端功能测试通过 - [ ] 文档已阅读 - [ ] 用户已培训 ## 📞 技术支持 如遇到问题: 1. **查看日志** - 后端日志: `server/runtime/log/` - 浏览器控制台 2. **检查配置** - 数据库连接: `server/config/database.php` - 应用配置: `server/config/app.php` 3. **查看文档** - `APPOINTMENT_QUICK_START.md` - 快速开始 - `server/APPOINTMENT_BACKEND_SETUP.md` - 后端详细说明 - `admin/APPOINTMENT_SYSTEM.md` - 系统设计 4. **测试工具** - `server/test_appointment_api.php` - API测试脚本 - Postman/curl - 手动测试 ## ✅ 完成标志 当你看到以下结果时,说明安装成功: 1. ✅ API返回正确的时间段数据 2. ✅ 可以成功创建预约 3. ✅ 前端界面正常显示 4. ✅ 可以完成完整的预约流程 --- **版本**: 1.0.0 **创建时间**: 2024-02-26 **最后更新**: 2024-02-26 祝你使用愉快!🎉