合并业绩明细万元显示与口径说明整理
This commit is contained in:
commit
dd9cab671b
@ -739,6 +739,86 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 业绩明细:把长口径说明拆成可扫描的规则分组,完整原文默认折叠 */
|
||||
.receipt-method-guide {
|
||||
margin: 0 0 1rem;
|
||||
padding: .9rem 1rem;
|
||||
border: 1px solid var(--vip-border, #d8d2c7);
|
||||
border-radius: .75rem;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.receipt-method-guide__grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
|
||||
gap: .7rem 1.5rem;
|
||||
}
|
||||
|
||||
.receipt-method-guide__section {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.receipt-method-guide__section h3 {
|
||||
margin: 0 0 .3rem;
|
||||
color: var(--vip-text, #171717);
|
||||
font-size: .75rem;
|
||||
font-weight: 600;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.receipt-method-guide__section ul {
|
||||
display: grid;
|
||||
gap: .12rem;
|
||||
margin: 0;
|
||||
padding-left: 1rem;
|
||||
color: var(--vip-text-muted, #595959);
|
||||
font-size: .75rem;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.receipt-method-guide__formula {
|
||||
color: var(--vip-text, #171717);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.receipt-method-guide__chips {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: .3rem;
|
||||
}
|
||||
|
||||
.receipt-method-guide__chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: .08rem .4rem;
|
||||
border: 1px solid #e8dfcd;
|
||||
border-radius: .3rem;
|
||||
background: #fffdf8;
|
||||
color: var(--vip-text-muted, #595959);
|
||||
font-size: .6875rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.receipt-method-guide__details {
|
||||
margin-top: .7rem;
|
||||
padding-top: .65rem;
|
||||
border-top: 1px solid #eee7da;
|
||||
}
|
||||
|
||||
.receipt-method-guide__details summary {
|
||||
color: var(--vip-content-accent-dark, #856632);
|
||||
cursor: pointer;
|
||||
font-size: .75rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.receipt-method-guide__details p {
|
||||
margin: .55rem 0 0;
|
||||
color: var(--vip-text-muted, #595959);
|
||||
font-size: .75rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* 业绩明细:店铺收款匹配统计条 */
|
||||
.receipt-match-summary {
|
||||
display: flex;
|
||||
@ -774,6 +854,18 @@
|
||||
gap: .35rem 1.25rem;
|
||||
}
|
||||
|
||||
.receipt-match-summary__items--amounts {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: .4rem 1.75rem;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.receipt-match-summary__items--amounts {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.receipt-match-summary__item--lead strong {
|
||||
font-size: 1.25rem;
|
||||
color: #b80000;
|
||||
@ -797,6 +889,25 @@
|
||||
color: var(--vip-text, #1f2937);
|
||||
}
|
||||
|
||||
.receipt-match-summary__item--amount {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
align-items: baseline;
|
||||
gap: .75rem;
|
||||
}
|
||||
|
||||
.receipt-match-summary__item--amount strong {
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.receipt-match-summary__value-unit {
|
||||
margin-left: .15em;
|
||||
color: #8a8377;
|
||||
font-size: .75rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.receipt-match-summary__item.is-ok strong {
|
||||
color: var(--vip-success, #137a3c);
|
||||
}
|
||||
@ -1076,7 +1187,7 @@
|
||||
<span class="material-icons-outlined" aria-hidden="true">{{ $directory['icon'] ?? 'table_view' }}</span>
|
||||
<div>
|
||||
<strong>{{ $page['title'] ?? $section['title'] }} · 字段结构</strong>
|
||||
@if (!empty($directory['description']))
|
||||
@if (!empty($directory['description']) && ($page['slug'] ?? '') !== 'performance-details')
|
||||
<p class="directory-table-description">{{ $directory['description'] }}</p>
|
||||
@endif
|
||||
</div>
|
||||
@ -1118,6 +1229,57 @@
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if (($page['slug'] ?? '') === 'performance-details' && !empty($directory['description']))
|
||||
<section class="receipt-method-guide" aria-label="业绩明细指标口径">
|
||||
<div class="receipt-method-guide__grid">
|
||||
<div class="receipt-method-guide__section">
|
||||
<h3>匹配口径</h3>
|
||||
<ul>
|
||||
<li>一行 = 一个店铺 + 一个线上订单号</li>
|
||||
<li>商品金额:主单 → 原单行 → 全部行</li>
|
||||
<li>合单/拆单只挂一次,排除 X0000x 虚拟条码</li>
|
||||
<li>订单实付取订单级实付,再扣虚拟条码行实付</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="receipt-method-guide__section">
|
||||
<h3>金额字段</h3>
|
||||
<ul>
|
||||
<li>收入:总账备注 = 订单收入</li>
|
||||
<li>优惠/冲减:分别取优惠收入、冲减收入,不计入收入</li>
|
||||
<li>退款:单独列示,不参与收入和差额</li>
|
||||
<li>种菜:种菜订单的收入子集,不参与差额</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="receipt-method-guide__section">
|
||||
<h3>差额判定</h3>
|
||||
<ul>
|
||||
<li><span class="receipt-method-guide__formula">差额 = 收入 + 优惠 + 冲减 − 订单实付</span></li>
|
||||
<li>未匹配时按订单实付 = 0 计入差额</li>
|
||||
<li>原因按顺序命中;无明确原因时标「差额待核实」</li>
|
||||
<li>卖家实收 / 应付已付能对平的行,差额按 0 计</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="receipt-method-guide__section">
|
||||
<h3>匹配原因</h3>
|
||||
<div class="receipt-method-guide__chips">
|
||||
<span class="receipt-method-guide__chip">账单无单号</span>
|
||||
<span class="receipt-method-guide__chip">单号格式异常</span>
|
||||
<span class="receipt-method-guide__chip">订单表无此单</span>
|
||||
<span class="receipt-method-guide__chip">订单无实付金额</span>
|
||||
<span class="receipt-method-guide__chip">无收款账单</span>
|
||||
<span class="receipt-method-guide__chip">1688 采销收款</span>
|
||||
<span class="receipt-method-guide__chip">店铺名不一致</span>
|
||||
<span class="receipt-method-guide__chip">同单多笔收款</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<details class="receipt-method-guide__details">
|
||||
<summary>查看完整字段与差额判定规则</summary>
|
||||
<p>{{ $directory['description'] }}</p>
|
||||
</details>
|
||||
</section>
|
||||
@endif
|
||||
|
||||
@if (($page['slug'] ?? '') === 'performance-details' && !empty($receiptStats))
|
||||
{{-- 匹配统计:账单笔数、成功/未匹配笔数、双方收入合计核对结果 --}}
|
||||
<div class="receipt-match-summary" role="status" aria-label="店铺收款匹配统计">
|
||||
@ -1134,15 +1296,15 @@
|
||||
</div>
|
||||
<div class="receipt-match-summary__group">
|
||||
<div class="receipt-match-summary__title">金额构成</div>
|
||||
<div class="receipt-match-summary__items">
|
||||
<span class="receipt-match-summary__item"><em>账单收入合计</em><strong>{{ number_format((float) $receiptStats['income_total'], 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item"><em>优惠金额合计</em><strong>{{ number_format((float) ($receiptStats['discount_total'] ?? 0), 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item"><em>冲减金额合计</em><strong>{{ number_format((float) ($receiptStats['offset_total'] ?? 0), 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item"><em>退款金额合计</em><strong>{{ number_format((float) ($receiptStats['refund_total'] ?? 0), 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item"><em>种菜金额合计</em><strong>{{ number_format((float) ($receiptStats['planting_total'] ?? 0), 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item"><em>订单商品金额合计</em><strong>{{ number_format((float) $receiptStats['goods_total'], 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item"><em>订单实付金额合计</em><strong>{{ number_format((float) ($receiptStats['paid_total'] ?? 0), 2) }}</strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--lead"><em>差额合计</em><strong>{{ number_format((float) $receiptStats['difference_total'], 2) }}</strong></span>
|
||||
<div class="receipt-match-summary__items receipt-match-summary__items--amounts">
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>账单收入合计</em><strong>{{ number_format((float) $receiptStats['income_total'] / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>订单商品金额合计</em><strong>{{ number_format((float) $receiptStats['goods_total'] / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>订单实付金额合计</em><strong>{{ number_format((float) ($receiptStats['paid_total'] ?? 0) / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>优惠金额合计</em><strong>{{ number_format((float) ($receiptStats['discount_total'] ?? 0) / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>冲减金额合计</em><strong>{{ number_format((float) ($receiptStats['offset_total'] ?? 0) / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>退款金额合计</em><strong>{{ number_format((float) ($receiptStats['refund_total'] ?? 0) / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount"><em>种菜金额合计</em><strong>{{ number_format((float) ($receiptStats['planting_total'] ?? 0) / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
<span class="receipt-match-summary__item receipt-match-summary__item--amount receipt-match-summary__item--lead"><em>差额合计</em><strong>{{ number_format((float) $receiptStats['difference_total'] / 10000, 2) }}<span class="receipt-match-summary__value-unit">万</span></strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user