新增
This commit is contained in:
@@ -977,7 +977,7 @@
|
||||
<span class="font-medium text-[15px]">履约与收货信息</span>
|
||||
</template>
|
||||
<el-descriptions :column="3" border size="small" class="po-desc">
|
||||
<el-descriptions-item label="诊单ID">
|
||||
<el-descriptions-item label="诊单ID" :span="3">
|
||||
<span class="font-mono">{{ detailData.diagnosis_id }}</span>
|
||||
<el-button
|
||||
v-if="Number(detailData.diagnosis_id) > 0"
|
||||
@@ -990,7 +990,41 @@
|
||||
查看患者信息
|
||||
</el-button>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间">{{ formatTime(detailData.create_time) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间" :span="1">{{ formatTime(detailData.create_time) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="业务订单创建人" :span="2">
|
||||
<div v-if="Number(detailData.creator_id) > 0 || detailData.creator_name" class="text-[13px] space-y-1">
|
||||
<div>
|
||||
<span class="font-medium text-gray-900">{{ detailData.creator_name || '—' }}</span>
|
||||
<span v-if="Number(detailData.creator_id) > 0" class="text-gray-500 ml-2 font-mono text-xs"
|
||||
>ID {{ detailData.creator_id }}</span
|
||||
>
|
||||
</div>
|
||||
<div v-if="detailOrderCreatorMetaLine" class="text-gray-600 text-xs leading-relaxed">
|
||||
{{ detailOrderCreatorMetaLine }}
|
||||
</div>
|
||||
</div>
|
||||
<span v-else class="text-gray-400">—</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建人所属部门" :span="3">
|
||||
<div v-if="detailOrderCreatorDeptBreadcrumbs.length" class="space-y-1.5">
|
||||
<div
|
||||
v-for="(segments, idx) in detailOrderCreatorDeptBreadcrumbs"
|
||||
:key="idx"
|
||||
class="min-w-0"
|
||||
>
|
||||
<el-breadcrumb
|
||||
v-if="segments.length"
|
||||
class="po-diagnosis-creator-dept-breadcrumb text-[13px] leading-relaxed"
|
||||
separator="/"
|
||||
>
|
||||
<el-breadcrumb-item v-for="(name, j) in segments" :key="j">
|
||||
<span class="text-gray-800 break-all">{{ name }}</span>
|
||||
</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
</div>
|
||||
</div>
|
||||
<span v-else class="text-gray-400">—</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="收货人">{{ detailData.recipient_name }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="挂号关联" :span="3">
|
||||
@@ -1009,8 +1043,8 @@
|
||||
<span v-if="detailLinkedAppointment.doctor_name"
|
||||
>接诊:{{detailLinkedAppointment.doctor_name }}</span
|
||||
>
|
||||
<span v-if="detailLinkedAppointment.channel_source" class="text-gray-500"
|
||||
>渠道:{{ detailLinkedAppointment.channel_source }}</span
|
||||
<span v-if="detailLinkedAppointmentChannelText" class="text-gray-500"
|
||||
>渠道:{{ detailLinkedAppointmentChannelText }}</span
|
||||
>
|
||||
<el-tag v-if="detailLinkedAppointmentResolvedFromTag" size="small" effect="plain">{{
|
||||
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<string, unknown> | null)?.order_creator_dept_path ??
|
||||
(detailData.value as Record<string, unknown> | 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<string, unknown> | 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/缺省兼容旧接口(旧版未下发该字段时仍展示药材) */
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user