|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import 'package:one_key/provider/user_model.dart';
|
|
|
|
import 'package:one_key/route/navigator_util.dart';
|
|
|
|
import 'package:one_key/utils/utils.dart';
|
|
|
|
import 'package:one_key/widgets/MyDivider.dart';
|
|
|
|
import 'package:one_key/widgets/h_empty_view.dart';
|
|
|
|
import 'package:one_key/widgets/system_app_bar.dart';
|
|
|
|
import 'package:one_key/widgets/v_empty_view.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
|
|
|
import '../../../res/colors.dart';
|
|
|
|
import '../../../utils/screen_util.dart';
|
|
|
|
import '../../../widgets/round_button.dart';
|
|
|
|
import '../../constant/state.dart';
|
|
|
|
import '../../models/cookbook_model.dart';
|
|
|
|
import '../../models/notebook_detail.dart';
|
|
|
|
import '../../models/plan_cook_list_model.dart';
|
|
|
|
import '../../provider/plan_dish_provider.dart';
|
|
|
|
import '../../utils/event_bus.dart';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 订座详情---预点菜入口
|
|
|
|
*/
|
|
|
|
|
|
|
|
class OrderAdvanceHomePage extends StatefulWidget {
|
|
|
|
OrderAdvanceHomePage({Key key}) : super(key: key);
|
|
|
|
final NotebookDetail detailEntity;
|
|
|
|
final String rid;
|
|
|
|
OrderAdvanceHomePage({Key key, this.detailEntity, this.rid})
|
|
|
|
: super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_OrderAdvanceHomePageState createState() => _OrderAdvanceHomePageState();
|
|
...
|
...
|
@@ -28,27 +40,318 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
TextEditingController likeController = TextEditingController();
|
|
|
|
|
|
|
|
TextEditingController serviceController = TextEditingController();
|
|
|
|
TextEditingController pnumController = TextEditingController();
|
|
|
|
bool isTotal = false; //默认人均
|
|
|
|
TextEditingController totalController = TextEditingController(); //预计总计
|
|
|
|
TextEditingController perController = TextEditingController(); //人均消费
|
|
|
|
PlanDishProvider _planDishProvider;
|
|
|
|
String name;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
pnumController.text = widget.detailEntity.actual_pum;
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
|
|
_getPlanCookByRid();
|
|
|
|
_getPageMenuData();
|
|
|
|
bus.on("refresh_order_advance_home", (args) {
|
|
|
|
_getPlanCookByRid();
|
|
|
|
_getPageMenuData();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget _selectItem(String title, bool select, String hintText,
|
|
|
|
TextEditingController controller) {
|
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
super.dispose();
|
|
|
|
bus.off("refresh_order_advance_home");
|
|
|
|
}
|
|
|
|
|
|
|
|
_getPlanCookByRid() async {
|
|
|
|
await _planDishProvider.getPlanCookByRid(context, {'rid': widget.rid});
|
|
|
|
if (_planDishProvider.planCookByRidSunModel != null) {
|
|
|
|
pnumController.text = _planDishProvider.planCookByRidSunModel.pnum;
|
|
|
|
if (_planDishProvider.planCookByRidSunModel.totalPrice != '0' &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.totalPrice != null) {
|
|
|
|
//选中总计
|
|
|
|
isTotal = true;
|
|
|
|
totalController.text =
|
|
|
|
_planDishProvider.planCookByRidSunModel.totalPrice;
|
|
|
|
} else if (_planDishProvider.planCookByRidSunModel.perPrice != '0' &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.perPrice != null) {
|
|
|
|
//选中人均
|
|
|
|
isTotal = false;
|
|
|
|
perController.text = _planDishProvider.planCookByRidSunModel.perPrice;
|
|
|
|
}
|
|
|
|
likeController.text = _planDishProvider.planCookByRidSunModel.like ?? "";
|
|
|
|
noFoodController.text =
|
|
|
|
_planDishProvider.planCookByRidSunModel.taboos ?? '';
|
|
|
|
serviceController.text =
|
|
|
|
_planDishProvider.planCookByRidSunModel.serve ?? '';
|
|
|
|
name = _planDishProvider.planCookByRidSunModel.planName ?? "";
|
|
|
|
}
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
|
|
|
|
_getPageMenuData() async {
|
|
|
|
Future.wait<bool>(
|
|
|
|
[_getCookbookByClass(showLoading: true), _getPlanCookList()])
|
|
|
|
.then((results) {
|
|
|
|
print(results[0]);
|
|
|
|
if (results[0] && results[1]) {
|
|
|
|
_planDishProvider.menuModelForManager =
|
|
|
|
List.from(_planDishProvider.menuModel);
|
|
|
|
//单个菜品
|
|
|
|
if (_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.cooklist != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.cooklist.length > 0) {
|
|
|
|
_planDishProvider.menuModelForManager.forEach((old) {
|
|
|
|
_planDishProvider.planCookByRidSunModel.cooklist
|
|
|
|
.forEach((newvalue) {
|
|
|
|
if (old.id == newvalue.id) {
|
|
|
|
//同一分类
|
|
|
|
old.cookbooklist.forEach((oldcook) {
|
|
|
|
newvalue.cookbooklist.forEach((newcook) {
|
|
|
|
if (oldcook.id == newcook.id) {
|
|
|
|
//同一个菜
|
|
|
|
oldcook.amount = newcook.amount;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
//成功
|
|
|
|
MenuModel menuModelSetMeal = MenuModel();
|
|
|
|
menuModelSetMeal.className = '套餐';
|
|
|
|
menuModelSetMeal.isChange = false;
|
|
|
|
List<MenuSunModel> cookList = [];
|
|
|
|
List<SunListPlan> storeList = _planDishProvider.storeListTemp;
|
|
|
|
|
|
|
|
storeList.forEach((element) {
|
|
|
|
if (element.status == '1') {
|
|
|
|
MenuSunModel menuSunModel = MenuSunModel();
|
|
|
|
menuSunModel.id = element.id;
|
|
|
|
menuSunModel.name = element.pname;
|
|
|
|
// menuSunModel.price = element.menuPrice;
|
|
|
|
menuSunModel.price = element.planPrice;
|
|
|
|
menuSunModel.member_price = element.memberPrice;
|
|
|
|
menuSunModel.unit = '份';
|
|
|
|
// menuSunModel.amount = element.amount;
|
|
|
|
menuSunModel.cookList = element.cookList;
|
|
|
|
|
|
|
|
if (_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.packageList != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.packageList.length >
|
|
|
|
0) {
|
|
|
|
//套餐数据对应
|
|
|
|
_planDishProvider.planCookByRidSunModel.packageList
|
|
|
|
.forEach((package) {
|
|
|
|
if (package.id == menuSunModel.id) {
|
|
|
|
//同一个套餐
|
|
|
|
menuSunModel.amount = package.amount;
|
|
|
|
menuSunModel.cookList.forEach((oldcooklist) {
|
|
|
|
package.cookList.forEach((newcooklist) {
|
|
|
|
if (oldcooklist.id == newcooklist.id) {
|
|
|
|
//同一菜品分类
|
|
|
|
oldcooklist.cookbooklist.forEach((oldcook) {
|
|
|
|
newcooklist.cookbooklist.forEach((newcook) {
|
|
|
|
if (oldcook.id == newcook.id) {
|
|
|
|
oldcook.amount = newcook.amount;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
cookList.add(menuSunModel);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menuModelSetMeal.cookbooklist = cookList;
|
|
|
|
|
|
|
|
_planDishProvider.menuModelForManager
|
|
|
|
.insert(0, menuModelSetMeal); //添加套餐
|
|
|
|
|
|
|
|
MenuModel menuModelPlanDish = MenuModel();
|
|
|
|
menuModelPlanDish.className = '我的排菜';
|
|
|
|
menuModelPlanDish.isChange = false;
|
|
|
|
List<MenuSunModel> cookListPlanDish = [];
|
|
|
|
List<SunListPlan> mineList = _planDishProvider.mineListTemp;
|
|
|
|
mineList.forEach((element) {
|
|
|
|
if (element.status == '1') {
|
|
|
|
MenuSunModel menuSunModel = MenuSunModel();
|
|
|
|
menuSunModel.id = element.id;
|
|
|
|
menuSunModel.name = element.pname;
|
|
|
|
menuSunModel.price = element.menuPrice;
|
|
|
|
menuSunModel.member_price = element.memberPrice;
|
|
|
|
menuSunModel.unit = '份';
|
|
|
|
// menuSunModel.amount = element.amount;
|
|
|
|
menuSunModel.cookList = element.cookList;
|
|
|
|
|
|
|
|
if (_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.planList != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.planList.length > 0) {
|
|
|
|
//排菜数据对应
|
|
|
|
_planDishProvider.planCookByRidSunModel.planList
|
|
|
|
.forEach((package) {
|
|
|
|
if (package.id == menuSunModel.id) {
|
|
|
|
//同一个排菜
|
|
|
|
menuSunModel.amount = package.amount;
|
|
|
|
menuSunModel.cookList.forEach((oldcooklist) {
|
|
|
|
package.cookList.forEach((newcooklist) {
|
|
|
|
if (oldcooklist.id == newcooklist.id) {
|
|
|
|
//同一菜品分类
|
|
|
|
oldcooklist.cookbooklist.forEach((oldcook) {
|
|
|
|
newcooklist.cookbooklist.forEach((newcook) {
|
|
|
|
if (oldcook.id == newcook.id) {
|
|
|
|
oldcook.amount = newcook.amount;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
cookListPlanDish.add(menuSunModel);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menuModelPlanDish.cookbooklist = cookListPlanDish;
|
|
|
|
|
|
|
|
_planDishProvider.menuModelForManager
|
|
|
|
.insert(1, menuModelPlanDish); //添加排菜
|
|
|
|
// if (_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
// _planDishProvider.planCookByRidSunModel.planPrice != null) {
|
|
|
|
// _calculatePrice(planPrice: _planDishProvider.planCookByRidSunModel.planPrice);
|
|
|
|
// } else {
|
|
|
|
// _calculatePrice();
|
|
|
|
// }
|
|
|
|
_planDishProvider.pageStateMenu = PageState.Success;
|
|
|
|
|
|
|
|
setState(() {});
|
|
|
|
} else {
|
|
|
|
if (!results[0]) {
|
|
|
|
// Utils.showToast('');
|
|
|
|
} else {
|
|
|
|
// Utils.showToast('');
|
|
|
|
}
|
|
|
|
_planDishProvider.pageStateMenu = PageState.ConnectivityError;
|
|
|
|
}
|
|
|
|
}).catchError((e) {
|
|
|
|
print(e);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
///菜品数据
|
|
|
|
|
|
|
|
Future<bool> _getCookbookByClass({bool showLoading = true}) async {
|
|
|
|
Map<String, String> params = {
|
|
|
|
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
|
|
|
|
};
|
|
|
|
|
|
|
|
bool success = await _planDishProvider.getCookbookByClass(context, params,
|
|
|
|
showLoading: showLoading);
|
|
|
|
if (success) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
// print(widget.data);
|
|
|
|
|
|
|
|
// if (widget.data.length > 0) {
|
|
|
|
// widget.data.forEach((old) {
|
|
|
|
// _planDishProvider.menuModel.forEach((element) {
|
|
|
|
// if (old.id == element.id) {
|
|
|
|
// element.cookbooklist.forEach((value) {
|
|
|
|
// old.cookbooklist.forEach((oldCook) {
|
|
|
|
// if (oldCook.id == value.id) {
|
|
|
|
// value.amount = oldCook.amount;
|
|
|
|
// if (oldCook.amount > 0) {
|
|
|
|
// carSum += oldCook.amount;
|
|
|
|
// priceSum += double.parse(oldCook.price) * oldCook.amount;
|
|
|
|
// memberPriceSum +=
|
|
|
|
// double.parse(oldCook.member_price) * oldCook.amount;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
// });
|
|
|
|
// if (widget.planDishPrice != '' && widget.planDishPrice != null) {
|
|
|
|
// planDishC.text = widget.planDishPrice;
|
|
|
|
// } else {
|
|
|
|
// planDishC.text = '${priceSum}';
|
|
|
|
// }
|
|
|
|
|
|
|
|
// setState(() {});
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
///排菜/套餐列表
|
|
|
|
|
|
|
|
Future<bool> _getPlanCookList({bool isShowLoading = true}) async {
|
|
|
|
Map<String, String> params = {
|
|
|
|
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
|
|
|
|
// 'is_time': '0'
|
|
|
|
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
|
|
|
|
};
|
|
|
|
bool success = await _planDishProvider.getPlanCookList(context, params,
|
|
|
|
showLoading: isShowLoading);
|
|
|
|
if (success) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget _selectItem(
|
|
|
|
String title,
|
|
|
|
bool select,
|
|
|
|
String hintText,
|
|
|
|
TextEditingController controller,
|
|
|
|
) {
|
|
|
|
return Row(
|
|
|
|
children: [
|
|
|
|
HEmptyView(86),
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath(
|
|
|
|
select ? 'plan_dish_select' : 'plan_dish_unselect'),
|
|
|
|
width: w(20)),
|
|
|
|
HEmptyView(10),
|
|
|
|
Text(
|
|
|
|
title,
|
|
|
|
style: TextStyle(fontSize: font(16), color: MyColours.color_515151),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
if (title == '预计人均' && !isTotal) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (title == '预计总价' && isTotal) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
isTotal = !isTotal;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
padding: EdgeInsets.symmetric(vertical: w(8)),
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
HEmptyView(86),
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath(
|
|
|
|
select ? 'plan_dish_select' : 'plan_dish_unselect'),
|
|
|
|
width: w(20)),
|
|
|
|
HEmptyView(10),
|
|
|
|
Text(
|
|
|
|
title,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: font(16), color: MyColours.color_515151),
|
|
|
|
),
|
|
|
|
HEmptyView(20),
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
),
|
|
|
|
HEmptyView(20),
|
|
|
|
select
|
|
|
|
? Expanded(
|
|
|
|
child: TextField(
|
|
...
|
...
|
@@ -197,6 +500,7 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
_planDishProvider = Provider.of<PlanDishProvider>(context, listen: true);
|
|
|
|
return KeyboardDismissOnTap(
|
|
|
|
// dismissOnCapturedTaps: true,
|
|
|
|
child: Scaffold(
|
|
...
|
...
|
@@ -208,12 +512,13 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
child: SingleChildScrollView(
|
|
|
|
// controller: controller,
|
|
|
|
child: Padding(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: w(20)),
|
|
|
|
padding: EdgeInsets.only(left: w(20)),
|
|
|
|
child: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: w(48),
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Text(
|
|
...
|
...
|
@@ -224,7 +529,7 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
Text(
|
|
|
|
'2022-11-08 午餐',
|
|
|
|
widget.detailEntity.ddateymd,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: font(16),
|
|
|
|
color: MyColours.color_99515151),
|
|
...
|
...
|
@@ -232,11 +537,13 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
MyDivider(
|
|
|
|
double.infinity,
|
|
|
|
w(1),
|
|
|
|
color: MyColours.color_DBDBDB,
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: MyDivider(
|
|
|
|
double.infinity,
|
|
|
|
w(1),
|
|
|
|
color: MyColours.color_DBDBDB,
|
|
|
|
)),
|
|
|
|
Container(
|
|
|
|
height: w(48),
|
|
|
|
child: Row(
|
|
...
|
...
|
@@ -248,19 +555,36 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
color: MyColours.color_515151),
|
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath('plan_dish_minus'),
|
|
|
|
width: w(16),
|
|
|
|
),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
int temp = int.parse(pnumController.text);
|
|
|
|
if (temp == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
temp--;
|
|
|
|
pnumController.text = temp.toString();
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: w(48),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
left: w(40),
|
|
|
|
),
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath('plan_dish_minus'),
|
|
|
|
width: w(16),
|
|
|
|
))),
|
|
|
|
Container(
|
|
|
|
width: w(50),
|
|
|
|
// constraints: BoxConstraints(minWidth: w(20)),
|
|
|
|
child: TextField(
|
|
|
|
maxLines: 1,
|
|
|
|
// controller:
|
|
|
|
controller: pnumController,
|
|
|
|
// focusNode: _focusNode,
|
|
|
|
// autofocus: true,
|
|
|
|
|
|
|
|
inputFormatters: [
|
|
|
|
FilteringTextInputFormatter.allow(
|
|
|
|
RegExp(r'[0-9]')),
|
|
|
|
],
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_438E93,
|
|
|
|
fontSize: font(16)),
|
|
...
|
...
|
@@ -295,9 +619,24 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
// _focusNode.unfocus();
|
|
|
|
},
|
|
|
|
)),
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath('plan_dish_add'),
|
|
|
|
width: w(16),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
int temp = int.parse(pnumController.text == ''
|
|
|
|
? '0'
|
|
|
|
: pnumController.text);
|
|
|
|
temp++;
|
|
|
|
pnumController.text = temp.toString();
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: w(48),
|
|
|
|
// color: Colors.red,
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
right: w(20),
|
|
|
|
),
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath('plan_dish_add'),
|
|
|
|
width: w(16),
|
|
|
|
)),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
...
|
...
|
@@ -308,18 +647,26 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
style: TextStyle(
|
|
|
|
fontSize: font(16), color: MyColours.color_515151),
|
|
|
|
),
|
|
|
|
VEmptyView(48),
|
|
|
|
_selectItem('预计人均', false, '点击这里输入预计人均金额', null),
|
|
|
|
VEmptyView(30),
|
|
|
|
_selectItem('预计总价', true, '点击这里输入预计总金额', null),
|
|
|
|
VEmptyView(46),
|
|
|
|
MyDivider(
|
|
|
|
double.infinity,
|
|
|
|
w(1),
|
|
|
|
color: MyColours.color_DBDBDB,
|
|
|
|
),
|
|
|
|
VEmptyView(33),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: _selectItem(
|
|
|
|
'预计人均', !isTotal, '点击这里输入预计人均金额', perController)),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: _selectItem(
|
|
|
|
'预计总价', isTotal, '点击这里输入预计总金额', totalController)),
|
|
|
|
VEmptyView(31),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: MyDivider(
|
|
|
|
double.infinity,
|
|
|
|
w(1),
|
|
|
|
color: MyColours.color_DBDBDB,
|
|
|
|
)),
|
|
|
|
Container(
|
|
|
|
padding: EdgeInsets.symmetric(vertical: w(10)),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: w(10), bottom: w(10), right: w(20)),
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
children: [
|
|
...
|
...
|
@@ -337,13 +684,22 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
),
|
|
|
|
),
|
|
|
|
VEmptyView(32),
|
|
|
|
_textMulLine('喜好', '点这里输入客户喜好的东西,请用逗号隔开。', likeController),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: _textMulLine(
|
|
|
|
'喜好', '点这里输入客户喜好的东西,请用逗号隔开。', likeController)),
|
|
|
|
VEmptyView(20),
|
|
|
|
_textMulLine(
|
|
|
|
'忌口', '点这里输入客户忌口的东西,请用逗号隔开。', noFoodController),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: _textMulLine(
|
|
|
|
'忌口', '点这里输入客户忌口的东西,请用逗号隔开。', noFoodController)),
|
|
|
|
VEmptyView(20),
|
|
|
|
_textMulLine('服务', '点这里输入客户需要的服务,如安静的包间、远离厕所等,请用逗号隔开。',
|
|
|
|
serviceController),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(right: w(20)),
|
|
|
|
child: _textMulLine(
|
|
|
|
'服务',
|
|
|
|
'点这里输入客户需要的服务,如安静的包间、远离厕所等,请用逗号隔开。',
|
|
|
|
serviceController)),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
...
|
...
|
@@ -393,10 +749,77 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
Expanded(
|
|
|
|
flex: 2,
|
|
|
|
child: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
NavigatorUtil.goOrderAdvanceEditPage(
|
|
|
|
context,
|
|
|
|
);
|
|
|
|
onTap: () async {
|
|
|
|
//调用排菜信息提交接口
|
|
|
|
Map<String, String> params = {
|
|
|
|
'sellerid':
|
|
|
|
Provider.of<UserModel>(context, listen: false)
|
|
|
|
.user
|
|
|
|
.sellerid,
|
|
|
|
'uid':
|
|
|
|
Provider.of<UserModel>(context, listen: false)
|
|
|
|
.user
|
|
|
|
.openid,
|
|
|
|
'rid': widget.rid,
|
|
|
|
};
|
|
|
|
if (_planDishProvider.planId != null &&
|
|
|
|
_planDishProvider.planId != '') {
|
|
|
|
//已经存在id,则修改
|
|
|
|
params['id'] = _planDishProvider.planId;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isTotal &&
|
|
|
|
totalController.text.trim().length > 0) {
|
|
|
|
//预计总价
|
|
|
|
params['total_price'] = totalController.text;
|
|
|
|
params['per_price'] = '0';
|
|
|
|
}
|
|
|
|
if (!isTotal &&
|
|
|
|
perController.text.trim().length > 0) {
|
|
|
|
//预计人均
|
|
|
|
params['per_price'] = perController.text;
|
|
|
|
params['total_price'] = '0';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (likeController.text.trim().length > 0) {
|
|
|
|
//喜好
|
|
|
|
params['like'] = likeController.text;
|
|
|
|
}
|
|
|
|
if (noFoodController.text.trim().length > 0) {
|
|
|
|
//忌口
|
|
|
|
params['taboos'] = noFoodController.text;
|
|
|
|
}
|
|
|
|
if (serviceController.text.trim().length > 0) {
|
|
|
|
//服务
|
|
|
|
params['serve'] = serviceController.text;
|
|
|
|
}
|
|
|
|
if (pnumController.text.trim().length > 0) {
|
|
|
|
params['pnum'] = pnumController.text;
|
|
|
|
}
|
|
|
|
params['plan_name'] = name ?? '';
|
|
|
|
|
|
|
|
// cooklist 字符串 可选 单点菜品列表
|
|
|
|
// package_list 字符串 可选 选中套餐数据,[{"id":1,"num":2},{"id":2,"num":1}]
|
|
|
|
// often_list 字符串 可选 选中店内常点数据,[{"id":1,"num":2},{"id":2,"num":1}]
|
|
|
|
// temporary_list 字符串 可选 临时加菜,[{"cook_name":"炒土豆丝","price":20,"num",1,"unit":"份","practice":"香辣"},{"cook_name":"麻婆豆腐","price":18,"num",1,"unit":"份","practice":"香辣"}]
|
|
|
|
// plan_list 字符串 可选 选中排菜数据,[{"id":1,"num":2},{"id":2,"num":1}]
|
|
|
|
// menu_price 浮点型 可选 菜单总价
|
|
|
|
// member_price 浮点型 可选 会员总价
|
|
|
|
// plan_price 浮点型 可选 排菜总价
|
|
|
|
// remark
|
|
|
|
|
|
|
|
bool success = await _planDishProvider
|
|
|
|
.setPlanCookByReserve(context, params);
|
|
|
|
if (success) {
|
|
|
|
NavigatorUtil.goOrderAdvanceEditPage(context,
|
|
|
|
planId: _planDishProvider.planId,
|
|
|
|
rid: widget.rid,
|
|
|
|
planCookByRidSunModel:
|
|
|
|
_planDishProvider.planCookByRidSunModel,
|
|
|
|
detailEntity: widget.detailEntity);
|
|
|
|
} else {
|
|
|
|
Utils.showToast('信息提交失败,请重试');
|
|
|
|
}
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
decoration: BoxDecoration(
|
|
...
|
...
|
@@ -423,8 +846,11 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
EdgeInsets.symmetric(horizontal: ScreenUtil().setHeight(40)),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
border: Border.all(
|
|
|
|
color:
|
|
|
|
true ? MyColours.color_999999 : MyColours.color_199095,
|
|
|
|
color: _planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.status ==
|
|
|
|
'2'
|
|
|
|
? MyColours.color_199095
|
|
|
|
: MyColours.color_999999,
|
|
|
|
width: ScreenUtil().setWidth(2)),
|
|
|
|
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
|
|
|
|
),
|
|
...
|
...
|
@@ -434,18 +860,55 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: _cancelAndChangeBtn(() {
|
|
|
|
NavigatorUtil.goOrderEditListShowPage(context);
|
|
|
|
child: _cancelAndChangeBtn(() async {
|
|
|
|
if (_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.status ==
|
|
|
|
'2') {
|
|
|
|
//已经提交过菜单,可查看
|
|
|
|
FocusScope.of(context)
|
|
|
|
.requestFocus(FocusNode()); //点击空白处隐藏键盘
|
|
|
|
Map temp =
|
|
|
|
await NavigatorUtil.goOrderEditListShowPage(
|
|
|
|
context,
|
|
|
|
object: {
|
|
|
|
'object':
|
|
|
|
_planDishProvider.menuModelForManager,
|
|
|
|
},
|
|
|
|
object1: {
|
|
|
|
'object1': _planDishProvider.storeList
|
|
|
|
},
|
|
|
|
object2: {
|
|
|
|
'object2': _planDishProvider.mineList
|
|
|
|
},
|
|
|
|
planPrice: _planDishProvider
|
|
|
|
.planCookByRidSunModel.planPrice,
|
|
|
|
planCookByRidSunModel:
|
|
|
|
_planDishProvider.planCookByRidSunModel,
|
|
|
|
detailEntity: widget.detailEntity,
|
|
|
|
needSubmmit: true,
|
|
|
|
rid: widget.rid,
|
|
|
|
planId: _planDishProvider.planId);
|
|
|
|
}
|
|
|
|
}, '查看排菜单',
|
|
|
|
fontColor: true
|
|
|
|
? MyColours.color_999999
|
|
|
|
: MyColours.color_199095)),
|
|
|
|
fontColor:
|
|
|
|
_planDishProvider.planCookByRidSunModel !=
|
|
|
|
null &&
|
|
|
|
_planDishProvider
|
|
|
|
.planCookByRidSunModel
|
|
|
|
.status ==
|
|
|
|
'2'
|
|
|
|
? MyColours.color_199095
|
|
|
|
: MyColours.color_999999)),
|
|
|
|
MyDivider(
|
|
|
|
ScreenUtil().setWidth(2),
|
|
|
|
ScreenUtil().setWidth(50),
|
|
|
|
color: true
|
|
|
|
? MyColours.color_999999
|
|
|
|
: MyColours.color_199095,
|
|
|
|
color:
|
|
|
|
_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider
|
|
|
|
.planCookByRidSunModel.status ==
|
|
|
|
'2'
|
|
|
|
? MyColours.color_199095
|
|
|
|
: MyColours.color_999999,
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: _cancelAndChangeBtn(() {
|
|
...
|
...
|
@@ -457,11 +920,222 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { |
|
|
|
// } else {
|
|
|
|
// _showCancelWidget(context);
|
|
|
|
// }
|
|
|
|
NavigatorUtil.goOrderPreviewPage(context);
|
|
|
|
if (_planDishProvider.planCookByRidSunModel != null &&
|
|
|
|
_planDishProvider.planCookByRidSunModel.status ==
|
|
|
|
'2') {
|
|
|
|
//提交过排菜单
|
|
|
|
|
|
|
|
FocusScope.of(context).requestFocus(
|
|
|
|
FocusNode()); //点击空白处隐藏键盘‘i7 8uuUUUUUUum'x\c []
|
|
|
|
List<MenuModel> showList = [];
|
|
|
|
List<MenuSunModel> dataLocalShowMore = []; //二级菜单
|
|
|
|
List<MenuModel> dataLocalShowOne = []; //一级菜单
|
|
|
|
|
|
|
|
if (_planDishProvider.menuModelForManager != null) {
|
|
|
|
_planDishProvider.menuModelForManager
|
|
|
|
.forEach((element) {
|
|
|
|
if (element.className == '套餐' ||
|
|
|
|
element.className == '我的排菜') {
|
|
|
|
// //如果是套餐,则看cooklist有没有选中的
|
|
|
|
// bool isChange = false; //套餐或者排菜数量是否选中
|
|
|
|
// if (element.className == '套餐') {
|
|
|
|
// isChange = _isChange(widget.storeList);
|
|
|
|
// } else {
|
|
|
|
// // isChange = _isChange(widget.storeList);
|
|
|
|
// }
|
|
|
|
|
|
|
|
element.cookbooklist.forEach((value) {
|
|
|
|
if (value.amount > 0) {
|
|
|
|
// if (!isChange) {
|
|
|
|
// priceSum += double.parse(value.price) * value.amount;
|
|
|
|
// memberPriceSum +=
|
|
|
|
// double.parse(value.member_price) * value.amount;
|
|
|
|
// }
|
|
|
|
//选中了该套餐
|
|
|
|
//把套餐中没有选中的菜品踢出去
|
|
|
|
MenuSunModel menuSunModel = MenuSunModel();
|
|
|
|
List<MenuModel> moreMenu = [];
|
|
|
|
int moreSum = 0;
|
|
|
|
//遍历套餐中的菜分类
|
|
|
|
value.cookList.forEach((cook) {
|
|
|
|
//遍历套餐中的具体菜品
|
|
|
|
List<MenuSunModel> cooklistSun = [];
|
|
|
|
int cookSum = 0;
|
|
|
|
cook.cookbooklist.forEach((cookSun) {
|
|
|
|
// 具体菜品
|
|
|
|
|
|
|
|
if (cookSun.amount > 0) {
|
|
|
|
//当前菜品已选择
|
|
|
|
// moreSum += cookSun.amount;
|
|
|
|
cookSum += cookSun.amount;
|
|
|
|
|
|
|
|
// if (isChange) {
|
|
|
|
// priceSum += double.parse(cookSun.price) * cookSun.amount;
|
|
|
|
// memberPriceSum +=
|
|
|
|
// double.parse(cookSun.member_price) * cookSun.amount;
|
|
|
|
// }
|
|
|
|
|
|
|
|
// carSum += cookSun.amount;
|
|
|
|
cooklistSun.add(cookSun);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (cooklistSun.length > 0) {
|
|
|
|
cook.cookbooklist = cooklistSun;
|
|
|
|
cook.allSum = cookSum;
|
|
|
|
moreMenu.add(cook);
|
|
|
|
value.cookList = moreMenu;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
value.moreSum = value.amount;
|
|
|
|
value.channel = element.className == '套餐'
|
|
|
|
? '1'
|
|
|
|
: '2'; // 1套餐----2排菜
|
|
|
|
dataLocalShowMore.add(value);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else if (element.className == '店内常点') {
|
|
|
|
// //如果是我的排菜,则看cooklist有没有选中的
|
|
|
|
|
|
|
|
// bool hasmMine =
|
|
|
|
// element.cookbooklist.any(((value) => value.amount > 0));
|
|
|
|
// if (hasmMine) {
|
|
|
|
// //套餐中有被选中
|
|
|
|
// maxIndex++;
|
|
|
|
// }
|
|
|
|
} else if (element.className == '临时加菜') {
|
|
|
|
} else {
|
|
|
|
//单菜
|
|
|
|
bool hasmMenu = element.cookbooklist
|
|
|
|
.any(((value) => value.amount > 0));
|
|
|
|
if (hasmMenu) {
|
|
|
|
//单品此类有选中菜品
|
|
|
|
MenuModel menuModel = MenuModel();
|
|
|
|
menuModel.className = element.className;
|
|
|
|
menuModel.classLabel = element.classLabel;
|
|
|
|
menuModel.classType = element.classType;
|
|
|
|
menuModel.id = element.id;
|
|
|
|
menuModel.order = element.order;
|
|
|
|
menuModel.sellerid = element.sellerid;
|
|
|
|
menuModel.status = element.status;
|
|
|
|
menuModel.cookbooklist = [];
|
|
|
|
List<MenuSunModel> cookbooklist = [];
|
|
|
|
int allSum = 0;
|
|
|
|
element.cookbooklist.forEach((value) {
|
|
|
|
if (value.amount > 0) {
|
|
|
|
allSum += value.amount;
|
|
|
|
// priceSum += double.parse(value.price) * value.amount;
|
|
|
|
// memberPriceSum +=
|
|
|
|
// double.parse(value.member_price) * value.amount;
|
|
|
|
// carSum += value.amount;
|
|
|
|
cookbooklist.add(value);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menuModel.allSum = allSum;
|
|
|
|
menuModel.cookbooklist.addAll(cookbooklist);
|
|
|
|
dataLocalShowOne.add(menuModel);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// planDishC.text = priceSum.toString();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
dataLocalShowMore.forEach((value) {
|
|
|
|
value.cookList.forEach((newValue) {
|
|
|
|
if (showList.length == 0) {
|
|
|
|
showList.add(
|
|
|
|
MenuModel.fromJson2(newValue.toJson()));
|
|
|
|
} else {
|
|
|
|
bool hasC = false;
|
|
|
|
showList.forEach((show) {
|
|
|
|
if (show.id == newValue.id) {
|
|
|
|
hasC = true;
|
|
|
|
//数据存在相同菜类
|
|
|
|
|
|
|
|
newValue.cookbooklist.forEach((newcook) {
|
|
|
|
bool has = false;
|
|
|
|
show.cookbooklist.forEach((oldshow) {
|
|
|
|
if (oldshow.id == newcook.id) {
|
|
|
|
//同一个菜品
|
|
|
|
has = true;
|
|
|
|
oldshow.amount += newcook.amount;
|
|
|
|
show.allSum += newcook.amount;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (!has) {
|
|
|
|
//旧的里面没有该菜品
|
|
|
|
show.cookbooklist.add(newcook);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (!hasC) {
|
|
|
|
showList.add(
|
|
|
|
MenuModel.fromJson2(newValue.toJson()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
print(showList);
|
|
|
|
|
|
|
|
dataLocalShowOne.forEach((element) {
|
|
|
|
if (showList.length == 0) {
|
|
|
|
showList
|
|
|
|
.add(MenuModel.fromJson2(element.toJson()));
|
|
|
|
} else {
|
|
|
|
bool hasC = false;
|
|
|
|
showList.forEach((show) {
|
|
|
|
if (show.id == element.id) {
|
|
|
|
hasC = true;
|
|
|
|
//数据存在相同菜类
|
|
|
|
|
|
|
|
element.cookbooklist.forEach((newcook) {
|
|
|
|
bool has = false;
|
|
|
|
show.cookbooklist.forEach((oldshow) {
|
|
|
|
if (oldshow.id == newcook.id) {
|
|
|
|
//同一个菜品
|
|
|
|
has = true;
|
|
|
|
oldshow.amount += newcook.amount;
|
|
|
|
show.allSum += newcook.amount;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (!has) {
|
|
|
|
//旧的里面没有该菜品
|
|
|
|
show.cookbooklist.add(newcook);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (!hasC) {
|
|
|
|
showList
|
|
|
|
.add(MenuModel.fromJson2(element.toJson()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
NavigatorUtil.goOrderPreviewPage(context,
|
|
|
|
object: {'object': showList},
|
|
|
|
name: _planDishProvider
|
|
|
|
.planCookByRidSunModel.planName,
|
|
|
|
remark: _planDishProvider
|
|
|
|
.planCookByRidSunModel.remark,
|
|
|
|
priceSum: _planDishProvider
|
|
|
|
.planCookByRidSunModel.menuPrice,
|
|
|
|
memberPriceSum: _planDishProvider
|
|
|
|
.planCookByRidSunModel.memberPrice,
|
|
|
|
planDishText: _planDishProvider
|
|
|
|
.planCookByRidSunModel.planPrice,
|
|
|
|
detailEntity: widget.detailEntity);
|
|
|
|
}
|
|
|
|
}, '分享排菜单',
|
|
|
|
fontColor: true
|
|
|
|
? MyColours.color_999999
|
|
|
|
: MyColours.color_199095)),
|
|
|
|
fontColor:
|
|
|
|
_planDishProvider.planCookByRidSunModel !=
|
|
|
|
null &&
|
|
|
|
_planDishProvider
|
|
|
|
.planCookByRidSunModel
|
|
|
|
.status ==
|
|
|
|
'2'
|
|
|
|
? MyColours.color_199095
|
|
|
|
: MyColours.color_999999)),
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
),
|
...
|
...
|
|