5.7 KiB
5.7 KiB
诊单查看记录功能 - 安装指南
安装步骤
1. 创建数据库表
执行以下SQL语句创建诊单查看记录表:
# 方式1: 使用MySQL客户端执行
mysql -u root -p your_database < server/database/diagnosis_view_records.sql
# 方式2: 在phpMyAdmin或其他数据库管理工具中执行
# 打开文件: server/database/diagnosis_view_records.sql
# 复制SQL语句并执行
SQL文件位置: server/database/diagnosis_view_records.sql
2. 验证表创建
登录数据库,检查表是否创建成功:
SHOW TABLES LIKE 'la_diagnosis_view_records';
DESC la_diagnosis_view_records;
3. 文件清单
确认以下文件已创建:
后端文件
- ✅
server/database/diagnosis_view_records.sql- 数据库表结构 - ✅
server/app/common/model/DiagnosisViewRecord.php- 模型文件 - ✅
server/app/api/controller/TcmController.php- 控制器(已更新) - ✅
server/app/adminapi/logic/tcm/DiagnosisLogic.php- 逻辑层(已更新)
前端文件
- ✅
TUICallKit-Vue3/pages/order/monad/monad.vue- 小程序页面(已更新)
文档文件
- ✅
DIAGNOSIS_VIEW_RECORD_FEATURE.md- 功能说明文档 - ✅
DIAGNOSIS_VIEW_RECORD_INSTALL.md- 安装指南(本文件) - ✅
MINI_PROGRAM_SCENE_PARAMS.md- Scene参数说明
4. 配置小程序用户ID获取
在小程序中添加用户ID获取逻辑:
// TUICallKit-Vue3/pages/order/monad/monad.vue
// 在 parsePageParams 函数中添加
const parsePageParams = (options) => {
const params = {};
// ... 现有的解析逻辑 ...
// 获取当前登录用户ID
try {
// 方式1: 从本地存储获取
const userInfo = uni.getStorageSync('userInfo');
params.user_id = userInfo?.id || 0;
// 方式2: 从全局状态获取
// const app = getApp();
// params.user_id = app.globalData.userId || 0;
// 方式3: 从Vuex获取
// import { useUserStore } from '@/stores/user';
// const userStore = useUserStore();
// params.user_id = userStore.userId || 0;
} catch (error) {
console.error('获取用户ID失败:', error);
params.user_id = 0;
}
return params;
};
5. 测试功能
5.1 测试查看记录
- 在管理后台生成小程序二维码
- 使用微信扫描二维码
- 小程序打开诊单详情页
- 检查数据库
la_diagnosis_view_records表,应该有一条新记录
SELECT * FROM la_diagnosis_view_records ORDER BY id DESC LIMIT 1;
5.2 测试重复查看
- 再次扫描同一个二维码
- 检查数据库,
view_count应该增加,last_view_time应该更新
SELECT id, user_id, diagnosis_id, view_count,
FROM_UNIXTIME(first_view_time) as first_view,
FROM_UNIXTIME(last_view_time) as last_view
FROM la_diagnosis_view_records
WHERE diagnosis_id = 4;
5.3 测试确认功能
- 在小程序中点击"确认诊单"按钮
- 检查数据库,
is_confirmed应该变为1,confirmed_time应该有值
SELECT id, diagnosis_id, is_confirmed,
FROM_UNIXTIME(confirmed_time) as confirmed_at
FROM la_diagnosis_view_records
WHERE diagnosis_id = 4;
6. API接口测试
测试 diagnosisDetail 接口
curl -X GET "http://your-domain/api/tcm/diagnosisDetail?id=4&user_id=1&share_user_id=2"
预期响应:
{
"code": 1,
"msg": "success",
"data": {
"id": 4,
"patient_name": "张三",
// ... 其他诊单信息
}
}
测试 confirmDiagnosis 接口
curl -X POST "http://your-domain/api/tcm/confirmDiagnosis" \
-H "Content-Type: application/json" \
-d '{"id": 4, "user_id": 1, "share_user": 2}'
预期响应:
{
"code": 1,
"msg": "确认成功",
"data": []
}
7. 常见问题
Q1: 表创建失败
A: 检查数据库权限,确保有CREATE TABLE权限
Q2: 查看记录没有创建
A: 检查以下几点:
- 确认表已创建
- 检查PHP错误日志
- 确认
DiagnosisViewRecord模型文件存在 - 检查数据库连接配置
Q3: user_id 总是0
A: 需要在小程序中实现用户登录功能,并在 parsePageParams 中获取用户ID
Q4: 确认功能不工作
A: 检查:
- 确认接口已添加到
$notNeedLogin数组 - 检查POST参数是否正确传递
- 查看PHP错误日志
8. 数据库索引优化
如果查看记录表数据量较大,建议添加以下索引:
-- 已在建表语句中包含,如果没有可手动添加
ALTER TABLE la_diagnosis_view_records
ADD INDEX idx_user_diagnosis (user_id, diagnosis_id);
ALTER TABLE la_diagnosis_view_records
ADD INDEX idx_diagnosis (diagnosis_id);
ALTER TABLE la_diagnosis_view_records
ADD INDEX idx_patient (patient_id);
ALTER TABLE la_diagnosis_view_records
ADD INDEX idx_share_user (share_user_id);
9. 数据清理
定期清理过期的查看记录(可选):
-- 删除30天前的未确认记录
DELETE FROM la_diagnosis_view_records
WHERE is_confirmed = 0
AND create_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
-- 或使用软删除
UPDATE la_diagnosis_view_records
SET delete_time = UNIX_TIMESTAMP()
WHERE is_confirmed = 0
AND create_time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
10. 下一步
功能安装完成后,可以:
- 实现查看记录的管理界面
- 添加数据统计报表
- 实现查看记录的导出功能
- 添加消息通知(如:诊单被查看时通知医生)