diff --git a/.gitignore b/.gitignore index ddc93d3..0591cf8 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ docker/redis/data/ # Logs *.log +.ace-tool/ diff --git a/backend/app/Http/Controllers/Admin/Care/CareExceptionController.php b/backend/app/Http/Controllers/Admin/Care/CareExceptionController.php index ebad6e9..f869577 100644 --- a/backend/app/Http/Controllers/Admin/Care/CareExceptionController.php +++ b/backend/app/Http/Controllers/Admin/Care/CareExceptionController.php @@ -14,7 +14,7 @@ class CareExceptionController extends Controller $query = CareException::query()->with(['profile.customer', 'reporter', 'handler']); $query->when($request->care_profile_id, fn($q, $v) => $q->where('care_profile_id', $v)); $query->when($request->level, fn($q, $v) => $q->where('level', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Care/CarePlanController.php b/backend/app/Http/Controllers/Admin/Care/CarePlanController.php index a56ef6a..80bc588 100644 --- a/backend/app/Http/Controllers/Admin/Care/CarePlanController.php +++ b/backend/app/Http/Controllers/Admin/Care/CarePlanController.php @@ -15,7 +15,7 @@ class CarePlanController extends Controller $query->when($request->care_profile_id, fn($q, $v) => $q->where('care_profile_id', $v)); $query->when($request->plan_date, fn($q, $v) => $q->whereDate('plan_date', $v)); $query->when($request->nurse_id, fn($q, $v) => $q->where('nurse_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Crm/ChannelController.php b/backend/app/Http/Controllers/Admin/Crm/ChannelController.php index d8422d4..aec39da 100644 --- a/backend/app/Http/Controllers/Admin/Crm/ChannelController.php +++ b/backend/app/Http/Controllers/Admin/Crm/ChannelController.php @@ -14,7 +14,7 @@ class ChannelController extends Controller $query = Channel::query(); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Crm/ComplaintController.php b/backend/app/Http/Controllers/Admin/Crm/ComplaintController.php index 293c0a1..27ca4fe 100644 --- a/backend/app/Http/Controllers/Admin/Crm/ComplaintController.php +++ b/backend/app/Http/Controllers/Admin/Crm/ComplaintController.php @@ -14,7 +14,7 @@ class ComplaintController extends Controller $query = Complaint::query()->with(['customer', 'handler']); $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Crm/ContractController.php b/backend/app/Http/Controllers/Admin/Crm/ContractController.php index d05218f..50852c3 100644 --- a/backend/app/Http/Controllers/Admin/Crm/ContractController.php +++ b/backend/app/Http/Controllers/Admin/Crm/ContractController.php @@ -14,7 +14,7 @@ class ContractController extends Controller $query = Contract::query()->with(['customer', 'auditor']); $query->when($request->contract_no, fn($q, $v) => $q->where('contract_no', 'like', "%{$v}%")); $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Crm/QuestionnaireController.php b/backend/app/Http/Controllers/Admin/Crm/QuestionnaireController.php index b79f1a8..21d6a2c 100644 --- a/backend/app/Http/Controllers/Admin/Crm/QuestionnaireController.php +++ b/backend/app/Http/Controllers/Admin/Crm/QuestionnaireController.php @@ -15,7 +15,7 @@ class QuestionnaireController extends Controller $query = QuestionnaireTemplate::query(); $query->when($request->title, fn($q, $v) => $q->where('title', 'like', "%{$v}%")); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Finance/FinanceCategoryController.php b/backend/app/Http/Controllers/Admin/Finance/FinanceCategoryController.php index 818e3bf..3b029da 100644 --- a/backend/app/Http/Controllers/Admin/Finance/FinanceCategoryController.php +++ b/backend/app/Http/Controllers/Admin/Finance/FinanceCategoryController.php @@ -13,7 +13,7 @@ class FinanceCategoryController extends Controller { $query = FinanceCategory::query(); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); $categories = $query->orderBy('sort')->get(); diff --git a/backend/app/Http/Controllers/Admin/Finance/FinanceRecordController.php b/backend/app/Http/Controllers/Admin/Finance/FinanceRecordController.php index 1bd0cae..0ae5a13 100644 --- a/backend/app/Http/Controllers/Admin/Finance/FinanceRecordController.php +++ b/backend/app/Http/Controllers/Admin/Finance/FinanceRecordController.php @@ -14,7 +14,7 @@ class FinanceRecordController extends Controller $query = FinanceRecord::query()->with(['category']); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); $query->when($request->category_id, fn($q, $v) => $q->where('category_id', $v)); - $query->when($request->has('audit_status'), fn($q) => $q->where('audit_status', $request->audit_status)); + $query->when($request->filled('audit_status'), fn($q) => $q->where('audit_status', $request->audit_status)); $query->when($request->start_date, fn($q, $v) => $q->where('record_date', '>=', $v)); $query->when($request->end_date, fn($q, $v) => $q->where('record_date', '<=', $v)); diff --git a/backend/app/Http/Controllers/Admin/Finance/InvoiceController.php b/backend/app/Http/Controllers/Admin/Finance/InvoiceController.php index b2f46f1..475a15c 100644 --- a/backend/app/Http/Controllers/Admin/Finance/InvoiceController.php +++ b/backend/app/Http/Controllers/Admin/Finance/InvoiceController.php @@ -14,7 +14,7 @@ class InvoiceController extends Controller $query = Invoice::query()->with(['customer']); $query->when($request->invoice_no, fn($q, $v) => $q->where('invoice_no', 'like', "%{$v}%")); $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); diff --git a/backend/app/Http/Controllers/Admin/Finance/PrepaidCardController.php b/backend/app/Http/Controllers/Admin/Finance/PrepaidCardController.php index 5ad384c..b6b5da8 100644 --- a/backend/app/Http/Controllers/Admin/Finance/PrepaidCardController.php +++ b/backend/app/Http/Controllers/Admin/Finance/PrepaidCardController.php @@ -13,7 +13,7 @@ class PrepaidCardController extends Controller { $query = PrepaidCard::query(); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->orderBy('sort')->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Hr/AttendanceRecordController.php b/backend/app/Http/Controllers/Admin/Hr/AttendanceRecordController.php index 8bc9dec..69ce437 100644 --- a/backend/app/Http/Controllers/Admin/Hr/AttendanceRecordController.php +++ b/backend/app/Http/Controllers/Admin/Hr/AttendanceRecordController.php @@ -15,7 +15,7 @@ class AttendanceRecordController extends Controller $query->when($request->user_id, fn($q, $v) => $q->where('user_id', $v)); $query->when($request->start_date, fn($q, $v) => $q->where('attendance_date', '>=', $v)); $query->when($request->end_date, fn($q, $v) => $q->where('attendance_date', '<=', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest('attendance_date')->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Hr/EmployeeProfileController.php b/backend/app/Http/Controllers/Admin/Hr/EmployeeProfileController.php index af6e228..93045be 100644 --- a/backend/app/Http/Controllers/Admin/Hr/EmployeeProfileController.php +++ b/backend/app/Http/Controllers/Admin/Hr/EmployeeProfileController.php @@ -13,7 +13,7 @@ class EmployeeProfileController extends Controller { $query = EmployeeProfile::query()->with('user'); $query->when($request->user_id, fn($q, $v) => $q->where('user_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Hr/LeaveRequestController.php b/backend/app/Http/Controllers/Admin/Hr/LeaveRequestController.php index 4bb996d..129fb7f 100644 --- a/backend/app/Http/Controllers/Admin/Hr/LeaveRequestController.php +++ b/backend/app/Http/Controllers/Admin/Hr/LeaveRequestController.php @@ -14,7 +14,7 @@ class LeaveRequestController extends Controller $query = LeaveRequest::query()->with('user'); $query->when($request->user_id, fn($q, $v) => $q->where('user_id', $v)); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Hr/SalaryRecordController.php b/backend/app/Http/Controllers/Admin/Hr/SalaryRecordController.php index a715242..3ea1228 100644 --- a/backend/app/Http/Controllers/Admin/Hr/SalaryRecordController.php +++ b/backend/app/Http/Controllers/Admin/Hr/SalaryRecordController.php @@ -14,7 +14,7 @@ class SalaryRecordController extends Controller $query = SalaryRecord::query()->with('user'); $query->when($request->user_id, fn($q, $v) => $q->where('user_id', $v)); $query->when($request->year_month, fn($q, $v) => $q->where('year_month', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Inventory/InventoryCheckController.php b/backend/app/Http/Controllers/Admin/Inventory/InventoryCheckController.php index dbfb10c..92756a9 100644 --- a/backend/app/Http/Controllers/Admin/Inventory/InventoryCheckController.php +++ b/backend/app/Http/Controllers/Admin/Inventory/InventoryCheckController.php @@ -14,7 +14,7 @@ class InventoryCheckController extends Controller $query = InventoryCheck::query() ->with(['warehouse', 'operator']) ->when($request->warehouse_id, fn($q, $v) => $q->where('warehouse_id', $v)) - ->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + ->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Inventory/PurchaseOrderController.php b/backend/app/Http/Controllers/Admin/Inventory/PurchaseOrderController.php index aad6773..5f7e335 100644 --- a/backend/app/Http/Controllers/Admin/Inventory/PurchaseOrderController.php +++ b/backend/app/Http/Controllers/Admin/Inventory/PurchaseOrderController.php @@ -12,7 +12,7 @@ class PurchaseOrderController extends Controller $query = PurchaseOrder::query()->with(['supplier','auditor']); $query->when($request->order_no, fn($q, $v) => $q->where('order_no', 'like', "%{$v}%")); $query->when($request->supplier_id, fn($q, $v) => $q->where('supplier_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } public function store(Request $request): JsonResponse diff --git a/backend/app/Http/Controllers/Admin/Inventory/StockMovementController.php b/backend/app/Http/Controllers/Admin/Inventory/StockMovementController.php index 43d84d5..ade2963 100644 --- a/backend/app/Http/Controllers/Admin/Inventory/StockMovementController.php +++ b/backend/app/Http/Controllers/Admin/Inventory/StockMovementController.php @@ -13,7 +13,7 @@ class StockMovementController extends Controller $query = StockMovement::query()->with('warehouse'); $query->when($request->warehouse_id, fn($q, $v) => $q->where('warehouse_id', $v)); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } public function store(Request $request): JsonResponse diff --git a/backend/app/Http/Controllers/Admin/Inventory/TransferOrderController.php b/backend/app/Http/Controllers/Admin/Inventory/TransferOrderController.php index 3bab504..aa46402 100644 --- a/backend/app/Http/Controllers/Admin/Inventory/TransferOrderController.php +++ b/backend/app/Http/Controllers/Admin/Inventory/TransferOrderController.php @@ -14,7 +14,7 @@ class TransferOrderController extends Controller $query = TransferOrder::query() ->with(['fromWarehouse', 'toWarehouse', 'operator']) ->when($request->transfer_no, fn($q, $v) => $q->where('transfer_no', 'like', "%{$v}%")) - ->when($request->has('status'), fn($q) => $q->where('status', $request->status)) + ->when($request->filled('status'), fn($q) => $q->where('status', $request->status)) ->when($request->from_warehouse_id, fn($q, $v) => $q->where('from_warehouse_id', $v)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); diff --git a/backend/app/Http/Controllers/Admin/Meal/DailyMealPlanController.php b/backend/app/Http/Controllers/Admin/Meal/DailyMealPlanController.php index a489349..d0fd9a9 100644 --- a/backend/app/Http/Controllers/Admin/Meal/DailyMealPlanController.php +++ b/backend/app/Http/Controllers/Admin/Meal/DailyMealPlanController.php @@ -15,7 +15,7 @@ class DailyMealPlanController extends Controller $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); $query->when($request->plan_date, fn($q, $v) => $q->whereDate('plan_date', $v)); $query->when($request->meal_type, fn($q, $v) => $q->where('meal_type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 30))); } diff --git a/backend/app/Http/Controllers/Admin/Meal/DishController.php b/backend/app/Http/Controllers/Admin/Meal/DishController.php index 7ca054f..6000e65 100644 --- a/backend/app/Http/Controllers/Admin/Meal/DishController.php +++ b/backend/app/Http/Controllers/Admin/Meal/DishController.php @@ -14,7 +14,7 @@ class DishController extends Controller $query = Dish::query(); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); $query->when($request->category, fn($q, $v) => $q->where('category', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Meal/MealPlanTemplateController.php b/backend/app/Http/Controllers/Admin/Meal/MealPlanTemplateController.php index 17a878d..08be2f6 100644 --- a/backend/app/Http/Controllers/Admin/Meal/MealPlanTemplateController.php +++ b/backend/app/Http/Controllers/Admin/Meal/MealPlanTemplateController.php @@ -14,7 +14,7 @@ class MealPlanTemplateController extends Controller $query = MealPlanTemplate::query(); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); $query->when($request->stage, fn($q, $v) => $q->where('stage', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Nanny/NannyOrderController.php b/backend/app/Http/Controllers/Admin/Nanny/NannyOrderController.php index 4ba690e..3c23602 100644 --- a/backend/app/Http/Controllers/Admin/Nanny/NannyOrderController.php +++ b/backend/app/Http/Controllers/Admin/Nanny/NannyOrderController.php @@ -12,7 +12,7 @@ class NannyOrderController extends Controller $query = NannyOrder::query()->with(['customer','nanny']); $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); $query->when($request->nanny_id, fn($q, $v) => $q->where('nanny_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Office/ApprovalController.php b/backend/app/Http/Controllers/Admin/Office/ApprovalController.php index 1958e4b..669699a 100644 --- a/backend/app/Http/Controllers/Admin/Office/ApprovalController.php +++ b/backend/app/Http/Controllers/Admin/Office/ApprovalController.php @@ -15,7 +15,7 @@ class ApprovalController extends Controller public function index(Request $request): JsonResponse { $query = Approval::query()->with(['template', 'applicant']); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); $query->when($request->applicant_id, fn($q, $v) => $q->where('applicant_id', $v)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); diff --git a/backend/app/Http/Controllers/Admin/Office/ApprovalTemplateController.php b/backend/app/Http/Controllers/Admin/Office/ApprovalTemplateController.php index 93d7b27..660c45b 100644 --- a/backend/app/Http/Controllers/Admin/Office/ApprovalTemplateController.php +++ b/backend/app/Http/Controllers/Admin/Office/ApprovalTemplateController.php @@ -13,7 +13,7 @@ class ApprovalTemplateController extends Controller { $query = ApprovalTemplate::query(); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->orderBy('sort')->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Room/ReservationController.php b/backend/app/Http/Controllers/Admin/Room/ReservationController.php index f7ca8da..98d78cc 100644 --- a/backend/app/Http/Controllers/Admin/Room/ReservationController.php +++ b/backend/app/Http/Controllers/Admin/Room/ReservationController.php @@ -15,7 +15,7 @@ class ReservationController extends Controller $query = Reservation::query()->with(['customer', 'room.roomType']); $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); $query->when($request->room_id, fn($q, $v) => $q->where('room_id', $v)); - $query->when($request->status, fn($q, $v) => $q->where('status', $v)); + $query->when($request->filled('status'), fn($q, $v) => $q->where('status', $v)); $query->when($request->check_in_date, fn($q, $v) => $q->whereDate('check_in_date', $v)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); diff --git a/backend/app/Http/Controllers/Admin/Room/RoomTypeController.php b/backend/app/Http/Controllers/Admin/Room/RoomTypeController.php index c219188..0012488 100644 --- a/backend/app/Http/Controllers/Admin/Room/RoomTypeController.php +++ b/backend/app/Http/Controllers/Admin/Room/RoomTypeController.php @@ -13,7 +13,7 @@ class RoomTypeController extends Controller { $query = RoomType::query()->withCount('rooms'); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->orderBy('sort')->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Service/ServiceExecutionController.php b/backend/app/Http/Controllers/Admin/Service/ServiceExecutionController.php index f2c2199..0a92d0c 100644 --- a/backend/app/Http/Controllers/Admin/Service/ServiceExecutionController.php +++ b/backend/app/Http/Controllers/Admin/Service/ServiceExecutionController.php @@ -12,7 +12,7 @@ class ServiceExecutionController extends Controller $query = ServiceExecution::query()->with(['order','serviceItem','customer','technician']); $query->when($request->service_order_id, fn($q, $v) => $q->where('service_order_id', $v)); $query->when($request->technician_id, fn($q, $v) => $q->where('technician_id', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Service/ServiceItemController.php b/backend/app/Http/Controllers/Admin/Service/ServiceItemController.php index 62157a4..6e4a561 100644 --- a/backend/app/Http/Controllers/Admin/Service/ServiceItemController.php +++ b/backend/app/Http/Controllers/Admin/Service/ServiceItemController.php @@ -12,7 +12,7 @@ class ServiceItemController extends Controller $query = ServiceItem::query(); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); $query->when($request->category, fn($q, $v) => $q->where('category', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Service/ServiceOrderController.php b/backend/app/Http/Controllers/Admin/Service/ServiceOrderController.php index 9d533ab..3f67807 100644 --- a/backend/app/Http/Controllers/Admin/Service/ServiceOrderController.php +++ b/backend/app/Http/Controllers/Admin/Service/ServiceOrderController.php @@ -13,7 +13,7 @@ class ServiceOrderController extends Controller $query->when($request->order_no, fn($q, $v) => $q->where('order_no', 'like', "%{$v}%")); $query->when($request->customer_id, fn($q, $v) => $q->where('customer_id', $v)); $query->when($request->type, fn($q, $v) => $q->where('type', $v)); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/Service/ServicePackageController.php b/backend/app/Http/Controllers/Admin/Service/ServicePackageController.php index 833f707..ddd7e88 100644 --- a/backend/app/Http/Controllers/Admin/Service/ServicePackageController.php +++ b/backend/app/Http/Controllers/Admin/Service/ServicePackageController.php @@ -11,7 +11,7 @@ class ServicePackageController extends Controller { $query = ServicePackage::query(); $query->when($request->name, fn($q, $v) => $q->where('name', 'like', "%{$v}%")); - $query->when($request->has('status'), fn($q) => $q->where('status', $request->status)); + $query->when($request->filled('status'), fn($q) => $q->where('status', $request->status)); return $this->paginate($query->latest()->paginate($request->input('per_page', 15))); } diff --git a/backend/app/Http/Controllers/Admin/System/RegistrationPackageController.php b/backend/app/Http/Controllers/Admin/System/RegistrationPackageController.php index 5ef6325..8eefe10 100644 --- a/backend/app/Http/Controllers/Admin/System/RegistrationPackageController.php +++ b/backend/app/Http/Controllers/Admin/System/RegistrationPackageController.php @@ -13,7 +13,7 @@ class RegistrationPackageController extends Controller { $packages = RegistrationPackage::when($request->keyword, fn($q) => $q->where('name', 'like', "%{$request->keyword}%")) - ->when($request->has('status'), fn($q) => + ->when($request->filled('status'), fn($q) => $q->where('status', $request->status)) ->orderBy('sort')->orderByDesc('id') ->paginate($request->input('page_size', 20)); diff --git a/backend/app/Http/Controllers/Admin/System/UserController.php b/backend/app/Http/Controllers/Admin/System/UserController.php index b3876e7..b68d333 100644 --- a/backend/app/Http/Controllers/Admin/System/UserController.php +++ b/backend/app/Http/Controllers/Admin/System/UserController.php @@ -24,7 +24,7 @@ class UserController extends Controller if ($request->department_id) { $query->where('department_id', $request->department_id); } - if ($request->has('status')) { + if ($request->filled('status')) { $query->where('status', $request->status); } diff --git a/backend/app/Traits/BelongsToStore.php b/backend/app/Traits/BelongsToStore.php index bcc036e..1347987 100644 --- a/backend/app/Traits/BelongsToStore.php +++ b/backend/app/Traits/BelongsToStore.php @@ -17,7 +17,9 @@ trait BelongsToStore { // 查询自动过滤门店 static::addGlobalScope('store', function (Builder $builder) { - if ($storeId = self::getCurrentStoreId()) { + // 超管:不带 X-Store-Id 时默认“总览”(不加 store 过滤) + // 普通用户:按自身 store_id 过滤 + if ($storeId = self::getQueryStoreId()) { $builder->where($builder->getModel()->getTable() . '.store_id', $storeId); } }); @@ -25,7 +27,10 @@ trait BelongsToStore // 创建时自动填入 store_id static::creating(function ($model) { if (empty($model->store_id)) { - $model->store_id = self::getCurrentStoreId(); + // 创建时:超管若指定 X-Store-Id 则写入该门店;否则落到自身 store_id + if ($storeId = self::getCreateStoreId()) { + $model->store_id = $storeId; + } } }); } @@ -35,12 +40,35 @@ trait BelongsToStore return $this->belongsTo(Store::class); } - private static function getCurrentStoreId(): ?int + private static function getQueryStoreId(): ?int { $user = auth()->user(); - if ($user && $user->is_super && request()->header('X-Store-Id')) { + if (!$user) { + return null; + } + + // 超管默认总览:不传 X-Store-Id 则不做门店过滤 + if ($user->is_super) { + if (request()->header('X-Store-Id')) { + return (int) request()->header('X-Store-Id'); + } + return null; + } + + return $user?->store_id; + } + + private static function getCreateStoreId(): ?int + { + $user = auth()->user(); + if (!$user) { + return null; + } + + if ($user->is_super && request()->header('X-Store-Id')) { return (int) request()->header('X-Store-Id'); } + return $user?->store_id; } } diff --git a/frontend/src/utils/request.js b/frontend/src/utils/request.js index 215a181..faa4d25 100644 --- a/frontend/src/utils/request.js +++ b/frontend/src/utils/request.js @@ -1,6 +1,30 @@ import axios from 'axios' import { ElMessage } from 'element-plus' +function normalizeParams(params) { + if (!params || typeof params !== 'object') return params + + const p = { ...params } + + // Normalize pagination params (some endpoints use per_page, some use page_size) + if (p.per_page !== undefined && p.per_page !== null && p.page_size === undefined) { + p.page_size = p.per_page + } + if (p.page_size !== undefined && p.page_size !== null && p.per_page === undefined) { + p.per_page = p.page_size + } + + // Remove empty filters to avoid backend `has('status')` treating '' as a real filter + for (const key of Object.keys(p)) { + const v = p[key] + if (v === '' || v === null || v === undefined) { + delete p[key] + } + } + + return p +} + const request = axios.create({ baseURL: '/api/v1', timeout: 15000, @@ -17,6 +41,11 @@ request.interceptors.request.use( if (token) { config.headers['Authorization'] = `Bearer ${token}` } + + if (config.params) { + config.params = normalizeParams(config.params) + } + return config }, (error) => { diff --git a/frontend/src/views/finance/categories/index.vue b/frontend/src/views/finance/categories/index.vue index 544b628..ff86a9b 100644 --- a/frontend/src/views/finance/categories/index.vue +++ b/frontend/src/views/finance/categories/index.vue @@ -25,7 +25,7 @@ async function fetchList() { loading.value = true try { const res = await financeCategoryApi.getList({ ...searchForm, ...pagination }) - tableData.value = res.data?.list || res.data?.data || [] + tableData.value = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || []) total.value = res.data?.total || 0 } finally { loading.value = false } } diff --git a/frontend/src/views/system/dictionaries/index.vue b/frontend/src/views/system/dictionaries/index.vue index 7ac0c08..4ec3c97 100644 --- a/frontend/src/views/system/dictionaries/index.vue +++ b/frontend/src/views/system/dictionaries/index.vue @@ -73,7 +73,8 @@ async function fetchTypeList() { keyword: typeSearch.keyword, ...typePagination }) - typeList.value = res.data?.list || [] + const types = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || []) + typeList.value = types typeTotal.value = res.data?.total || 0 // Auto-select first type if (!selectedType.value && typeList.value.length > 0) { diff --git a/frontend/src/views/system/menus/index.vue b/frontend/src/views/system/menus/index.vue index 21fdfd7..f97a545 100644 --- a/frontend/src/views/system/menus/index.vue +++ b/frontend/src/views/system/menus/index.vue @@ -64,8 +64,8 @@ async function fetchTree() { loading.value = true try { const res = await menuApi.getList({ per_page: 500 }) - const flat = res.data?.list || res.data?.data || [] - treeData.value = buildTree(flat) + const raw = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || []) + treeData.value = buildTree(raw) } catch { // } finally {