6.2 KiB
6.2 KiB
处方按钮显示检查
问题描述
用户反馈:处方审核通过后,"开方"按钮不显示了。
代码分析
前端代码
文件: admin/src/views/tcm/appointment/list.vue
按钮显示逻辑
<el-button
v-perms="['tcm.diagnosis/kaifang']"
type="primary"
link
size="small"
@click="handlePrescription(row)"
>
{{ prescriptionActionLabel(row) }}
</el-button>
按钮文字逻辑
function prescriptionActionLabel(row: any) {
if (
row?.prescription_audit_status === 1 &&
Number(row?.prescription_void_status) !== 1
) {
return '查看'
}
return '开方'
}
逻辑说明:
- 如果处方审核通过(
prescription_audit_status === 1)且未作废(prescription_void_status !== 1),按钮文字显示"查看" - 否则,按钮文字显示"开方"
后端代码
文件: server/app/adminapi/lists/doctor/AppointmentLists.php
$apptId = (int) ($item['id'] ?? 0);
$apptRx = $rxByAppointmentId[$apptId] ?? null;
$item['prescription_audit_status'] = $apptRx !== null ? (int) ($apptRx['audit_status'] ?? -1) : -1;
$item['prescription_void_status'] = $apptRx !== null ? (int) ($apptRx['void_status'] ?? 0) : 0;
逻辑说明:
- 如果预约有关联的处方,返回处方的审核状态和作废状态
- 如果预约没有关联的处方,
prescription_audit_status为-1,prescription_void_status为0
可能的原因
1. 权限问题
按钮有权限检查 v-perms="['tcm.diagnosis/kaifang']",如果用户没有这个权限,按钮会被隐藏。
检查方法:
- 登录用户账号
- 检查用户角色是否有
tcm.diagnosis/kaifang权限 - 在浏览器控制台查看按钮元素是否存在
2. 数据问题
后端返回的 prescription_audit_status 或 prescription_void_status 字段值不正确。
检查方法:
- 打开浏览器开发者工具
- 查看预约列表接口的响应数据
- 检查
prescription_audit_status和prescription_void_status字段的值
预期值:
- 未开方:
prescription_audit_status = -1,prescription_void_status = 0 - 待审核:
prescription_audit_status = 0,prescription_void_status = 0 - 已通过:
prescription_audit_status = 1,prescription_void_status = 0 - 已驳回:
prescription_audit_status = 2,prescription_void_status = 1
3. 按钮文字问题
按钮确实显示了,但是文字从"开方"变成了"查看",用户可能误以为按钮消失了。
检查方法:
- 查看预约列表
- 找到已审核通过的处方对应的预约
- 检查按钮文字是否显示为"查看"
解决方案
方案1:确认权限配置
确保用户角色有 tcm.diagnosis/kaifang 权限:
- 进入后台管理 → 权限管理 → 角色管理
- 找到用户所属的角色
- 检查是否勾选了"中医诊断 → 开方"权限(
tcm.diagnosis/kaifang) - 如果没有勾选,勾选后保存
方案2:检查数据返回
在浏览器开发者工具中检查接口返回:
- 打开浏览器开发者工具(F12)
- 切换到 Network 标签
- 刷新预约列表页面
- 找到预约列表接口(通常是
/doctor.appointment/lists) - 查看响应数据中的
prescription_audit_status和prescription_void_status字段
示例数据:
{
"id": 123,
"patient_name": "张三",
"prescription_audit_status": 1, // 1=已通过
"prescription_void_status": 0, // 0=未作废
"has_prescription": 1
}
方案3:按钮文字说明
如果按钮文字从"开方"变成了"查看",这是正常的:
- 未开方或待审核:按钮显示"开方",点击后可以创建或编辑处方
- 已审核通过:按钮显示"查看",点击后只能查看处方(只读模式)
这是为了区分"可编辑"和"只读"两种模式。
测试步骤
测试1:未开方的预约
- 找到一个未开方的预约(
has_prescription = 0) - 检查按钮是否显示"开方"
- 点击按钮,应该可以创建新处方
测试2:待审核的处方
- 创建一个处方(待审核状态)
- 返回预约列表
- 检查按钮是否显示"开方"
- 点击按钮,应该可以编辑处方
测试3:已审核通过的处方
- 创建一个处方并审核通过
- 返回预约列表
- 检查按钮是否显示"查看"
- 点击按钮,应该只能查看处方(只读模式)
测试4:已驳回的处方
- 创建一个处方并审核驳回
- 返回预约列表
- 检查按钮是否显示"开方"
- 点击按钮,应该可以编辑处方
预期行为
| 处方状态 | prescription_audit_status |
prescription_void_status |
按钮文字 | 点击行为 |
|---|---|---|---|---|
| 未开方 | -1 | 0 | 开方 | 创建新处方 |
| 待审核 | 0 | 0 | 开方 | 编辑处方 |
| 已通过 | 1 | 0 | 查看 | 查看处方(只读) |
| 已驳回 | 2 | 1 | 开方 | 编辑处方 |
常见问题
Q1: 为什么审核通过后按钮文字变成"查看"?
A: 这是为了区分"可编辑"和"只读"两种模式。已审核通过的处方不可编辑,只能查看。
Q2: 如果需要修改已审核通过的处方怎么办?
A: 需要先撤回业务订单(如果已创建),处方审核状态会自动重置为待审核,然后才能编辑。
Q3: 按钮完全不显示怎么办?
A: 检查用户是否有 tcm.diagnosis/kaifang 权限。如果没有,需要在角色管理中添加该权限。
Q4: 点击"查看"按钮后能编辑吗?
A: 不能。已审核通过的处方只能查看,不能编辑。如果需要编辑,需要先撤回业务订单。
总结
按钮的显示逻辑是正确的:
- ✅ 按钮始终显示(只要有
tcm.diagnosis/kaifang权限) - ✅ 按钮文字根据处方状态动态变化("开方" 或 "查看")
- ✅ 点击行为根据处方状态不同(可编辑 或 只读)
如果用户反馈"按钮不显示",可能是以下原因:
- 用户没有
tcm.diagnosis/kaifang权限 - 按钮文字从"开方"变成了"查看",用户误以为按钮消失了
- 数据返回有问题,需要检查后端接口
建议先检查权限配置和数据返回,确认按钮是否真的不显示。