From c6957c182fe3eacc204b30c77573afe2de1f028a Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Wed, 27 Nov 2024 16:03:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=A2=84=E7=BA=A6=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/home/reserve_view_model.dart | 52 ++++++++++++++++++++++++++++++++ lib/model/reserve_model.dart | 8 ++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/lib/home/reserve_view_model.dart b/lib/home/reserve_view_model.dart index 8f875e0..c00450e 100644 --- a/lib/home/reserve_view_model.dart +++ b/lib/home/reserve_view_model.dart @@ -10,6 +10,7 @@ import 'package:cashier_reserve/data_model/reserve/reserve_log_model.dart'; import 'package:cashier_reserve/data_model/reserve/table_area_model.dart'; import 'package:cashier_reserve/data_model/reserve/table_model.dart'; import 'package:cashier_reserve/model/reserve_model.dart'; +import 'package:flutter/cupertino.dart'; import 'package:url_launcher/url_launcher.dart'; class ReserveViewModel extends BaseUIModel { @@ -328,7 +329,15 @@ class ReserveViewModel extends BaseUIModel { TableAreaModel? area = _tableAreaMap[table.areaId!]; showTableName = "${area?.name ?? ""} - ${table.name}"; notifyListeners(); + + return; } + + if (table.bookingInfo == null) { + return; + } + + _changeReserveStatus(table); } _resetReserveData() { @@ -348,6 +357,49 @@ class ReserveViewModel extends BaseUIModel { showTableName = ""; } + _changeReserveStatus(TableModel table) async { + var result = await showCupertinoModalPopup( + context: context!, + builder: (context) { + return CupertinoActionSheet( + title: const Text('预定信息'), + actions: [ + CupertinoActionSheetAction( + onPressed: () { + Navigator.of(context).pop('arrive'); + }, + isDefaultAction: true, + child: const Text('到店'), + ), + CupertinoActionSheetAction( + child: const Text('取消预定'), + onPressed: () { + Navigator.of(context).pop('cancelBooking'); + }, + // isDestructiveAction: true, + ), + ], + cancelButton: CupertinoActionSheetAction( + child: const Text('取消'), + onPressed: () { + Navigator.of(context).pop('cancel'); + }, + ), + ); + }); + yjPrint('$result'); + + if (result == 'arrive') { + await ReserveModel.updateReserveStatus(table.bookingInfo?.id ?? 0, 10); + Utils.toast("到店成功", context); + loadAreaTableList(0); + } else if (result == 'cancelBooking') { + ReserveModel.updateReserveStatus(table.bookingInfo?.id ?? 0, -1); + Utils.toast("取消成功", context); + loadAreaTableList(0); + } + } + bool _checkReserveInfo() { if (selectedTable == null) { Utils.toast("请选择台桌", context); diff --git a/lib/model/reserve_model.dart b/lib/model/reserve_model.dart index e6af00d..bf3f4af 100644 --- a/lib/model/reserve_model.dart +++ b/lib/model/reserve_model.dart @@ -1,4 +1,3 @@ -import 'package:cashier_reserve/common/print/print.dart'; import 'package:cashier_reserve/common/request/request_manager.dart'; import 'package:cashier_reserve/data_model/reserve/reserve_log_model.dart'; import 'package:cashier_reserve/data_model/reserve/table_area_model.dart'; @@ -65,4 +64,11 @@ class ReserveModel { final r = await RequestManager.get("/api/booking/shop-table/sms"); return r.toString(); } + + static Future updateReserveStatus(num reserveId, num status) async { + await RequestManager.post("/api/booking/shop-table/mark-status", { + "id": reserveId, + "status": status, + }); + } } \ No newline at end of file