input('per_page', 10); $sortBy = $request->input('sort_by', 'created_at'); $sortOrder = $request->input('sort_order', 'desc'); $query = Activity::with('causer'); if ($sortBy === 'created_at') { $query->orderBy($sortBy, $sortOrder); } else { $query->latest(); } $activities = $query->paginate($perPage) ->through(function ($activity) { $subjectMap = [ 'App\Models\User' => '使用者', 'App\Models\Role' => '角色', 'App\Models\Product' => '商品', 'App\Models\Vendor' => '廠商', 'App\Models\Category' => '商品分類', 'App\Models\Unit' => '單位', 'App\Models\PurchaseOrder' => '採購單', ]; $eventMap = [ 'created' => '新增', 'updated' => '更新', 'deleted' => '刪除', ]; return [ 'id' => $activity->id, 'description' => $eventMap[$activity->event] ?? $activity->event, 'subject_type' => $subjectMap[$activity->subject_type] ?? class_basename($activity->subject_type), 'event' => $activity->event, 'causer' => $activity->causer ? $activity->causer->name : 'System', 'created_at' => $activity->created_at->format('Y-m-d H:i:s'), 'properties' => $activity->properties, ]; }); return Inertia::render('Admin/ActivityLog/Index', [ 'activities' => $activities, 'filters' => [ 'per_page' => $request->input('per_page', '10'), 'sort_by' => $request->input('sort_by'), 'sort_order' => $request->input('sort_order'), ], ]); } }