From 285b0e3b8e9b1f5dccc1fd969abc250c701ac3ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B1=95=E9=B9=8F?= Date: Wed, 19 Nov 2025 15:37:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(bookings):=20=E6=B7=BB=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=AD=9B=E9=80=89=E5=92=8C=E6=90=9C=E7=B4=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现按状态筛选订单和按手机号/车牌号搜索功能 添加测试页面验证筛选和搜索功能 优化默认查询逻辑,当有搜索条件时显示所有订单 --- bookings.php | 125 +++++++++++++++++++++++++++++++++++++++++++++-- test_filters.php | 118 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 240 insertions(+), 3 deletions(-) create mode 100644 test_filters.php 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 {

所有预约 (共 条)

+ +
+
+
+ + +
+ +
+ + +
+ + + 重置筛选 +
+
+
暂无预约记录
@@ -233,6 +281,77 @@ try {
+ + +

订单筛选和搜索功能测试

+ +
+
+

状态筛选测试

+

测试不同状态的订单筛选功能:

+ +
+ +
+

搜索功能测试

+

测试手机号和车牌号搜索:

+ +
+ +
+

组合筛选测试

+

测试状态筛选和搜索的组合功能:

+ +
+ +
+

重置功能

+

点击重置按钮应该清除所有筛选条件:

+ 重置所有筛选条件 +
+
+ +
+

测试注意事项

+ +
+ + \ No newline at end of file