#feature: some update

This commit is contained in:
2026-08-12 18:00:09 +08:00
parent ba916f5ce1
commit 103340536b
39 changed files with 2916 additions and 227 deletions
@@ -58,6 +58,11 @@
<code class="font-mono">AgentBusinessDocument\\ConfirmProduction::canProduction</code> /
<code class="font-mono">AgentSaleDocument\\ConfirmPermit::canPermit</code>
</p>
<p class="text-xs text-gray-500">
进产原因来自 CRM <code class="font-mono">ea_case_cstm.label_bit</code> agent-be
<code class="font-mono">stuck_payment_reason</code> 配置过滤后写入
<code class="font-mono">cases.is_need_pfp</code>
</p>
</div>
<!-- 错误 -->
@@ -146,6 +151,87 @@
提示{{ check.hint }}
</div>
<!-- 进产原因展示 -->
<div v-if="check.key === 'need_pfp'" class="mt-3 space-y-3">
<div>
<div class="text-xs text-gray-500 mb-1">
进产卡款原因
<span class="ml-2 text-gray-400">来源CRM label_bit &amp; stuck_payment_reason 配置</span>
</div>
<div v-if="check.reasons && check.reasons.length" class="space-y-2">
<div
v-for="reason in check.reasons"
:key="reason.bit"
class="border border-amber-200 bg-amber-50 rounded-lg p-2"
>
<div class="text-xs font-semibold text-amber-800">
{{ reason.label }}
<span class="ml-1 font-mono font-normal text-amber-600">bit {{ reason.bit }}</span>
<span v-if="reason.crm_label !== reason.label" class="ml-2 font-normal text-amber-600">
CRM: {{ reason.crm_label }}
</span>
</div>
<div class="text-xs text-amber-700 mt-1">{{ reason.description }}</div>
</div>
</div>
<div v-else class="text-xs text-gray-600 bg-gray-50 rounded-lg p-2">
该病例没有任何卡生产原因不需要代理放行
</div>
</div>
<div
v-if="check.crm_ignored_reasons && check.crm_ignored_reasons.length"
class="border border-blue-200 bg-blue-50 rounded-lg p-2"
>
<div class="text-xs font-semibold text-blue-800">CRM 有标记但未纳入配置</div>
<div
v-for="ignored in check.crm_ignored_reasons"
:key="ignored.bit"
class="text-xs text-blue-700 mt-1"
>
{{ ignored.label }} (bit {{ ignored.bit }}) {{ ignored.description }}
</div>
</div>
<div
v-if="check.sync_mismatch"
class="border border-orange-200 bg-orange-50 rounded-lg p-2 text-xs text-orange-800"
>
代理库与 CRM 不一致CRM label_bit = {{ check.crm_label_bit }}按配置应为
is_need_pfp = {{ check.expected_is_need_pfp }}实际为 {{ check.is_need_pfp }}
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-2 text-xs">
<div class="bg-gray-50 rounded p-2">
<div class="text-gray-500">CRM label_bit</div>
<div class="text-gray-900 break-all">
{{ check.crm_available ? check.crm_label_bit + ' · ' + check.crm_label_bit_text : check.crm_label_bit_text }}
</div>
</div>
<div class="bg-gray-50 rounded p-2">
<div class="text-gray-500">放行状态 (is_pfp)</div>
<div class="text-gray-900">{{ check.is_pfp_text }} ({{ check.is_pfp }})</div>
</div>
<div class="bg-gray-50 rounded p-2">
<div class="text-gray-500">配置来源</div>
<div class="text-gray-900 break-all">
{{ check.config_source_text }} · 掩码 {{ check.config_mask }}
</div>
</div>
</div>
<div v-if="check.config_options && check.config_options.length" class="text-xs text-gray-500">
当前 stuck_payment_reason
<span
v-for="option in check.config_options"
:key="option.bit"
class="inline-flex items-center px-1.5 py-0.5 rounded bg-gray-100 text-gray-700 mr-1 font-mono"
>
{{ option.bit }} · {{ option.label }}
</span>
</div>
</div>
<!-- 账期链路展示 -->
<div v-if="check.key === 'credit' && check.chain && check.chain.length" class="mt-3">
<div class="text-xs text-gray-500 mb-1">
@@ -251,8 +337,12 @@ export default {
{ key: 'hospital_code', label: '机构编号', value: e.hospital_code },
{ key: 'doctor_code', label: '医生编号', value: e.doctor_code },
{ key: 'patient_name', label: '患者姓名', value: e.patient_name },
{ key: 'is_need_pfp', label: 'is_need_pfp', value: e.is_need_pfp },
{ key: 'is_pfp', label: 'is_pfp', value: e.is_pfp }
{
key: 'is_need_pfp',
label: '进产原因 (is_need_pfp)',
value: `${e.debt_reason_text || '无'} (${e.is_need_pfp})`
},
{ key: 'is_pfp', label: '放行状态 (is_pfp)', value: `${e.is_pfp_text || '-'} (${e.is_pfp})` }
);
} else {
base.push({ key: 'hospital_code', label: '机构编号', value: e.hospital_code });