From 3f05a610b3c2cd790c6242d84f6cc843d2df09fb Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 7 May 2026 18:31:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumer/prescription/order_list.vue | 91 ++++++++++++++++++- .../logic/tcm/PrescriptionOrderLogic.php | 18 +++- 2 files changed, 100 insertions(+), 9 deletions(-) diff --git a/admin/src/views/consumer/prescription/order_list.vue b/admin/src/views/consumer/prescription/order_list.vue index 45457c6e..097a8d89 100644 --- a/admin/src/views/consumer/prescription/order_list.vue +++ b/admin/src/views/consumer/prescription/order_list.vue @@ -977,7 +977,7 @@ 履约与收货信息 - + {{ detailData.diagnosis_id }} - {{ formatTime(detailData.create_time) }} + {{ formatTime(detailData.create_time) }} + +
+
+ {{ detailData.creator_name || '—' }} + ID {{ detailData.creator_id }} +
+
+ {{ detailOrderCreatorMetaLine }} +
+
+ +
+ +
+
+ + + {{ name }} + + +
+
+ +
{{ detailData.recipient_name }} @@ -1009,8 +1043,8 @@ 接诊:{{detailLinkedAppointment.doctor_name }} - 渠道:{{ detailLinkedAppointment.channel_source }}渠道:{{ detailLinkedAppointmentChannelText }} {{ detailLinkedAppointmentResolvedFromTag @@ -3230,6 +3264,46 @@ const detailOrderPhoneDisplay = computed(() => { return s || '—' }) +/** 详情:业务订单创建人部门面包屑(与 edit 表单同结构;后端 order_creator_dept_path / diagnosis_creator_dept_path) */ +const detailOrderCreatorDeptBreadcrumbs = computed(() => { + const raw = String( + (detailData.value as Record | null)?.order_creator_dept_path ?? + (detailData.value as Record | null)?.diagnosis_creator_dept_path ?? + '' + ).trim() + if (!raw) { + return [] as string[][] + } + return raw + .split(';') + .map((s) => s.trim()) + .filter(Boolean) + .map((p) => { + if (p.includes(' / ')) { + return p + .split(' / ') + .map((x) => x.trim()) + .filter(Boolean) + } + return p + .split('/') + .map((x) => x.trim()) + .filter(Boolean) + }) + .filter((segs) => segs.length > 0) +}) + +const detailOrderCreatorMetaLine = computed(() => { + const d = detailData.value as Record | null + if (!d) return '' + const account = String(d.creator_account ?? '').trim() + const mobile = String(d.creator_mobile ?? '').trim() + const parts: string[] = [] + if (account) parts.push(`登录账号:${account}`) + if (mobile) parts.push(`手机:${mobile}`) + return parts.join(' · ') +}) + const detailLinkedAppointment = computed(() => { const a = detailData.value?.linked_appointment return a && typeof a === 'object' ? a : null @@ -3242,6 +3316,15 @@ const detailLinkedAppointmentResolvedFromTag = computed(() => { return '' }) +/** 渠道展示:后端 linked_appointment.channel_source_desc(字典名),缺省回退原值 */ +const detailLinkedAppointmentChannelText = computed(() => { + const a = detailLinkedAppointment.value + if (!a) return '' + const desc = String(a.channel_source_desc ?? '').trim() + if (desc) return desc + return String(a.channel_source ?? '').trim() +}) + const detailRxHerbs = computed(() => normalizeSlipHerbs(detailPrescription.value?.herbs)) /** false=无权限;true/缺省兼容旧接口(旧版未下发该字段时仍展示药材) */ diff --git a/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php b/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php index 588ef0ab..d1ec122e 100644 --- a/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php +++ b/server/app/adminapi/logic/tcm/PrescriptionOrderLogic.php @@ -690,13 +690,19 @@ class PrescriptionOrderLogic self::maskRemarkExtraIfNeeded($arr, $adminInfo); self::attachLinkedPayOrders($arr); - // 添加创建人姓名 + // 添加创建人姓名、登录账号(业务订单 creator_id;la_admin 无手机列则不发手机号) $creatorId = (int) ($arr['creator_id'] ?? 0); + $arr['creator_name'] = ''; + $arr['creator_account'] = ''; + $arr['creator_mobile'] = ''; if ($creatorId > 0) { - $creatorName = Admin::where('id', $creatorId)->value('name'); - $arr['creator_name'] = $creatorName ? (string) $creatorName : ''; - } else { - $arr['creator_name'] = ''; + // 须包含 id:Admin 模型 $append 在 toArray 时会依赖 data['id'] + $adm = Admin::where('id', $creatorId)->whereNull('delete_time')->field(['id', 'name', 'account'])->find(); + if ($adm !== null) { + $a = $adm->toArray(); + $arr['creator_name'] = (string) ($a['name'] ?? ''); + $arr['creator_account'] = (string) ($a['account'] ?? ''); + } } $rxId = (int) ($arr['prescription_id'] ?? 0); @@ -774,6 +780,8 @@ class PrescriptionOrderLogic } } $arr['diagnosis_creator_dept_path'] = $deptPath; + /** 与 diagnosis_creator_dept_path 相同语义:业务订单创建人所属部门(多部门「;」、路径「 / 」),便于前端字段自解释 */ + $arr['order_creator_dept_path'] = $deptPath; // 挂号预约摘要:优先处方 appointment_id;否则按诊单 id 匹配预约表 patient_id(诊单) $arr['linked_appointment'] = null;