From 433714d9b0f68b6c44050b4a8e53127a979874a2 Mon Sep 17 00:00:00 2001 From: sky121113 Date: Tue, 19 May 2026 10:54:18 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[FEAT]=20=E9=8A=B7=E5=94=AE=E7=B4=80?= =?UTF-8?q?=E9=8C=84=E6=96=B0=E5=A2=9E=E5=93=A1=E5=B7=A5=E5=8D=A1=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E8=B3=87=E8=A8=8A=E9=97=9C=E8=81=AF=E3=80=81=E6=90=9C?= =?UTF-8?q?=E5=B0=8B=E8=88=87=E4=BB=8B=E9=9D=A2=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 於 Order 模型中定義 staffCardLog 關係以關聯 StaffCardLog。 2. 於 SalesController 列表查詢(index)與單筆詳情(show)中進行極致效能優化,限定 Eager Loading 僅撈取必要欄位(id, employee_id, name, card_uid),避免 N+1 查詢與記憶體開銷。 3. 擴充 SalesController 的銷售紀錄搜尋過濾邏輯,新增支援員工姓名、工號與感應卡號的模糊搜尋。 4. 修改 tab-orders 桌面版表格與手機版卡片視圖,為員工卡支付的訂單加上精美的員工卡 icon 與「姓名 (工號)」徽章。 5. 修改 order-detail-panel 側滑詳情面板,新增「員工卡資訊」網格區塊,展示員工姓名、工號、卡片 UID 與備註欄位。 6. 更新 zh_TW.json 補齊「員工卡資訊」的繁體中文翻譯,確保全站語言一致。 --- .../Controllers/Admin/SalesController.php | 24 +++++++++++++-- app/Models/Transaction/Order.php | 5 ++++ lang/zh_TW.json | 1 + .../partials/order-detail-panel.blade.php | 30 +++++++++++++++++++ .../admin/sales/partials/tab-orders.blade.php | 16 ++++++++++ 5 files changed, 73 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Admin/SalesController.php b/app/Http/Controllers/Admin/SalesController.php index 2fbd01e..142d376 100644 --- a/app/Http/Controllers/Admin/SalesController.php +++ b/app/Http/Controllers/Admin/SalesController.php @@ -62,7 +62,13 @@ class SalesController extends Controller ]; // 1. 建立基本查詢 (套用共用過濾器:機台、日期) - $ordersQuery = Order::with(['machine:id,name,serial_no', 'invoice:id,order_id,invoice_no', 'items']); + $ordersQuery = Order::with([ + 'machine:id,name,serial_no', + 'invoice:id,order_id,invoice_no', + 'items', + 'staffCardLog:id,order_id,staff_card_id', + 'staffCardLog.staffCard:id,employee_id,name,card_uid' + ]); $invoicesQuery = Invoice::with(['machine:id,name,serial_no', 'order:id,order_no,flow_id,payment_type']); $dispenseQuery = DispenseRecord::with(['order:id,order_no,flow_id', 'machine:id,name,serial_no', 'product:id,name']); @@ -88,7 +94,12 @@ class SalesController extends Controller $q->where('order_no', 'like', "%{$search}%") ->orWhere('flow_id', 'like', "%{$search}%") ->orWhere('invoice_info', 'like', "%{$search}%") - ->orWhere('member_barcode', 'like', "%{$search}%"); + ->orWhere('member_barcode', 'like', "%{$search}%") + ->orWhereHas('staffCardLog.staffCard', function($sq) use ($search) { + $sq->where('name', 'like', "%{$search}%") + ->orWhere('employee_id', 'like', "%{$search}%") + ->orWhere('card_uid', 'like', "%{$search}%"); + }); }); } elseif ($tab === 'invoices') { $invoicesQuery->where(function($q) use ($search) { @@ -136,7 +147,14 @@ class SalesController extends Controller */ public function show(Order $order) { - $order->load(['machine', 'invoice', 'items', 'dispenseRecords.product']); + $order->load([ + 'machine', + 'invoice', + 'items', + 'dispenseRecords.product', + 'staffCardLog:id,order_id,staff_card_id', + 'staffCardLog.staffCard:id,employee_id,name,card_uid' + ]); return response()->json([ 'success' => true, diff --git a/app/Models/Transaction/Order.php b/app/Models/Transaction/Order.php index 7e0379f..9005260 100644 --- a/app/Models/Transaction/Order.php +++ b/app/Models/Transaction/Order.php @@ -136,4 +136,9 @@ class Order extends Model { return $this->hasMany(DispenseRecord::class); } + + public function staffCardLog() + { + return $this->hasOne(\App\Models\StaffCardLog::class); + } } diff --git a/lang/zh_TW.json b/lang/zh_TW.json index 30da24e..6c401a3 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -1531,6 +1531,7 @@ "Spring Limit": "彈簧貨道上限", "Staff": "員工", "Staff Card": "員工卡", + "Staff Card Info": "員工卡資訊", "Staff Identification Management": "員工識別管理", "Staff List": "員工列表", "Staff Name": "員工姓名", diff --git a/resources/views/admin/sales/partials/order-detail-panel.blade.php b/resources/views/admin/sales/partials/order-detail-panel.blade.php index b60faac..3ec6d03 100644 --- a/resources/views/admin/sales/partials/order-detail-panel.blade.php +++ b/resources/views/admin/sales/partials/order-detail-panel.blade.php @@ -84,6 +84,36 @@ + {{-- 員工卡資訊 --}} + @if($order->payment_type == 41 && $order->staffCardLog && $order->staffCardLog->staffCard) +
+
+
+

{{ __('Staff Card Info') }}

+
+
+
+

{{ __('Staff Name') }}

+

{{ $order->staffCardLog->staffCard->name }}

+
+
+

{{ __('Employee ID') }}

+

{{ $order->staffCardLog->staffCard->employee_id }}

+
+
+

{{ __('Card UID') }}

+

{{ $order->staffCardLog->staffCard->card_uid }}

+
+ @if($order->staffCardLog->staffCard->notes) +
+

{{ __('Notes') }}

+

{{ $order->staffCardLog->staffCard->notes }}

+
+ @endif +
+
+ @endif + {{-- 商品明細 --}}
diff --git a/resources/views/admin/sales/partials/tab-orders.blade.php b/resources/views/admin/sales/partials/tab-orders.blade.php index e9f6f95..8d71fde 100644 --- a/resources/views/admin/sales/partials/tab-orders.blade.php +++ b/resources/views/admin/sales/partials/tab-orders.blade.php @@ -202,6 +202,14 @@ {{ __('Discounted') }} ${{ number_format($order->discount_amount, 0) }} @endif + @if($order->payment_type == 41 && $order->staffCardLog && $order->staffCardLog->staffCard) + + + + + {{ $order->staffCardLog->staffCard->name }} ({{ $order->staffCardLog->staffCard->employee_id }}) + + @endif
@@ -331,6 +339,14 @@ {{ $paymentTypes[$order->payment_type] ?? '??' }}

+ @if($order->payment_type == 41 && $order->staffCardLog && $order->staffCardLog->staffCard) +
+ + + + {{ $order->staffCardLog->staffCard->name }} ({{ $order->staffCardLog->staffCard->employee_id }}) +
+ @endif

{{ From d9423a3fb12838341de28fe6b4721bcca66a1422 Mon Sep 17 00:00:00 2001 From: sky121113 Date: Tue, 19 May 2026 11:01:27 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[STYLE]=20=E6=9B=B4=E6=96=B0=E9=8A=B7?= =?UTF-8?q?=E5=94=AE=E7=B4=80=E9=8C=84=E6=90=9C=E5=B0=8B=E6=A1=86=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=A9=9E=EF=BC=8C=E6=94=AF=E6=8F=B4=E5=93=A1=E5=B7=A5?= =?UTF-8?q?=E8=B3=87=E8=A8=8A=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修改 tab-orders.blade.php,將搜尋框提示詞更新為「Search Order No / Flow ID / Invoice / Staff Info...」。 2. 更新 zh_TW.json 翻譯,對應為「搜尋 訂單號 / 流水號 / 發票號碼 / 員工資訊...」。 --- lang/zh_TW.json | 1 + resources/views/admin/sales/partials/tab-orders.blade.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lang/zh_TW.json b/lang/zh_TW.json index 6c401a3..f4d5c3c 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -1407,6 +1407,7 @@ "Search Invoice No / Flow ID...": "搜尋 發票號碼 / 流水號...", "Search Machine...": "搜尋機台...", "Search Order No / Flow ID / Invoice...": "搜尋 訂單號 / 流水號 / 發票號碼...", + "Search Order No / Flow ID / Invoice / Staff Info...": "搜尋 訂單號 / 流水號 / 發票號碼 / 員工資訊...", "Search Product": "搜尋商品", "Search Product / Slot...": "搜尋商品名稱 / 貨道...", "Search accounts...": "搜尋帳號...", diff --git a/resources/views/admin/sales/partials/tab-orders.blade.php b/resources/views/admin/sales/partials/tab-orders.blade.php index 8d71fde..c47e9c9 100644 --- a/resources/views/admin/sales/partials/tab-orders.blade.php +++ b/resources/views/admin/sales/partials/tab-orders.blade.php @@ -14,7 +14,7 @@ + placeholder="{{ __('Search Order No / Flow ID / Invoice / Staff Info...') }}">

From 6cddc5b1b8dc8186cdf36fd6b16bb01468a5d79a Mon Sep 17 00:00:00 2001 From: sky121113 Date: Tue, 19 May 2026 11:03:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[STYLE]=20=E7=B0=A1=E5=8C=96=E9=8A=B7?= =?UTF-8?q?=E5=94=AE=E7=B4=80=E9=8C=84=E6=90=9C=E5=B0=8B=E6=A1=86=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=A9=9E=EF=BC=8C=E5=84=AA=E5=8C=96=E7=89=88=E9=9D=A2?= =?UTF-8?q?=E6=BD=94=E6=B7=A8=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修改 tab-orders.blade.php,將搜尋提示詞簡化為「Search Order No / Cards & Codes...」,移除冗長且非核心的流水號與發票提示。 2. 更新 zh_TW.json 翻譯,對應為「搜尋 訂單號 / 卡號與代碼...」,兼顧未來的通行碼與取貨碼擴充性。 --- lang/zh_TW.json | 2 +- resources/views/admin/sales/partials/tab-orders.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/zh_TW.json b/lang/zh_TW.json index f4d5c3c..37bd298 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -1407,7 +1407,7 @@ "Search Invoice No / Flow ID...": "搜尋 發票號碼 / 流水號...", "Search Machine...": "搜尋機台...", "Search Order No / Flow ID / Invoice...": "搜尋 訂單號 / 流水號 / 發票號碼...", - "Search Order No / Flow ID / Invoice / Staff Info...": "搜尋 訂單號 / 流水號 / 發票號碼 / 員工資訊...", + "Search Order No / Cards & Codes...": "搜尋 訂單號 / 卡號與代碼...", "Search Product": "搜尋商品", "Search Product / Slot...": "搜尋商品名稱 / 貨道...", "Search accounts...": "搜尋帳號...", diff --git a/resources/views/admin/sales/partials/tab-orders.blade.php b/resources/views/admin/sales/partials/tab-orders.blade.php index c47e9c9..15e72ca 100644 --- a/resources/views/admin/sales/partials/tab-orders.blade.php +++ b/resources/views/admin/sales/partials/tab-orders.blade.php @@ -14,7 +14,7 @@ + placeholder="{{ __('Search Order No / Cards & Codes...') }}">
From a4d681e266e69842b89e1e876012eeeebbf32490 Mon Sep 17 00:00:00 2001 From: sky121113 Date: Tue, 19 May 2026 11:05:55 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[FIX]=20=E8=A3=9C=E9=BD=8A=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E8=A8=82=E5=96=AE=E5=93=A1=E5=B7=A5=E5=8D=A1=E8=B3=87?= =?UTF-8?q?=E8=A8=8A=E8=88=87=E6=90=9C=E5=B0=8B=E6=A1=86=E7=9A=84=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E8=88=87=E6=97=A5=E6=96=87=E7=BF=BB=E8=AD=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 於 `lang/en.json` 中補齊 `Search Order No / Cards & Codes...` 與 `Staff Card Info` 的英文鍵值對。 2. 於 `lang/ja.json` 中補齊對應的日文翻譯:`注文番号 / カード・コードを検索...` 與 `スタッフカード情報`。 --- lang/en.json | 2 ++ lang/ja.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lang/en.json b/lang/en.json index 73f108a..81c41b3 100644 --- a/lang/en.json +++ b/lang/en.json @@ -1388,6 +1388,7 @@ "Search Invoice No / Flow ID...": "Search Invoice No / Flow ID...", "Search Machine...": "Search Machine...", "Search Order No / Flow ID / Invoice...": "Search Order No / Flow ID / Invoice...", + "Search Order No / Cards & Codes...": "Search Order No / Cards & Codes...", "Search Product": "Search Product", "Search Product / Slot...": "Search Product / Slot...", "Search accounts...": "Search accounts...", @@ -1511,6 +1512,7 @@ "Spring Limit": "Spring Limit", "Staff": "Staff", "Staff Card": "Staff Card", + "Staff Card Info": "Staff Card Info", "Staff Identification Management": "Staff Identification Management", "Staff List": "Staff List", "Staff Name": "Staff Name", diff --git a/lang/ja.json b/lang/ja.json index 9ecc431..0504f1c 100644 --- a/lang/ja.json +++ b/lang/ja.json @@ -1388,6 +1388,7 @@ "Search Invoice No / Flow ID...": "領収書番号 / フローIDを検索...", "Search Machine...": "機器を検索...", "Search Order No / Flow ID / Invoice...": "注文番号 / フローID / 領収書を検索...", + "Search Order No / Cards & Codes...": "注文番号 / カード・コードを検索...", "Search Product": "商品を検索", "Search Product / Slot...": "商品名 / スロットを検索...", "Search accounts...": "アカウントを検索...", @@ -1511,6 +1512,7 @@ "Spring Limit": "スプリング上限", "Staff": "スタッフ", "Staff Card": "スタッフカード", + "Staff Card Info": "スタッフカード情報", "Staff Identification Management": "スタッフ識別管理", "Staff List": "スタッフ一覧", "Staff Name": "スタッフ名",