diff --git a/bookings.php b/bookings.php index f0ff3b1..0f20931 100644 --- a/bookings.php +++ b/bookings.php @@ -31,10 +31,33 @@ if (isset($_POST['action']) && isset($_POST['booking_id'])) { } } -// 获取所有预约(过滤掉已完成和已取消的订单) +// 获取所有预约,支持状态筛选和搜索功能 try { - // 确保查询包含payment_status字段 - $stmt = $pdo->query("SELECT b.*, p.package_name FROM bookings b LEFT JOIN packages p ON b.package_id = p.id WHERE b.status NOT IN ('已完成', '已取消') ORDER BY b.start_time DESC"); + // 构建查询,支持筛选和搜索 + $query = "SELECT b.*, p.package_name FROM bookings b LEFT JOIN packages p ON b.package_id = p.id WHERE 1=1 "; + $params = []; + + // 状态筛选 + if (isset($_GET['status']) && !empty($_GET['status'])) { + $query .= " AND b.status = ?"; + $params[] = $_GET['status']; + } else if (!isset($_GET['search']) || empty($_GET['search'])) { + // 默认为只显示未完成订单,但如果有搜索条件则显示所有订单 + $query .= " AND b.status NOT IN ('已完成', '已取消')"; + } + + // 搜索功能 + if (isset($_GET['search']) && !empty($_GET['search'])) { + $searchTerm = '%' . $_GET['search'] . '%'; + $query .= " AND (b.phone LIKE ? OR b.car_number LIKE ?)"; + $params[] = $searchTerm; + $params[] = $searchTerm; + } + + $query .= " ORDER BY b.start_time DESC"; + + $stmt = $pdo->prepare($query); + $stmt->execute($params); $bookings = $stmt->fetchAll(); } catch (Exception $e) { $error_message = '获取预约列表失败:' . $e->getMessage(); @@ -82,6 +105,31 @@ try {