import 'package:getx_scaffold/getx_scaffold.dart'; import 'package:ln_jq_app/common/model/base_model.dart'; import 'package:ln_jq_app/storage_service.dart'; enum ReservationStatus { pending, completed, rejected } class ReservationModel { final String id; final String plateNumber; final String amount; final String time; final String contactPerson; final String contactPhone; ReservationStatus status; // 状态是可变的 ReservationModel({ required this.id, required this.plateNumber, required this.amount, required this.time, required this.contactPerson, required this.contactPhone, this.status = ReservationStatus.pending, }); } class SiteController extends GetxController with BaseControllerMixin { @override String get builderId => 'site'; SiteController(); /// 状态变量:是否有预约数据 bool hasReservationData = false; // 新增预约数据列表 List reservationList = []; @override void onInit() { super.onInit(); // 页面初始化时自动加载数据 fetchReservationData(); renderData(); } /// 模拟获取预约数据的方法 Future fetchReservationData() async { showLoading("加载中"); // 模拟网络请求延迟 await Future.delayed(const Duration(seconds: 1)); // ==================== 3. 填充模拟数据 ==================== reservationList = [ ReservationModel( id: '1', plateNumber: '浙F08860F', amount: '52kg', time: '2025-11-04 21:54-22:24', contactPerson: '王小龙', contactPhone: '15888332828', status: ReservationStatus.pending, ), ReservationModel( id: '2', plateNumber: '浙F08860F', amount: '52kg', time: '2025-11-04 14:54-15:24', contactPerson: '王小龙', contactPhone: '15888332828', status: ReservationStatus.completed, // 示例:已完成状态 ), ReservationModel( id: '3', plateNumber: '浙F08860F', amount: '52kg', time: '2025-11-04 15:54-16:24', contactPerson: '王小龙', contactPhone: '15888332828', status: ReservationStatus.rejected, // 示例:已拒绝状态 ), ReservationModel( id: '4', plateNumber: '浙F08860F', amount: '52kg', time: '2025-11-04 12:54-13:24', contactPerson: '王小龙', contactPhone: '15888332828', status: ReservationStatus.pending, ), ]; hasReservationData = reservationList.isNotEmpty; dismissLoading(); updateUi(); } /// 确认预约 Future confirmReservation(String id) async { print('确认预约: $id'); // TODO: 在这里调用确认接口 // 接口调用成功后,更新本地数据状态并刷新UI final item = reservationList.firstWhere((item) => item.id == id); item.status = ReservationStatus.completed; updateUi(); } /// 拒绝预约 Future rejectReservation(String id) async { print('拒绝预约: $id'); // TODO: 在这里调用拒绝接口 // 接口调用成功后,更新本地数据状态并刷新UI final item = reservationList.firstWhere((item) => item.id == id); item.status = ReservationStatus.rejected; updateUi(); } String leftHydrogen = ""; String orderAmount = ""; String completedAmount = ""; Future renderData() async { try { var responseData = await HttpService.to.get( 'appointment/station/getStationInfoById?hydrogenId=${StorageService.to.userId}', ); if (responseData == null && responseData!.data == null) { showToast('暂时无法获取站点信息'); return; } try { var result = BaseModel.fromJson(responseData.data); leftHydrogen = result.data["leftHydrogen"] ?? ""; orderAmount = result.data["orderAmount"].toString(); completedAmount = result.data["completedAmount"].toString(); leftHydrogen = leftHydrogen.isEmpty ? "统计中" : leftHydrogen; } catch (e) { showToast('数据异常'); } } catch (e) {} } }