From 88b16ca69ee4638f642a66176f416d42e3833182 Mon Sep 17 00:00:00 2001 From: userGyl Date: Wed, 3 Dec 2025 16:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8A=E6=97=A5=E9=A2=84=E7=BA=A6=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/pages/b_page/site/controller.dart | 20 ++++-- ln_jq_app/lib/pages/b_page/site/view.dart | 61 +++++++++++++++++++ 2 files changed, 76 insertions(+), 5 deletions(-) diff --git a/ln_jq_app/lib/pages/b_page/site/controller.dart b/ln_jq_app/lib/pages/b_page/site/controller.dart index bb97fbf..e9eca10 100644 --- a/ln_jq_app/lib/pages/b_page/site/controller.dart +++ b/ln_jq_app/lib/pages/b_page/site/controller.dart @@ -76,7 +76,8 @@ class ReservationModel { String startTimeStr = json['startTime']?.toString() ?? ''; String endTimeStr = json['endTime']?.toString() ?? ''; String dateStr = json['date']?.toString() ?? ''; - String timeRange = (startTimeStr.isNotEmpty && endTimeStr.isNotEmpty && dateStr.isNotEmpty) + String timeRange = + (startTimeStr.isNotEmpty && endTimeStr.isNotEmpty && dateStr.isNotEmpty) ? '$dateStr ${startTimeStr.substring(11, 16)}-${endTimeStr.substring(11, 16)}' // 截取 HH:mm : '时间未定'; @@ -119,6 +120,8 @@ class SiteController extends GetxController with BaseControllerMixin { List reservationList = []; Timer? _refreshTimer; + final TextEditingController searchController = TextEditingController(); + @override void onInit() { super.onInit(); @@ -130,6 +133,7 @@ class SiteController extends GetxController with BaseControllerMixin { @override void onClose() { stopAutoRefresh(); + searchController.dispose(); super.onClose(); } @@ -155,13 +159,17 @@ class SiteController extends GetxController with BaseControllerMixin { Future fetchReservationData() async { showLoading("加载中"); + final String searchText = searchController.text.trim(); + try { var response = await HttpService.to.post( "appointment/orderAddHyd/sitOrderPage", data: { 'stationName': name, // 使用从 renderData 中获取到的 name 'pageNum': 1, - 'pageSize': 30, // 暂时不考虑分页,一次获取30条 + 'pageSize': 50, // 暂时不考虑分页,一次获取30条 + 'plateNumber': searchText, // 加氢站名称 + 'phone': searchText, //手机号 }, ); @@ -288,12 +296,14 @@ class SiteController extends GetxController with BaseControllerMixin { orderAmount = result.data["orderAmount"].toString(); completedAmount = result.data["completedAmount"].toString(); name = result.data["name"].toString(); - orderTotalAmount = result.data["orderTotalAmount"]?? ""; - orderUnfinishedAmount = result.data["orderUnfinishedAmount"]?? ""; + orderTotalAmount = result.data["orderTotalAmount"] ?? ""; + orderUnfinishedAmount = result.data["orderUnfinishedAmount"] ?? ""; leftHydrogen = leftHydrogen.isEmpty ? "统计中" : leftHydrogen.toString(); orderTotalAmount = orderTotalAmount.isEmpty ? "统计中" : orderTotalAmount.toString(); - orderUnfinishedAmount = orderUnfinishedAmount.isEmpty ? "统计中" : orderUnfinishedAmount.toString(); + orderUnfinishedAmount = orderUnfinishedAmount.isEmpty + ? "统计中" + : orderUnfinishedAmount.toString(); //加载列表数据 fetchReservationData(); diff --git a/ln_jq_app/lib/pages/b_page/site/view.dart b/ln_jq_app/lib/pages/b_page/site/view.dart index fa8c244..840b55a 100644 --- a/ln_jq_app/lib/pages/b_page/site/view.dart +++ b/ln_jq_app/lib/pages/b_page/site/view.dart @@ -161,6 +161,7 @@ class SitePage extends GetView { ], ), ), + _buildSearchView(), controller.hasReservationData ? _buildReservationListView() : _buildEmptyReservationView(), @@ -190,6 +191,66 @@ class SitePage extends GetView { ); } + //搜索输入框,提示可以输入车牌或者手机 + Widget _buildSearchView() { + return Padding( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 0), + child: Row( + children: [ + Expanded( + child: SizedBox( + height: 44, + child: TextField( + controller: controller.searchController, // 绑定控制器 + decoration: InputDecoration( + hintText: '输入车牌号或完整手机号查询', + contentPadding: const EdgeInsets.symmetric(horizontal: 16), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(22), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(22), + borderSide: BorderSide(color: Get.theme.primaryColor, width: 1.5), + ), + // 清除按钮 + suffixIcon: IconButton( + icon: const Icon(Icons.clear, size: 20), + onPressed: () { + controller.searchController.clear(); + controller.fetchReservationData(); // 清除后也刷新一次 + }, + ), + ), + onSubmitted: (value) { + // 用户在键盘上点击“完成”或“搜索”时触发 + controller.fetchReservationData(); + }, + ), + ), + ), + const SizedBox(width: 10), + ElevatedButton( + onPressed: () { + // 点击“搜索”按钮时触发 + FocusScope.of(Get.context!).unfocus(); // 收起键盘 + controller.fetchReservationData(); + }, + style: ElevatedButton.styleFrom( + shape: const CircleBorder(), + padding: const EdgeInsets.all(8), + ), + child: const Icon(Icons.search_rounded), + ), + ], + ), + ); + } + /// 构建单个统计项 Widget _buildStatItem(String value, String label, {Color valueColor = Colors.blue}) { return Expanded(