This commit is contained in:
Your Name
2026-05-08 14:13:19 +08:00
parent 43110e015d
commit 7473a3e03d
9 changed files with 1324 additions and 268 deletions
@@ -491,7 +491,11 @@
</el-table-column>
</el-table>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
<pagination
v-model="pager"
:page-sizes="[15, 20, 30, 40, 100, 150, 200]"
@change="getLists"
/>
</div>
</el-card>
+73 -12
View File
@@ -463,8 +463,8 @@
<el-tooltip placement="top" effect="dark" :show-after="200">
<template #content>
<div style="max-width: 300px; line-height: 1.7; font-size: 12px">
按订单<b>创建时间</b>统计处方订单列表业绩合计口径一致<b>诊单医助</b>归属展示部门<br />
<b>不受渠道筛选影响</b>展示部门下全部订单
按订单<b>创建时间</b>统计剔除履约已取消金额与<b>接诊诊单</b>列一致诊单<b>医助</b>或订单<b>创建人</b>的人事部门落在本展示行含下级即计入多行命中时取最深的展示部门<br />
<b>不受渠道筛选影响</b>与侧栏按部门打开的业务订单列表可对齐
</div>
</template>
<el-icon class="col-info"><InfoFilled /></el-icon>
@@ -500,7 +500,7 @@
<el-tooltip placement="top" effect="dark" :show-after="200">
<template #content>
<div style="max-width: 320px; line-height: 1.7; font-size: 12px">
<b>已完成</b>status=3 admin医生预约 / 已完成列表计数条件一致appointment_date诊单未软删归属规则同接诊诊单列数据源说明
<b>已完成</b>status=3 admin医生预约 / 已完成列表计数条件一致appointment_date诊单未软删部门归属医助优先否则接诊医生
</div>
</template>
<el-icon class="col-info"><InfoFilled /></el-icon>
@@ -511,8 +511,8 @@
<el-tooltip placement="top" effect="dark" :show-after="200">
<template #content>
<div style="max-width: 320px; line-height: 1.7; font-size: 12px">
处方订单列表 <b>assistant_dept_id</b> 下条数同源订单 <b>create_time</b> 落入区间履约 <b>fulfillment_status 4</b><br />
诊单 <b>医助 assistant_id</b> admin_dept 映射到展示中心非订单 creator_id选定渠道时本列仍为全量
<b>业务订单条数</b>非取消订单 <b>create_time</b> 落入区间<b>fulfillment_status 4</b>与列表筛选
<b>assistant_dept_id</b> 时一致诊单 <b>医助</b>或订单 <b>创建人</b>的人事部门落在该部门子树即计入表格多行命中时取最深的展示部门与侧栏勾选与表格业绩对齐时的集合可能略有差异选定渠道时本列仍为全量
</div>
</template>
<el-icon class="col-info"><InfoFilled /></el-icon>
@@ -994,13 +994,36 @@
<span class="yeji-order-appt-k">类型</span>
{{ row.linked_appointment.appointment_type_desc || '—' }}
</div>
<div class="yeji-order-appt-line">
<div class="yeji-order-appt-line yeji-order-appt-line--channel">
<span class="yeji-order-appt-k">渠道</span>
{{
row.linked_appointment.channel_source_desc ||
row.linked_appointment.channel_source ||
'—'
}}
<span class="yeji-order-appt-channel-text">
{{
row.linked_appointment.channel_source_desc ||
row.linked_appointment.channel_source ||
'—'
}}
<span
v-if="
orderDrawerLinkedApptChannelDictValue(row.linked_appointment) !==
''
"
class="yeji-order-appt-sub"
>
(字典 value
{{ orderDrawerLinkedApptChannelDictValue(row.linked_appointment) }}
</span>
</span>
<el-tooltip placement="top" effect="dark" :show-after="200">
<template #content>
<div style="max-width: 280px; line-height: 1.65; font-size: 12px">
「字典 value」= 系统字典
<b>channels</b> 的 value,与业绩表里按渠道收窄时所用<b>挂号 channels</b>一致;便于和进线列所选渠道对照,<b>不是</b>企微
add_external_contact 单上的独立编号。
</div>
</template>
<el-icon class="yeji-order-appt-info" aria-label="说明"><InfoFilled /></el-icon>
</el-tooltip>
</div>
</div>
<span v-else class="yeji-order-appt-empty">—</span>
@@ -2526,6 +2549,23 @@ function orderDrawerApptSchedule(a: Record<string, any>): string {
return date || tail || '—'
}
/** 挂号 channels 字典 value(后端 channel_dict_value,与业绩/进线所用字典同源);无数值则空串 */
function orderDrawerLinkedApptChannelDictValue(a: Record<string, any> | null | undefined): string {
if (!a) return ''
const v = a.channel_dict_value
if (v !== null && v !== undefined && v !== '') {
const n = Number(v)
if (Number.isFinite(n)) {
return String(Math.trunc(n))
}
}
const raw = a.channel_source
if (raw === null || raw === undefined) return ''
const s = String(raw).trim()
if (s === '' || !/^\d+$/.test(s)) return ''
return String(parseInt(s, 10))
}
function formatOrderDrawerTime(t: unknown): string {
if (t == null || t === '') return '—'
const n = Number(t)
@@ -2562,6 +2602,10 @@ async function fetchOrderDrawerPage() {
}
if (f.mode === 'dept') {
params.assistant_dept_id = f.deptId
/** 与看板「接诊诊单」列一致:处方列表默认 assistant_dept_id(诊单医助或创建人∪子树),不用业绩摊行医助集合 */
if (selectedDeptIds.value.length > 0) {
params.dept_ids = selectedDeptIds.value.join(',')
}
} else {
params.assistant_id = f.assistantId
if (f.erCenterRevisitSlot !== undefined) {
@@ -2616,7 +2660,7 @@ function openOrderDrawerByDept(tb: YejiTable, row: YejiRow) {
end: tb.end_date,
}
orderDrawerTitle.value = `业务订单 · ${row.dept_name}`
orderDrawerHint.value = `创建时间:${tb.start_date} ${tb.end_date} · 诊单医助所属部门 · 不含履约已取消`
orderDrawerHint.value = `创建时间:${tb.start_date} ${tb.end_date} · 与「接诊诊单」同口径:诊单医助或订单创建人落在本部门(含下级)· 不含履约已取消`
orderDrawerPage.value = 1
orderDrawerVisible.value = true
void fetchOrderDrawerPage()
@@ -4493,6 +4537,23 @@ onMounted(async () => {
&:last-child {
margin-bottom: 0;
}
&.yeji-order-appt-line--channel {
align-items: flex-start;
.yeji-order-appt-channel-text {
flex: 1;
min-width: 0;
}
}
}
.yeji-order-appt-info {
font-size: 14px;
color: var(--yj-muted, #94a3b8);
cursor: help;
flex-shrink: 0;
margin-top: 1px;
}
.yeji-order-appt-k {