From 4491aa9b916e045792f7f60b2d0f8d323f5e46da Mon Sep 17 00:00:00 2001 From: userGyl Date: Tue, 10 Feb 2026 16:35:02 +0800 Subject: [PATCH] =?UTF-8?q?ui=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ln_jq_app/assets/images/history_bg.png | Bin 0 -> 53900 bytes ln_jq_app/assets/images/ic_ex_menu@2x.png | Bin 0 -> 394 bytes ln_jq_app/assets/images/ic_serch@2x.png | Bin 0 -> 636 bytes .../lib/pages/b_page/history/controller.dart | 216 --------- ln_jq_app/lib/pages/b_page/history/view.dart | 435 ++++++++++-------- ln_jq_app/lib/pages/b_page/site/view.dart | 8 +- 6 files changed, 252 insertions(+), 407 deletions(-) create mode 100644 ln_jq_app/assets/images/history_bg.png create mode 100644 ln_jq_app/assets/images/ic_ex_menu@2x.png create mode 100644 ln_jq_app/assets/images/ic_serch@2x.png delete mode 100644 ln_jq_app/lib/pages/b_page/history/controller.dart diff --git a/ln_jq_app/assets/images/history_bg.png b/ln_jq_app/assets/images/history_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e06d5e16c23709e7c22a1adc68d42d9b4bfbd5f2 GIT binary patch literal 53900 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 literal 0 HcmV?d00001 diff --git a/ln_jq_app/assets/images/ic_serch@2x.png b/ln_jq_app/assets/images/ic_serch@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6ae6ae8c4d1946e4d754821cd781daced58c70 GIT binary patch literal 636 zcmV-?0)zdDP); zO>Wvy5XWb1NBvrq+<=^*^aKry@}Vw5w`~pamX8*n05}0{F<}XTR9%KHT0=J^Cuna_ zZcr*!S;Y8F-UL~)!44oLtBm}&t$8!^v;5|b0(Wfp1kmZ)@mAN~XLY-$v2Ffps3!8vK0iCaQ{9@tD zJ-w@_N?i!5TPNe@I>-uuiwhSg2v{%YGp1?0o-G$CzDb?SwLK!SyAHAfki~02*ekwE zAHy1(&mUHS;CgSOLIZ&Im+uJ@uwT;Cji>~_-!zgl0%7vr`2GI(004w`AQy*H8($SY zdj^1sW<+-d0YC{*Rha)?b3TYK>H!)N)mtfT&@X~_Wy2nUW!Nfsg&TE}*sbC(qg;Gp;UY>(#+2=$|!IdMf6 zQ2}4Ls7w{YTv-l3)5uO)H$fr+3}KZEFTY8U$puUKj8V~3pNjdEYzAIk$PcmlKdKAw z;=UHJ2wQ*mAdZVefAp;ZxF|zd{O;*i0bWu6^UeWR00030|6$MpO8@`>21!IgR09Cy Wj_EPlw!;(v0000 startDate = DateTime.now().subtract(const Duration(days: 7)).obs; - final Rx endDate = DateTime.now().obs; - final TextEditingController plateNumberController = TextEditingController(); - - final RxString totalHydrogen = '0 kg'.obs; - final RxString totalCompletions = '0 次'.obs; - - final RxList historyList = [].obs; - final RxBool isLoading = true.obs; - final RxBool hasData = false.obs; - - String get formattedStartDate => DateFormat('yyyy/MM/dd').format(startDate.value); - - String get formattedEndDate => DateFormat('yyyy/MM/dd').format(endDate.value); - String stationName = ""; - - @override - void onInit() { - super.onInit(); - - final args = Get.arguments as Map; - stationName = args['stationName'] as String; - fetchHistoryData(); - } - - Future getAllOrderCounts() async { - var response = await HttpService.to.post( - "appointment/orderAddHyd/getAllOrderCounts", - data: { - // --- 直接使用 DateFormat 来格式化日期 --- - 'startTime': _apiDateFormat.format(startDate.value), - 'endTime': _apiDateFormat.format(endDate.value), - 'plateNumber': plateNumberController.text, - 'stationName': stationName, // 加氢站名称 - }, - ); - if (response == null || response.data == null) { - totalHydrogen.value = '0 kg'; - totalCompletions.value = '0 次'; - return; - } - try { - final baseModel = BaseModel.fromJson(response.data); - final dataMap = baseModel.data as Map; - totalHydrogen.value = '${dataMap['totalAddAmount'] ?? 0} kg'; - totalCompletions.value = '${dataMap['orderCompleteCount'] ?? 0} 次'; - } catch (e) { - totalHydrogen.value = '0 kg'; - totalCompletions.value = '0 次'; - } - } - - Future fetchHistoryData() async { - isLoading.value = true; - - //获取数据 - getAllOrderCounts(); - - try { - var response = await HttpService.to.post( - "appointment/orderAddHyd/sitOrderPage", - data: { - // --- 直接使用 DateFormat 来格式化日期 --- - 'startTime': _apiDateFormat.format(startDate.value), - 'endTime': _apiDateFormat.format(endDate.value), - 'plateNumber': plateNumberController.text, - 'pageNum': 1, - 'pageSize': 50, - 'stationName': stationName, // 加氢站名称 - }, - ); - - if (response == null || response.data == null) { - showToast('无法获取历史记录'); - _resetData(); - return; - } - - final baseModel = BaseModel.fromJson(response.data); - if (baseModel.code == 0 && baseModel.data != null) { - final dataMap = baseModel.data as Map; - - final List listFromServer = dataMap['records'] ?? []; - historyList.assignAll( - listFromServer - .map((item) => ReservationModel.fromJson(item as Map)) - .toList(), - ); - hasData.value = historyList.isNotEmpty; - } else { - showToast(baseModel.message); - _resetData(); - } - } catch (e) { - showToast('获取历史记录失败: $e'); - _resetData(); - } finally { - isLoading.value = false; - } - } - - void _resetData() { - historyList.clear(); - hasData.value = false; - } - - void pickDate(BuildContext context, bool isStartDate) { - // 确定当前操作的日期和临时存储变量 - final DateTime initialDate = isStartDate ? startDate.value : endDate.value; - DateTime tempDate = initialDate; - - // 定义全局的最早可选日期 - final DateTime globalMinimumDate = DateTime(2025, 12, 1); - - // 动态计算当前选择器的最小/最大日期范围 - DateTime minimumDate; - DateTime? maximumDate; // 声明为可空,因为两个日期都可能没有最大限制 - - if (isStartDate) { - // 当选择【开始日期】时 它的最小日期就是全局最小日期 - minimumDate = globalMinimumDate; - // 最大日期没有限制 - maximumDate = null; - } else { - // 当选择【结束日期】时 它的最小日期不能早于当前的开始日期 - minimumDate = startDate.value; - // 确认结束日期没有最大限制 --- - //最大日期没有限制 - maximumDate = null; - } - - Get.bottomSheet( - Container( - height: 300, - decoration: const BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only( - topLeft: Radius.circular(16), - topRight: Radius.circular(16), - ), - ), - child: Column( - children: [ - // 顶部的取消和确认按钮 - Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - TextButton( - onPressed: () => Get.back(), - child: const Text('取消', style: TextStyle(color: Colors.grey)), - ), - TextButton( - onPressed: () { - // 4. 确认后,更新对应的日期变量 - if (isStartDate) { - startDate.value = tempDate; - // 如果新的开始日期晚于结束日期,自动将结束日期调整为同一天 - if (tempDate.isAfter(endDate.value)) { - endDate.value = tempDate; - } - } else { - endDate.value = tempDate; - } - Get.back(); - - // 选择日期后自动刷新数据 - fetchHistoryData(); - }, - child: const Text( - '确认', - style: TextStyle(fontWeight: FontWeight.bold), - ), - ), - ], - ), - ), - const Divider(height: 1), - // 日期选择器 - Expanded( - child: CupertinoDatePicker( - mode: CupertinoDatePickerMode.date, - initialDateTime: initialDate, - // 应用动态计算好的最小/最大日期 - minimumDate: minimumDate, - maximumDate: maximumDate, - onDateTimeChanged: (DateTime newDate) { - tempDate = newDate; - }, - ), - ), - ], - ), - ), - backgroundColor: Colors.transparent, // 使底部工作表外的区域透明 - ); - } - - @override - void onClose() { - plateNumberController.dispose(); - super.onClose(); - } -} diff --git a/ln_jq_app/lib/pages/b_page/history/view.dart b/ln_jq_app/lib/pages/b_page/history/view.dart index 7832f5c..e472210 100644 --- a/ln_jq_app/lib/pages/b_page/history/view.dart +++ b/ln_jq_app/lib/pages/b_page/history/view.dart @@ -1,107 +1,173 @@ import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:ln_jq_app/common/styles/theme.dart'; +import 'package:getx_scaffold/getx_scaffold.dart'; +import 'package:ln_jq_app/common/login_util.dart'; import 'package:ln_jq_app/pages/b_page/history/controller.dart'; -import 'package:ln_jq_app/pages/b_page/site/controller.dart'; // Reuse ReservationModel +import 'package:ln_jq_app/pages/b_page/site/controller.dart'; class HistoryPage extends GetView { - const HistoryPage({Key? key}) : super(key: key); + const HistoryPage({super.key}); @override Widget build(BuildContext context) { - Get.put(HistoryController()); + return GetBuilder( + init: HistoryController(), + id: 'history', + builder: (_) { + return Scaffold( + backgroundColor: const Color(0xFFF7F8FA), + appBar: AppBar( + backgroundColor: Colors.white, + elevation: 0, + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: Colors.black, size: 20), + onPressed: () => Get.back(), + ), + title: _buildSearchBox(), + ), + body: Column( + children: [ + _buildFilterBar(), + _buildSummaryCard(), + Expanded(child: _buildHistoryList()), + ], + ), + ); + }, + ); + } - return Scaffold( - appBar: AppBar(title: const Text('历史记录'), centerTitle: true), - body: Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - children: [ - _buildFilterCard(context), - const SizedBox(height: 12), - _buildSummaryCard(), - const SizedBox(height: 12), - _buildListHeader(), - Expanded(child: _buildHistoryList()), - ], + Widget _buildSearchBox() { + return Container( + height: 36, + decoration: BoxDecoration( + color: const Color(0xFFF2F3F5), + borderRadius: BorderRadius.circular(18), + ), + child: TextField( + controller: controller.plateNumberController, + onSubmitted: (v) => controller.refreshData(), + decoration: const InputDecoration( + hintText: '搜索车牌号', + hintStyle: TextStyle(color: Color(0xFFBBBBBB), fontSize: 14), + prefixIcon: Icon(Icons.search_sharp, color: Color(0xFFBBBBBB), size: 20), + border: InputBorder.none, + contentPadding: EdgeInsets.only(bottom: 12), ), ), ); } - Widget _buildFilterCard(BuildContext context) { - return Card( - elevation: 2, - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text('时间范围', style: TextStyle(fontSize: 14, color: Colors.grey)), - const SizedBox(height: 8), - Row( - children: [ - Expanded(child: _buildDateField(context, true)), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 8.0), - child: Text('至'), - ), - Expanded(child: _buildDateField(context, false)), - ], - ), - const SizedBox(height: 16), - const Text('车牌号', style: TextStyle(fontSize: 14, color: Colors.grey)), - const SizedBox(height: 8), - SizedBox( - height: 44, - child: TextField( - controller: controller.plateNumberController, - decoration: InputDecoration( - hintText: '请输入车牌号', - border: OutlineInputBorder(borderRadius: BorderRadius.circular(8)), - contentPadding: const EdgeInsets.symmetric(horizontal: 12), - ), + Widget _buildFilterBar() { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Row( + children: [ + Expanded( + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: controller.statusOptions.entries.map((entry) { + return Obx(() { + bool isSelected = controller.selectedStatus.value == entry.key; + return GestureDetector( + onTap: () => controller.onStatusSelected(entry.key), + child: Container( + margin: const EdgeInsets.only(right: 12), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6), + decoration: BoxDecoration( + color: isSelected ? const Color(0xFF006633) : Colors.white, + borderRadius: BorderRadius.circular(15), + ), + child: Text( + entry.value, + style: TextStyle( + color: isSelected + ? Colors.white + : Color.fromRGBO(148, 163, 184, 1), + fontSize: 12.sp, + fontWeight: isSelected ? FontWeight.bold : FontWeight.w600, + ), + ), + ), + ); + }); + }).toList(), ), ), - const SizedBox(height: 16), - ElevatedButton.icon( - onPressed: () { - FocusScope.of(context).unfocus(); // Hide keyboard - controller.fetchHistoryData(); - }, - icon: const Icon(Icons.search, size: 20), - label: const Text('查询'), - style: ElevatedButton.styleFrom( - minimumSize: const Size(double.infinity, 44), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), - ), - ), - ], - ), + ), + _buildTimeFilterIcon(), + ], ), ); } + Widget _buildTimeFilterIcon() { + return PopupMenuButton( + icon: LoginUtil.getAssImg("ic_ex_menu@2x"), + onSelected: controller.onDateTypeSelected, + itemBuilder: (context) => [ + const PopupMenuItem(value: 'week', child: Text('最近一周')), + const PopupMenuItem(value: 'month', child: Text('最近一月')), + const PopupMenuItem(value: 'three_month', child: Text('最近三月')), + ], + ); + } + Widget _buildSummaryCard() { - return Card( - elevation: 2, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 20.0), - child: Obx( - () => Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _buildSummaryItem('实际加氢总量', controller.totalHydrogen.value, Colors.blue), - const SizedBox(width: 1, height: 40, child: VerticalDivider()), - _buildSummaryItem( - '预约完成次数', - controller.totalCompletions.value, - Colors.green, - ), - ], - ), + return Container( + margin: const EdgeInsets.only(left: 16, right: 16,bottom: 12), + padding: const EdgeInsets.all(20), + height: 160, + width: double.infinity, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(24), + image: const DecorationImage( + image: AssetImage('assets/images/history_bg.png'), + fit: BoxFit.cover, ), ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('加氢站', style: TextStyle(color: Colors.white70, fontSize: 12)), + Text( + controller.stationName, + style: const TextStyle( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + const Spacer(), + Obx( + () => Row( + children: [ + _buildSummaryItem('实际加氢量', '${controller.totalHydrogen.value} Kg'), + const SizedBox(width: 40), + _buildSummaryItem('预约完成次数', '${controller.totalCompletions.value} 次'), + ], + ), + ), + ], + ), + ); + } + + Widget _buildSummaryItem(String label, String value) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(label, style: const TextStyle(color: Colors.white60, fontSize: 12)), + const SizedBox(height: 4), + Text( + value, + style: const TextStyle( + color: Colors.white, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + ], ); } @@ -110,143 +176,138 @@ class HistoryPage extends GetView { if (controller.isLoading.value) { return const Center(child: CircularProgressIndicator()); } - if (!controller.hasData.value) { - return const Center(child: Text('没有找到相关记录')); + if (controller.historyList.isEmpty) { + return const Center( + child: Text('暂无相关记录', style: TextStyle(color: Color(0xFF999999))), + ); } return ListView.builder( + padding: const EdgeInsets.symmetric(horizontal: 16), itemCount: controller.historyList.length, itemBuilder: (context, index) { - final ReservationModel item = controller.historyList[index]; - return Card( - margin: const EdgeInsets.only(bottom: 8), - child: ListTile( - title: Text('车牌号: ${item.plateNumber}'), - subtitle: Text.rich( - TextSpan( - children: [ - TextSpan( - text: '加氢站: ${item.stationName}\n', - style: TextStyle(fontSize: 16), - ), - TextSpan( - text: '时间: ${item.time}\n', - style: TextStyle(fontSize: 16), - ), - TextSpan( - text: '加氢量:', - ), - TextSpan( - text: '${item.amount}', - style: TextStyle(fontSize: 16, color: AppTheme.themeColor), - ), - ], - ), - ) - , - trailing: - // 状态标签 - _buildStatusChip(item.status), - ), - ); + return _buildHistoryItem(controller.historyList[index]); }, ); }); } - Widget _buildStatusChip(ReservationStatus status) { - String text; - Color color; + Widget _buildHistoryItem(ReservationModel item) { + return Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(20), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '车牌号', + style: TextStyle( + color: Color.fromRGBO(148, 163, 184, 1), + fontSize: 12.sp, + ), + ), + const SizedBox(height: 4), + Text( + item.plateNumber, + style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold), + ), + ], + ), + _buildStatusBadge(item.status), + ], + ), + const SizedBox(height: 16), + Row( + children: [ + _buildInfoColumn('加氢时间:', item.time), + _buildInfoColumn('加氢量', '${item.amount} Kg', isRight: true), + ], + ), + ], + ), + ); + } + + Widget _buildInfoColumn(String label, String value, {bool isRight = false}) { + return Expanded( + child: Column( + crossAxisAlignment: isRight ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + Text( + label, + style: TextStyle(color: Color.fromRGBO(148, 163, 184, 1), fontSize: 12.sp), + ), + const SizedBox(height: 4), + Text( + value, + style: TextStyle( + fontSize: isRight ? 16 : 13, + fontWeight: isRight ? FontWeight.bold : FontWeight.normal, + color: const Color(0xFF333333), + ), + ), + ], + ), + ); + } + + Widget _buildStatusBadge(ReservationStatus status) { + String text = '未知'; + Color bgColor = Colors.grey.shade100; + Color textColor = Colors.grey; + switch (status) { case ReservationStatus.pending: text = '待加氢'; - color = Colors.orange; + bgColor = const Color(0xFFFFF7E8); + textColor = const Color(0xFFFF9800); break; case ReservationStatus.completed: text = '已加氢'; - color = Colors.greenAccent; + bgColor = const Color(0xFFE8F5E9); + textColor = const Color(0xFF4CAF50); break; case ReservationStatus.rejected: text = '拒绝加氢'; - color = Colors.red; + bgColor = const Color(0xFFFFEBEE); + textColor = const Color(0xFFF44336); break; case ReservationStatus.unadded: text = '未加氢'; - color = Colors.red; + bgColor = const Color(0xFFFFEBEE); + textColor = const Color(0xFFF44336); break; case ReservationStatus.cancel: text = '已取消'; - color = Colors.red; + bgColor = const Color(0xFFFFEBEE); + textColor = const Color(0xFFF44336); break; default: text = '未知状态'; - color = Colors.grey; + bgColor = Colors.grey; + textColor = Colors.grey; break; } + return Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( - color: color.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), + color: bgColor, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: textColor.withOpacity(0.3)), ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.circle, color: color, size: 8), - const SizedBox(width: 4), - Text( - text, - style: TextStyle(color: color, fontSize: 12, fontWeight: FontWeight.bold), - ), - ], - ), - ); - } - - Widget _buildDateField(BuildContext context, bool isStart) { - return Obx( - () => InkWell( - onTap: () => controller.pickDate(context, isStart), - child: Container( - height: 44, - padding: const EdgeInsets.symmetric(horizontal: 12), - decoration: BoxDecoration( - border: Border.all(color: Colors.grey.shade400), - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(isStart ? controller.formattedStartDate : controller.formattedEndDate), - const Icon(Icons.calendar_today, size: 18, color: Colors.grey), - ], - ), - ), - ), - ); - } - - Widget _buildSummaryItem(String label, String value, Color color) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(label, style: const TextStyle(color: Colors.grey, fontSize: 14)), - const SizedBox(height: 8), - Text( - value, - style: TextStyle(color: color, fontSize: 22, fontWeight: FontWeight.bold), - ), - ], - ); - } - - Widget _buildListHeader() { - return const Padding( - padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 14.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text('加氢明细', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), - ], + child: Text( + text, + style: TextStyle(color: textColor, fontSize: 12, fontWeight: FontWeight.bold), ), ); } 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 1df6c42..863662e 100644 --- a/ln_jq_app/lib/pages/b_page/site/view.dart +++ b/ln_jq_app/lib/pages/b_page/site/view.dart @@ -78,12 +78,12 @@ class SitePage extends GetView { Column( children: [ _buildSearchView(), + SizedBox(height: 15.h), controller.hasReservationData ? _buildReservationListView() : _buildEmptyReservationView(), ], ), - SizedBox(height: 35.h), //第三部分 Container( @@ -136,7 +136,7 @@ class SitePage extends GetView { ], ), ), - SizedBox(height: 75.h), + SizedBox(height: 105.h), ], ); } @@ -391,8 +391,9 @@ class SitePage extends GetView { /// 构建“有预约数据”的列表视图 Widget _buildReservationListView() { - return ListView.separated( + return ListView.builder( shrinkWrap: true, + padding: EdgeInsets.zero, physics: const NeverScrollableScrollPhysics(), // 因为外层已有滚动,这里禁用内部滚动 itemCount: controller.reservationList.length, @@ -401,7 +402,6 @@ class SitePage extends GetView { // 调用新的方法来构建每一项 return _buildReservationItem(index, item); }, - separatorBuilder: (context, index) => const SizedBox(height: 0), // 列表项之间的间距 ); }