更新
This commit is contained in:
@@ -411,7 +411,7 @@
|
||||
<div style="max-width: 320px; line-height: 1.7; font-size: 12px">
|
||||
add_external_contact 事件数,按接待企微成员归属部门;定渠道时须客户带对应企微标签。<br />
|
||||
<template v-if="tb.channel_name">
|
||||
<b>名称含「二中心」的部门</b>在选定渠道下进线计 <b>0</b>。
|
||||
<b>二中心及其组织下级</b>(与部门 ErCenter 子树一致)在选定渠道下进线计 <b>0</b>。
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
@@ -423,9 +423,9 @@
|
||||
<el-tooltip placement="top" effect="dark" :show-after="200">
|
||||
<template #content>
|
||||
<div style="max-width: 320px; line-height: 1.7; font-size: 12px">
|
||||
诊单指派日志条数(成功指派:<b>to_assistant_id > 0</b>),按<b>被指派医助</b>归属展示部门。<template v-if="tb.channel_name">
|
||||
<b>tcm_diagnosis_assign_log</b> 行数(成功指派:<b>to_assistant_id > 0</b>),**仅按 <b>related_po_create_time</b>** 落在所选区间内(与日志表快照一致;诊单手动指派已写入该字段)。按<b>被指派医助</b>归属展示部门。<template v-if="tb.channel_name">
|
||||
选定渠道时收窄与「{{ tb.channel_name }}」业绩同口径(标签诊单或 channels EXISTS)。<br />
|
||||
<b>名称含「二中心」的部门</b>在选定渠道下本列计 <b>0</b>。
|
||||
<b>二中心及其组织下级</b>在选定渠道下本列计 <b>0</b>。
|
||||
</template>
|
||||
<template v-else><br />未选渠道时不限客户来源,与「合计业绩」列渠道无关。</template>
|
||||
</div>
|
||||
@@ -547,11 +547,12 @@
|
||||
<template #content>
|
||||
<div style="max-width: 320px; line-height: 1.7; font-size: 12px">
|
||||
<template v-if="tb.channel_name">
|
||||
有渠道时:<b>合计行 ROI</b> = <b>{{ tb.channel_name }}业绩合计</b>(与上表该渠道业绩列合计一致,<b>不含名称含「二中心」的部门</b>)÷ <b>投放成本合计</b>。<br />
|
||||
部门行 ROI = 该部门 <b>{{ tb.channel_name }}业绩</b> ÷ 该部门 <b>投放成本</b>;二中心部门该渠道业绩与进线为 0。与「合计业绩」列无关。
|
||||
有渠道时:<b>合计行 ROI</b> = <b>{{ tb.channel_name }}业绩合计</b>(与上表该渠道业绩列合计一致,<b>不含二中心及其组织下级</b>)÷ <b>投放成本合计</b>。<br />
|
||||
部门行 ROI = 该部门 <b>{{ tb.channel_name }}业绩</b> ÷ 该部门 <b>投放成本</b>;<b>二中心子树</b>部门该渠道业绩与进线为 0、投放成本分摊进线计 0,故无 ROI。与「合计业绩」列无关。
|
||||
</template>
|
||||
<template v-else>
|
||||
<b>合计业绩</b> ÷ <b>投放成本</b>。投放成本按各部门<b>进线条数占比</b>从总成本中分摊。
|
||||
<b>合计行 ROI</b> = 全表业绩合计(<b>不含二中心子树</b>各部门行业绩)÷ <b>投放成本合计</b>;<br />
|
||||
部门行 = 该部门「合计业绩」口径业绩 ÷ 该部门均摊投放成本;<b>二中心子树</b>部门不参与成本分摊(进线占比计 0),故无 ROI。
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
@@ -564,7 +565,7 @@
|
||||
<template #content>
|
||||
<div style="max-width: 320px; line-height: 1.7; font-size: 12px">
|
||||
区间与渠道与账务表一致后得到<b>总投放成本</b>;<b>单进线成本</b> = 总成本 ÷ 各展示部门<b>进线合计</b>;<br />
|
||||
各部门行投放成本 = 单进线成本 × 该部门进线(四舍五入尾差并入进线最多的部门)。
|
||||
各部门行投放成本 = 单进线成本 × 该部门进线(四舍五入尾差并入进线最多的部门)。<b>二中心及其组织下级</b>进线在分摊中计 <b>0</b>(与 ROI 分子扣除范围一致)。
|
||||
</div>
|
||||
</template>
|
||||
<el-icon class="col-info"><InfoFilled /></el-icon>
|
||||
|
||||
@@ -12,6 +12,25 @@
|
||||
{{ assistantLogCellText(row, 'to') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="快照·业务单创建人" min-width="130" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
{{ relatedPoCreatorCell(row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="快照·业务单创建时间" width="190">
|
||||
<template #header>
|
||||
<span>快照·业务单创建时间</span>
|
||||
<el-tooltip
|
||||
placement="top"
|
||||
content="related_po_create_time:触发本次操作的处方业务订单 create_time;与原文助一致时表示医助创建订单时间"
|
||||
>
|
||||
<el-icon class="assign-log-col-hint"><QuestionFilled /></el-icon>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
<template #default="{ row }">
|
||||
{{ relatedPoCreateTimeCell(row) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作人" width="110" prop="operator_name" />
|
||||
<el-table-column label="操作账号" width="120" prop="operator_account" show-overflow-tooltip />
|
||||
<el-table-column label="IP" width="130" prop="ip" show-overflow-tooltip />
|
||||
@@ -20,6 +39,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { QuestionFilled } from '@element-plus/icons-vue'
|
||||
import { ref, watch } from 'vue'
|
||||
import { tcmDiagnosisAssignLogList } from '@/api/tcm'
|
||||
|
||||
@@ -30,6 +50,35 @@ const props = defineProps<{
|
||||
const loading = ref(false)
|
||||
const rows = ref<any[]>([])
|
||||
|
||||
/** 对应日志表 related_po_creator_id:触发本次释放/指派的业务订单 creator */
|
||||
function relatedPoCreatorCell(row: Record<string, unknown>): string {
|
||||
const name = row.related_po_creator_name
|
||||
if (name != null && String(name).trim() !== '') {
|
||||
return String(name)
|
||||
}
|
||||
const id = Number(row.related_po_creator_id)
|
||||
if (Number.isFinite(id) && id > 0) {
|
||||
return `ID:${id}`
|
||||
}
|
||||
return '—'
|
||||
}
|
||||
|
||||
/** 对应日志表 related_po_create_time(Unix)格式化为可读时间 */
|
||||
function relatedPoCreateTimeCell(row: Record<string, unknown>): string {
|
||||
const t = row.related_po_create_time_text
|
||||
if (t != null && String(t).trim() !== '') {
|
||||
return String(t)
|
||||
}
|
||||
const ts = Number(row.related_po_create_time)
|
||||
if (!Number.isFinite(ts) || ts <= 0) {
|
||||
return '—'
|
||||
}
|
||||
const d = new Date(ts * 1000)
|
||||
if (Number.isNaN(d.getTime())) return '—'
|
||||
const pad = (n: number) => String(n).padStart(2, '0')
|
||||
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`
|
||||
}
|
||||
|
||||
function assistantLogCellText(row: Record<string, unknown>, side: 'from' | 'to'): string {
|
||||
const nameKey = side === 'from' ? 'from_assistant_name' : 'to_assistant_name'
|
||||
const idKey = side === 'from' ? 'from_assistant_id' : 'to_assistant_id'
|
||||
@@ -69,3 +118,12 @@ watch(
|
||||
|
||||
defineExpose({ refresh: load })
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.assign-log-col-hint {
|
||||
margin-left: 4px;
|
||||
vertical-align: middle;
|
||||
color: var(--el-text-color-secondary);
|
||||
cursor: help;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1390,13 +1390,12 @@ const handleConfirmAssign = async () => {
|
||||
feedback.msgWarning('没有可指派的诊单,请关闭后重新勾选')
|
||||
return
|
||||
}
|
||||
const promises = ids.map((id) =>
|
||||
tcmDiagnosisAssign({
|
||||
for (const id of ids) {
|
||||
await tcmDiagnosisAssign({
|
||||
id,
|
||||
assistant_id: assignForm.value.assistant_id
|
||||
assistant_id: assignForm.value.assistant_id!,
|
||||
})
|
||||
)
|
||||
await Promise.all(promises)
|
||||
}
|
||||
selectedIds.value = []
|
||||
batchAssignIds.value = []
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user