From 0ec405f566166126e7ab65d556fa316333a76633 Mon Sep 17 00:00:00 2001 From: kate522 Date: Wed, 7 Oct 2026 08:32:14 +0000 Subject: [PATCH] =?UTF-8?q?fix(admin):=20=E5=94=AE=E5=90=8E=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E9=A1=B5=E8=A1=A8=E5=A4=B4=E5=AF=B9=E9=BD=90=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E7=AD=96=E7=95=A5=E9=85=8D=E7=BD=AE=E9=A1=B9=EF=BC=9A?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0/=E7=94=B3=E8=AF=B7=E8=B5=84=E6=96=99/?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E8=AF=B4=E6=98=8E=E5=88=86=E5=88=97=EF=BC=8C?= =?UTF-8?q?=E9=A1=B5=E5=A4=B4=E5=B1=95=E7=A4=BA=E7=AD=96=E7=95=A5=E6=91=98?= =?UTF-8?q?=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Admin/Native/PayOrders.php | 35 +++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/Admin/Native/PayOrders.php b/src/Admin/Native/PayOrders.php index 438acfd3..8e2246bd 100644 --- a/src/Admin/Native/PayOrders.php +++ b/src/Admin/Native/PayOrders.php @@ -298,6 +298,17 @@ class PayOrders { return; } + $policy = \AKSRT\Settings\PaymentRuntime::get_after_sale_settings(); + $policy_bits = []; + $policy_bits[] = __('售后功能', 'aksrt') . ':' . ($policy['enabled'] ? __('开启', 'aksrt') : __('关闭', 'aksrt')); + $limit_days = (int) ($policy['time_limit'] ?? 0); + $policy_bits[] = __('申请售后时效', 'aksrt') . ':' . ($limit_days > 0 ? sprintf(__('%d 天', 'aksrt'), $limit_days) : __('不限制', 'aksrt')); + $reason_names = array_column((array) ($policy['reasons'] ?? []), 'name'); + if ($reason_names) $policy_bits[] = __('预置原因', 'aksrt') . ':' . implode('、', $reason_names); + $material_names = array_values(array_filter(array_map('trim', (array) ($policy['materials'] ?? [])))); + if ($material_names) $policy_bits[] = __('申请所需材料', 'aksrt') . ':' . implode('、', $material_names); + echo '

' . esc_html(implode(' ', $policy_bits)) . '

'; + $this->render_after_sales_page(); $this->render_footer(); } @@ -390,8 +401,8 @@ class PayOrders { foreach ([\AKSRT\Payment\AfterSaleService::STATUS_PENDING => '待审核', \AKSRT\Payment\AfterSaleService::STATUS_PROCESSING => '处理中', \AKSRT\Payment\AfterSaleService::STATUS_APPROVED => '已通过', \AKSRT\Payment\AfterSaleService::STATUS_REJECTED => '已拒绝', \AKSRT\Payment\AfterSaleService::STATUS_CANCELLED => '已取消', \AKSRT\Payment\AfterSaleService::STATUS_COMPLETED => '已完成'] as $key => $label) echo ''; echo ' '; submit_button(__('筛选', 'aksrt'), 'secondary', '', false); - echo ''; - if (!$items) echo ''; + echo '
ID订单号用户原因退款金额状态操作 / 处理记录
' . esc_html__('暂无售后申请', 'aksrt') . '
'; + if (!$items) echo ''; foreach ($items as $item) { $id = (int) $item['id']; $number = (string) $item['order_number']; $uid = (int) $item['user_id']; $user = $uid > 0 ? get_userdata($uid) : null; @@ -401,7 +412,25 @@ class PayOrders { $status_labels = [\AKSRT\Payment\AfterSaleService::STATUS_PENDING => '待审核', \AKSRT\Payment\AfterSaleService::STATUS_PROCESSING => '处理中', \AKSRT\Payment\AfterSaleService::STATUS_APPROVED => '已通过', \AKSRT\Payment\AfterSaleService::STATUS_REJECTED => '已拒绝', \AKSRT\Payment\AfterSaleService::STATUS_CANCELLED => '已取消', \AKSRT\Payment\AfterSaleService::STATUS_COMPLETED => '已完成']; $refund_amount = (string) ($item['refund_amount'] ?? '0'); if ($order && (string) ($order['currency'] ?? '') === 'points') $refund_amount .= ' ' . __('积分', 'aksrt'); else $refund_amount = '¥' . $refund_amount; - echo '
ID订单号用户原因申请资料申请说明退款金额状态操作 / 处理记录
' . esc_html__('暂无售后申请', 'aksrt') . '
' . esc_html((string) $id) . '
' . esc_html((string) ($item['created_at'] ?? '')) . '
' . esc_html($number) . '
' . esc_html($type_label) . ($order ? ' · ' . esc_html(\AKSRT\Payment\UserOrders::get_instance()->decorate_order_view($order, false)['product_name'] ?? '') : '') . '
' . esc_html($user ? $user->display_name . ' (#' . $uid . ')' : '#' . $uid) . '' . esc_html((string) $item['reason']) . '' . esc_html($refund_amount) . '' . esc_html($status_labels[(string) $item['status']] ?? (string) $item['status']) . ''; + $apply_form = is_array($item['apply_form'] ?? null) ? $item['apply_form'] : null; + if ($apply_form) { + $reason_cell = esc_html((string) ($apply_form['reason_label'] ?? '')); + $material_lines = []; + foreach ((array) ($apply_form['materials'] ?? []) as $m) { + $ml = trim((string) ($m['label'] ?? '')); $mv = trim((string) ($m['value'] ?? '')); + if ($ml === '' && $mv === '') continue; + $material_lines[] = esc_html($ml !== '' ? $ml . ':' . $mv : $mv); + } + $materials_cell = $material_lines ? implode('
', $material_lines) : '—'; + $desc_text = trim((string) ($apply_form['description'] ?? '')); + $desc_cell = $desc_text !== '' ? nl2br(esc_html($desc_text)) : '—'; + } else { + // 老数据:融合串原样展示在原因列 + $reason_cell = nl2br(esc_html((string) $item['reason'])); + $materials_cell = '—'; + $desc_cell = '—'; + } + echo '
' . esc_html((string) $id) . '
' . esc_html((string) ($item['created_at'] ?? '')) . '
' . esc_html($number) . '
' . esc_html($type_label) . ($order ? ' · ' . esc_html(\AKSRT\Payment\UserOrders::get_instance()->decorate_order_view($order, false)['product_name'] ?? '') : '') . '
' . esc_html($user ? $user->display_name . ' (#' . $uid . ')' : '#' . $uid) . '' . $reason_cell . '' . $materials_cell . '' . $desc_cell . '' . esc_html($refund_amount) . '' . esc_html($status_labels[(string) $item['status']] ?? (string) $item['status']) . ''; if ((string) $item['status'] === 'pending') foreach (['approve' => '通过', 'reject' => '拒绝'] as $decision => $label) { echo '
'; wp_nonce_field('aksrt_after_sale_review_' . $id); echo '
'; }