From f571f99084bf2bc50ae8166ba29f731fa88fbf3d Mon Sep 17 00:00:00 2001 From: sky121113 Date: Wed, 24 Jun 2026 17:05:45 +0800 Subject: [PATCH] =?UTF-8?q?[FEAT]=20=E6=A9=9F=E5=8F=B0=E6=97=A5=E8=AA=8C?= =?UTF-8?q?=E5=B1=A4=E7=B4=9A=E7=AF=A9=E9=81=B8=E8=88=87=E9=8A=B7=E5=94=AE?= =?UTF-8?q?=E7=B4=80=E9=8C=84=E4=BB=98=E6=AC=BE/=E5=87=BA=E8=B2=A8?= =?UTF-8?q?=E7=8B=80=E6=85=8B=E7=AF=A9=E9=81=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 機台日誌新增「層級」篩選下拉(所有層級/Info/Warning/Error),採 x-searchable-select 元件,選擇即時重撈,清除篩選一併重置 2. 銷售紀錄訂單分頁新增「付款狀態」篩選(對應 status 欄) 3. 銷售紀錄訂單分頁新增「出貨狀態」篩選(delivery_status),比照列表顯示邏輯限定 completed/paid 訂單,避免未出貨單因預設值誤篩 4. 補齊三語系 key:All Payment Statuses、All Dispense Statuses、Paid,並對齊排序 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Controllers/Admin/SalesController.php | 7 +++++ lang/en.json | 3 +++ lang/ja.json | 3 +++ lang/zh_TW.json | 3 +++ .../views/admin/machines/index.blade.php | 26 +++++++++++++++---- .../admin/sales/partials/tab-orders.blade.php | 25 ++++++++++++++++++ 6 files changed, 62 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Admin/SalesController.php b/app/Http/Controllers/Admin/SalesController.php index ff536d3..6fdc97c 100644 --- a/app/Http/Controllers/Admin/SalesController.php +++ b/app/Http/Controllers/Admin/SalesController.php @@ -35,6 +35,7 @@ class SalesController extends Controller $machineId = $request->input('machine_id'); $paymentType = $request->input('payment_type'); $status = $request->input('status'); + $deliveryStatus = $request->input('delivery_status'); $startDate = $request->input('start_date'); $endDate = $request->input('end_date'); @@ -55,6 +56,7 @@ class SalesController extends Controller 'machine_id' => $machineId, 'payment_type' => $paymentType, 'status' => $status, + 'delivery_status' => $deliveryStatus, 'start_date' => $request->input('start_date'), // 保留原始輸入以顯示於 UI (如果是隱含的則 UI 顯示空) 'end_date' => $request->input('end_date'), ], @@ -126,6 +128,11 @@ class SalesController extends Controller if ($tab === 'orders') { if ($paymentType) $ordersQuery->where('payment_type', $paymentType); if ($status) $ordersQuery->where('status', $status); + // 出貨狀態:唯有付款成功(completed/paid)的單才有出貨結果,需與列表顯示邏輯 (hasDeliveryOutcome) 一致 + if ($deliveryStatus !== null && $deliveryStatus !== '') { + $ordersQuery->whereIn('status', [Order::STATUS_COMPLETED, 'paid']) + ->where('delivery_status', $deliveryStatus); + } } // 發票專用過濾器:狀態(pending/issued/failed/void) diff --git a/lang/en.json b/lang/en.json index 2cea620..755cff3 100644 --- a/lang/en.json +++ b/lang/en.json @@ -110,9 +110,11 @@ "All Categories": "All Categories", "All Command Types": "All Command Types", "All Companies": "All Companies", + "All Dispense Statuses": "All Dispense Statuses", "All Levels": "All Levels", "All Machines": "All Machines", "All Normal": "All Normal", + "All Payment Statuses": "All Payment Statuses", "All Permissions": "All Permissions", "All Products (ALL)": "All Products (ALL)", "All Slots": "All Slots", @@ -1511,6 +1513,7 @@ "Page 69": "Page 69", "Page 7": "Page 7", "Page Lock Status": "Page Lock Status", + "Paid": "Paid", "Parameters": "Parameters", "Partial Dispense Success": "Partial Dispense Success", "Pass Code": "Pass Code", diff --git a/lang/ja.json b/lang/ja.json index e3fbd1c..ca815fd 100644 --- a/lang/ja.json +++ b/lang/ja.json @@ -110,9 +110,11 @@ "All Categories": "すべてのカテゴリ", "All Command Types": "すべてのコマンドタイプ", "All Companies": "すべての会社", + "All Dispense Statuses": "すべての出庫ステータス", "All Levels": "すべてのレベル", "All Machines": "すべての機器", "All Normal": "すべて正常", + "All Payment Statuses": "すべての決済ステータス", "All Permissions": "すべての権限", "All Products (ALL)": "全商品 (ALL)", "All Slots": "すべてのスロット", @@ -1511,6 +1513,7 @@ "Page 69": "ページ 69 (購入キャンセル)", "Page 7": "ページ 7 (ロックページ)", "Page Lock Status": "ページロックステータス", + "Paid": "支払い済み", "Parameters": "パラメータ設定", "Partial Dispense Success": "一部出庫成功", "Pass Code": "パスコード", diff --git a/lang/zh_TW.json b/lang/zh_TW.json index 93fddc4..8bfb550 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -110,9 +110,11 @@ "All Categories": "所有分類", "All Command Types": "所有指令類型", "All Companies": "所有公司", + "All Dispense Statuses": "所有出貨狀態", "All Levels": "所有層級", "All Machines": "所有機台", "All Normal": "運作正常", + "All Payment Statuses": "所有付款狀態", "All Permissions": "全部權限", "All Products (ALL)": "全部商品 (ALL)", "All Slots": "所有貨道", @@ -1511,6 +1513,7 @@ "Page 69": "取消購買", "Page 7": "鎖定頁", "Page Lock Status": "頁面鎖定狀態", + "Paid": "已付款", "Parameters": "參數設定", "Partial Dispense Success": "部分出貨成功", "Pass Code": "通行碼", diff --git a/resources/views/admin/machines/index.blade.php b/resources/views/admin/machines/index.blade.php index e5b8185..58ec525 100644 --- a/resources/views/admin/machines/index.blade.php +++ b/resources/views/admin/machines/index.blade.php @@ -49,6 +49,7 @@ inventoryLoading: false, startDate: '', endDate: '', + selectedLevel: '', tab: 'list', viewMode: 'fleet', selectedMachine: null, @@ -321,6 +322,7 @@ let url = '/admin/machines/' + this.currentMachineId + '/logs-ajax?type=' + this.activeTab + '&page=' + page; if (this.startDate) url += '&start_date=' + this.startDate; if (this.endDate) url += '&end_date=' + this.endDate; + if (this.selectedLevel) url += '&level=' + this.selectedLevel; const res = await fetch(url); const data = await res.json(); @@ -993,7 +995,7 @@
-
+
+
+ + + + + + +
-
+
-
+ {{-- 付款狀態 --}} +
+ + + + + + + + + +
+ + {{-- 出貨狀態 --}} +
+ + + + + +
+ {{-- 開始時間 --}}