diff --git a/addons/shopro/library/split/SplitManualService.php b/addons/shopro/library/split/SplitManualService.php index b2d7a29..2e000aa 100644 --- a/addons/shopro/library/split/SplitManualService.php +++ b/addons/shopro/library/split/SplitManualService.php @@ -26,6 +26,34 @@ class SplitManualService return (bool) SplitManual::where('order_id', intval($orderId))->find(); } + /** + * 批量:存在手动覆盖的 order_id + * @param int[] $orderIds + * @return int[] + */ + public function orderIdsWithOverride(array $orderIds) + { + $orderIds = array_values(array_unique(array_filter(array_map('intval', $orderIds)))); + if (!$orderIds) { + return []; + } + return array_map('intval', SplitManual::where('order_id', 'in', $orderIds)->column('order_id')); + } + + /** + * 批量:存在变更历史的 order_id + * @param int[] $orderIds + * @return int[] + */ + public function orderIdsWithLog(array $orderIds) + { + $orderIds = array_values(array_unique(array_filter(array_map('intval', $orderIds)))); + if (!$orderIds) { + return []; + } + return array_map('intval', SplitManualLog::where('order_id', 'in', $orderIds)->group('order_id')->column('order_id')); + } + /** * 供 SplitCalculator 使用的明细 * @return array diff --git a/application/admin/controller/shopro/split/Order.php b/application/admin/controller/shopro/split/Order.php index 2f841ff..e338702 100644 --- a/application/admin/controller/shopro/split/Order.php +++ b/application/admin/controller/shopro/split/Order.php @@ -135,6 +135,18 @@ class Order extends Base protected function formatSplitOrderList($list) { $rows = []; + $manualService = new SplitManualService(); + $orderIds = []; + foreach ($list as $item) { + $data = is_array($item) ? $item : $item->toArray(); + $oid = intval($data['order_id'] ?? 0); + if ($oid > 0) { + $orderIds[] = $oid; + } + } + $overrideOrderIds = array_flip($manualService->orderIdsWithOverride($orderIds)); + $logOrderIds = array_flip($manualService->orderIdsWithLog($orderIds)); + foreach ($list as $item) { $data = is_array($item) ? $item : $item->toArray(); @@ -193,8 +205,14 @@ class Order extends Base $orderSplitSource = $data['split_source'] ?? 'auto'; $data['split_source'] = $orderSplitSource; $data['split_source_text'] = $orderSplitSource === 'manual' ? '手动指定' : $data['calc_source_text']; - $data['has_manual_override'] = (new SplitManualService())->hasOverride($orderId); + $hasOverride = isset($overrideOrderIds[$orderId]); + $hasManualLog = isset($logOrderIds[$orderId]); + $data['has_manual_override'] = $hasOverride; + $data['has_manual_log'] = $hasManualLog; $data['can_edit_manual'] = ($status === 4 && $channel === 'huifu'); + // 变更历史:成功/失败后均可查看,不限于 status=4 + $data['can_view_manual_history'] = ($channel === 'huifu') + && ($hasOverride || $hasManualLog || $orderSplitSource === 'manual'); unset($data['order'], $data['receivers']); $rows[] = $data; diff --git a/application/admin/view/shopro/split/order/index.html b/application/admin/view/shopro/split/order/index.html index 2498382..590360f 100644 --- a/application/admin/view/shopro/split/order/index.html +++ b/application/admin/view/shopro/split/order/index.html @@ -377,7 +377,7 @@ @@ -395,7 +395,7 @@ @size-change="onSizeChange"> -

失败汇付单可「指定接收方」改人改金额后重试;「同步」只更新状态,不会重复扣款。

+

失败汇付单可「指定接收方」改人改金额后重试;分账成功或失败后均可点「变更历史」查看每次改人记录。「同步」只更新状态,不会重复扣款。

@@ -452,6 +452,7 @@ 取消 + 查看变更历史 清除手动指定 仅保存 保存并重试 diff --git a/public/assets/js/backend/shopro/split/order.js b/public/assets/js/backend/shopro/split/order.js index e45518a..4abc751 100644 --- a/public/assets/js/backend/shopro/split/order.js +++ b/public/assets/js/backend/shopro/split/order.js @@ -258,7 +258,12 @@ define(['jquery', 'bootstrap', 'backend', 'form'], function ($, undefined, Backe }); }, openHistoryDrawer(row) { + if (!row || !row.order_id) { + Layer.msg('无法加载变更历史'); + return; + } this.historyRow = row; + this.manualDialogVisible = false; this.historyDrawerVisible = true; this.historyLoading = true; this.historyList = [];