Files
zyt/PRESCRIPTION_BUTTON_DISPLAY_CHECK.md
T
2026-04-10 14:43:58 +08:00

6.2 KiB
Raw Blame History

处方按钮显示检查

问题描述

用户反馈:处方审核通过后,"开方"按钮不显示了。

代码分析

前端代码

文件: 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-1prescription_void_status0

可能的原因

1. 权限问题

按钮有权限检查 v-perms="['tcm.diagnosis/kaifang']",如果用户没有这个权限,按钮会被隐藏。

检查方法:

  1. 登录用户账号
  2. 检查用户角色是否有 tcm.diagnosis/kaifang 权限
  3. 在浏览器控制台查看按钮元素是否存在

2. 数据问题

后端返回的 prescription_audit_statusprescription_void_status 字段值不正确。

检查方法:

  1. 打开浏览器开发者工具
  2. 查看预约列表接口的响应数据
  3. 检查 prescription_audit_statusprescription_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. 查看预约列表
  2. 找到已审核通过的处方对应的预约
  3. 检查按钮文字是否显示为"查看"

解决方案

方案1:确认权限配置

确保用户角色有 tcm.diagnosis/kaifang 权限:

  1. 进入后台管理 → 权限管理 → 角色管理
  2. 找到用户所属的角色
  3. 检查是否勾选了"中医诊断 → 开方"权限(tcm.diagnosis/kaifang
  4. 如果没有勾选,勾选后保存

方案2:检查数据返回

在浏览器开发者工具中检查接口返回:

  1. 打开浏览器开发者工具(F12
  2. 切换到 Network 标签
  3. 刷新预约列表页面
  4. 找到预约列表接口(通常是 /doctor.appointment/lists
  5. 查看响应数据中的 prescription_audit_statusprescription_void_status 字段

示例数据:

{
    "id": 123,
    "patient_name": "张三",
    "prescription_audit_status": 1,  // 1=已通过
    "prescription_void_status": 0,   // 0=未作废
    "has_prescription": 1
}

方案3:按钮文字说明

如果按钮文字从"开方"变成了"查看",这是正常的:

  • 未开方或待审核:按钮显示"开方",点击后可以创建或编辑处方
  • 已审核通过:按钮显示"查看",点击后只能查看处方(只读模式)

这是为了区分"可编辑"和"只读"两种模式。

测试步骤

测试1:未开方的预约

  1. 找到一个未开方的预约(has_prescription = 0
  2. 检查按钮是否显示"开方"
  3. 点击按钮,应该可以创建新处方

测试2:待审核的处方

  1. 创建一个处方(待审核状态)
  2. 返回预约列表
  3. 检查按钮是否显示"开方"
  4. 点击按钮,应该可以编辑处方

测试3:已审核通过的处方

  1. 创建一个处方并审核通过
  2. 返回预约列表
  3. 检查按钮是否显示"查看"
  4. 点击按钮,应该只能查看处方(只读模式)

测试4:已驳回的处方

  1. 创建一个处方并审核驳回
  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 权限)
  • 按钮文字根据处方状态动态变化("开方" 或 "查看"
  • 点击行为根据处方状态不同(可编辑 或 只读)

如果用户反馈"按钮不显示",可能是以下原因:

  1. 用户没有 tcm.diagnosis/kaifang 权限
  2. 按钮文字从"开方"变成了"查看",用户误以为按钮消失了
  3. 数据返回有问题,需要检查后端接口

建议先检查权限配置和数据返回,确认按钮是否真的不显示。