更新预约单数

This commit is contained in:
GYJ
2024-11-27 13:37:13 +08:00
parent 1a88faae34
commit 411e85fb3d
10 changed files with 254 additions and 23 deletions

View File

@@ -45,17 +45,17 @@ class HomeViewModel extends BaseUIModel {
});
}
_checkLogin() {
bool flag = AppManager.isLogin();
yjPrint("is login $flag");
}
@override
void dispose() {
_pageController?.dispose();
super.dispose();
}
_checkLogin() {
bool flag = AppManager.isLogin();
yjPrint("is login $flag");
}
void setIndex(int index) {
if (_currentIndex == index) {
return;

View File

@@ -1,6 +1,7 @@
import 'package:cashier_reserve/common/base/ui.dart';
import 'package:cashier_reserve/common/channel/call_log_model.dart';
import 'package:cashier_reserve/common/print/print.dart';
import 'package:cashier_reserve/data_model/reserve/reserve_log_model.dart';
import 'package:cashier_reserve/home/reserve_view_model.dart';
import 'package:flutter/cupertino.dart';
@@ -121,6 +122,7 @@ class ReserveLeftContentView extends StatelessWidget {
/// _buildCallRecordItem 通话记录item
Widget _buildCallRecordItem(BuildContext context, CallLogModel? model) {
ReserveLogModel? reserveLogModel = provider.getReserveLogModel(model?.number ?? "");
return Container(
padding: const EdgeInsets.fromLTRB(15, 15, 15, 5),
child: Column(
@@ -164,18 +166,18 @@ class ReserveLeftContentView extends StatelessWidget {
const SizedBox(
width: 15,
),
const Text(
"已消费0",
Text(
"已消费${reserveLogModel?.consumeOrders ?? '0'}",
style:
TextStyle(color: Color(0xff333333), fontSize: 14),
const TextStyle(color: Color(0xff333333), fontSize: 14),
),
const SizedBox(
width: 15,
),
const Text(
"已撤0",
Text(
"已撤${reserveLogModel?.cancelOrders ?? '0'}",
style:
TextStyle(color: Color(0xff333333), fontSize: 14),
const TextStyle(color: Color(0xff333333), fontSize: 14),
),
],
),
@@ -336,7 +338,9 @@ class ReserveLeftContentView extends StatelessWidget {
_buildBookingActionBtn(context, "预约", () {
provider.commitReserveInfo();
}),
_buildBookingActionBtn(context, "预约并短信", () {}),
_buildBookingActionBtn(context, "预约并短信", () {
provider.commitReserveInfo(sendSms: true);
}),
_buildBookingActionBtn(context, "发路线", () {}),
_buildBookingActionBtn(context, "取消", () {
provider.hideReserveInfoView();

View File

@@ -78,7 +78,7 @@ class ReserveView extends BaseUI with TickerProviderStateMixin {
width: 15,
),
InkWell(
onTap: () {},
onTap: () { },
child: SizedBox(
width: 40,
height: 40,

View File

@@ -2,13 +2,17 @@ import 'package:cashier_reserve/common/base/ui.dart';
import 'package:cashier_reserve/common/base/ui_model.dart';
import 'package:cashier_reserve/common/channel/call_log_model.dart';
import 'package:cashier_reserve/common/channel/channel_manager.dart';
import 'package:cashier_reserve/common/manager/app_manager.dart';
import 'package:cashier_reserve/common/manager/event_manager.dart';
import 'package:cashier_reserve/common/print/print.dart';
import 'package:cashier_reserve/common/utils/utils.dart';
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:url_launcher/url_launcher.dart';
class ReserveViewModel extends BaseUIModel {
class ReserveViewModel extends BaseUIModel {
Map<int, String> weekdayMap = {
1: "星期一",
2: "星期二",
@@ -38,39 +42,54 @@ class ReserveViewModel extends BaseUIModel {
String bookingType = "lunch";
List<TableAreaModel?>? _tableAreaList;
List<TableAreaModel?>? get tableAreaList => _tableAreaList;
Map<num, TableAreaModel?> _tableAreaMap = {};
List<TableModel?>? _tableList;
List<TableModel?>? get tableList => _tableList;
Map<String, List<TableModel?>> tableMap = {};
List<CallLogModel?>? callLogs = [];
Map<String, ReserveLogModel?>? _reserveLogMap;
bool _isShowReserveInfoView = false;
/// bookingGender 预订人性别 1: 男 2: 女
int bookingGender = 1;
/// bookingNumController 就餐人数
TextEditingController bookingNumController = TextEditingController();
/// bookingPhoneController 联系电话
TextEditingController bookingPhoneController = TextEditingController();
/// bookingNameController 预订人姓名
TextEditingController bookingNameController = TextEditingController();
/// bookingTypeController 预订类型
TextEditingController bookingTypeController = TextEditingController();
/// bookingTableNumController 预订台桌数量
TextEditingController bookingTableNumController = TextEditingController();
/// bookingStandardController 预定餐标
TextEditingController bookingStandardController = TextEditingController();
/// bookingRemarkController 备注
TextEditingController bookingRemarkController = TextEditingController();
/// bookingSelectedTime 预订时间
String bookingSelectedTime = "";
/// bookingFocus 重点关注
bool bookingFocus = false;
/// bookingSms 短信通知
bool bookingSms = false;
/// bookingStandardType 餐标类型
String bookingStandardType = "table";
@@ -86,8 +105,11 @@ class ReserveViewModel extends BaseUIModel {
if (!event.isSuccess) {
return;
}
callLogs = event.callLogs;
notifyListeners();
loadUserReserveLog();
}
});
@@ -113,12 +135,23 @@ class ReserveViewModel extends BaseUIModel {
loadCallLog();
loadTableAreaList();
loadAreaTableList(0);
loadReserveSms();
}
void loadCallLog() {
ChannelManager.getCallLog("getCallLog");
}
void loadUserReserveLog() async {
List<String> phoneNos = [];
for (var item in callLogs!) {
phoneNos.add(item!.number ?? '');
}
_reserveLogMap = await ReserveModel.getUserReserveLog(phoneNos);
notifyListeners();
}
void loadTableAreaList() async {
final r = await ReserveModel.getShopTableAreaList();
@@ -137,7 +170,8 @@ class ReserveViewModel extends BaseUIModel {
}
void loadAreaTableList(int areaId) async {
final r = await ReserveModel.getAreaTableList(areaId, selectedDate, bookingType);
final r =
await ReserveModel.getAreaTableList(areaId, selectedDate, bookingType);
_tableList = r;
@@ -156,7 +190,11 @@ class ReserveViewModel extends BaseUIModel {
notifyListeners();
}
void commitReserveInfo() async {
loadReserveSms() async {
AppManager.loadReserveSms();
}
void commitReserveInfo({bool sendSms = false}) async {
if (!_checkReserveInfo()) {
return;
}
@@ -184,6 +222,31 @@ class ReserveViewModel extends BaseUIModel {
Utils.toast("预定成功", context);
hideReserveInfoView();
loadAreaTableList(0);
if (sendSms) {
String smsContent = await AppManager.loadReserveSms();
if (smsContent.isNotEmpty) {
yjPrint("send sms: $smsContent, phone: ${bookingPhoneController.text}");
goSendSms(phone: bookingPhoneController.text, message: smsContent);
}
}
}
goSendSms({required String phone, required String message}) async {
final Uri smsUri = Uri(
scheme: 'sms',
path: phone,
queryParameters: {
'body': message,
},
);
if (await canLaunchUrl(smsUri)) {
await launchUrl(smsUri);
} else {
// 如果无法启动短信发送,可在此处添加相应的提示逻辑,比如打印错误信息等
yjPrint('Could not launch SMS');
}
}
void setSelectedDateIndex(int index) {
@@ -198,11 +261,16 @@ class ReserveViewModel extends BaseUIModel {
loadAreaTableList(0);
}
void setAnimationController(AnimationController controller, Animation<double> sizeFactor) {
void setAnimationController(
AnimationController controller, Animation<double> sizeFactor) {
_animationController = controller;
_animationSizeFactor = sizeFactor;
}
ReserveLogModel? getReserveLogModel(String phone) {
return _reserveLogMap?[phone];
}
showReserveInfoView() {
_resetReserveData();
_isShowReserveInfoView = true;
@@ -223,7 +291,8 @@ class ReserveViewModel extends BaseUIModel {
}
updateBookingTime(int hour, int minute) {
bookingSelectedTime = "${hour.toString().padLeft(2, '0')}:${minute.toString().padLeft(2, '0')}";
bookingSelectedTime =
"${hour.toString().padLeft(2, '0')}:${minute.toString().padLeft(2, '0')}";
notifyListeners();
}
@@ -326,4 +395,4 @@ class ReserveViewModel extends BaseUIModel {
DateTime offsetDay = now.add(Duration(days: offset));
return weekdayMap[offsetDay.weekday] ?? "";
}
}
}