149 lines
4.1 KiB
Dart
149 lines
4.1 KiB
Dart
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<ReservationModel> reservationList = [];
|
||
|
||
@override
|
||
void onInit() {
|
||
super.onInit();
|
||
// 页面初始化时自动加载数据
|
||
fetchReservationData();
|
||
renderData();
|
||
}
|
||
|
||
/// 模拟获取预约数据的方法
|
||
Future<void> 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<void> confirmReservation(String id) async {
|
||
print('确认预约: $id');
|
||
// TODO: 在这里调用确认接口
|
||
// 接口调用成功后,更新本地数据状态并刷新UI
|
||
final item = reservationList.firstWhere((item) => item.id == id);
|
||
item.status = ReservationStatus.completed;
|
||
updateUi();
|
||
}
|
||
|
||
/// 拒绝预约
|
||
Future<void> 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<void> 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) {}
|
||
}
|
||
}
|