Commit 25ee3657cf40ca0cf908151cfcbb3041ed3be0bc

Authored by wdn127929
1 parent 88f32d67

查看排菜单

@@ -131,6 +131,27 @@ class NotebookDetail { @@ -131,6 +131,27 @@ class NotebookDetail {
131 return demand.substring(0, demand.length - 1); 131 return demand.substring(0, demand.length - 1);
132 } 132 }
133 133
  134 + String get ddateymd {
  135 + DateTime dateTime =
  136 + DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000);
  137 + String md = "${dateTime.year}-" +
  138 + Utils.addZeroNumber(dateTime.month) +
  139 + "-" +
  140 + Utils.addZeroNumber(dateTime.day);
  141 + switch (ddate_solt) {
  142 + case "1":
  143 + md += " 早餐";
  144 + break;
  145 + case "2":
  146 + md += " 午餐";
  147 + break;
  148 + case "3":
  149 + md += " 晚餐";
  150 + break;
  151 + }
  152 + return md;
  153 + }
  154 +
134 String get ddateMd { 155 String get ddateMd {
135 DateTime dateTime = 156 DateTime dateTime =
136 DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000); 157 DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000);
@@ -213,10 +234,10 @@ class NotebookDetail { @@ -213,10 +234,10 @@ class NotebookDetail {
213 if (type == "0" || (type == "1" && is_set_ddate == "1")) { 234 if (type == "0" || (type == "1" && is_set_ddate == "1")) {
214 DateTime dateTime = 235 DateTime dateTime =
215 DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000); 236 DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000);
216 - String Hm = Utils.addZeroNumber(dateTime.hour) + 237 + String hm = Utils.addZeroNumber(dateTime.hour) +
217 ":" + 238 ":" +
218 Utils.addZeroNumber(dateTime.minute); 239 Utils.addZeroNumber(dateTime.minute);
219 - return Hm; 240 + return hm;
220 } else { 241 } else {
221 return ""; 242 return "";
222 } 243 }
  1 +import 'dart:convert';
  2 +
  3 +import 'package:one_key/models/cookbook_model.dart';
  4 +
  5 +class PlanCookByRidModel {
  6 + int ret;
  7 + PlanCookByRidSunModel data;
  8 + String msg;
  9 +
  10 + PlanCookByRidModel({this.ret, this.data, this.msg});
  11 +
  12 + PlanCookByRidModel.fromJson(Map<String, dynamic> json) {
  13 + ret = json['ret'];
  14 + data = json['data'] != null
  15 + ? new PlanCookByRidSunModel.fromJson(json['data'])
  16 + : null;
  17 + msg = json['msg'];
  18 + }
  19 +
  20 + Map<String, dynamic> toJson() {
  21 + final Map<String, dynamic> data = new Map<String, dynamic>();
  22 + data['ret'] = this.ret;
  23 + if (this.data != null) {
  24 + data['data'] = this.data.toJson();
  25 + }
  26 + data['msg'] = this.msg;
  27 + return data;
  28 + }
  29 +}
  30 +
  31 +class PlanCookByRidSunModel {
  32 + String id;
  33 + String sellerid;
  34 + String rid;
  35 + String uid;
  36 + String pnum;
  37 + String perPrice;
  38 + String totalPrice;
  39 + String taboos;
  40 + String like;
  41 + String serve;
  42 + List<MenuModel> cooklist;
  43 + List<MenuSunModel> packageList;
  44 + // Null? oftenList;
  45 + // Null? temporaryList;
  46 + List<MenuSunModel> planList;
  47 + String menuPrice;
  48 + String memberPrice;
  49 + String planPrice;
  50 + String remark;
  51 + String cdate;
  52 +
  53 + String planName;
  54 + String status;
  55 +
  56 + PlanCookByRidSunModel(
  57 + {this.id,
  58 + this.sellerid,
  59 + this.rid,
  60 + this.uid,
  61 + this.pnum,
  62 + this.perPrice,
  63 + this.totalPrice,
  64 + this.taboos,
  65 + this.like,
  66 + this.serve,
  67 + this.cooklist,
  68 + this.packageList,
  69 + // this.oftenList,
  70 + // this.temporaryList,
  71 + this.planList,
  72 + this.menuPrice,
  73 + this.memberPrice,
  74 + this.planPrice,
  75 + this.remark,
  76 + this.cdate,
  77 + this.planName,
  78 + this.status});
  79 +
  80 + PlanCookByRidSunModel.fromJson(Map<String, dynamic> json1) {
  81 + id = json1['id'];
  82 + sellerid = json1['sellerid'];
  83 + rid = json1['rid'];
  84 + uid = json1['uid'];
  85 + pnum = json1['pnum'];
  86 + perPrice = json1['per_price'];
  87 + totalPrice = json1['total_price'];
  88 + taboos = json1['taboos'];
  89 + like = json1['like'];
  90 + serve = json1['serve'];
  91 + if (json1['cooklist'] != null && json1['cooklist'] != '') {
  92 + cooklist = <MenuModel>[];
  93 + if (json1['cooklist'] is List) {
  94 + json1['cooklist'].forEach((v) {
  95 + cooklist.add(new MenuModel.fromJson2(v));
  96 + });
  97 + } else {
  98 + json.decode(json1['cooklist']).forEach((v) {
  99 + cooklist.add(new MenuModel.fromJson2(v));
  100 + });
  101 + }
  102 + }
  103 + if (json1['package_list'] != null && json1['package_list'] != '') {
  104 + packageList = <MenuSunModel>[];
  105 + if (json1['package_list'] is List) {
  106 + json1['package_list'].forEach((v) {
  107 + packageList.add(new MenuSunModel.fromJson2(v));
  108 + });
  109 + } else {
  110 + json.decode(json1['package_list']).forEach((v) {
  111 + packageList.add(new MenuSunModel.fromJson2(v));
  112 + });
  113 + }
  114 + }
  115 + // oftenList = json['often_list'];
  116 + // temporaryList = json['temporary_list'];
  117 +
  118 + if (json1['plan_list'] != null && json1['plan_list'] != '') {
  119 + planList = <MenuSunModel>[];
  120 + if (json1['plan_list'] is List) {
  121 + json1['plan_list'].forEach((v) {
  122 + planList.add(new MenuSunModel.fromJson2(v));
  123 + });
  124 + } else {
  125 + json.decode(json1['plan_list']).forEach((v) {
  126 + planList.add(new MenuSunModel.fromJson2(v));
  127 + });
  128 + }
  129 + }
  130 + menuPrice = json1['menu_price'];
  131 + memberPrice = json1['member_price'];
  132 + planPrice = json1['plan_price'];
  133 + remark = json1['remark'];
  134 + cdate = json1['cdate'];
  135 + planName = json1['plan_name'];
  136 + status = json1['status'];
  137 + }
  138 +
  139 + Map<String, dynamic> toJson() {
  140 + final Map<String, dynamic> data = new Map<String, dynamic>();
  141 + data['id'] = this.id;
  142 + data['sellerid'] = this.sellerid;
  143 + data['rid'] = this.rid;
  144 + data['uid'] = this.uid;
  145 + data['pnum'] = this.pnum;
  146 + data['per_price'] = this.perPrice;
  147 + data['total_price'] = this.totalPrice;
  148 + data['taboos'] = this.taboos;
  149 + data['like'] = this.like;
  150 + data['serve'] = this.serve;
  151 + data['cooklist'] = this.cooklist;
  152 + data['package_list'] = this.packageList;
  153 + // data['often_list'] = this.oftenList;
  154 + // data['temporary_list'] = this.temporaryList;
  155 + data['plan_list'] = this.planList;
  156 + data['menu_price'] = this.menuPrice;
  157 + data['member_price'] = this.memberPrice;
  158 + data['plan_price'] = this.planPrice;
  159 + data['remark'] = this.remark;
  160 + data['cdate'] = this.cdate;
  161 + data['plan_name'] = this.planName;
  162 + data['status'] = this.status;
  163 +
  164 + return data;
  165 + }
  166 +}
@@ -343,9 +343,13 @@ class HttpUrl { @@ -343,9 +343,13 @@ class HttpUrl {
343 343
344 static const String get_plan_cook_list = 344 static const String get_plan_cook_list =
345 "?service=App.PlanCook.GetPlanCookList"; // 排菜/套餐列表 345 "?service=App.PlanCook.GetPlanCookList"; // 排菜/套餐列表
346 - static const String del_plan_cook = 346 + static const String del_plan_cook =
347 "?service=App.PlanCook.DelPlanCook"; // 删除排菜/套餐列表 347 "?service=App.PlanCook.DelPlanCook"; // 删除排菜/套餐列表
348 348
349 - 349 + static const String set_plan_cook_by_reserve =
  350 + "?service=App.PlanCook.SetPlanCookByReserve"; // 经理预订订单排菜
  351 +
  352 + static const String get_plan_cook_by_rid =
  353 + "?service=App.PlanCook.GetPlanCookByRid"; // 根据预定ID获取排菜
350 354
351 } 355 }
@@ -2618,8 +2618,9 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -2618,8 +2618,9 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
2618 onTap: () { 2618 onTap: () {
2619 NavigatorUtil 2619 NavigatorUtil
2620 .goOrderAdvanceHomePage( 2620 .goOrderAdvanceHomePage(
2621 - context,  
2622 - ); 2621 + context,
  2622 + detailEntity,
  2623 + widget.rid);
2623 }, 2624 },
2624 child: Container( 2625 child: Container(
2625 margin: EdgeInsets.only( 2626 margin: EdgeInsets.only(
@@ -2,6 +2,7 @@ import 'dart:convert'; @@ -2,6 +2,7 @@ import 'dart:convert';
2 2
3 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
4 import 'package:one_key/models/cookbook_model.dart'; 4 import 'package:one_key/models/cookbook_model.dart';
  5 +import 'package:one_key/models/plan_cook_by_rid_model.dart';
5 import 'package:one_key/models/plan_cook_list_model.dart'; 6 import 'package:one_key/models/plan_cook_list_model.dart';
6 import 'package:one_key/provider/plan_dish_provider.dart'; 7 import 'package:one_key/provider/plan_dish_provider.dart';
7 import 'package:one_key/utils/screen_util.dart'; 8 import 'package:one_key/utils/screen_util.dart';
@@ -20,13 +21,22 @@ import '../../../widgets/MyDivider.dart'; @@ -20,13 +21,22 @@ import '../../../widgets/MyDivider.dart';
20 import '../../../widgets/page_exception.dart'; 21 import '../../../widgets/page_exception.dart';
21 import '../../../widgets/round_button.dart'; 22 import '../../../widgets/round_button.dart';
22 import '../../models/cookbook_model.dart'; 23 import '../../models/cookbook_model.dart';
  24 +import '../../models/notebook_detail.dart';
23 import '../../provider/user_model.dart'; 25 import '../../provider/user_model.dart';
24 26
25 const scrollDuration = Duration(microseconds: 500); 27 const scrollDuration = Duration(microseconds: 500);
26 28
27 class OrderAdvanceEidtPage extends StatefulWidget { 29 class OrderAdvanceEidtPage extends StatefulWidget {
  30 + final String planId;
  31 + final String rid;
  32 + final PlanCookByRidSunModel planCookByRidSunModel;
  33 + final NotebookDetail detailEntity;
28 OrderAdvanceEidtPage({ 34 OrderAdvanceEidtPage({
29 Key key, 35 Key key,
  36 + this.planId,
  37 + this.rid,
  38 + this.planCookByRidSunModel,
  39 + this.detailEntity,
30 }) : super(key: key); 40 }) : super(key: key);
31 41
32 @override 42 @override
@@ -54,11 +64,17 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -54,11 +64,17 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
54 64
55 String planDishName; 65 String planDishName;
56 String planDishRemark; 66 String planDishRemark;
  67 + bool isCar = true;
57 68
58 @override 69 @override
59 void initState() { 70 void initState() {
60 super.initState(); 71 super.initState();
61 72
  73 + if (widget.planCookByRidSunModel != null) {
  74 + planDishName = widget.planCookByRidSunModel.planName ?? '';
  75 + planDishRemark = widget.planCookByRidSunModel.remark ?? '';
  76 + }
  77 +
62 WidgetsBinding.instance.addPostFrameCallback((_) async { 78 WidgetsBinding.instance.addPostFrameCallback((_) async {
63 _getPageMenuData(); 79 _getPageMenuData();
64 }); 80 });
@@ -72,6 +88,27 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -72,6 +88,27 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
72 if (results[0] && results[1]) { 88 if (results[0] && results[1]) {
73 _planDishProvider.menuModelForManager = 89 _planDishProvider.menuModelForManager =
74 List.from(_planDishProvider.menuModel); 90 List.from(_planDishProvider.menuModel);
  91 + //单个菜品
  92 + if (widget.planCookByRidSunModel != null &&
  93 + widget.planCookByRidSunModel.cooklist != null &&
  94 + widget.planCookByRidSunModel.cooklist.length > 0) {
  95 + _planDishProvider.menuModelForManager.forEach((old) {
  96 + widget.planCookByRidSunModel.cooklist.forEach((newvalue) {
  97 + if (old.id == newvalue.id) {
  98 + //同一分类
  99 + old.cookbooklist.forEach((oldcook) {
  100 + newvalue.cookbooklist.forEach((newcook) {
  101 + if (oldcook.id == newcook.id) {
  102 + //同一个菜
  103 + oldcook.amount = newcook.amount;
  104 + carSum += newcook.amount;
  105 + }
  106 + });
  107 + });
  108 + }
  109 + });
  110 + });
  111 + }
75 112
76 //成功 113 //成功
77 MenuModel menuModelSetMeal = MenuModel(); 114 MenuModel menuModelSetMeal = MenuModel();
@@ -92,6 +129,33 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -92,6 +129,33 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
92 // menuSunModel.amount = element.amount; 129 // menuSunModel.amount = element.amount;
93 menuSunModel.cookList = element.cookList; 130 menuSunModel.cookList = element.cookList;
94 131
  132 + if (widget.planCookByRidSunModel != null &&
  133 + widget.planCookByRidSunModel.packageList != null &&
  134 + widget.planCookByRidSunModel.packageList.length > 0) {
  135 + //套餐数据对应
  136 + widget.planCookByRidSunModel.packageList.forEach((package) {
  137 + if (package.id == menuSunModel.id) {
  138 + //同一个套餐
  139 + menuSunModel.amount = package.amount;
  140 + menuSunModel.cookList.forEach((oldcooklist) {
  141 + package.cookList.forEach((newcooklist) {
  142 + if (oldcooklist.id == newcooklist.id) {
  143 + //同一菜品分类
  144 + oldcooklist.cookbooklist.forEach((oldcook) {
  145 + newcooklist.cookbooklist.forEach((newcook) {
  146 + if (oldcook.id == newcook.id) {
  147 + oldcook.amount = newcook.amount;
  148 + carSum += newcook.amount;
  149 + }
  150 + });
  151 + });
  152 + }
  153 + });
  154 + });
  155 + }
  156 + });
  157 + }
  158 +
95 cookList.add(menuSunModel); 159 cookList.add(menuSunModel);
96 } 160 }
97 }); 161 });
@@ -116,6 +180,33 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -116,6 +180,33 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
116 // menuSunModel.amount = element.amount; 180 // menuSunModel.amount = element.amount;
117 menuSunModel.cookList = element.cookList; 181 menuSunModel.cookList = element.cookList;
118 182
  183 + if (widget.planCookByRidSunModel != null &&
  184 + widget.planCookByRidSunModel.planList != null &&
  185 + widget.planCookByRidSunModel.planList.length > 0) {
  186 + //排菜数据对应
  187 + widget.planCookByRidSunModel.planList.forEach((package) {
  188 + if (package.id == menuSunModel.id) {
  189 + //同一个排菜
  190 + menuSunModel.amount = package.amount;
  191 + menuSunModel.cookList.forEach((oldcooklist) {
  192 + package.cookList.forEach((newcooklist) {
  193 + if (oldcooklist.id == newcooklist.id) {
  194 + //同一菜品分类
  195 + oldcooklist.cookbooklist.forEach((oldcook) {
  196 + newcooklist.cookbooklist.forEach((newcook) {
  197 + if (oldcook.id == newcook.id) {
  198 + oldcook.amount = newcook.amount;
  199 + carSum += newcook.amount;
  200 + }
  201 + });
  202 + });
  203 + }
  204 + });
  205 + });
  206 + }
  207 + });
  208 + }
  209 +
119 cookListPlanDish.add(menuSunModel); 210 cookListPlanDish.add(menuSunModel);
120 } 211 }
121 }); 212 });
@@ -123,6 +214,12 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -123,6 +214,12 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
123 214
124 _planDishProvider.menuModelForManager 215 _planDishProvider.menuModelForManager
125 .insert(1, menuModelPlanDish); //添加排菜 216 .insert(1, menuModelPlanDish); //添加排菜
  217 + if (widget.planCookByRidSunModel != null &&
  218 + widget.planCookByRidSunModel.planPrice != null) {
  219 + _calculatePrice(planPrice: widget.planCookByRidSunModel.planPrice);
  220 + } else {
  221 + _calculatePrice();
  222 + }
126 _planDishProvider.pageStateMenu = PageState.Success; 223 _planDishProvider.pageStateMenu = PageState.Success;
127 224
128 setState(() {}); 225 setState(() {});
@@ -134,6 +231,12 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -134,6 +231,12 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
134 } 231 }
135 _planDishProvider.pageStateMenu = PageState.ConnectivityError; 232 _planDishProvider.pageStateMenu = PageState.ConnectivityError;
136 } 233 }
  234 + if (widget.planCookByRidSunModel.status == '1' ||
  235 + widget.planCookByRidSunModel.status == null) {
  236 + isCar = true;
  237 + } else {
  238 + isCar = false;
  239 + }
137 }).catchError((e) { 240 }).catchError((e) {
138 print(e); 241 print(e);
139 }); 242 });
@@ -373,6 +476,86 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -373,6 +476,86 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
373 }); 476 });
374 } 477 }
375 478
  479 + //提交接口
  480 + Future<bool> setPlanCookByReserve() async {
  481 + Map<String, String> params = {
  482 + 'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid,
  483 + 'uid': Provider.of<UserModel>(context, listen: false).user.openid,
  484 + 'rid': widget.rid,
  485 + };
  486 + if (widget.planId != null && widget.planId != '') {
  487 + //已经存在id,则修改
  488 + params['id'] = widget.planId;
  489 + }
  490 + //单品
  491 + List<MenuModel> cooklistdata = [];
  492 + _planDishProvider.menuModelForManager.forEach((element) {
  493 + if (element.className == '套餐') {
  494 + List<MenuSunModel> packagelist = [];
  495 + element.cookbooklist.forEach((cooklist) {
  496 + if (cooklist.amount > 0) {
  497 + packagelist.add(cooklist);
  498 + }
  499 + });
  500 + if (packagelist.length > 0) {
  501 + params['package_list'] = json.encode(packagelist);
  502 + } else {
  503 + params['package_list'] = null;
  504 + }
  505 + } else if (element.className == '我的排菜') {
  506 + List<MenuSunModel> planlist = [];
  507 + element.cookbooklist.forEach((cooklist) {
  508 + if (cooklist.amount > 0) {
  509 + planlist.add(cooklist);
  510 + }
  511 + });
  512 + if (planlist.length > 0) {
  513 + params['plan_list'] = json.encode(planlist);
  514 + } else {
  515 + params['plan_list'] = null;
  516 + }
  517 + } else {
  518 + //单品
  519 + cooklistdata.add(element);
  520 + }
  521 + if (cooklistdata.length > 0) {
  522 + cooklistdata.forEach((cooklist) {
  523 + cooklist.cookbooklist.removeWhere((element) => element.amount == 0);
  524 + });
  525 + if (cooklistdata.length > 0) {
  526 + params['cooklist'] = json.encode(cooklistdata);
  527 + } else {
  528 + params['cooklist'] = null;
  529 + }
  530 + }
  531 + });
  532 +
  533 + params['menu_price'] = priceSum.toString();
  534 + params['member_price'] = memberPriceSum.toString();
  535 + params['plan_price'] = planDishC.text;
  536 + params['remark'] = planDishRemark ?? "";
  537 + params['plan_name'] = planDishName ?? "";
  538 + if (isCar) {
  539 + params['status'] = '1';
  540 + } else {
  541 + params['status'] = '2';
  542 + }
  543 +
  544 +// cooklist 字符串 可选 单点菜品列表
  545 +// package_list 字符串 可选 选中套餐数据,[{"id":1,"num":2},{"id":2,"num":1}]
  546 +// often_list 字符串 可选 选中店内常点数据,[{"id":1,"num":2},{"id":2,"num":1}]
  547 +// temporary_list 字符串 可选 临时加菜,[{"cook_name":"炒土豆丝","price":20,"num",1,"unit":"份","practice":"香辣"},{"cook_name":"麻婆豆腐","price":18,"num",1,"unit":"份","practice":"香辣"}]
  548 +// plan_list 字符串 可选 选中排菜数据,[{"id":1,"num":2},{"id":2,"num":1}]
  549 +// menu_price 浮点型 可选 菜单总价
  550 +// member_price 浮点型 可选 会员总价
  551 +// plan_price 浮点型 可选 排菜总价
  552 +//
  553 +
  554 + bool success =
  555 + await _planDishProvider.setPlanCookByReserve(context, params);
  556 + return success;
  557 + }
  558 +
376 //计算价格 559 //计算价格
377 _calculatePrice({String planPrice}) { 560 _calculatePrice({String planPrice}) {
378 priceSum = 0; 561 priceSum = 0;
@@ -1061,7 +1244,10 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -1061,7 +1244,10 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
1061 object2: { 1244 object2: {
1062 'object2': _planDishProvider.mineList 1245 'object2': _planDishProvider.mineList
1063 }, 1246 },
1064 - planPrice: planDishC.text); 1247 + planPrice: planDishC.text,
  1248 + planCookByRidSunModel:
  1249 + widget.planCookByRidSunModel,
  1250 + detailEntity: widget.detailEntity);
1065 // } else { 1251 // } else {
1066 // temp = 1252 // temp =
1067 // await NavigatorUtil.goPlanNewDishPage( 1253 // await NavigatorUtil.goPlanNewDishPage(
@@ -1168,9 +1354,22 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -1168,9 +1354,22 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
1168 borderColor: MyColours.color_438E93, 1354 borderColor: MyColours.color_438E93,
1169 textColor: MyColours.color_438E93, 1355 textColor: MyColours.color_438E93,
1170 isBold: false, 1356 isBold: false,
1171 - onPressed: () {  
1172 - FocusScope.of(context)  
1173 - .requestFocus(FocusNode()); //点击空白处隐藏键盘 1357 + onPressed: () async {
  1358 + if (carSum == 0) {
  1359 + Utils.showToast('请选择菜品');
  1360 + return;
  1361 + }
  1362 + if (isCar) {
  1363 + bool success = await setPlanCookByReserve();
  1364 + if (!success) {
  1365 + return;
  1366 + }
  1367 + }
  1368 + //调用提交排菜接口
  1369 + //调用排菜信息提交接口
  1370 +
  1371 + FocusScope.of(context).requestFocus(
  1372 + FocusNode()); //点击空白处隐藏键盘‘i7 8uuUUUUUUum'x\c []
1174 List<MenuModel> showList = []; 1373 List<MenuModel> showList = [];
1175 List<MenuSunModel> dataLocalShowMore = []; //二级菜单 1374 List<MenuSunModel> dataLocalShowMore = []; //二级菜单
1176 List<MenuModel> dataLocalShowOne = []; //一级菜单 1375 List<MenuModel> dataLocalShowOne = []; //一级菜单
@@ -1368,7 +1567,8 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -1368,7 +1567,8 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
1368 remark: planDishRemark, 1567 remark: planDishRemark,
1369 priceSum: priceSum.toString(), 1568 priceSum: priceSum.toString(),
1370 memberPriceSum: memberPriceSum.toString(), 1569 memberPriceSum: memberPriceSum.toString(),
1371 - planDishText: planDishC.text); 1570 + planDishText: planDishC.text,
  1571 + detailEntity: widget.detailEntity);
1372 }, 1572 },
1373 ), 1573 ),
1374 RoundButton( 1574 RoundButton(
@@ -1380,8 +1580,19 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -1380,8 +1580,19 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
1380 radius: r(5), 1580 radius: r(5),
1381 fontSize: 36, 1581 fontSize: 36,
1382 isBold: false, 1582 isBold: false,
1383 - onPressed: () {  
1384 - Navigator.pop(context); 1583 + onPressed: () async {
  1584 + if (carSum == 0) {
  1585 + Utils.showToast('请选择菜品');
  1586 + return;
  1587 + }
  1588 + //调用提交排菜接口
  1589 + //调用排菜信息提交接口
  1590 + isCar = false;
  1591 + bool success = await setPlanCookByReserve();
  1592 + if (success) {
  1593 + Navigator.pop(context);
  1594 + }
  1595 + // Navigator.pop(context);
1385 // NavigatorUtil.goFinalPlanDishPage(context); 1596 // NavigatorUtil.goFinalPlanDishPage(context);
1386 }, 1597 },
1387 ) 1598 )
@@ -1391,7 +1602,7 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> { @@ -1391,7 +1602,7 @@ class _OrderAdvanceEidtPageState extends State<OrderAdvanceEidtPage> {
1391 ); 1602 );
1392 } else { 1603 } else {
1393 return ExceptionPage( 1604 return ExceptionPage(
1394 - pageState: model.pageState, 1605 + pageState: model.pageStateMenu,
1395 emptyMsg: '暂时没有菜单哦', 1606 emptyMsg: '暂时没有菜单哦',
1396 callback: () { 1607 callback: () {
1397 _getCookbookByClass(); 1608 _getCookbookByClass();
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
  2 +import 'package:flutter/services.dart';
2 import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; 3 import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
3 import 'package:flutter_screenutil/flutter_screenutil.dart'; 4 import 'package:flutter_screenutil/flutter_screenutil.dart';
  5 +import 'package:one_key/provider/user_model.dart';
4 import 'package:one_key/route/navigator_util.dart'; 6 import 'package:one_key/route/navigator_util.dart';
5 import 'package:one_key/utils/utils.dart'; 7 import 'package:one_key/utils/utils.dart';
6 import 'package:one_key/widgets/MyDivider.dart'; 8 import 'package:one_key/widgets/MyDivider.dart';
7 import 'package:one_key/widgets/h_empty_view.dart'; 9 import 'package:one_key/widgets/h_empty_view.dart';
8 import 'package:one_key/widgets/system_app_bar.dart'; 10 import 'package:one_key/widgets/system_app_bar.dart';
9 import 'package:one_key/widgets/v_empty_view.dart'; 11 import 'package:one_key/widgets/v_empty_view.dart';
  12 +import 'package:provider/provider.dart';
10 13
11 import '../../../res/colors.dart'; 14 import '../../../res/colors.dart';
12 import '../../../utils/screen_util.dart'; 15 import '../../../utils/screen_util.dart';
13 import '../../../widgets/round_button.dart'; 16 import '../../../widgets/round_button.dart';
  17 +import '../../constant/state.dart';
  18 +import '../../models/cookbook_model.dart';
  19 +import '../../models/notebook_detail.dart';
  20 +import '../../models/plan_cook_list_model.dart';
  21 +import '../../provider/plan_dish_provider.dart';
  22 +import '../../utils/event_bus.dart';
14 23
15 /** 24 /**
16 * 订座详情---预点菜入口 25 * 订座详情---预点菜入口
17 */ 26 */
18 27
19 class OrderAdvanceHomePage extends StatefulWidget { 28 class OrderAdvanceHomePage extends StatefulWidget {
20 - OrderAdvanceHomePage({Key key}) : super(key: key); 29 + final NotebookDetail detailEntity;
  30 + final String rid;
  31 + OrderAdvanceHomePage({Key key, this.detailEntity, this.rid})
  32 + : super(key: key);
21 33
22 @override 34 @override
23 _OrderAdvanceHomePageState createState() => _OrderAdvanceHomePageState(); 35 _OrderAdvanceHomePageState createState() => _OrderAdvanceHomePageState();
@@ -28,27 +40,318 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -28,27 +40,318 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
28 TextEditingController likeController = TextEditingController(); 40 TextEditingController likeController = TextEditingController();
29 41
30 TextEditingController serviceController = TextEditingController(); 42 TextEditingController serviceController = TextEditingController();
  43 + TextEditingController pnumController = TextEditingController();
  44 + bool isTotal = false; //默认人均
  45 + TextEditingController totalController = TextEditingController(); //预计总计
  46 + TextEditingController perController = TextEditingController(); //人均消费
  47 + PlanDishProvider _planDishProvider;
  48 + String name;
31 49
32 @override 50 @override
33 void initState() { 51 void initState() {
34 super.initState(); 52 super.initState();
  53 + pnumController.text = widget.detailEntity.actual_pum;
  54 + WidgetsBinding.instance.addPostFrameCallback((_) async {
  55 + _getPlanCookByRid();
  56 + _getPageMenuData();
  57 + bus.on("refresh_order_advance_home", (args) {
  58 + _getPlanCookByRid();
  59 + _getPageMenuData();
  60 + });
  61 + });
35 } 62 }
36 63
37 - Widget _selectItem(String title, bool select, String hintText,  
38 - TextEditingController controller) { 64 + @override
  65 + void dispose() {
  66 + super.dispose();
  67 + bus.off("refresh_order_advance_home");
  68 + }
  69 +
  70 + _getPlanCookByRid() async {
  71 + await _planDishProvider.getPlanCookByRid(context, {'rid': widget.rid});
  72 + if (_planDishProvider.planCookByRidSunModel != null) {
  73 + pnumController.text = _planDishProvider.planCookByRidSunModel.pnum;
  74 + if (_planDishProvider.planCookByRidSunModel.totalPrice != '0' &&
  75 + _planDishProvider.planCookByRidSunModel.totalPrice != null) {
  76 + //选中总计
  77 + isTotal = true;
  78 + totalController.text =
  79 + _planDishProvider.planCookByRidSunModel.totalPrice;
  80 + } else if (_planDishProvider.planCookByRidSunModel.perPrice != '0' &&
  81 + _planDishProvider.planCookByRidSunModel.perPrice != null) {
  82 + //选中人均
  83 + isTotal = false;
  84 + perController.text = _planDishProvider.planCookByRidSunModel.perPrice;
  85 + }
  86 + likeController.text = _planDishProvider.planCookByRidSunModel.like ?? "";
  87 + noFoodController.text =
  88 + _planDishProvider.planCookByRidSunModel.taboos ?? '';
  89 + serviceController.text =
  90 + _planDishProvider.planCookByRidSunModel.serve ?? '';
  91 + name = _planDishProvider.planCookByRidSunModel.planName ?? "";
  92 + }
  93 + setState(() {});
  94 + }
  95 +
  96 + _getPageMenuData() async {
  97 + Future.wait<bool>(
  98 + [_getCookbookByClass(showLoading: true), _getPlanCookList()])
  99 + .then((results) {
  100 + print(results[0]);
  101 + if (results[0] && results[1]) {
  102 + _planDishProvider.menuModelForManager =
  103 + List.from(_planDishProvider.menuModel);
  104 + //单个菜品
  105 + if (_planDishProvider.planCookByRidSunModel != null &&
  106 + _planDishProvider.planCookByRidSunModel.cooklist != null &&
  107 + _planDishProvider.planCookByRidSunModel.cooklist.length > 0) {
  108 + _planDishProvider.menuModelForManager.forEach((old) {
  109 + _planDishProvider.planCookByRidSunModel.cooklist
  110 + .forEach((newvalue) {
  111 + if (old.id == newvalue.id) {
  112 + //同一分类
  113 + old.cookbooklist.forEach((oldcook) {
  114 + newvalue.cookbooklist.forEach((newcook) {
  115 + if (oldcook.id == newcook.id) {
  116 + //同一个菜
  117 + oldcook.amount = newcook.amount;
  118 + }
  119 + });
  120 + });
  121 + }
  122 + });
  123 + });
  124 + }
  125 +
  126 + //成功
  127 + MenuModel menuModelSetMeal = MenuModel();
  128 + menuModelSetMeal.className = '套餐';
  129 + menuModelSetMeal.isChange = false;
  130 + List<MenuSunModel> cookList = [];
  131 + List<SunListPlan> storeList = _planDishProvider.storeListTemp;
  132 +
  133 + storeList.forEach((element) {
  134 + if (element.status == '1') {
  135 + MenuSunModel menuSunModel = MenuSunModel();
  136 + menuSunModel.id = element.id;
  137 + menuSunModel.name = element.pname;
  138 + // menuSunModel.price = element.menuPrice;
  139 + menuSunModel.price = element.planPrice;
  140 + menuSunModel.member_price = element.memberPrice;
  141 + menuSunModel.unit = '份';
  142 + // menuSunModel.amount = element.amount;
  143 + menuSunModel.cookList = element.cookList;
  144 +
  145 + if (_planDishProvider.planCookByRidSunModel != null &&
  146 + _planDishProvider.planCookByRidSunModel.packageList != null &&
  147 + _planDishProvider.planCookByRidSunModel.packageList.length >
  148 + 0) {
  149 + //套餐数据对应
  150 + _planDishProvider.planCookByRidSunModel.packageList
  151 + .forEach((package) {
  152 + if (package.id == menuSunModel.id) {
  153 + //同一个套餐
  154 + menuSunModel.amount = package.amount;
  155 + menuSunModel.cookList.forEach((oldcooklist) {
  156 + package.cookList.forEach((newcooklist) {
  157 + if (oldcooklist.id == newcooklist.id) {
  158 + //同一菜品分类
  159 + oldcooklist.cookbooklist.forEach((oldcook) {
  160 + newcooklist.cookbooklist.forEach((newcook) {
  161 + if (oldcook.id == newcook.id) {
  162 + oldcook.amount = newcook.amount;
  163 + }
  164 + });
  165 + });
  166 + }
  167 + });
  168 + });
  169 + }
  170 + });
  171 + }
  172 +
  173 + cookList.add(menuSunModel);
  174 + }
  175 + });
  176 + menuModelSetMeal.cookbooklist = cookList;
  177 +
  178 + _planDishProvider.menuModelForManager
  179 + .insert(0, menuModelSetMeal); //添加套餐
  180 +
  181 + MenuModel menuModelPlanDish = MenuModel();
  182 + menuModelPlanDish.className = '我的排菜';
  183 + menuModelPlanDish.isChange = false;
  184 + List<MenuSunModel> cookListPlanDish = [];
  185 + List<SunListPlan> mineList = _planDishProvider.mineListTemp;
  186 + mineList.forEach((element) {
  187 + if (element.status == '1') {
  188 + MenuSunModel menuSunModel = MenuSunModel();
  189 + menuSunModel.id = element.id;
  190 + menuSunModel.name = element.pname;
  191 + menuSunModel.price = element.menuPrice;
  192 + menuSunModel.member_price = element.memberPrice;
  193 + menuSunModel.unit = '份';
  194 + // menuSunModel.amount = element.amount;
  195 + menuSunModel.cookList = element.cookList;
  196 +
  197 + if (_planDishProvider.planCookByRidSunModel != null &&
  198 + _planDishProvider.planCookByRidSunModel.planList != null &&
  199 + _planDishProvider.planCookByRidSunModel.planList.length > 0) {
  200 + //排菜数据对应
  201 + _planDishProvider.planCookByRidSunModel.planList
  202 + .forEach((package) {
  203 + if (package.id == menuSunModel.id) {
  204 + //同一个排菜
  205 + menuSunModel.amount = package.amount;
  206 + menuSunModel.cookList.forEach((oldcooklist) {
  207 + package.cookList.forEach((newcooklist) {
  208 + if (oldcooklist.id == newcooklist.id) {
  209 + //同一菜品分类
  210 + oldcooklist.cookbooklist.forEach((oldcook) {
  211 + newcooklist.cookbooklist.forEach((newcook) {
  212 + if (oldcook.id == newcook.id) {
  213 + oldcook.amount = newcook.amount;
  214 + }
  215 + });
  216 + });
  217 + }
  218 + });
  219 + });
  220 + }
  221 + });
  222 + }
  223 +
  224 + cookListPlanDish.add(menuSunModel);
  225 + }
  226 + });
  227 + menuModelPlanDish.cookbooklist = cookListPlanDish;
  228 +
  229 + _planDishProvider.menuModelForManager
  230 + .insert(1, menuModelPlanDish); //添加排菜
  231 + // if (_planDishProvider.planCookByRidSunModel != null &&
  232 + // _planDishProvider.planCookByRidSunModel.planPrice != null) {
  233 + // _calculatePrice(planPrice: _planDishProvider.planCookByRidSunModel.planPrice);
  234 + // } else {
  235 + // _calculatePrice();
  236 + // }
  237 + _planDishProvider.pageStateMenu = PageState.Success;
  238 +
  239 + setState(() {});
  240 + } else {
  241 + if (!results[0]) {
  242 + // Utils.showToast('');
  243 + } else {
  244 + // Utils.showToast('');
  245 + }
  246 + _planDishProvider.pageStateMenu = PageState.ConnectivityError;
  247 + }
  248 + }).catchError((e) {
  249 + print(e);
  250 + });
  251 + }
  252 +
  253 + ///菜品数据
  254 +
  255 + Future<bool> _getCookbookByClass({bool showLoading = true}) async {
  256 + Map<String, String> params = {
  257 + "sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  258 + };
  259 +
  260 + bool success = await _planDishProvider.getCookbookByClass(context, params,
  261 + showLoading: showLoading);
  262 + if (success) {
  263 + return true;
  264 + } else {
  265 + return false;
  266 + }
  267 + // print(widget.data);
  268 +
  269 + // if (widget.data.length > 0) {
  270 + // widget.data.forEach((old) {
  271 + // _planDishProvider.menuModel.forEach((element) {
  272 + // if (old.id == element.id) {
  273 + // element.cookbooklist.forEach((value) {
  274 + // old.cookbooklist.forEach((oldCook) {
  275 + // if (oldCook.id == value.id) {
  276 + // value.amount = oldCook.amount;
  277 + // if (oldCook.amount > 0) {
  278 + // carSum += oldCook.amount;
  279 + // priceSum += double.parse(oldCook.price) * oldCook.amount;
  280 + // memberPriceSum +=
  281 + // double.parse(oldCook.member_price) * oldCook.amount;
  282 + // }
  283 + // }
  284 + // });
  285 + // });
  286 + // }
  287 + // });
  288 + // });
  289 + // if (widget.planDishPrice != '' && widget.planDishPrice != null) {
  290 + // planDishC.text = widget.planDishPrice;
  291 + // } else {
  292 + // planDishC.text = '${priceSum}';
  293 + // }
  294 +
  295 + // setState(() {});
  296 + // }
  297 + }
  298 +
  299 + ///排菜/套餐列表
  300 +
  301 + Future<bool> _getPlanCookList({bool isShowLoading = true}) async {
  302 + Map<String, String> params = {
  303 + "uid": Provider.of<UserModel>(context, listen: false).user.openid,
  304 + // 'is_time': '0'
  305 + "sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  306 + };
  307 + bool success = await _planDishProvider.getPlanCookList(context, params,
  308 + showLoading: isShowLoading);
  309 + if (success) {
  310 + return true;
  311 + } else {
  312 + return false;
  313 + }
  314 + }
  315 +
  316 + Widget _selectItem(
  317 + String title,
  318 + bool select,
  319 + String hintText,
  320 + TextEditingController controller,
  321 + ) {
39 return Row( 322 return Row(
40 children: [ 323 children: [
41 - HEmptyView(86),  
42 - Image.asset(  
43 - Utils.getImgPath(  
44 - select ? 'plan_dish_select' : 'plan_dish_unselect'),  
45 - width: w(20)),  
46 - HEmptyView(10),  
47 - Text(  
48 - title,  
49 - style: TextStyle(fontSize: font(16), color: MyColours.color_515151), 324 + InkWell(
  325 + onTap: () {
  326 + if (title == '预计人均' && !isTotal) {
  327 + return;
  328 + }
  329 + if (title == '预计总价' && isTotal) {
  330 + return;
  331 + }
  332 + setState(() {
  333 + isTotal = !isTotal;
  334 + });
  335 + },
  336 + child: Container(
  337 + padding: EdgeInsets.symmetric(vertical: w(8)),
  338 + child: Row(
  339 + children: [
  340 + HEmptyView(86),
  341 + Image.asset(
  342 + Utils.getImgPath(
  343 + select ? 'plan_dish_select' : 'plan_dish_unselect'),
  344 + width: w(20)),
  345 + HEmptyView(10),
  346 + Text(
  347 + title,
  348 + style: TextStyle(
  349 + fontSize: font(16), color: MyColours.color_515151),
  350 + ),
  351 + HEmptyView(20),
  352 + ],
  353 + )),
50 ), 354 ),
51 - HEmptyView(20),  
52 select 355 select
53 ? Expanded( 356 ? Expanded(
54 child: TextField( 357 child: TextField(
@@ -197,6 +500,7 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -197,6 +500,7 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
197 500
198 @override 501 @override
199 Widget build(BuildContext context) { 502 Widget build(BuildContext context) {
  503 + _planDishProvider = Provider.of<PlanDishProvider>(context, listen: true);
200 return KeyboardDismissOnTap( 504 return KeyboardDismissOnTap(
201 // dismissOnCapturedTaps: true, 505 // dismissOnCapturedTaps: true,
202 child: Scaffold( 506 child: Scaffold(
@@ -208,12 +512,13 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -208,12 +512,13 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
208 child: SingleChildScrollView( 512 child: SingleChildScrollView(
209 // controller: controller, 513 // controller: controller,
210 child: Padding( 514 child: Padding(
211 - padding: EdgeInsets.symmetric(horizontal: w(20)), 515 + padding: EdgeInsets.only(left: w(20)),
212 child: Column( 516 child: Column(
213 crossAxisAlignment: CrossAxisAlignment.start, 517 crossAxisAlignment: CrossAxisAlignment.start,
214 children: [ 518 children: [
215 Container( 519 Container(
216 height: w(48), 520 height: w(48),
  521 + padding: EdgeInsets.only(right: w(20)),
217 child: Row( 522 child: Row(
218 children: [ 523 children: [
219 Text( 524 Text(
@@ -224,7 +529,7 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -224,7 +529,7 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
224 ), 529 ),
225 Spacer(), 530 Spacer(),
226 Text( 531 Text(
227 - '2022-11-08 午餐', 532 + widget.detailEntity.ddateymd,
228 style: TextStyle( 533 style: TextStyle(
229 fontSize: font(16), 534 fontSize: font(16),
230 color: MyColours.color_99515151), 535 color: MyColours.color_99515151),
@@ -232,11 +537,13 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -232,11 +537,13 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
232 ], 537 ],
233 ), 538 ),
234 ), 539 ),
235 - MyDivider(  
236 - double.infinity,  
237 - w(1),  
238 - color: MyColours.color_DBDBDB,  
239 - ), 540 + Padding(
  541 + padding: EdgeInsets.only(right: w(20)),
  542 + child: MyDivider(
  543 + double.infinity,
  544 + w(1),
  545 + color: MyColours.color_DBDBDB,
  546 + )),
240 Container( 547 Container(
241 height: w(48), 548 height: w(48),
242 child: Row( 549 child: Row(
@@ -248,19 +555,36 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -248,19 +555,36 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
248 color: MyColours.color_515151), 555 color: MyColours.color_515151),
249 ), 556 ),
250 Spacer(), 557 Spacer(),
251 - Image.asset(  
252 - Utils.getImgPath('plan_dish_minus'),  
253 - width: w(16),  
254 - ), 558 + InkWell(
  559 + onTap: () {
  560 + int temp = int.parse(pnumController.text);
  561 + if (temp == 0) {
  562 + return;
  563 + }
  564 + temp--;
  565 + pnumController.text = temp.toString();
  566 + },
  567 + child: Container(
  568 + height: w(48),
  569 + padding: EdgeInsets.only(
  570 + left: w(40),
  571 + ),
  572 + child: Image.asset(
  573 + Utils.getImgPath('plan_dish_minus'),
  574 + width: w(16),
  575 + ))),
255 Container( 576 Container(
256 width: w(50), 577 width: w(50),
257 // constraints: BoxConstraints(minWidth: w(20)), 578 // constraints: BoxConstraints(minWidth: w(20)),
258 child: TextField( 579 child: TextField(
259 maxLines: 1, 580 maxLines: 1,
260 - // controller: 581 + controller: pnumController,
261 // focusNode: _focusNode, 582 // focusNode: _focusNode,
262 // autofocus: true, 583 // autofocus: true,
263 - 584 + inputFormatters: [
  585 + FilteringTextInputFormatter.allow(
  586 + RegExp(r'[0-9]')),
  587 + ],
264 style: TextStyle( 588 style: TextStyle(
265 color: MyColours.color_438E93, 589 color: MyColours.color_438E93,
266 fontSize: font(16)), 590 fontSize: font(16)),
@@ -295,9 +619,24 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -295,9 +619,24 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
295 // _focusNode.unfocus(); 619 // _focusNode.unfocus();
296 }, 620 },
297 )), 621 )),
298 - Image.asset(  
299 - Utils.getImgPath('plan_dish_add'),  
300 - width: w(16), 622 + InkWell(
  623 + onTap: () {
  624 + int temp = int.parse(pnumController.text == ''
  625 + ? '0'
  626 + : pnumController.text);
  627 + temp++;
  628 + pnumController.text = temp.toString();
  629 + },
  630 + child: Container(
  631 + height: w(48),
  632 + // color: Colors.red,
  633 + padding: EdgeInsets.only(
  634 + right: w(20),
  635 + ),
  636 + child: Image.asset(
  637 + Utils.getImgPath('plan_dish_add'),
  638 + width: w(16),
  639 + )),
301 ), 640 ),
302 ], 641 ],
303 ), 642 ),
@@ -308,18 +647,26 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -308,18 +647,26 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
308 style: TextStyle( 647 style: TextStyle(
309 fontSize: font(16), color: MyColours.color_515151), 648 fontSize: font(16), color: MyColours.color_515151),
310 ), 649 ),
311 - VEmptyView(48),  
312 - _selectItem('预计人均', false, '点击这里输入预计人均金额', null),  
313 - VEmptyView(30),  
314 - _selectItem('预计总价', true, '点击这里输入预计总金额', null),  
315 - VEmptyView(46),  
316 - MyDivider(  
317 - double.infinity,  
318 - w(1),  
319 - color: MyColours.color_DBDBDB,  
320 - ), 650 + VEmptyView(33),
  651 + Padding(
  652 + padding: EdgeInsets.only(right: w(20)),
  653 + child: _selectItem(
  654 + '预计人均', !isTotal, '点击这里输入预计人均金额', perController)),
  655 + Padding(
  656 + padding: EdgeInsets.only(right: w(20)),
  657 + child: _selectItem(
  658 + '预计总价', isTotal, '点击这里输入预计总金额', totalController)),
  659 + VEmptyView(31),
  660 + Padding(
  661 + padding: EdgeInsets.only(right: w(20)),
  662 + child: MyDivider(
  663 + double.infinity,
  664 + w(1),
  665 + color: MyColours.color_DBDBDB,
  666 + )),
321 Container( 667 Container(
322 - padding: EdgeInsets.symmetric(vertical: w(10)), 668 + padding: EdgeInsets.only(
  669 + top: w(10), bottom: w(10), right: w(20)),
323 child: Row( 670 child: Row(
324 mainAxisAlignment: MainAxisAlignment.spaceBetween, 671 mainAxisAlignment: MainAxisAlignment.spaceBetween,
325 children: [ 672 children: [
@@ -337,13 +684,22 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -337,13 +684,22 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
337 ), 684 ),
338 ), 685 ),
339 VEmptyView(32), 686 VEmptyView(32),
340 - _textMulLine('喜好', '点这里输入客户喜好的东西,请用逗号隔开。', likeController), 687 + Padding(
  688 + padding: EdgeInsets.only(right: w(20)),
  689 + child: _textMulLine(
  690 + '喜好', '点这里输入客户喜好的东西,请用逗号隔开。', likeController)),
341 VEmptyView(20), 691 VEmptyView(20),
342 - _textMulLine(  
343 - '忌口', '点这里输入客户忌口的东西,请用逗号隔开。', noFoodController), 692 + Padding(
  693 + padding: EdgeInsets.only(right: w(20)),
  694 + child: _textMulLine(
  695 + '忌口', '点这里输入客户忌口的东西,请用逗号隔开。', noFoodController)),
344 VEmptyView(20), 696 VEmptyView(20),
345 - _textMulLine('服务', '点这里输入客户需要的服务,如安静的包间、远离厕所等,请用逗号隔开。',  
346 - serviceController), 697 + Padding(
  698 + padding: EdgeInsets.only(right: w(20)),
  699 + child: _textMulLine(
  700 + '服务',
  701 + '点这里输入客户需要的服务,如安静的包间、远离厕所等,请用逗号隔开。',
  702 + serviceController)),
347 ], 703 ],
348 ), 704 ),
349 ), 705 ),
@@ -393,10 +749,77 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -393,10 +749,77 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
393 Expanded( 749 Expanded(
394 flex: 2, 750 flex: 2,
395 child: InkWell( 751 child: InkWell(
396 - onTap: () {  
397 - NavigatorUtil.goOrderAdvanceEditPage(  
398 - context,  
399 - ); 752 + onTap: () async {
  753 + //调用排菜信息提交接口
  754 + Map<String, String> params = {
  755 + 'sellerid':
  756 + Provider.of<UserModel>(context, listen: false)
  757 + .user
  758 + .sellerid,
  759 + 'uid':
  760 + Provider.of<UserModel>(context, listen: false)
  761 + .user
  762 + .openid,
  763 + 'rid': widget.rid,
  764 + };
  765 + if (_planDishProvider.planId != null &&
  766 + _planDishProvider.planId != '') {
  767 + //已经存在id,则修改
  768 + params['id'] = _planDishProvider.planId;
  769 + }
  770 +
  771 + if (isTotal &&
  772 + totalController.text.trim().length > 0) {
  773 + //预计总价
  774 + params['total_price'] = totalController.text;
  775 + params['per_price'] = '0';
  776 + }
  777 + if (!isTotal &&
  778 + perController.text.trim().length > 0) {
  779 + //预计人均
  780 + params['per_price'] = perController.text;
  781 + params['total_price'] = '0';
  782 + }
  783 +
  784 + if (likeController.text.trim().length > 0) {
  785 + //喜好
  786 + params['like'] = likeController.text;
  787 + }
  788 + if (noFoodController.text.trim().length > 0) {
  789 + //忌口
  790 + params['taboos'] = noFoodController.text;
  791 + }
  792 + if (serviceController.text.trim().length > 0) {
  793 + //服务
  794 + params['serve'] = serviceController.text;
  795 + }
  796 + if (pnumController.text.trim().length > 0) {
  797 + params['pnum'] = pnumController.text;
  798 + }
  799 + params['plan_name'] = name ?? '';
  800 +
  801 +// cooklist 字符串 可选 单点菜品列表
  802 +// package_list 字符串 可选 选中套餐数据,[{"id":1,"num":2},{"id":2,"num":1}]
  803 +// often_list 字符串 可选 选中店内常点数据,[{"id":1,"num":2},{"id":2,"num":1}]
  804 +// temporary_list 字符串 可选 临时加菜,[{"cook_name":"炒土豆丝","price":20,"num",1,"unit":"份","practice":"香辣"},{"cook_name":"麻婆豆腐","price":18,"num",1,"unit":"份","practice":"香辣"}]
  805 +// plan_list 字符串 可选 选中排菜数据,[{"id":1,"num":2},{"id":2,"num":1}]
  806 +// menu_price 浮点型 可选 菜单总价
  807 +// member_price 浮点型 可选 会员总价
  808 +// plan_price 浮点型 可选 排菜总价
  809 +// remark
  810 +
  811 + bool success = await _planDishProvider
  812 + .setPlanCookByReserve(context, params);
  813 + if (success) {
  814 + NavigatorUtil.goOrderAdvanceEditPage(context,
  815 + planId: _planDishProvider.planId,
  816 + rid: widget.rid,
  817 + planCookByRidSunModel:
  818 + _planDishProvider.planCookByRidSunModel,
  819 + detailEntity: widget.detailEntity);
  820 + } else {
  821 + Utils.showToast('信息提交失败,请重试');
  822 + }
400 }, 823 },
401 child: Container( 824 child: Container(
402 decoration: BoxDecoration( 825 decoration: BoxDecoration(
@@ -423,8 +846,11 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -423,8 +846,11 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
423 EdgeInsets.symmetric(horizontal: ScreenUtil().setHeight(40)), 846 EdgeInsets.symmetric(horizontal: ScreenUtil().setHeight(40)),
424 decoration: BoxDecoration( 847 decoration: BoxDecoration(
425 border: Border.all( 848 border: Border.all(
426 - color:  
427 - true ? MyColours.color_999999 : MyColours.color_199095, 849 + color: _planDishProvider.planCookByRidSunModel != null &&
  850 + _planDishProvider.planCookByRidSunModel.status ==
  851 + '2'
  852 + ? MyColours.color_199095
  853 + : MyColours.color_999999,
428 width: ScreenUtil().setWidth(2)), 854 width: ScreenUtil().setWidth(2)),
429 borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)), 855 borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
430 ), 856 ),
@@ -434,18 +860,55 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -434,18 +860,55 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
434 child: Row( 860 child: Row(
435 children: [ 861 children: [
436 Expanded( 862 Expanded(
437 - child: _cancelAndChangeBtn(() {  
438 - NavigatorUtil.goOrderEditListShowPage(context); 863 + child: _cancelAndChangeBtn(() async {
  864 + if (_planDishProvider.planCookByRidSunModel != null &&
  865 + _planDishProvider.planCookByRidSunModel.status ==
  866 + '2') {
  867 + //已经提交过菜单,可查看
  868 + FocusScope.of(context)
  869 + .requestFocus(FocusNode()); //点击空白处隐藏键盘
  870 + Map temp =
  871 + await NavigatorUtil.goOrderEditListShowPage(
  872 + context,
  873 + object: {
  874 + 'object':
  875 + _planDishProvider.menuModelForManager,
  876 + },
  877 + object1: {
  878 + 'object1': _planDishProvider.storeList
  879 + },
  880 + object2: {
  881 + 'object2': _planDishProvider.mineList
  882 + },
  883 + planPrice: _planDishProvider
  884 + .planCookByRidSunModel.planPrice,
  885 + planCookByRidSunModel:
  886 + _planDishProvider.planCookByRidSunModel,
  887 + detailEntity: widget.detailEntity,
  888 + needSubmmit: true,
  889 + rid: widget.rid,
  890 + planId: _planDishProvider.planId);
  891 + }
439 }, '查看排菜单', 892 }, '查看排菜单',
440 - fontColor: true  
441 - ? MyColours.color_999999  
442 - : MyColours.color_199095)), 893 + fontColor:
  894 + _planDishProvider.planCookByRidSunModel !=
  895 + null &&
  896 + _planDishProvider
  897 + .planCookByRidSunModel
  898 + .status ==
  899 + '2'
  900 + ? MyColours.color_199095
  901 + : MyColours.color_999999)),
443 MyDivider( 902 MyDivider(
444 ScreenUtil().setWidth(2), 903 ScreenUtil().setWidth(2),
445 ScreenUtil().setWidth(50), 904 ScreenUtil().setWidth(50),
446 - color: true  
447 - ? MyColours.color_999999  
448 - : MyColours.color_199095, 905 + color:
  906 + _planDishProvider.planCookByRidSunModel != null &&
  907 + _planDishProvider
  908 + .planCookByRidSunModel.status ==
  909 + '2'
  910 + ? MyColours.color_199095
  911 + : MyColours.color_999999,
449 ), 912 ),
450 Expanded( 913 Expanded(
451 child: _cancelAndChangeBtn(() { 914 child: _cancelAndChangeBtn(() {
@@ -457,11 +920,222 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> { @@ -457,11 +920,222 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
457 // } else { 920 // } else {
458 // _showCancelWidget(context); 921 // _showCancelWidget(context);
459 // } 922 // }
460 - NavigatorUtil.goOrderPreviewPage(context); 923 + if (_planDishProvider.planCookByRidSunModel != null &&
  924 + _planDishProvider.planCookByRidSunModel.status ==
  925 + '2') {
  926 + //提交过排菜单
  927 +
  928 + FocusScope.of(context).requestFocus(
  929 + FocusNode()); //点击空白处隐藏键盘‘i7 8uuUUUUUUum'x\c []
  930 + List<MenuModel> showList = [];
  931 + List<MenuSunModel> dataLocalShowMore = []; //二级菜单
  932 + List<MenuModel> dataLocalShowOne = []; //一级菜单
  933 +
  934 + if (_planDishProvider.menuModelForManager != null) {
  935 + _planDishProvider.menuModelForManager
  936 + .forEach((element) {
  937 + if (element.className == '套餐' ||
  938 + element.className == '我的排菜') {
  939 + // //如果是套餐,则看cooklist有没有选中的
  940 + // bool isChange = false; //套餐或者排菜数量是否选中
  941 + // if (element.className == '套餐') {
  942 + // isChange = _isChange(widget.storeList);
  943 + // } else {
  944 + // // isChange = _isChange(widget.storeList);
  945 + // }
  946 +
  947 + element.cookbooklist.forEach((value) {
  948 + if (value.amount > 0) {
  949 + // if (!isChange) {
  950 + // priceSum += double.parse(value.price) * value.amount;
  951 + // memberPriceSum +=
  952 + // double.parse(value.member_price) * value.amount;
  953 + // }
  954 + //选中了该套餐
  955 + //把套餐中没有选中的菜品踢出去
  956 + MenuSunModel menuSunModel = MenuSunModel();
  957 + List<MenuModel> moreMenu = [];
  958 + int moreSum = 0;
  959 + //遍历套餐中的菜分类
  960 + value.cookList.forEach((cook) {
  961 + //遍历套餐中的具体菜品
  962 + List<MenuSunModel> cooklistSun = [];
  963 + int cookSum = 0;
  964 + cook.cookbooklist.forEach((cookSun) {
  965 + // 具体菜品
  966 +
  967 + if (cookSun.amount > 0) {
  968 + //当前菜品已选择
  969 + // moreSum += cookSun.amount;
  970 + cookSum += cookSun.amount;
  971 +
  972 + // if (isChange) {
  973 + // priceSum += double.parse(cookSun.price) * cookSun.amount;
  974 + // memberPriceSum +=
  975 + // double.parse(cookSun.member_price) * cookSun.amount;
  976 + // }
  977 +
  978 + // carSum += cookSun.amount;
  979 + cooklistSun.add(cookSun);
  980 + }
  981 + });
  982 + if (cooklistSun.length > 0) {
  983 + cook.cookbooklist = cooklistSun;
  984 + cook.allSum = cookSum;
  985 + moreMenu.add(cook);
  986 + value.cookList = moreMenu;
  987 + }
  988 + });
  989 + value.moreSum = value.amount;
  990 + value.channel = element.className == '套餐'
  991 + ? '1'
  992 + : '2'; // 1套餐----2排菜
  993 + dataLocalShowMore.add(value);
  994 + }
  995 + });
  996 + } else if (element.className == '店内常点') {
  997 + // //如果是我的排菜,则看cooklist有没有选中的
  998 +
  999 + // bool hasmMine =
  1000 + // element.cookbooklist.any(((value) => value.amount > 0));
  1001 + // if (hasmMine) {
  1002 + // //套餐中有被选中
  1003 + // maxIndex++;
  1004 + // }
  1005 + } else if (element.className == '临时加菜') {
  1006 + } else {
  1007 + //单菜
  1008 + bool hasmMenu = element.cookbooklist
  1009 + .any(((value) => value.amount > 0));
  1010 + if (hasmMenu) {
  1011 + //单品此类有选中菜品
  1012 + MenuModel menuModel = MenuModel();
  1013 + menuModel.className = element.className;
  1014 + menuModel.classLabel = element.classLabel;
  1015 + menuModel.classType = element.classType;
  1016 + menuModel.id = element.id;
  1017 + menuModel.order = element.order;
  1018 + menuModel.sellerid = element.sellerid;
  1019 + menuModel.status = element.status;
  1020 + menuModel.cookbooklist = [];
  1021 + List<MenuSunModel> cookbooklist = [];
  1022 + int allSum = 0;
  1023 + element.cookbooklist.forEach((value) {
  1024 + if (value.amount > 0) {
  1025 + allSum += value.amount;
  1026 + // priceSum += double.parse(value.price) * value.amount;
  1027 + // memberPriceSum +=
  1028 + // double.parse(value.member_price) * value.amount;
  1029 + // carSum += value.amount;
  1030 + cookbooklist.add(value);
  1031 + }
  1032 + });
  1033 + menuModel.allSum = allSum;
  1034 + menuModel.cookbooklist.addAll(cookbooklist);
  1035 + dataLocalShowOne.add(menuModel);
  1036 + }
  1037 + }
  1038 + // planDishC.text = priceSum.toString();
  1039 + });
  1040 + }
  1041 +
  1042 + dataLocalShowMore.forEach((value) {
  1043 + value.cookList.forEach((newValue) {
  1044 + if (showList.length == 0) {
  1045 + showList.add(
  1046 + MenuModel.fromJson2(newValue.toJson()));
  1047 + } else {
  1048 + bool hasC = false;
  1049 + showList.forEach((show) {
  1050 + if (show.id == newValue.id) {
  1051 + hasC = true;
  1052 + //数据存在相同菜类
  1053 +
  1054 + newValue.cookbooklist.forEach((newcook) {
  1055 + bool has = false;
  1056 + show.cookbooklist.forEach((oldshow) {
  1057 + if (oldshow.id == newcook.id) {
  1058 + //同一个菜品
  1059 + has = true;
  1060 + oldshow.amount += newcook.amount;
  1061 + show.allSum += newcook.amount;
  1062 + }
  1063 + });
  1064 + if (!has) {
  1065 + //旧的里面没有该菜品
  1066 + show.cookbooklist.add(newcook);
  1067 + }
  1068 + });
  1069 + }
  1070 + });
  1071 + if (!hasC) {
  1072 + showList.add(
  1073 + MenuModel.fromJson2(newValue.toJson()));
  1074 + }
  1075 + }
  1076 + });
  1077 + });
  1078 +
  1079 + print(showList);
  1080 +
  1081 + dataLocalShowOne.forEach((element) {
  1082 + if (showList.length == 0) {
  1083 + showList
  1084 + .add(MenuModel.fromJson2(element.toJson()));
  1085 + } else {
  1086 + bool hasC = false;
  1087 + showList.forEach((show) {
  1088 + if (show.id == element.id) {
  1089 + hasC = true;
  1090 + //数据存在相同菜类
  1091 +
  1092 + element.cookbooklist.forEach((newcook) {
  1093 + bool has = false;
  1094 + show.cookbooklist.forEach((oldshow) {
  1095 + if (oldshow.id == newcook.id) {
  1096 + //同一个菜品
  1097 + has = true;
  1098 + oldshow.amount += newcook.amount;
  1099 + show.allSum += newcook.amount;
  1100 + }
  1101 + });
  1102 + if (!has) {
  1103 + //旧的里面没有该菜品
  1104 + show.cookbooklist.add(newcook);
  1105 + }
  1106 + });
  1107 + }
  1108 + });
  1109 + if (!hasC) {
  1110 + showList
  1111 + .add(MenuModel.fromJson2(element.toJson()));
  1112 + }
  1113 + }
  1114 + });
  1115 + NavigatorUtil.goOrderPreviewPage(context,
  1116 + object: {'object': showList},
  1117 + name: _planDishProvider
  1118 + .planCookByRidSunModel.planName,
  1119 + remark: _planDishProvider
  1120 + .planCookByRidSunModel.remark,
  1121 + priceSum: _planDishProvider
  1122 + .planCookByRidSunModel.menuPrice,
  1123 + memberPriceSum: _planDishProvider
  1124 + .planCookByRidSunModel.memberPrice,
  1125 + planDishText: _planDishProvider
  1126 + .planCookByRidSunModel.planPrice,
  1127 + detailEntity: widget.detailEntity);
  1128 + }
461 }, '分享排菜单', 1129 }, '分享排菜单',
462 - fontColor: true  
463 - ? MyColours.color_999999  
464 - : MyColours.color_199095)), 1130 + fontColor:
  1131 + _planDishProvider.planCookByRidSunModel !=
  1132 + null &&
  1133 + _planDishProvider
  1134 + .planCookByRidSunModel
  1135 + .status ==
  1136 + '2'
  1137 + ? MyColours.color_199095
  1138 + : MyColours.color_999999)),
465 ], 1139 ],
466 )), 1140 )),
467 ), 1141 ),
  1 +import 'dart:convert';
  2 +
1 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
2 import 'package:flutter/services.dart'; 4 import 'package:flutter/services.dart';
3 import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; 5 import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
4 import 'package:one_key/widgets/system_app_bar.dart'; 6 import 'package:one_key/widgets/system_app_bar.dart';
  7 +import 'package:provider/provider.dart';
5 8
6 import '../../../res/colors.dart'; 9 import '../../../res/colors.dart';
7 import '../../../utils/screen_util.dart'; 10 import '../../../utils/screen_util.dart';
@@ -11,18 +14,38 @@ import '../../../widgets/h_empty_view.dart'; @@ -11,18 +14,38 @@ import '../../../widgets/h_empty_view.dart';
11 import '../../../widgets/round_button.dart'; 14 import '../../../widgets/round_button.dart';
12 import '../../../widgets/v_empty_view.dart'; 15 import '../../../widgets/v_empty_view.dart';
13 import '../../models/cookbook_model.dart'; 16 import '../../models/cookbook_model.dart';
  17 +import '../../models/notebook_detail.dart';
  18 +import '../../models/plan_cook_by_rid_model.dart';
14 import '../../models/plan_cook_list_model.dart'; 19 import '../../models/plan_cook_list_model.dart';
15 import '../../provider/plan_dish_provider.dart'; 20 import '../../provider/plan_dish_provider.dart';
  21 +import '../../provider/user_model.dart';
16 import '../../route/navigator_util.dart'; 22 import '../../route/navigator_util.dart';
17 import '../../utils/dialog_util.dart'; 23 import '../../utils/dialog_util.dart';
  24 +import '../../utils/event_bus.dart';
18 25
19 class OrderEditListShowPage extends StatefulWidget { 26 class OrderEditListShowPage extends StatefulWidget {
20 final List<SunListPlan> storeList; //套餐元数据 27 final List<SunListPlan> storeList; //套餐元数据
21 final List<SunListPlan> mineList; //我的排菜元数据 28 final List<SunListPlan> mineList; //我的排菜元数据
22 final List<MenuModel> data; 29 final List<MenuModel> data;
23 final String planPrice; 30 final String planPrice;
  31 + final PlanCookByRidSunModel planCookByRidSunModel;
  32 + final NotebookDetail detailEntity;
  33 + final bool needSubmmit;
  34 + final String planId;
  35 + final String rid;
  36 + final List<MenuModel> datatemp;
24 OrderEditListShowPage( 37 OrderEditListShowPage(
25 - {Key key, this.data, this.storeList, this.mineList, this.planPrice}) 38 + {Key key,
  39 + this.data,
  40 + this.storeList,
  41 + this.mineList,
  42 + this.planPrice,
  43 + this.planCookByRidSunModel,
  44 + this.detailEntity,
  45 + this.needSubmmit = false,
  46 + this.planId,
  47 + this.rid,
  48 + this.datatemp})
26 : super(key: key); 49 : super(key: key);
27 50
28 @override 51 @override
@@ -71,6 +94,11 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> { @@ -71,6 +94,11 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> {
71 void initState() { 94 void initState() {
72 super.initState(); 95 super.initState();
73 96
  97 + if (widget.planCookByRidSunModel != null) {
  98 + planDishName.text = widget.planCookByRidSunModel.planName ?? '';
  99 + planDishRemark.text = widget.planCookByRidSunModel.remark ?? '';
  100 + }
  101 +
74 if (widget.data != null) { 102 if (widget.data != null) {
75 widget.data.forEach((element) { 103 widget.data.forEach((element) {
76 if (element.className == '套餐' || element.className == '我的排菜') { 104 if (element.className == '套餐' || element.className == '我的排菜') {
@@ -128,6 +156,7 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> { @@ -128,6 +156,7 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> {
128 value.channel = 156 value.channel =
129 element.className == '套餐' ? '1' : '2'; // 1套餐----2排菜 157 element.className == '套餐' ? '1' : '2'; // 1套餐----2排菜
130 dataLocalShowMore.add(value); 158 dataLocalShowMore.add(value);
  159 + // dataLocalShowMore.add(MenuSunModel.fromJson3(value.toJson()));
131 } 160 }
132 }); 161 });
133 } else if (element.className == '店内常点') { 162 } else if (element.className == '店内常点') {
@@ -367,6 +396,87 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> { @@ -367,6 +396,87 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> {
367 return copyList; 396 return copyList;
368 } 397 }
369 398
  399 + //提交接口
  400 + Future<bool> setPlanCookByReserve(List<MenuModel> temp) async {
  401 + Map<String, String> params = {
  402 + 'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid,
  403 + 'uid': Provider.of<UserModel>(context, listen: false).user.openid,
  404 + 'rid': widget.rid,
  405 + };
  406 + if (widget.planId != null && widget.planId != '') {
  407 + //已经存在id,则修改
  408 + params['id'] = widget.planId;
  409 + }
  410 + //单品
  411 + List<MenuModel> cooklistdata = [];
  412 + temp.forEach((element) {
  413 + if (element.className == '套餐') {
  414 + List<MenuSunModel> packagelist = [];
  415 + element.cookbooklist.forEach((cooklist) {
  416 + if (cooklist.amount > 0) {
  417 + packagelist.add(cooklist);
  418 + }
  419 + });
  420 + if (packagelist.length > 0) {
  421 + params['package_list'] = json.encode(packagelist);
  422 + } else {
  423 + params['package_list'] = null;
  424 + }
  425 + } else if (element.className == '我的排菜') {
  426 + List<MenuSunModel> planlist = [];
  427 + element.cookbooklist.forEach((cooklist) {
  428 + if (cooklist.amount > 0) {
  429 + planlist.add(cooklist);
  430 + }
  431 + });
  432 + if (planlist.length > 0) {
  433 + params['plan_list'] = json.encode(planlist);
  434 + } else {
  435 + params['plan_list'] = null;
  436 + }
  437 + } else {
  438 + //单品
  439 + cooklistdata.add(element);
  440 + }
  441 + if (cooklistdata.length > 0) {
  442 + cooklistdata.forEach((cooklist) {
  443 + cooklist.cookbooklist.removeWhere((element) => element.amount == 0);
  444 + });
  445 + if (cooklistdata.length > 0) {
  446 + params['cooklist'] = json.encode(cooklistdata);
  447 + } else {
  448 + params['cooklist'] = null;
  449 + }
  450 + }
  451 + });
  452 +
  453 + params['menu_price'] = priceSum.toString();
  454 + params['member_price'] = memberPriceSum.toString();
  455 + params['plan_price'] = planDishC.text;
  456 + params['remark'] = planDishRemark.text ?? "";
  457 + params['plan_name'] = planDishName.text ?? "";
  458 + // if (isCar) {
  459 + // params['status'] = '1';
  460 + // } else {
  461 + // params['status'] = '2';
  462 + // }
  463 +
  464 +// cooklist 字符串 可选 单点菜品列表
  465 +// package_list 字符串 可选 选中套餐数据,[{"id":1,"num":2},{"id":2,"num":1}]
  466 +// often_list 字符串 可选 选中店内常点数据,[{"id":1,"num":2},{"id":2,"num":1}]
  467 +// temporary_list 字符串 可选 临时加菜,[{"cook_name":"炒土豆丝","price":20,"num",1,"unit":"份","practice":"香辣"},{"cook_name":"麻婆豆腐","price":18,"num",1,"unit":"份","practice":"香辣"}]
  468 +// plan_list 字符串 可选 选中排菜数据,[{"id":1,"num":2},{"id":2,"num":1}]
  469 +// menu_price 浮点型 可选 菜单总价
  470 +// member_price 浮点型 可选 会员总价
  471 +// plan_price 浮点型 可选 排菜总价
  472 +//
  473 + PlanDishProvider _planDishProvider =
  474 + Provider.of<PlanDishProvider>(context, listen: false);
  475 + bool success =
  476 + await _planDishProvider.setPlanCookByReserve(context, params);
  477 + return success;
  478 + }
  479 +
370 @override 480 @override
371 Widget build(BuildContext context) { 481 Widget build(BuildContext context) {
372 return KeyboardDismissOnTap( 482 return KeyboardDismissOnTap(
@@ -1795,18 +1905,105 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> { @@ -1795,18 +1905,105 @@ class _OrderEditListShowPageState extends State<OrderEditListShowPage> {
1795 radius: r(5), 1905 radius: r(5),
1796 fontSize: 36, 1906 fontSize: 36,
1797 isBold: false, 1907 isBold: false,
1798 - onPressed: () { 1908 + onPressed: () async {
1799 // List<MenuSunModel> dataLocalShowMore = []; //二级菜单 1909 // List<MenuSunModel> dataLocalShowMore = []; //二级菜单
1800 // List<MenuModel> dataLocalShowOne = []; //一级菜单 1910 // List<MenuModel> dataLocalShowOne = []; //一级菜单
1801 - Map data = {  
1802 - 'more': dataLocalShowMore,  
1803 - 'one': dataLocalShowOne,  
1804 - 'planPrice': planDishC.text,  
1805 - 'name': planDishName.text,  
1806 - 'remark': planDishRemark.text  
1807 - };  
1808 -  
1809 - Navigator.of(context).pop(data); 1911 + if (widget.needSubmmit) {
  1912 + //提交接口
  1913 +// Map temp = {
  1914 +// 'more': dataLocalShowMore,
  1915 +// 'one': dataLocalShowOne,
  1916 +// 'planPrice': planDishC.text,
  1917 +// 'name': planDishName.text,
  1918 +// 'remark': planDishRemark.text
  1919 +// };
  1920 + // List<MenuSunModel> dataLocalShowMore =
  1921 + // temp['more']; //二级菜单
  1922 + // List<MenuModel> dataLocalShowOne =
  1923 + // temp['one']; //一级菜单
  1924 + // planDishName = planDishName.text;
  1925 + // planDishRemark = planDishRemark.text;
  1926 +
  1927 + // 刷新页面***************
  1928 +
  1929 + print(dataLocalShowMore);
  1930 + print(dataLocalShowOne);
  1931 +
  1932 + widget.datatemp.forEach((element) {
  1933 + if (element.className == '套餐' ||
  1934 + element.className == '我的排菜') {
  1935 + dataLocalShowMore.forEach((value) {
  1936 + element.cookbooklist.forEach((elementCook) {
  1937 + if (value.id == elementCook.id) {
  1938 + //同一个套餐
  1939 + // elementCook.cookList = value.cookList;
  1940 + elementCook.amount = value.moreSum;
  1941 + elementCook.cookList.forEach((oldValue) {
  1942 + print(dataLocalShowMore);
  1943 + oldValue.cookbooklist.forEach((oldCook) {
  1944 + oldCook.amount = 0;
  1945 + });
  1946 + print(dataLocalShowMore);
  1947 + value.cookList.forEach((newValue) {
  1948 + if (newValue.id == oldValue.id) {
  1949 + //同一个分类
  1950 +
  1951 + oldValue.cookbooklist
  1952 + .forEach((oldCook) {
  1953 + // oldCook.amount =
  1954 + // newValue.allSum;
  1955 +
  1956 + newValue.cookbooklist
  1957 + .forEach((newCook) {
  1958 + if (oldCook.id == newCook.id) {
  1959 + //同一个菜品
  1960 + oldCook.amount = newCook.amount;
  1961 + // carSumTemp += newCook.amount;
  1962 + }
  1963 + });
  1964 + });
  1965 + }
  1966 + });
  1967 + });
  1968 + }
  1969 + });
  1970 + });
  1971 + } else {
  1972 + //单品
  1973 + print(dataLocalShowOne);
  1974 + dataLocalShowOne.forEach((one) {
  1975 + if (element.id == one.id) {
  1976 + //同一分类
  1977 + element.cookbooklist.forEach((old) {
  1978 + one.cookbooklist.forEach((newvalue) {
  1979 + if (old.id == newvalue.id) {
  1980 + old.amount = newvalue.amount;
  1981 + }
  1982 + });
  1983 + });
  1984 + }
  1985 + });
  1986 + }
  1987 + });
  1988 + bool success =
  1989 + await setPlanCookByReserve(widget.datatemp);
  1990 + if (success) {
  1991 + //刷新首页
  1992 + bus.emit('refresh_order_advance_home');
  1993 + Navigator.pop(context);
  1994 + }
  1995 + } else {
  1996 + Map data = {
  1997 + 'more': dataLocalShowMore,
  1998 + 'one': dataLocalShowOne,
  1999 + 'planPrice': planDishC.text,
  2000 + 'name': planDishName.text,
  2001 + 'remark': planDishRemark.text
  2002 + };
  2003 +
  2004 + Navigator.of(context).pop(data);
  2005 + }
  2006 +
1810 // NavigatorUtil.goOrderEditListShowPage(context); 2007 // NavigatorUtil.goOrderEditListShowPage(context);
1811 }, 2008 },
1812 ), 2009 ),
@@ -11,6 +11,7 @@ import '../../../widgets/h_empty_view.dart'; @@ -11,6 +11,7 @@ import '../../../widgets/h_empty_view.dart';
11 import '../../../widgets/round_button.dart'; 11 import '../../../widgets/round_button.dart';
12 import '../../../widgets/v_empty_view.dart'; 12 import '../../../widgets/v_empty_view.dart';
13 import '../../models/cookbook_model.dart'; 13 import '../../models/cookbook_model.dart';
  14 +import '../../models/notebook_detail.dart';
14 import '../../provider/user_model.dart'; 15 import '../../provider/user_model.dart';
15 import '../../utils/share_helper.dart'; 16 import '../../utils/share_helper.dart';
16 17
@@ -24,6 +25,7 @@ class OrderPreviewPage extends StatefulWidget { @@ -24,6 +25,7 @@ class OrderPreviewPage extends StatefulWidget {
24 final String planDishText; 25 final String planDishText;
25 final String name; 26 final String name;
26 final String remark; 27 final String remark;
  28 + final NotebookDetail detailEntity;
27 OrderPreviewPage( 29 OrderPreviewPage(
28 {Key key, 30 {Key key,
29 this.showList, 31 this.showList,
@@ -31,7 +33,8 @@ class OrderPreviewPage extends StatefulWidget { @@ -31,7 +33,8 @@ class OrderPreviewPage extends StatefulWidget {
31 this.memberPriceSum, 33 this.memberPriceSum,
32 this.planDishText, 34 this.planDishText,
33 this.name, 35 this.name,
34 - this.remark}) 36 + this.remark,
  37 + this.detailEntity})
35 : super(key: key); 38 : super(key: key);
36 39
37 @override 40 @override
@@ -77,6 +80,16 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> { @@ -77,6 +80,16 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
77 Provider.of<UserModel>(context, listen: false).user.sellername; 80 Provider.of<UserModel>(context, listen: false).user.sellername;
78 String sellerAdr = 81 String sellerAdr =
79 Provider.of<UserModel>(context, listen: false).user.sellerAddr; 82 Provider.of<UserModel>(context, listen: false).user.sellerAddr;
  83 + String tables = '';
  84 + widget.detailEntity.tables.forEach((element) {
  85 + tables += '${element.name}、';
  86 + });
  87 + if (tables.endsWith('、')) {
  88 + tables = tables.substring(0, tables.length - 1);
  89 + }
  90 + String servicePerson = '${widget.detailEntity.nick_name ?? ''}' +
  91 + ' ' +
  92 + '${widget.detailEntity.seller_user_phone ?? ''}';
80 return Scaffold( 93 return Scaffold(
81 backgroundColor: MyColours.color_ffffff, 94 backgroundColor: MyColours.color_ffffff,
82 body: Column( 95 body: Column(
@@ -122,21 +135,21 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> { @@ -122,21 +135,21 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
122 ), 135 ),
123 VEmptyView(26), 136 VEmptyView(26),
124 Text( 137 Text(
125 - '预定贵宾 | 刘生先生', 138 + '预定贵宾 | ${widget.detailEntity.rnameStr ?? ''}',
126 style: TextStyle( 139 style: TextStyle(
127 fontSize: font(14), 140 fontSize: font(14),
128 color: MyColours.color_303030), 141 color: MyColours.color_303030),
129 ), 142 ),
130 VEmptyView(10), 143 VEmptyView(10),
131 Text( 144 Text(
132 - '预定时间 | 2022年11月11日 晚餐', 145 + '预定时间 | ${widget.detailEntity.ddateymd}',
133 style: TextStyle( 146 style: TextStyle(
134 fontSize: font(14), 147 fontSize: font(14),
135 color: MyColours.color_303030), 148 color: MyColours.color_303030),
136 ), 149 ),
137 VEmptyView(10), 150 VEmptyView(10),
138 Text( 151 Text(
139 - '区域桌台 | 一楼包间 108、一楼包间 108、一楼包间 108、一楼包间 108、一楼包间 108', 152 + '区域桌台 | ${tables}',
140 style: TextStyle( 153 style: TextStyle(
141 fontSize: font(14), 154 fontSize: font(14),
142 color: MyColours.color_303030), 155 color: MyColours.color_303030),
@@ -150,7 +163,7 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> { @@ -150,7 +163,7 @@ class _OrderPreviewPageState extends State<OrderPreviewPage> {
150 ), 163 ),
151 VEmptyView(10), 164 VEmptyView(10),
152 Text( 165 Text(
153 - '专属服务 | 张山山 18866668888', 166 + '专属服务 | ${servicePerson}',
154 style: TextStyle( 167 style: TextStyle(
155 fontSize: font(14), 168 fontSize: font(14),
156 color: MyColours.color_303030), 169 color: MyColours.color_303030),
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:one_key/constant/state.dart'; 2 import 'package:one_key/constant/state.dart';
  3 +import 'package:one_key/models/plan_cook_by_rid_model.dart';
3 import 'package:one_key/models/plan_cook_list_model.dart'; 4 import 'package:one_key/models/plan_cook_list_model.dart';
4 import 'package:one_key/net/base_resp.dart'; 5 import 'package:one_key/net/base_resp.dart';
5 import 'package:one_key/net/dio_util.dart'; 6 import 'package:one_key/net/dio_util.dart';
@@ -20,7 +21,7 @@ class PlanDishProvider extends ChangeNotifier { @@ -20,7 +21,7 @@ class PlanDishProvider extends ChangeNotifier {
20 PageState pageStateMine = PageState.Success; 21 PageState pageStateMine = PageState.Success;
21 PageState pageStateMy = PageState.Loading; 22 PageState pageStateMy = PageState.Loading;
22 23
23 - PageState pageStateMenu = PageState.Loading; 24 + PageState pageStateMenu = PageState.Loading;
24 25
25 List<MenuModel> menuModel; //菜品数据 26 List<MenuModel> menuModel; //菜品数据
26 List<MenuModel> menuModelForManager = []; //经理点菜菜品数据 27 List<MenuModel> menuModelForManager = []; //经理点菜菜品数据
@@ -31,6 +32,8 @@ class PlanDishProvider extends ChangeNotifier { @@ -31,6 +32,8 @@ class PlanDishProvider extends ChangeNotifier {
31 32
32 List<SunListPlan> storeListTemp = []; //排菜套餐列表--店铺 33 List<SunListPlan> storeListTemp = []; //排菜套餐列表--店铺
33 List<SunListPlan> mineListTemp = []; //排菜套餐列表--我的 34 List<SunListPlan> mineListTemp = []; //排菜套餐列表--我的
  35 + String planId;
  36 + PlanCookByRidSunModel planCookByRidSunModel; //订单排菜的数据
34 // List<CookbookCategorySunModel> categorySunModel; //菜品分类数据 37 // List<CookbookCategorySunModel> categorySunModel; //菜品分类数据
35 // List<CookbookSpecSunModel> specSunModel; //计价单位 38 // List<CookbookSpecSunModel> specSunModel; //计价单位
36 39
@@ -84,6 +87,63 @@ class PlanDishProvider extends ChangeNotifier { @@ -84,6 +87,63 @@ class PlanDishProvider extends ChangeNotifier {
84 } 87 }
85 } 88 }
86 89
  90 + /// 根据预定ID获取排菜
  91 + getPlanCookByRid(BuildContext context, Map<String, String> params,
  92 + {showLoading = false}) async {
  93 + BaseResp<dynamic> baseResp = await DioUtil()
  94 + .request<dynamic>(context, Method.get, HttpUrl.get_plan_cook_by_rid,
  95 + data: params, showLoading: showLoading)
  96 + .catchError((error) {
  97 + print(error.toString());
  98 + // if (error is MyError) {
  99 + // switch (error.type) {
  100 + // case 1:
  101 + // pageState = PageState.ConnectivityError;
  102 + // break;
  103 + // case 2:
  104 + // pageState = PageState.ConnectivityTimeOut;
  105 + // break;
  106 + // default:
  107 + // pageState = PageState.ConnectivityError;
  108 + // break;
  109 + // }
  110 + // }
  111 + // notifyListeners();
  112 + return false;
  113 + });
  114 + // menuModel = [];
  115 +
  116 + if (baseResp != null && baseResp.code == Constant.status_success) {
  117 + if (baseResp.data == false) {
  118 + // planCookByRidSunModel = PlanCookByRidSunModel();
  119 +
  120 + } else {
  121 + planCookByRidSunModel =
  122 + PlanCookByRidModel.fromJson(baseResp.responseData).data;
  123 + if (planCookByRidSunModel != null) {
  124 + planId = baseResp.data['id'];
  125 + }
  126 + }
  127 +
  128 + // pageState = PageState.Empty;
  129 + // } else {
  130 + // List menu = baseResp.data[0]['list'];
  131 + // for (int i = 0; i < menu.length; i++) {
  132 + // menuModel.add(MenuModel.fromJson(menu[i]));
  133 + // }
  134 + // print(menuModel);
  135 + // pageState = PageState.Success;
  136 + // }
  137 + // notifyListeners();
  138 + return true;
  139 + } else {
  140 + Utils.showToast(baseResp.msg ?? "");
  141 + // pageState = PageState.ConnectivityError;
  142 + // notifyListeners();
  143 + return false;
  144 + }
  145 + }
  146 +
87 ///添加排菜/套餐 147 ///添加排菜/套餐
88 148
89 Future<bool> setPlanCook(BuildContext context, Map<String, String> params, 149 Future<bool> setPlanCook(BuildContext context, Map<String, String> params,
@@ -105,6 +165,32 @@ class PlanDishProvider extends ChangeNotifier { @@ -105,6 +165,32 @@ class PlanDishProvider extends ChangeNotifier {
105 } 165 }
106 } 166 }
107 167
  168 + Future<bool> setPlanCookByReserve(
  169 + BuildContext context, Map<String, String> params,
  170 + {showLoading = false}) async {
  171 + BaseResp<dynamic> baseResp = await DioUtil()
  172 + .request<dynamic>(context, Method.get, HttpUrl.set_plan_cook_by_reserve,
  173 + data: params, showLoading: showLoading)
  174 + .catchError((error) {
  175 + print(error.toString());
  176 + if (error is MyError) {}
  177 + return false;
  178 + });
  179 +
  180 + if (baseResp != null && baseResp.code == Constant.status_success) {
  181 + if (baseResp.data == 1) {
  182 + return true;
  183 + }
  184 + if (baseResp.data['id'] != null && baseResp.data['id'] != '') {
  185 + planId = baseResp.data['id'];
  186 + return true;
  187 + }
  188 + } else {
  189 + Utils.showToast(baseResp.msg ?? "");
  190 + return false;
  191 + }
  192 + }
  193 +
108 ///删除排菜/套餐列表 194 ///删除排菜/套餐列表
109 195
110 Future<bool> delPlanCook(BuildContext context, Map<String, String> params, 196 Future<bool> delPlanCook(BuildContext context, Map<String, String> params,
@@ -29,6 +29,7 @@ import '../app.dart'; @@ -29,6 +29,7 @@ import '../app.dart';
29 import '../models/get_banquet_by_id_new_model.dart'; 29 import '../models/get_banquet_by_id_new_model.dart';
30 import '../models/get_banquet_deposit_model.dart'; 30 import '../models/get_banquet_deposit_model.dart';
31 import '../models/otherset_model.dart'; 31 import '../models/otherset_model.dart';
  32 +import '../models/plan_cook_by_rid_model.dart';
32 import '../models/plan_cook_list_model.dart'; 33 import '../models/plan_cook_list_model.dart';
33 import '../models/set_xuan_tai_model.dart'; 34 import '../models/set_xuan_tai_model.dart';
34 import '../models/wine_model.dart'; 35 import '../models/wine_model.dart';
@@ -1209,7 +1210,9 @@ class NavigatorUtil { @@ -1209,7 +1210,9 @@ class NavigatorUtil {
1209 ///经理排菜-首页 1210 ///经理排菜-首页
1210 1211
1211 static Future<dynamic> goOrderAdvanceHomePage( 1212 static Future<dynamic> goOrderAdvanceHomePage(
1212 - BuildContext context, { 1213 + BuildContext context,
  1214 + NotebookDetail detailEntity,
  1215 + String rid, {
1213 replace = false, 1216 replace = false,
1214 }) { 1217 }) {
1215 // if (invoice != null) { 1218 // if (invoice != null) {
@@ -1221,41 +1224,45 @@ class NavigatorUtil { @@ -1221,41 +1224,45 @@ class NavigatorUtil {
1221 // return _navigateTo(context, 1224 // return _navigateTo(context,
1222 // "${Routes.order_advance_home_page}?tids=$tids&tableidNow=$tableidNow&fromPage=$fromPage&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}"); 1225 // "${Routes.order_advance_home_page}?tids=$tids&tableidNow=$tableidNow&fromPage=$fromPage&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}");
1223 // } 1226 // }
1224 - return _navigateTo(context, "${Routes.order_advance_home_page}", 1227 + return _navigateTo(context,
  1228 + "${Routes.order_advance_home_page}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
1225 replace: replace); 1229 replace: replace);
1226 } 1230 }
1227 1231
1228 ///经理排菜-编辑 1232 ///经理排菜-编辑
1229 1233
1230 - static Future<dynamic> goOrderAdvanceEditPage(  
1231 - BuildContext context, {  
1232 - replace = false,  
1233 - }) { 1234 + static Future<dynamic> goOrderAdvanceEditPage(BuildContext context,
  1235 + {replace = false,
  1236 + String planId,
  1237 + String rid,
  1238 + PlanCookByRidSunModel planCookByRidSunModel,
  1239 + NotebookDetail detailEntity}) {
1234 // if (invoice != null) { 1240 // if (invoice != null) {
1235 // return _navigateTo(context, 1241 // return _navigateTo(context,
1236 // "${Routes.order_advance_home_page}?invoice=${FluroConvertUtils.object2string(invoice)}", 1242 // "${Routes.order_advance_home_page}?invoice=${FluroConvertUtils.object2string(invoice)}",
1237 // replace: replace); 1243 // replace: replace);
1238 // } 1244 // }
1239 - // if (object != null) {  
1240 - // return _navigateTo(context,  
1241 - // "${Routes.order_advance_home_page}?tids=$tids&tableidNow=$tableidNow&fromPage=$fromPage&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}");  
1242 - // }  
1243 - return _navigateTo(context, "${Routes.order_advance_edit_page}", 1245 + if (planCookByRidSunModel != null) {
  1246 + return _navigateTo(context,
  1247 + "${Routes.order_advance_edit_page}?planId=$planId&rid=$rid&planCookByRidSunModel=${FluroConvertUtils.object2string(planCookByRidSunModel)}&detail=${FluroConvertUtils.object2string(detailEntity)}",
  1248 + replace: replace);
  1249 + }
  1250 + return _navigateTo(context,
  1251 + "${Routes.order_advance_edit_page}?planId=$planId&rid=$rid&detail=${FluroConvertUtils.object2string(detailEntity)}",
1244 replace: replace); 1252 replace: replace);
1245 } 1253 }
1246 1254
1247 ///经理排菜-预览 1255 ///经理排菜-预览
1248 1256
1249 - static Future<dynamic> goOrderPreviewPage(  
1250 - BuildContext context, {  
1251 - replace = false,  
1252 - Map object,  
1253 - String priceSum,  
1254 - String memberPriceSum,  
1255 - String planDishText,  
1256 - String name,  
1257 - String remark,  
1258 - }) { 1257 + static Future<dynamic> goOrderPreviewPage(BuildContext context,
  1258 + {replace = false,
  1259 + Map object,
  1260 + String priceSum,
  1261 + String memberPriceSum,
  1262 + String planDishText,
  1263 + String name,
  1264 + String remark,
  1265 + NotebookDetail detailEntity}) {
1259 // if (invoice != null) { 1266 // if (invoice != null) {
1260 // return _navigateTo(context, 1267 // return _navigateTo(context,
1261 // "${Routes.order_advance_home_page}?invoice=${FluroConvertUtils.object2string(invoice)}", 1268 // "${Routes.order_advance_home_page}?invoice=${FluroConvertUtils.object2string(invoice)}",
@@ -1266,7 +1273,7 @@ class NavigatorUtil { @@ -1266,7 +1273,7 @@ class NavigatorUtil {
1266 // "${Routes.order_advance_home_page}?tids=$tids&tableidNow=$tableidNow&fromPage=$fromPage&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}"); 1273 // "${Routes.order_advance_home_page}?tids=$tids&tableidNow=$tableidNow&fromPage=$fromPage&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}");
1267 // } 1274 // }
1268 return _navigateTo(context, 1275 return _navigateTo(context,
1269 - "${Routes.order_preview_page}?object=${FluroConvertUtils.object2string(object)}&priceSum=$priceSum&memberPriceSum=$memberPriceSum&planDishText=$planDishText&name=${Uri.encodeComponent(name)}&remark=${Uri.encodeComponent(remark)}", 1276 + "${Routes.order_preview_page}?object=${FluroConvertUtils.object2string(object)}&priceSum=$priceSum&memberPriceSum=$memberPriceSum&planDishText=$planDishText&name=${Uri.encodeComponent(name)}&remark=${Uri.encodeComponent(remark)}&detail=${FluroConvertUtils.object2string(detailEntity)}",
1270 replace: replace); 1277 replace: replace);
1271 } 1278 }
1272 1279
@@ -1277,17 +1284,27 @@ class NavigatorUtil { @@ -1277,17 +1284,27 @@ class NavigatorUtil {
1277 Map object, 1284 Map object,
1278 Map object1, 1285 Map object1,
1279 Map object2, 1286 Map object2,
1280 - String planPrice}) { 1287 + String planPrice,
  1288 + PlanCookByRidSunModel planCookByRidSunModel,
  1289 + NotebookDetail detailEntity,
  1290 + bool needSubmmit = false,
  1291 + String planId,
  1292 + String rid}) {
1281 // if (invoice != null) { 1293 // if (invoice != null) {
1282 // return _navigateTo(context, 1294 // return _navigateTo(context,
1283 // "${Routes.order_advance_home_page}?invoice=${FluroConvertUtils.object2string(invoice)}", 1295 // "${Routes.order_advance_home_page}?invoice=${FluroConvertUtils.object2string(invoice)}",
1284 // replace: replace); 1296 // replace: replace);
1285 // } 1297 // }
  1298 + if (object != null && planCookByRidSunModel != null) {
  1299 + return _navigateTo(context,
  1300 + "${Routes.order_edit_list_show_page}?object=${FluroConvertUtils.object2string(object)}&object1=${FluroConvertUtils.object2string(object1)}&object2=${FluroConvertUtils.object2string(object2)}&planPrice=$planPrice&planCookByRidSunModel=${FluroConvertUtils.object2string(planCookByRidSunModel)}&detail=${FluroConvertUtils.object2string(detailEntity)}&needSubmmit=$needSubmmit&planId=$planId&rid=$rid");
  1301 + }
1286 if (object != null) { 1302 if (object != null) {
1287 return _navigateTo(context, 1303 return _navigateTo(context,
1288 - "${Routes.order_edit_list_show_page}?object=${FluroConvertUtils.object2string(object)}&object1=${FluroConvertUtils.object2string(object1)}&object2=${FluroConvertUtils.object2string(object2)}&planPrice=$planPrice"); 1304 + "${Routes.order_edit_list_show_page}?object=${FluroConvertUtils.object2string(object)}&object1=${FluroConvertUtils.object2string(object1)}&object2=${FluroConvertUtils.object2string(object2)}&planPrice=$planPrice&detail=${FluroConvertUtils.object2string(detailEntity)}&needSubmmit=$needSubmmit&planId=$planId&rid=$rid");
1289 } 1305 }
1290 - return _navigateTo(context, "${Routes.order_edit_list_show_page}", 1306 + return _navigateTo(context,
  1307 + "${Routes.order_edit_list_show_page}?needSubmmit=$needSubmmit&planId=$planId&rid=$rid",
1291 replace: replace); 1308 replace: replace);
1292 } 1309 }
1293 1310
@@ -150,6 +150,7 @@ import 'package:one_key/utils/utils.dart'; @@ -150,6 +150,7 @@ import 'package:one_key/utils/utils.dart';
150 import 'package:provider/provider.dart'; 150 import 'package:provider/provider.dart';
151 151
152 import '../models/get_banquet_by_id_new_model.dart'; 152 import '../models/get_banquet_by_id_new_model.dart';
  153 +import '../models/plan_cook_by_rid_model.dart';
153 import '../models/plan_cook_list_model.dart'; 154 import '../models/plan_cook_list_model.dart';
154 import '../models/set_xuan_tai_model.dart'; 155 import '../models/set_xuan_tai_model.dart';
155 import '../models/setmeal_by_id_model.dart'; 156 import '../models/setmeal_by_id_model.dart';
@@ -1931,7 +1932,7 @@ var finalPlanDishPageHandle = new Handler( @@ -1931,7 +1932,7 @@ var finalPlanDishPageHandle = new Handler(
1931 var orderAdvanceHomePageHandle = new Handler( 1932 var orderAdvanceHomePageHandle = new Handler(
1932 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) { 1933 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
1933 // String fromPage = params["fromPage"].first; 1934 // String fromPage = params["fromPage"].first;
1934 - // String tids = params["tids"].first; 1935 + String rid = params["rid"].first;
1935 1936
1936 // String tableidNow = params["tableidNow"].first; 1937 // String tableidNow = params["tableidNow"].first;
1937 // bool canChoose = params["canChoose"].first == "true" ? true : false; 1938 // bool canChoose = params["canChoose"].first == "true" ? true : false;
@@ -1944,15 +1945,34 @@ var orderAdvanceHomePageHandle = new Handler( @@ -1944,15 +1945,34 @@ var orderAdvanceHomePageHandle = new Handler(
1944 // res.add(TableList.fromJson(item)); 1945 // res.add(TableList.fromJson(item));
1945 // } 1946 // }
1946 // } 1947 // }
  1948 +
  1949 + NotebookDetail detailEntity = NotebookDetail.fromJson(json
  1950 + .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
1947 return ChangeNotifierProvider<PlanDishProvider>( 1951 return ChangeNotifierProvider<PlanDishProvider>(
1948 - create: (_) => PlanDishProvider(), child: OrderAdvanceHomePage()); 1952 + create: (_) => PlanDishProvider(),
  1953 + child: OrderAdvanceHomePage(detailEntity: detailEntity, rid: rid));
1949 }); 1954 });
1950 1955
1951 ///经理排菜---编辑 1956 ///经理排菜---编辑
1952 var orderAdvanceEidtPageHandle = new Handler( 1957 var orderAdvanceEidtPageHandle = new Handler(
1953 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) { 1958 handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
1954 - // String fromPage = params["fromPage"].first;  
1955 - // String tids = params["tids"].first; 1959 + String planId = params["planId"].first;
  1960 + String rid = params["rid"].first;
  1961 + NotebookDetail detailEntity = NotebookDetail.fromJson(json
  1962 + .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
  1963 + PlanCookByRidSunModel planCookByRidSunModel;
  1964 + if (params.keys.contains('planCookByRidSunModel')) {
  1965 + planCookByRidSunModel = PlanCookByRidSunModel.fromJson(json.decode(
  1966 + FluroConvertUtils.fluroCnParamsDecode(
  1967 + params["planCookByRidSunModel"].first)));
  1968 + }
  1969 + // Map object = FluroConvertUtils.string2map(params["object"].first);
  1970 + // List temp = object['object'];
  1971 +
  1972 + // for (var item in temp) {
  1973 + // res.add(TableList.fromJson(item));
  1974 + // }
  1975 + // }
1956 1976
1957 // String tableidNow = params["tableidNow"].first; 1977 // String tableidNow = params["tableidNow"].first;
1958 // bool canChoose = params["canChoose"].first == "true" ? true : false; 1978 // bool canChoose = params["canChoose"].first == "true" ? true : false;
@@ -1966,7 +1986,12 @@ var orderAdvanceEidtPageHandle = new Handler( @@ -1966,7 +1986,12 @@ var orderAdvanceEidtPageHandle = new Handler(
1966 // } 1986 // }
1967 // } 1987 // }
1968 return ChangeNotifierProvider<PlanDishProvider>( 1988 return ChangeNotifierProvider<PlanDishProvider>(
1969 - create: (_) => PlanDishProvider(), child: OrderAdvanceEidtPage()); 1989 + create: (_) => PlanDishProvider(),
  1990 + child: OrderAdvanceEidtPage(
  1991 + planId: planId,
  1992 + rid: rid,
  1993 + planCookByRidSunModel: planCookByRidSunModel,
  1994 + detailEntity: detailEntity));
1970 }); 1995 });
1971 1996
1972 ///经理排菜---预览页 1997 ///经理排菜---预览页
@@ -1986,7 +2011,8 @@ var orderPreviewPageHandle = new Handler( @@ -1986,7 +2011,8 @@ var orderPreviewPageHandle = new Handler(
1986 // res.add(TableList.fromJson(item)); 2011 // res.add(TableList.fromJson(item));
1987 // } 2012 // }
1988 // } 2013 // }
1989 - 2014 + NotebookDetail detailEntity = NotebookDetail.fromJson(json
  2015 + .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
1990 List<MenuModel> res = []; 2016 List<MenuModel> res = [];
1991 // String planDishPrice = ''; 2017 // String planDishPrice = '';
1992 if (params.keys.contains('object')) { 2018 if (params.keys.contains('object')) {
@@ -2016,7 +2042,8 @@ var orderPreviewPageHandle = new Handler( @@ -2016,7 +2042,8 @@ var orderPreviewPageHandle = new Handler(
2016 memberPriceSum: memberPriceSum, 2042 memberPriceSum: memberPriceSum,
2017 planDishText: planDishText, 2043 planDishText: planDishText,
2018 name: name, 2044 name: name,
2019 - remark: remark)); 2045 + remark: remark,
  2046 + detailEntity: detailEntity));
2020 }); 2047 });
2021 2048
2022 ///经理排菜---排菜编辑列表展示 2049 ///经理排菜---排菜编辑列表展示
@@ -2037,7 +2064,18 @@ var orderEditListShowPageHandle = new Handler( @@ -2037,7 +2064,18 @@ var orderEditListShowPageHandle = new Handler(
2037 // } 2064 // }
2038 // } 2065 // }
2039 2066
  2067 + bool needSubmmit = FluroConvertUtils.string2bool(params["needSubmmit"].first);
  2068 + NotebookDetail detailEntity = NotebookDetail.fromJson(json
  2069 + .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
  2070 + PlanCookByRidSunModel planCookByRidSunModel;
  2071 + if (params.keys.contains('planCookByRidSunModel')) {
  2072 + planCookByRidSunModel = PlanCookByRidSunModel.fromJson(json.decode(
  2073 + FluroConvertUtils.fluroCnParamsDecode(
  2074 + params["planCookByRidSunModel"].first)));
  2075 + }
  2076 +
2040 List<MenuModel> res = []; 2077 List<MenuModel> res = [];
  2078 + List<MenuModel> res1 = [];
2041 // String planDishPrice = ''; 2079 // String planDishPrice = '';
2042 if (params.keys.contains('object')) { 2080 if (params.keys.contains('object')) {
2043 Map object = FluroConvertUtils.string2map(params["object"].first); 2081 Map object = FluroConvertUtils.string2map(params["object"].first);
@@ -2050,6 +2088,7 @@ var orderEditListShowPageHandle = new Handler( @@ -2050,6 +2088,7 @@ var orderEditListShowPageHandle = new Handler(
2050 // res.add(menuModel); 2088 // res.add(menuModel);
2051 // print(res); 2089 // print(res);
2052 res.add(MenuModel.fromJson2(item)); 2090 res.add(MenuModel.fromJson2(item));
  2091 + res1.add(MenuModel.fromJson2(item));
2053 } 2092 }
2054 } 2093 }
2055 List<SunListPlan> storeList = []; 2094 List<SunListPlan> storeList = [];
@@ -2084,11 +2123,22 @@ var orderEditListShowPageHandle = new Handler( @@ -2084,11 +2123,22 @@ var orderEditListShowPageHandle = new Handler(
2084 2123
2085 String planPrice = params["planPrice"].first; 2124 String planPrice = params["planPrice"].first;
2086 2125
2087 - return OrderEditListShowPage(  
2088 - data: res,  
2089 - storeList: storeList,  
2090 - mineList: mineList,  
2091 - planPrice: planPrice); 2126 + String rid = params["rid"].first;
  2127 + String planId = params["planId"].first;
  2128 +
  2129 + return ChangeNotifierProvider<PlanDishProvider>(
  2130 + create: (_) => PlanDishProvider(),
  2131 + child: OrderEditListShowPage(
  2132 + data: res,
  2133 + storeList: storeList,
  2134 + mineList: mineList,
  2135 + planPrice: planPrice,
  2136 + planCookByRidSunModel: planCookByRidSunModel,
  2137 + detailEntity: detailEntity,
  2138 + needSubmmit: needSubmmit,
  2139 + rid: rid,
  2140 + planId: planId,
  2141 + datatemp: res1));
2092 }); 2142 });
2093 2143
2094 ///经理排菜--类型选择 2144 ///经理排菜--类型选择