Files
zyt/DIAGNOSIS_VIEW_RECORD_INSTALL.md
T
2026-03-06 17:30:37 +08:00

224 lines
5.7 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.
# 诊单查看记录功能 - 安装指南
## 安装步骤
### 1. 创建数据库表
执行以下SQL语句创建诊单查看记录表:
```bash
# 方式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. 验证表创建
登录数据库,检查表是否创建成功:
```sql
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获取逻辑:
```javascript
// 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 测试查看记录
1. 在管理后台生成小程序二维码
2. 使用微信扫描二维码
3. 小程序打开诊单详情页
4. 检查数据库 `la_diagnosis_view_records` 表,应该有一条新记录
```sql
SELECT * FROM la_diagnosis_view_records ORDER BY id DESC LIMIT 1;
```
#### 5.2 测试重复查看
1. 再次扫描同一个二维码
2. 检查数据库,`view_count` 应该增加,`last_view_time` 应该更新
```sql
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 测试确认功能
1. 在小程序中点击"确认诊单"按钮
2. 检查数据库,`is_confirmed` 应该变为1`confirmed_time` 应该有值
```sql
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 接口
```bash
curl -X GET "http://your-domain/api/tcm/diagnosisDetail?id=4&user_id=1&share_user_id=2"
```
预期响应:
```json
{
"code": 1,
"msg": "success",
"data": {
"id": 4,
"patient_name": "张三",
// ... 其他诊单信息
}
}
```
#### 测试 confirmDiagnosis 接口
```bash
curl -X POST "http://your-domain/api/tcm/confirmDiagnosis" \
-H "Content-Type: application/json" \
-d '{"id": 4, "user_id": 1, "share_user": 2}'
```
预期响应:
```json
{
"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. 数据库索引优化
如果查看记录表数据量较大,建议添加以下索引:
```sql
-- 已在建表语句中包含,如果没有可手动添加
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. 数据清理
定期清理过期的查看记录(可选):
```sql
-- 删除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. 下一步
功能安装完成后,可以:
1. 实现查看记录的管理界面
2. 添加数据统计报表
3. 实现查看记录的导出功能
4. 添加消息通知(如:诊单被查看时通知医生)
## 相关文档
- [功能说明文档](./DIAGNOSIS_VIEW_RECORD_FEATURE.md)
- [Scene参数说明](./MINI_PROGRAM_SCENE_PARAMS.md)
- [小程序二维码功能](./QRCODE_README.md)