From 3952b5caa8cc9a0776eee101706679cf43ec6466 Mon Sep 17 00:00:00 2001 From: sugar1569 Date: Sun, 27 Sep 2026 16:14:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E4=BB=98=E6=B8=A0=E9=81=93?= =?UTF-8?q?=E6=9C=AA=E9=85=8D=E7=BD=AE=E5=9B=BE=E6=A0=87=E6=97=B6=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=B7=AE=E5=BC=82=E5=8C=96=E9=BB=98=E8=AE=A4=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增按 channel_key 区分的支付渠道默认字体图标配置,修改图标获取逻辑,未配置图片时根据支付方式展示对应默认图标,同时补充线下支付的图标样式。 --- .../driver/pay/PayChannelServices.php | 26 +++++++++++++++---- .../dynamic-pages/engines/CashierEngine.vue | 4 +++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/backend/app/services/driver/pay/PayChannelServices.php b/backend/app/services/driver/pay/PayChannelServices.php index 01de284ef..2046b6227 100644 --- a/backend/app/services/driver/pay/PayChannelServices.php +++ b/backend/app/services/driver/pay/PayChannelServices.php @@ -31,6 +31,20 @@ class PayChannelServices extends BaseService { protected const DEFAULT_ICON = 'icon-yuezhifu'; + /** + * 按 channel_key 区分的默认字体图标(前端 iconfont 已内置对应字形, + * 后台未上传图片时按支付方式展示差异化图标) + */ + protected const DEFAULT_ICONS = [ + 'weixin' => 'icon-weixinzhifu', + 'weixin_v3' => 'icon-weixinzhifu', + 'alipay' => 'icon-zhifubao', + 'yue' => 'icon-yuezhifu', + 'offline' => 'icon-xianxiazhifu', + 'friend' => 'icon-haoyoudaizhifu', + 'allinpay' => 'icon-tonglianzhifu1', + ]; + /** * @var PayChannelDao */ @@ -372,8 +386,8 @@ class PayChannelServices extends BaseService $payStatus = $this->checkChannelStatus($data); $result[] = [ - // 优先使用支付管理中配置的图片,未配置时使用统一的默认字体图标。 - 'icon' => $this->getDisplayIcon($data['icon'] ?? ''), + // 优先使用支付管理中配置的图片,未配置时按 channel_key 使用差异化的默认字体图标。 + 'icon' => $this->getDisplayIcon($data['icon'] ?? '', (string)($data['channel_key'] ?? '')), 'name' => $data['channel_name'], 'value' => $data['channel_key'], 'title' => $this->getChannelTitle($data), @@ -407,14 +421,16 @@ class PayChannelServices extends BaseService } /** - * 获取展示图标。后台未配置图片时统一使用默认字体图标,不写回数据库。 + * 获取展示图标。后台未配置图片时按 channel_key 使用对应的默认字体图标,不写回数据库。 * * @param mixed $icon + * @param string $channelKey 支付方式标识,用于匹配差异化默认图标 * @return string */ - protected function getDisplayIcon($icon): string + protected function getDisplayIcon($icon, string $channelKey = ''): string { - return $this->normalizeIcon($icon) ?: self::DEFAULT_ICON; + return $this->normalizeIcon($icon) + ?: self::DEFAULT_ICONS[$channelKey] ?? self::DEFAULT_ICON; } /** diff --git a/frontend/uni-app/src/dynamic-pages/engines/CashierEngine.vue b/frontend/uni-app/src/dynamic-pages/engines/CashierEngine.vue index 1ca8ecf2f..919276a9d 100644 --- a/frontend/uni-app/src/dynamic-pages/engines/CashierEngine.vue +++ b/frontend/uni-app/src/dynamic-pages/engines/CashierEngine.vue @@ -735,6 +735,10 @@ color: #305fd8; } + .payment .item .left .iconfont.icon-xianxiazhifu { + color: #999999; + } + .payment .item .iconfont { font-size: 40rpx; color: #ccc;