diff --git a/admin/src/views/consumer/prescription/order_list.vue b/admin/src/views/consumer/prescription/order_list.vue index 11d569fb..3d3332d9 100644 --- a/admin/src/views/consumer/prescription/order_list.vue +++ b/admin/src/views/consumer/prescription/order_list.vue @@ -4075,18 +4075,25 @@ const detailLinkedAppointmentChannelText = computed(() => { const detailRxHerbs = computed(() => normalizeSlipHerbs(detailPrescription.value?.herbs)) -/** 详情:是否含辅方药材(用于决定是否展示辅方用量 / 用法) */ -const detailHasAuxHerbs = computed(() => { - const herbs = detailPrescription.value?.herbs - if (!Array.isArray(herbs)) return false - return herbs.some((h: any) => normalizeSlipFormulaType(h?.formula_type) === '辅方') -}) +/** 详情:是否含辅方药材(仅 formula_type=辅方;医助无药材权限时 herbs 被剥离,用后端 has_aux_formula) */ +function prescriptionHasAuxFormula(rx: Record | null | undefined): boolean { + if (!rx) return false + const herbs = rx.herbs + if (Array.isArray(herbs)) { + return herbs.some((h: any) => normalizeSlipFormulaType(h?.formula_type) === '辅方') + } + return Number(rx.has_aux_formula) === 1 +} + +const detailHasAuxHerbs = computed(() => prescriptionHasAuxFormula(detailPrescription.value as any)) /** 详情:辅方用法(aux_usage JSON 经规范化后的对象,与处方类型一致) */ const detailAuxUsage = computed(() => { const rx = detailPrescription.value as any - if (!rx) return null - return normalizeSlipAuxUsageForm(rx.aux_usage, rx.prescription_type || '浓缩水丸') + if (!rx || !prescriptionHasAuxFormula(rx)) return null + const raw = rx.aux_usage + if (raw == null || raw === '' || (Array.isArray(raw) && raw.length === 0)) return null + return normalizeSlipAuxUsageForm(raw, rx.prescription_type || '浓缩水丸') }) /** false=无权限;true/缺省兼容旧接口(旧版未下发该字段时仍展示药材) */ diff --git a/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php b/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php index 2681ca8d..a14f9893 100755 --- a/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php +++ b/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php @@ -1036,7 +1036,17 @@ class PrescriptionOrderLogic $canHerbs = self::canViewPrescriptionHerbsInOrderDetail($adminInfo); $arr['prescription_detail_herbs_visible'] = $canHerbs; if (! $canHerbs && isset($arr['prescription']) && is_array($arr['prescription'])) { - unset($arr['prescription']['herbs']); + $rx = &$arr['prescription']; + $herbs = is_array($rx['herbs'] ?? null) ? $rx['herbs'] : []; + $hasAux = false; + foreach ($herbs as $h) { + if (is_array($h) && (string) ($h['formula_type'] ?? '') === '辅方') { + $hasAux = true; + break; + } + } + $rx['has_aux_formula'] = $hasAux ? 1 : 0; + unset($rx['herbs']); } // 诊单医助 / 诊单创建人姓名(tcm_diagnosis.admin_id);部门见下方:优先业务订单 creator_id