diff --git a/addons/shopro/library/split/SplitCalculator.php b/addons/shopro/library/split/SplitCalculator.php index 9bc0120..35acbee 100644 --- a/addons/shopro/library/split/SplitCalculator.php +++ b/addons/shopro/library/split/SplitCalculator.php @@ -82,7 +82,7 @@ class SplitCalculator $payFee = floatval($order['pay_fee']); $commissionRewards = CommissionReward::where('order_id', $orderId)->where('status', '>=', 0)->select(); if ($this->isEmptyResult($commissionRewards)) { - $issues[] = '该订单无分销佣金记录(未产生推广关系或未参与分销)'; + $issues[] = '无分销佣金记录'; } foreach ($this->toResultList($commissionRewards) as $reward) { @@ -98,7 +98,7 @@ class SplitCalculator $receiver = $this->getReceiver('promoter', $userId); if (!$receiver) { $issues[] = sprintf( - '推广员#%d 佣金¥%s 无汇付接收方(分账接收方 role_id 须等于该 user_id)', + '推广员#%d 佣金¥%s:未配置汇付接收方(role_id 须等于该 user_id)', $userId, number_format($amount, 2, '.', '') ); @@ -131,7 +131,7 @@ class SplitCalculator } elseif (!empty($ruleItems) && ($amountSource === 'rule' || ($amountSource === 'mixed' && empty($commissionItems)))) { $finalSource = 'rule'; if ($amountSource === 'mixed' && !empty($issues)) { - $issues[] = '已回退到分账规则(如推广员 5%),金额与佣金不一致'; + $issues[] = '已回退分账规则(如 5%),与佣金金额不一致'; } } diff --git a/application/admin/view/shopro/split/order/index.html b/application/admin/view/shopro/split/order/index.html index 6f53ff2..9e7f6f5 100644 --- a/application/admin/view/shopro/split/order/index.html +++ b/application/admin/view/shopro/split/order/index.html @@ -6,6 +6,11 @@ background: #f5f7fa; min-height: 100%; } + #splitOrderIndex .el-table .cell { + overflow: hidden; + line-height: 1.5; + vertical-align: top; + } .page-card { background: #fff; border-radius: 8px; @@ -26,176 +31,142 @@ gap: 10px; align-items: center; } - .cell-plain { - font-size: 13px; - color: #303133; - line-height: 1.5; - white-space: nowrap; - } - .cell-sub-plain { - font-size: 12px; - color: #909399; - line-height: 1.5; - margin-top: 4px; - white-space: nowrap; - } - /* 默认截断;悬浮后横向滚动查看完整内容 */ .scroll-cell { max-width: 100%; - overflow-x: hidden; + overflow-x: auto; overflow-y: hidden; - cursor: default; - -webkit-overflow-scrolling: touch; scrollbar-width: thin; } - .scroll-cell:hover { - overflow-x: auto; - cursor: ew-resize; - } - .scroll-cell::-webkit-scrollbar { - height: 4px; - } + .scroll-cell::-webkit-scrollbar { height: 3px; } .scroll-cell::-webkit-scrollbar-thumb { - background: rgba(116, 56, 213, 0.35); + background: rgba(116, 56, 213, 0.3); border-radius: 2px; } .scroll-cell-inner { display: inline-block; white-space: nowrap; - min-width: min-content; - } - .scroll-hint { - display: none; - font-size: 10px; - color: #c0c4cc; - margin-top: 2px; - white-space: nowrap; - } - .scroll-cell:hover + .scroll-hint, - .scroll-cell-wrap:hover .scroll-hint { - display: block; - } - .scroll-cell-wrap { - max-width: 100%; - } - .amount-cell { - text-align: right; - white-space: nowrap; - } - .amount-cell .money-line { - font-size: 13px; - color: #303133; - line-height: 1.6; - } - .amount-cell .money-line.split-line { - font-size: 12px; - color: #909399; } .mono-text { font-family: Consolas, Monaco, "Courier New", monospace; - letter-spacing: 0.2px; - } - .link-text { - color: #7438D5; - cursor: pointer; + font-size: 12px; } + .link-text { color: #7438D5; cursor: pointer; } .link-text:hover { opacity: 0.85; } .money-text { color: #e1212b; font-weight: 600; } .channel-tag { display: inline-block; - margin-left: 6px; - padding: 0 6px; + margin-left: 4px; + padding: 0 5px; font-size: 11px; line-height: 18px; - border-radius: 4px; + border-radius: 3px; background: #f4f4f5; color: #606266; - vertical-align: middle; } .status-tag { display: inline-block; padding: 2px 10px; border-radius: 12px; font-size: 12px; - white-space: nowrap; } .status-tag.s0 { background: #f4f4f5; color: #909399; } .status-tag.s1 { background: #ecf5ff; color: #409eff; } .status-tag.s2 { background: #f0f9eb; color: #67c23a; } .status-tag.s3 { background: #fdf6ec; color: #e6a23c; } .status-tag.s4 { background: #fef0f0; color: #f56c6c; } - .recv-list { display: flex; flex-direction: column; gap: 6px; } - .recv-row { - display: flex; - align-items: center; - flex-wrap: nowrap; - gap: 6px; - font-size: 12px; - line-height: 1.5; + .amount-block { + text-align: right; + line-height: 1.65; + font-size: 13px; + color: #303133; } - .recv-scroll { - flex: 1; - min-width: 0; - max-width: calc(100% - 120px); - } - .recv-role { - display: inline-block; - padding: 0 6px; - border-radius: 4px; - background: #f0ebfa; - color: #7438D5; - white-space: nowrap; - } - .recv-name { color: #303133; } - .recv-account { - color: #909399; - font-family: Consolas, Monaco, "Courier New", monospace; - font-size: 11px; - } - .recv-amt { color: #e1212b; font-weight: 600; margin-left: auto; white-space: nowrap; } - .recv-preview-hint { - font-size: 11px; - color: #c0c4cc; - margin-top: 2px; - } - .fail-reason { - font-size: 12px; - color: #f56c6c; - line-height: 1.5; + .amount-block .sub { font-size: 12px; color: #909399; } + .source-line { + margin-top: 6px; + text-align: right; white-space: nowrap; } .source-tag { display: inline-block; padding: 0 6px; - border-radius: 4px; + border-radius: 3px; font-size: 11px; line-height: 18px; - white-space: nowrap; - margin-top: 4px; } .source-tag.commission { background: #ecf5ff; color: #409eff; } .source-tag.rule { background: #fdf6ec; color: #e6a23c; } - .diagnose-hint { + .source-detail-btn { font-size: 11px; - color: #e6a23c; - line-height: 1.5; - margin-top: 4px; - white-space: normal; - } - .op-hint { - font-size: 12px; color: #909399; margin-left: 4px; + cursor: pointer; } - #splitOrderIndex .el-table .cell { + .source-detail-btn:hover { color: #7438D5; } + .recv-block { + padding: 6px 0; + border-bottom: 1px dashed #ebeef5; + } + .recv-block:last-child { border-bottom: none; padding-bottom: 0; } + .recv-line1 { + display: flex; + align-items: center; + gap: 6px; + font-size: 12px; + min-width: 0; + } + .recv-role { + flex-shrink: 0; + padding: 0 5px; + border-radius: 3px; + background: #f0ebfa; + color: #7438D5; + font-size: 11px; + line-height: 18px; + } + .recv-name { + flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: #303133; + } + .recv-amt { + flex-shrink: 0; + color: #e1212b; + font-weight: 600; + } + .recv-line2 { + margin-top: 3px; + font-size: 11px; + color: #909399; + } + .fail-text { + font-size: 12px; + color: #f56c6c; line-height: 1.5; + word-break: break-all; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; } + .diag-pop { + font-size: 12px; + color: #606266; + line-height: 1.6; + max-height: 220px; + overflow-y: auto; + } + .diag-pop li { margin-bottom: 6px; } + .diag-pop li:last-child { margin-bottom: 0; } + .op-hint { font-size: 12px; color: #909399; margin-top: 10px; }
- 分账记录展示向支付通道(微信/汇付)发起的网关分账结果,与「分销佣金」「区域差价」钱包入账是不同链路。 - 仅已支付且触发分账的订单会出现记录;列表为空时请先确认分账已开启并完成一笔测试支付。 + 分账记录为支付通道网关分账结果,与分销佣金钱包入账不同链路。 + 长订单号可在单元格内左右滑动查看;「规则兜底」时点 详情 可看未走佣金分账的原因。
- 订单号、分账单号等长字段鼠标悬浮后可左右滑动查看完整内容;「重试分账」仅对失败记录有效;「同步状态」只拉取通道结果,不会重复扣款。 -
+「重试」仅对失败记录向通道重新发起;「同步」只更新状态,不会重复扣款。