Commit 310333f8797f3f37bbdf5bd3164bd5fb84dd4999

Authored by wdn127929
1 parent 0744959e

订单变更约束,根据配置项

... ... @@ -104,6 +104,9 @@ class _NoteBookChangeFPageOnlyState extends State<NoteBookChangeFPageOnly> {
StoreBaseIndoProvider storeBaseIndoProvider;
String ddateSoltSelect = ''; //切换时间之前的餐段
String dateShowNow = ""; //今天,明天,后天
bool isSetOver = true;
bool isReserveOver = true;
@override
void initState() {
super.initState();
... ... @@ -171,6 +174,16 @@ class _NoteBookChangeFPageOnlyState extends State<NoteBookChangeFPageOnly> {
flex: 1,
child: InkWell(
onTap: () {
String createtime = detailEntity.ddate.toString() + '000';
DateTime reservedate =
DateTime.fromMillisecondsSinceEpoch(int.parse(createtime));
if (!_getRealIsReserveOver(reservedate)) {
if (_getIsBefore(element.ddateSolt)) {
Utils.showToast('不允许变更订单到过去餐段');
return;
}
}
currTimeIndex = int.parse(element.ddateSolt);
setState(() {});
... ... @@ -361,6 +374,16 @@ class _NoteBookChangeFPageOnlyState extends State<NoteBookChangeFPageOnly> {
getDzSellerConf() async {
await marketingCenterProvider.getDzSellerConf(context,
showLoading: false, selfDismiss: true);
if (marketingCenterProvider.dzSellerConfModel != null) {
isSetOver = marketingCenterProvider.dzSellerConfModel.isSetOver == '1'
? true
: false;
isReserveOver =
marketingCenterProvider.dzSellerConfModel.isReserveOver == '1'
? true
: false;
}
}
_initData() async {
... ... @@ -720,6 +743,139 @@ class _NoteBookChangeFPageOnlyState extends State<NoteBookChangeFPageOnly> {
return lists;
}
// _getRealIsReserveOver() {
// //判断时间是否可变更
// bool reserveOrder = true; //默认允许变更过去餐段订单的时间
// //如果不允许变更订单到过去餐段,则开始判断
// //两个条件同时成立: 1.订单的时间是未来 2. 将要改变的时间是过去
// if (!isReserveOver) {
// String times;
// //找到当前餐段对应的时间段
// storeBaseIndoProvider.dayDateData.forEach((element) {
// if (element.ddateSolt == detailEntity.ddate_solt) {
// times = element.mdate;
// }
// });
// //组装时间戳
// List<String> datas = times.split('-');
// // DateTime selectStime = DateTime.parse('${dateTimeSelect.year}' +
// // '-' +
// // '${dateTimeSelect.month}' +
// // '-' +
// // '${dateTimeSelect.day}' +
// // ' ${datas[0]}:00'); //选中餐段开始时间戳
// DateTime selectEtime = DateTime.parse('${dateTime.year}' +
// '-' +
// '${dateTime.month}' +
// '-' +
// '${dateTime.day}' +
// ' ${datas[1]}:00'); //选中餐段结束时间戳
// // 过去的餐段界定
// if (selectEtime.isBefore(DateTime.now())) {
// // 属于过去餐段
// reserveOrder = true;
// } else {
// // 属于未来餐段
// reserveOrder = false;
// }
// }
// return reserveOrder;
// }
_getRealIsReserveOver(DateTime time) {
//判断时间是否可变更
bool reserveOrder = true; //默认允许变更过去餐段订单的时间
//如果不允许变更订单到过去餐段,则开始判断
//两个条件同时成立: 1.订单的时间是未来 2. 将要改变的时间是过去
if (!isReserveOver) {
String times;
//找到当前餐段对应的时间段
storeBaseIndoProvider.dayDateData.forEach((element) {
if (element.ddateSolt == detailEntity.ddate_solt) {
times = element.mdate;
}
});
//组装时间戳
List<String> datas = times.split('-');
// DateTime selectStime = DateTime.parse('${dateTimeSelect.year}' +
// '-' +
// '${dateTimeSelect.month}' +
// '-' +
// '${dateTimeSelect.day}' +
// ' ${datas[0]}:00'); //选中餐段开始时间戳
DateTime selectEtime = DateTime.parse('${time.year}' +
'-' +
'${time.month}' +
'-' +
'${time.day}' +
' ${datas[1]}:00'); //选中餐段结束时间戳
// 过去的餐段界定
if (selectEtime.isBefore(DateTime.now())) {
// 属于过去餐段
reserveOrder = true;
} else {
// 属于未来餐段
reserveOrder = false;
}
}
return reserveOrder;
}
_getIsBefore(String ddateSoltTemp) {
//判断2. 将要改变的时间是过去
String createtime = detailEntity.ddate.toString() + '000';
DateTime reservedate =
DateTime.fromMillisecondsSinceEpoch(int.parse(createtime));
String timesreserve;
//找到当前餐段对应的时间段
storeBaseIndoProvider.dayDateData.forEach((element) {
if (element.ddateSolt == detailEntity.ddate_solt) {
timesreserve = element.mdate;
}
});
//组装时间戳
List<String> datasreserve = timesreserve.split('-');
DateTime reserveStime = DateTime.parse('${reservedate.year}' +
'-' +
'${reservedate.month}' +
'-' +
'${reservedate.day}' +
' ${datasreserve[0]}:00'); //订单餐段开始时间戳
String timesnow;
//找到当前餐段对应的时间段
//找到当前餐段对应的时间段
storeBaseIndoProvider.dayDateData.forEach((element) {
if (element.ddateSolt == ddateSoltTemp) {
timesnow = element.mdate;
}
});
//组装时间戳
List<String> datanow = timesnow.split('-');
//将要选中的餐段和时间
DateTime nowStime = DateTime.parse('${dateTime.year}' +
'-' +
'${dateTime.month}' +
'-' +
'${dateTime.day}' +
' ${datanow[1]}:00'); //选中餐段开始时间戳
if (nowStime.isBefore(reserveStime)) {
// 变更到过去餐段
return true;
} else {
// 变更到未来餐段
return false;
}
}
@override
Widget build(BuildContext context) {
storeBaseIndoProvider =
... ... @@ -947,12 +1103,89 @@ class _NoteBookChangeFPageOnlyState extends State<NoteBookChangeFPageOnly> {
horizontal: ScreenUtil().setWidth(15)),
child: GestureDetector(
onTap: () {
//判断时间是否可变更
bool setOrder = true; //默认允许变更过去餐段订单的时间
//如果不允许变更过去餐段订单的时间,则开始判断
//连个条件同时成立: 1.订单的时间是过去 2. 时间改变
if (!isSetOver) {
String times;
//找到当前餐段对应的时间段
if (currTimeIndex == 1) {
times = morning;
} else if (currTimeIndex == 2) {
times = noon;
} else if (currTimeIndex == 3) {
times = night;
}
//else if (currTimeIndex == 4) {
// times = meal1;
// } else if (currTimeIndex == 5) {
// times = meal2;
// }
//组装时间戳
List<String> datas = times.split('-');
// DateTime selectStime = DateTime.parse('${dateTimeSelect.year}' +
// '-' +
// '${dateTimeSelect.month}' +
// '-' +
// '${dateTimeSelect.day}' +
// ' ${datas[0]}:00'); //选中餐段开始时间戳
DateTime selectEtime = DateTime.parse(
'${dateTime.year}' +
'-' +
'${dateTime.month}' +
'-' +
'${dateTime.day}' +
' ${datas[1]}:00'); //选中餐段结束时间戳
// 过去的餐段界定
if (selectEtime.isBefore(DateTime.now())) {
// 属于过去餐段
setOrder = false;
} else {
// 属于未来餐段
setOrder = true;
}
}
if (!setOrder) {
Utils.showToast('不允许变更过去餐段订单的时间');
return;
}
// 切换之前的餐段
ddateSoltSelect = currTimeIndex.toString();
DialogUtil.showCalendarDialog(context, dateTime)
.then((day) async {
if (day != null) {
//如果不允许变更订单到过去餐段
String createtime =
detailEntity.ddate.toString() + '000';
DateTime reservedate =
DateTime.fromMillisecondsSinceEpoch(
int.parse(createtime));
if (!_getRealIsReserveOver(reservedate)) {
//属于未来时间的订单
//将要变更的时间是不是过去
if (DateTime.parse('${day.year}' +
'-' +
'${day.month}' +
'-' +
'${day.day}' +
' 00:00:00')
.isBefore(DateTime.parse(
'${reservedate.year}' +
'-' +
'${reservedate.month}' +
'-' +
'${reservedate.day}' +
' 00:00:00'))) {
Utils.showToast('不允许变更订单到过去餐段');
return;
}
}
createDateText(context, day);
int dateTimeMill =
day.millisecondsSinceEpoch;
... ...
... ... @@ -21,6 +21,7 @@ class TableItemOrReserve extends StatefulWidget {
final int height; //高度
final bool need;
final List<TableListReserve> selectTables;
final bool addOrder;
TableItemOrReserve(this.table,
{this.onSelected,
... ... @@ -31,7 +32,8 @@ class TableItemOrReserve extends StatefulWidget {
// this.tableMap,
this.need = true,
this.selectTables});
this.selectTables,
this.addOrder = true});
@override
State<StatefulWidget> createState() {
... ... @@ -209,6 +211,10 @@ class TableItemOrReserveState extends State<TableItemOrReserve> {
if (islock && table.signStr != '已预订') {
return;
}
if (widget.fromPage == 'table_manage' && widget.addOrder == false&& table.signStr != '已预订') {
Utils.showToast('不允许新建过去餐段的订单!');
return;
}
setState(() {
table.selected = !(table.selected ?? false);
});
... ...
... ... @@ -124,6 +124,7 @@ class TableManagerPageState extends State<TableManagerPage> {
String smsErro = '';
String showErro = '';
String ddateSoltSelect = '';
bool isAddOver = true;
// int
ScrollController _scrollCrl = ScrollController();
... ... @@ -194,6 +195,7 @@ class TableManagerPageState extends State<TableManagerPage> {
personNumList = Utils.getPersonNumList();
WidgetsBinding.instance.addPostFrameCallback((_) {
getDzSellerConf();
getMealSectionByDay();
if (App.sp.containsKey('table_list')) {
// //退出清空桌位数据
... ... @@ -338,7 +340,8 @@ class TableManagerPageState extends State<TableManagerPage> {
currTimeIndex = 5;
} else {
//过了晚市
currTimeIndex = int.parse(storeBaseIndoProvider.dayDateData.last.ddateSolt);
currTimeIndex =
int.parse(storeBaseIndoProvider.dayDateData.last.ddateSolt);
}
}
... ... @@ -369,14 +372,14 @@ class TableManagerPageState extends State<TableManagerPage> {
selectDateStr = returnDayDateStr(dateTime);
selectWeekAndLunarCalendar = returnWeekAndLunarCalendar(dateTime, context);
setState(() {});
bool showLoading = true;
if (tableManagerModel.pageStateOrReserve == PageState.Loading) {
showLoading = false;
}
tableManagerModel.getTableListOrReserve(
context, currTimeIndex, dateTime, selectNumber,
showLoading: showLoading);
setState(() {});
bool showLoading = true;
if (tableManagerModel.pageStateOrReserve == PageState.Loading) {
showLoading = false;
}
tableManagerModel.getTableListOrReserve(
context, currTimeIndex, dateTime, selectNumber,
showLoading: showLoading);
}
String returnWeekAndLunarCalendar(DateTime day, BuildContext context) {
... ... @@ -603,20 +606,32 @@ class TableManagerPageState extends State<TableManagerPage> {
getDzSellerConf() async {
MarketingCenterProvider marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: false);
bool success = await marketingCenterProvider.getDzSellerConf(context,
showLoading: false);
bool success = await marketingCenterProvider.getDzSellerConf(context);
if (success && marketingCenterProvider.dzSellerConfModel != null) {
noticeSms = marketingCenterProvider.dzSellerConfModel.isNotice == '1'
isAddOver = marketingCenterProvider.dzSellerConfModel.isAddOver == '1'
? true
: false;
if (!noticeSms) {
_getSmsInfo(context);
}
} else {
_getSmsInfo(context);
setState(() {});
}
}
// getDzSellerConf() async {
// MarketingCenterProvider marketingCenterProvider =
// Provider.of<MarketingCenterProvider>(context, listen: false);
// bool success = await marketingCenterProvider.getDzSellerConf(context,
// showLoading: false);
// if (success && marketingCenterProvider.dzSellerConfModel != null) {
// noticeSms = marketingCenterProvider.dzSellerConfModel.isNotice == '1'
// ? true
// : false;
// if (!noticeSms) {
// _getSmsInfo(context);
// }
// } else {
// _getSmsInfo(context);
// }
// }
///获取短信内容
///
... ... @@ -768,6 +783,46 @@ class TableManagerPageState extends State<TableManagerPage> {
/// Generate item number [i].
Widget item(int i) {
bool addOrder = true; //默认允许创建
//如果不允许新建过去的订单,则开始判断
if (!isAddOver) {
String times;
//找到当前餐段对应的时间段
if (currTimeIndex == 1) {
times = morning;
} else if (currTimeIndex == 2) {
times = noon;
} else if (currTimeIndex == 3) {
times = night;
} else if (currTimeIndex == 4) {
times = meal1;
} else if (currTimeIndex == 5) {
times = meal2;
}
//组装时间戳
List<String> datas = times.split('-');
// DateTime selectStime = DateTime.parse('${dateTimeSelect.year}' +
// '-' +
// '${dateTimeSelect.month}' +
// '-' +
// '${dateTimeSelect.day}' +
// ' ${datas[0]}:00'); //选中餐段开始时间戳
DateTime selectEtime = DateTime.parse('${dateTimeSelect.year}' +
'-' +
'${dateTimeSelect.month}' +
'-' +
'${dateTimeSelect.day}' +
' ${datas[1]}:00'); //选中餐段结束时间戳
// 过去的餐段界定
if (selectEtime.isBefore(DateTime.now())) {
// 属于过去餐段
addOrder = false;
} else {
// 属于未来餐段
addOrder = true;
}
}
return GridView.builder(
// controller: _areaController,
// physics: NeverScrollableScrollPhysics(),
... ... @@ -802,7 +857,7 @@ class TableManagerPageState extends State<TableManagerPage> {
fromPage: 'table_manage',
canSelected: true,
selectTables: tableManagerModel.selectTablesOrReserve,
onSelected: (table) {
addOrder:addOrder ,onSelected: (table) {
if (table.signStr == '已预订') {
if (table.sign == '10') {
//宴会订单
... ... @@ -3866,7 +3921,7 @@ class TableManagerPageState extends State<TableManagerPage> {
.then((day) async {
if (day != null) {
createDateText1(context, day);
getMealSectionByDay(needInit: false);
getMealSectionByDay(needInit: false);
bool success =
await tableManagerModel.getTableListOrReserve(
context,
... ... @@ -3898,8 +3953,9 @@ class TableManagerPageState extends State<TableManagerPage> {
},
child: Container(
// height: w(35),
height:(ScreenUtil().screenWidth-w(10)-w(18))/4*0.6,
height: (ScreenUtil().screenWidth - w(10) - w(18)) /
4 *
0.6,
padding: EdgeInsets.symmetric(
horizontal: w(10),
// vertical: ScreenUtil().setWidth(20)
... ... @@ -3949,7 +4005,8 @@ class TableManagerPageState extends State<TableManagerPage> {
// ? ScreenUtil().setWidth(300) + ScreenUtil().setWidth(4)
// : ScreenUtil().setWidth(300),
// height: w(28),
height:(ScreenUtil().screenWidth-w(10)-w(18))/4*0.4,
height:
(ScreenUtil().screenWidth - w(10) - w(18)) / 4 * 0.4,
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.only(
... ...