Commit c1163556ead9667875492ea53eb5b11439bc861a

Authored by weixin_45529955
1 parent 93d8098f

赠券对象UI

@@ -4,17 +4,203 @@ @@ -4,17 +4,203 @@
4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 "version": "0.2.0", 5 "version": "0.2.0",
6 "configurations": [ 6 "configurations": [
7 - 7 +
8 { 8 {
9 - "name": "Flutter", 9 + "name": "Flutter-ReserveApp",
  10 + "request": "launch",
  11 + "type": "dart"
  12 + },
  13 + {
  14 + "name": "Flutter-ReserveApp (profile mode)",
  15 + "request": "launch",
  16 + "type": "dart",
  17 + "flutterMode": "profile"
  18 + },
  19 + {
  20 + "name": "Flutter-ReserveApp (release mode)",
  21 + "request": "launch",
10 "type": "dart", 22 "type": "dart",
  23 + "flutterMode": "release"
  24 + },
  25 + {
  26 + "name": "azlistview_plus-3.0.0",
  27 + "cwd": "library/azlistview_plus-3.0.0",
11 "request": "launch", 28 "request": "launch",
12 - "program": "lib/main.dart" 29 + "type": "dart"
  30 + },
  31 + {
  32 + "name": "azlistview_plus-3.0.0 (profile mode)",
  33 + "cwd": "library/azlistview_plus-3.0.0",
  34 + "request": "launch",
  35 + "type": "dart",
  36 + "flutterMode": "profile"
13 }, 37 },
14 - // {  
15 - // "name": "oneKey_wdn",  
16 - // "request": "launch",  
17 - // "type": "dart"  
18 - // } 38 + {
  39 + "name": "azlistview_plus-3.0.0 (release mode)",
  40 + "cwd": "library/azlistview_plus-3.0.0",
  41 + "request": "launch",
  42 + "type": "dart",
  43 + "flutterMode": "release"
  44 + },
  45 + {
  46 + "name": "calendar_date_picker2-1.1.5",
  47 + "cwd": "library/calendar_date_picker2-1.1.5",
  48 + "request": "launch",
  49 + "type": "dart"
  50 + },
  51 + {
  52 + "name": "calendar_date_picker2-1.1.5 (profile mode)",
  53 + "cwd": "library/calendar_date_picker2-1.1.5",
  54 + "request": "launch",
  55 + "type": "dart",
  56 + "flutterMode": "profile"
  57 + },
  58 + {
  59 + "name": "calendar_date_picker2-1.1.5 (release mode)",
  60 + "cwd": "library/calendar_date_picker2-1.1.5",
  61 + "request": "launch",
  62 + "type": "dart",
  63 + "flutterMode": "release"
  64 + },
  65 + {
  66 + "name": "device_utils_my",
  67 + "cwd": "library/device_utils_my",
  68 + "request": "launch",
  69 + "type": "dart"
  70 + },
  71 + {
  72 + "name": "device_utils_my (profile mode)",
  73 + "cwd": "library/device_utils_my",
  74 + "request": "launch",
  75 + "type": "dart",
  76 + "flutterMode": "profile"
  77 + },
  78 + {
  79 + "name": "device_utils_my (release mode)",
  80 + "cwd": "library/device_utils_my",
  81 + "request": "launch",
  82 + "type": "dart",
  83 + "flutterMode": "release"
  84 + },
  85 + {
  86 + "name": "sendsms-1.0.3",
  87 + "cwd": "library/sendsms-1.0.3",
  88 + "request": "launch",
  89 + "type": "dart"
  90 + },
  91 + {
  92 + "name": "sendsms-1.0.3 (profile mode)",
  93 + "cwd": "library/sendsms-1.0.3",
  94 + "request": "launch",
  95 + "type": "dart",
  96 + "flutterMode": "profile"
  97 + },
  98 + {
  99 + "name": "sendsms-1.0.3 (release mode)",
  100 + "cwd": "library/sendsms-1.0.3",
  101 + "request": "launch",
  102 + "type": "dart",
  103 + "flutterMode": "release"
  104 + },
  105 + {
  106 + "name": "table_calendar-2.3.3",
  107 + "cwd": "library/table_calendar-2.3.3",
  108 + "request": "launch",
  109 + "type": "dart"
  110 + },
  111 + {
  112 + "name": "table_calendar-2.3.3 (profile mode)",
  113 + "cwd": "library/table_calendar-2.3.3",
  114 + "request": "launch",
  115 + "type": "dart",
  116 + "flutterMode": "profile"
  117 + },
  118 + {
  119 + "name": "table_calendar-2.3.3 (release mode)",
  120 + "cwd": "library/table_calendar-2.3.3",
  121 + "request": "launch",
  122 + "type": "dart",
  123 + "flutterMode": "release"
  124 + },
  125 + {
  126 + "name": "table_calendar-3.1.3",
  127 + "cwd": "library/table_calendar-3.1.3",
  128 + "request": "launch",
  129 + "type": "dart"
  130 + },
  131 + {
  132 + "name": "table_calendar-3.1.3 (profile mode)",
  133 + "cwd": "library/table_calendar-3.1.3",
  134 + "request": "launch",
  135 + "type": "dart",
  136 + "flutterMode": "profile"
  137 + },
  138 + {
  139 + "name": "table_calendar-3.1.3 (release mode)",
  140 + "cwd": "library/table_calendar-3.1.3",
  141 + "request": "launch",
  142 + "type": "dart",
  143 + "flutterMode": "release"
  144 + },
  145 + {
  146 + "name": "webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
  147 + "cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
  148 + "request": "launch",
  149 + "type": "dart"
  150 + },
  151 + {
  152 + "name": "webview_flutter-2.0.13-copy_inappwebview_select_file_20210930 (profile mode)",
  153 + "cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
  154 + "request": "launch",
  155 + "type": "dart",
  156 + "flutterMode": "profile"
  157 + },
  158 + {
  159 + "name": "webview_flutter-2.0.13-copy_inappwebview_select_file_20210930 (release mode)",
  160 + "cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
  161 + "request": "launch",
  162 + "type": "dart",
  163 + "flutterMode": "release"
  164 + },
  165 + {
  166 + "name": "example",
  167 + "cwd": "library/table_calendar-3.1.3/example",
  168 + "request": "launch",
  169 + "type": "dart"
  170 + },
  171 + {
  172 + "name": "example (profile mode)",
  173 + "cwd": "library/table_calendar-3.1.3/example",
  174 + "request": "launch",
  175 + "type": "dart",
  176 + "flutterMode": "profile"
  177 + },
  178 + {
  179 + "name": "example (release mode)",
  180 + "cwd": "library/table_calendar-3.1.3/example",
  181 + "request": "launch",
  182 + "type": "dart",
  183 + "flutterMode": "release"
  184 + },
  185 + {
  186 + "name": "example",
  187 + "cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930/example",
  188 + "request": "launch",
  189 + "type": "dart"
  190 + },
  191 + {
  192 + "name": "example (profile mode)",
  193 + "cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930/example",
  194 + "request": "launch",
  195 + "type": "dart",
  196 + "flutterMode": "profile"
  197 + },
  198 + {
  199 + "name": "example (release mode)",
  200 + "cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930/example",
  201 + "request": "launch",
  202 + "type": "dart",
  203 + "flutterMode": "release"
  204 + }
19 ] 205 ]
20 } 206 }
1 -{  
2 - "dart.flutterCreateOrganization": null  
3 -}  
@@ -277,10 +277,14 @@ @@ -277,10 +277,14 @@
277 inputFileListPaths = ( 277 inputFileListPaths = (
278 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", 278 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
279 ); 279 );
  280 + inputPaths = (
  281 + );
280 name = "[CP] Embed Pods Frameworks"; 282 name = "[CP] Embed Pods Frameworks";
281 outputFileListPaths = ( 283 outputFileListPaths = (
282 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", 284 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
283 ); 285 );
  286 + outputPaths = (
  287 + );
284 runOnlyForDeploymentPostprocessing = 0; 288 runOnlyForDeploymentPostprocessing = 0;
285 shellPath = /bin/sh; 289 shellPath = /bin/sh;
286 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; 290 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
@@ -294,10 +298,14 @@ @@ -294,10 +298,14 @@
294 inputFileListPaths = ( 298 inputFileListPaths = (
295 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", 299 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
296 ); 300 );
  301 + inputPaths = (
  302 + );
297 name = "[CP] Copy Pods Resources"; 303 name = "[CP] Copy Pods Resources";
298 outputFileListPaths = ( 304 outputFileListPaths = (
299 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", 305 "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
300 ); 306 );
  307 + outputPaths = (
  308 + );
301 runOnlyForDeploymentPostprocessing = 0; 309 runOnlyForDeploymentPostprocessing = 0;
302 shellPath = /bin/sh; 310 shellPath = /bin/sh;
303 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; 311 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
@@ -449,7 +457,7 @@ @@ -449,7 +457,7 @@
449 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 457 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
450 CLANG_ENABLE_MODULES = YES; 458 CLANG_ENABLE_MODULES = YES;
451 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; 459 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
452 - CURRENT_PROJECT_VERSION = 5563; 460 + CURRENT_PROJECT_VERSION = 5564;
453 DEVELOPMENT_TEAM = 8J59HM8B82; 461 DEVELOPMENT_TEAM = 8J59HM8B82;
454 ENABLE_BITCODE = NO; 462 ENABLE_BITCODE = NO;
455 INFOPLIST_FILE = Runner/Info.plist; 463 INFOPLIST_FILE = Runner/Info.plist;
@@ -632,7 +640,7 @@ @@ -632,7 +640,7 @@
632 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 640 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
633 CLANG_ENABLE_MODULES = YES; 641 CLANG_ENABLE_MODULES = YES;
634 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; 642 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
635 - CURRENT_PROJECT_VERSION = 5563; 643 + CURRENT_PROJECT_VERSION = 5564;
636 DEVELOPMENT_TEAM = 8J59HM8B82; 644 DEVELOPMENT_TEAM = 8J59HM8B82;
637 ENABLE_BITCODE = NO; 645 ENABLE_BITCODE = NO;
638 INFOPLIST_FILE = Runner/Info.plist; 646 INFOPLIST_FILE = Runner/Info.plist;
@@ -658,7 +666,7 @@ @@ -658,7 +666,7 @@
658 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 666 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
659 CLANG_ENABLE_MODULES = YES; 667 CLANG_ENABLE_MODULES = YES;
660 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; 668 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
661 - CURRENT_PROJECT_VERSION = 5563; 669 + CURRENT_PROJECT_VERSION = 5564;
662 DEVELOPMENT_TEAM = 8J59HM8B82; 670 DEVELOPMENT_TEAM = 8J59HM8B82;
663 ENABLE_BITCODE = NO; 671 ENABLE_BITCODE = NO;
664 INFOPLIST_FILE = Runner/Info.plist; 672 INFOPLIST_FILE = Runner/Info.plist;
@@ -138,9 +138,10 @@ class Constant { @@ -138,9 +138,10 @@ class Constant {
138 '前台', 138 '前台',
139 ], 139 ],
140 '人数': ['管理员', '店长', '前台'], 140 '人数': ['管理员', '店长', '前台'],
141 - '订座详情-添加一项':['管理员', '店长', '前台'], 141 + '订座详情-添加一项': ['管理员', '店长', '前台'],
142 '图片备注': ['管理员', '店长', '前台'], 142 '图片备注': ['管理员', '店长', '前台'],
143 '用餐类型': ['管理员', '店长', '前台'], 143 '用餐类型': ['管理员', '店长', '前台'],
  144 + '赠券对象': ['管理员', '店长', '前台'],
144 '服务人员': ['管理员', '店长', '前台'], 145 '服务人员': ['管理员', '店长', '前台'],
145 '消费金额': [ 146 '消费金额': [
146 '管理员', 147 '管理员',
@@ -4,29 +4,26 @@ import 'dart:io'; @@ -4,29 +4,26 @@ import 'dart:io';
4 import 'package:cached_network_image/cached_network_image.dart'; 4 import 'package:cached_network_image/cached_network_image.dart';
5 import 'package:common_utils/common_utils.dart'; 5 import 'package:common_utils/common_utils.dart';
6 // import 'package:easy_contact_picker/easy_contact_picker.dart'; 6 // import 'package:easy_contact_picker/easy_contact_picker.dart';
7 -import 'package:flutter/cupertino.dart'; 7 +
8 import 'package:flutter/gestures.dart'; 8 import 'package:flutter/gestures.dart';
9 import 'package:flutter/material.dart'; 9 import 'package:flutter/material.dart';
10 -import 'package:flutter/services.dart';  
11 -import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; 10 +
12 import 'package:flutter_native_contact_picker/model/contact.dart'; 11 import 'package:flutter_native_contact_picker/model/contact.dart';
13 -import 'package:flutter_picker_plus/flutter_picker_plus.dart'; 12 +
14 import 'package:flutter_screenutil/flutter_screenutil.dart'; 13 import 'package:flutter_screenutil/flutter_screenutil.dart';
15 import 'package:one_key/constant/state.dart'; 14 import 'package:one_key/constant/state.dart';
16 -import 'package:one_key/models/manager.dart';  
17 -import 'package:one_key/models/notebook_detail.dart'; 15 +
18 import 'package:one_key/models/remark.dart'; 16 import 'package:one_key/models/remark.dart';
19 import 'package:one_key/models/reserve_recheck_model.dart'; 17 import 'package:one_key/models/reserve_recheck_model.dart';
20 -import 'package:one_key/pages/detail/notebook_detail_change_page.dart'; 18 +
21 import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart'; 19 import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart';
22 import 'package:one_key/provider/marketing_center_provider.dart'; 20 import 'package:one_key/provider/marketing_center_provider.dart';
23 import 'package:one_key/provider/message_dialog_model.dart'; 21 import 'package:one_key/provider/message_dialog_model.dart';
24 import 'package:one_key/provider/notebook_detail_model.dart'; 22 import 'package:one_key/provider/notebook_detail_model.dart';
25 -import 'package:one_key/provider/online_check_edit_provider.dart';  
26 -import 'package:one_key/provider/remark_manager_model.dart'; 23 +
27 import 'package:one_key/provider/user_model.dart'; 24 import 'package:one_key/provider/user_model.dart';
28 import 'package:one_key/res/colors.dart'; 25 import 'package:one_key/res/colors.dart';
29 -import 'package:one_key/route/route_handles.dart'; 26 +
30 import 'package:one_key/utils/NumLengthInputFormatter.dart'; 27 import 'package:one_key/utils/NumLengthInputFormatter.dart';
31 import 'package:one_key/utils/dialog_util.dart'; 28 import 'package:one_key/utils/dialog_util.dart';
32 import 'package:one_key/utils/event_bus.dart'; 29 import 'package:one_key/utils/event_bus.dart';
@@ -34,35 +31,31 @@ import 'package:one_key/route/navigator_util.dart'; @@ -34,35 +31,31 @@ import 'package:one_key/route/navigator_util.dart';
34 import 'package:one_key/utils/misc.dart'; 31 import 'package:one_key/utils/misc.dart';
35 import 'package:one_key/utils/utils.dart'; 32 import 'package:one_key/utils/utils.dart';
36 import 'package:one_key/widgets/MyDivider.dart'; 33 import 'package:one_key/widgets/MyDivider.dart';
37 -import 'package:one_key/widgets/app_bar.dart';  
38 -import 'package:one_key/widgets/common_button.dart';  
39 -import 'package:one_key/widgets/dialog.dart'; 34 +
40 import 'package:one_key/widgets/h_empty_view.dart'; 35 import 'package:one_key/widgets/h_empty_view.dart';
41 import 'package:one_key/widgets/input_done_view.dart'; 36 import 'package:one_key/widgets/input_done_view.dart';
42 import 'package:one_key/widgets/loading.dart'; 37 import 'package:one_key/widgets/loading.dart';
43 -import 'package:one_key/widgets/need_item.dart'; 38 +
44 import 'package:one_key/widgets/page_exception.dart'; 39 import 'package:one_key/widgets/page_exception.dart';
45 import 'package:one_key/widgets/round_button.dart'; 40 import 'package:one_key/widgets/round_button.dart';
46 import 'package:one_key/widgets/row_multi_text.dart'; 41 import 'package:one_key/widgets/row_multi_text.dart';
47 import 'package:one_key/widgets/system_app_bar.dart'; 42 import 'package:one_key/widgets/system_app_bar.dart';
48 -import 'package:one_key/widgets/table_item.dart';  
49 -import 'package:one_key/models/table.dart' as t; 43 +
50 import 'package:one_key/widgets/v_empty_view.dart'; 44 import 'package:one_key/widgets/v_empty_view.dart';
51 import 'package:permission_handler/permission_handler.dart'; 45 import 'package:permission_handler/permission_handler.dart';
52 import 'package:provider/provider.dart'; 46 import 'package:provider/provider.dart';
53 -import 'package:one_key/models/table.dart' as t;  
54 47
55 import '../../app.dart'; 48 import '../../app.dart';
56 49
57 import '../../models/customer_by_seller_model.dart'; 50 import '../../models/customer_by_seller_model.dart';
58 import '../../models/customer_list_model.dart'; 51 import '../../models/customer_list_model.dart';
59 -import '../../models/detail_model_all_model.dart'; 52 +
  53 +import '../../models/get_reserve_type_field_model.dart';
60 import '../../models/reserveA_action_log_modol.dart'; 54 import '../../models/reserveA_action_log_modol.dart';
61 import '../../models/reserve_deposit_model.dart'; 55 import '../../models/reserve_deposit_model.dart';
62 import '../../models/upload_img_model.dart'; 56 import '../../models/upload_img_model.dart';
63 import '../../provider/collect_store_provider.dart'; 57 import '../../provider/collect_store_provider.dart';
64 -import '../../provider/notebook_detail_model.dart';  
65 -import '../../provider/personnel_provider.dart'; 58 +
66 import '../../provider/store_base_info_provider.dart'; 59 import '../../provider/store_base_info_provider.dart';
67 import '../../provider/upload_img_provider.dart'; 60 import '../../provider/upload_img_provider.dart';
68 61
@@ -160,10 +153,14 @@ class NotebookDetailPageState extends State<NotebookDetailPage> @@ -160,10 +153,14 @@ class NotebookDetailPageState extends State<NotebookDetailPage>
160 // bool hasAuthority = true; // 153 // bool hasAuthority = true; //
161 bool isback = false; 154 bool isback = false;
162 155
  156 + List<dynamic> couponTypes = ['仅预订人', '所有人', '被请客人', '不赠送']; //赠券对象
  157 + String couponType = '所有人';
  158 +
163 @override 159 @override
164 void initState() { 160 void initState() {
165 // TODO: implement initState 161 // TODO: implement initState
166 super.initState(); 162 super.initState();
  163 + // _initCouponTypes();
167 WidgetsBinding.instance.addPostFrameCallback((_) async { 164 WidgetsBinding.instance.addPostFrameCallback((_) async {
168 _myExtendedMaterialTextSelectionControls = 165 _myExtendedMaterialTextSelectionControls =
169 MyTextSelectionControls(callback: (value) { 166 MyTextSelectionControls(callback: (value) {
@@ -350,6 +347,19 @@ class NotebookDetailPageState extends State<NotebookDetailPage> @@ -350,6 +347,19 @@ class NotebookDetailPageState extends State<NotebookDetailPage>
350 }); 347 });
351 } 348 }
352 349
  350 + // _initCouponTypes() {
  351 + // couponTypes = [];
  352 + // List<String> titles = ['仅预订人', '所有人', '被请客人', '不赠送'];
  353 +
  354 + // titles.forEach((item) {
  355 + // GetReserveTypeFieldsSunModel model =
  356 + // GetReserveTypeFieldsSunModel(name: item, select: false);
  357 + // couponTypes.add(model);
  358 + // });
  359 + // couponTypes[couponTypes.indexWhere((element) => element.name == '所有人')]
  360 + // .select = true;
  361 + // }
  362 +
353 /// 修改金额 363 /// 修改金额
354 _updateMoney() async { 364 _updateMoney() async {
355 if (detailModel!.prestrTF == null || detailModel!.prestrTF == "") { 365 if (detailModel!.prestrTF == null || detailModel!.prestrTF == "") {
@@ -3394,6 +3404,44 @@ class NotebookDetailPageState extends State<NotebookDetailPage> @@ -3394,6 +3404,44 @@ class NotebookDetailPageState extends State<NotebookDetailPage>
3394 ) 3404 )
3395 ]), 3405 ]),
3396 3406
  3407 + TitleAndBtn(
  3408 + title: "赠券对象",
  3409 + content: couponType,
  3410 + // list: personNumList,
  3411 + detailModel: model,
  3412 + callback: () {
  3413 + FocusScope.of(context)
  3414 + .requestFocus(
  3415 + FocusNode()); //隐藏键盘
  3416 + // 存储
  3417 +
  3418 + DialogUtil.showSelectCusmanDialog(
  3419 + context,
  3420 + couponTypes,
  3421 + title: '赠送优惠券给',
  3422 + (value) async {
  3423 + if (value != null) {
  3424 + int couponSelectIndex =
  3425 + value.first;
  3426 + couponType = couponTypes[
  3427 + couponSelectIndex];
  3428 +
  3429 + setState(() {});
  3430 + }
  3431 + },
  3432 + selecteds: couponTypes
  3433 + .indexOf(
  3434 + couponType) ==
  3435 + -1
  3436 + ? []
  3437 + : [
  3438 + couponTypes
  3439 + .indexOf(
  3440 + couponType)
  3441 + ])
  3442 + .then((value) {});
  3443 + }),
  3444 +
3397 // ), 3445 // ),
3398 // Offstage( 3446 // Offstage(
3399 // offstage: 3447 // offstage:
@@ -198,6 +198,8 @@ class InvicationPageState extends State<InvicationPage> @@ -198,6 +198,8 @@ class InvicationPageState extends State<InvicationPage>
198 TextEditingController moneyControl = TextEditingController(); 198 TextEditingController moneyControl = TextEditingController();
199 FocusNode moneyFocusNode = FocusNode(); 199 FocusNode moneyFocusNode = FocusNode();
200 bool cancelCan = true; 200 bool cancelCan = true;
  201 + List<dynamic> couponTypes = ['仅预订人', '所有人', '被请客人', '不赠送']; //赠券对象
  202 + String couponType = '所有人';
201 203
202 @override 204 @override
203 void initState() { 205 void initState() {
@@ -346,7 +348,8 @@ class InvicationPageState extends State<InvicationPage> @@ -346,7 +348,8 @@ class InvicationPageState extends State<InvicationPage>
346 getDzSellerConf() async { 348 getDzSellerConf() async {
347 MarketingCenterProvider marketingCenterProvider = 349 MarketingCenterProvider marketingCenterProvider =
348 Provider.of<MarketingCenterProvider>(context, listen: false); 350 Provider.of<MarketingCenterProvider>(context, listen: false);
349 - bool success = await marketingCenterProvider.getDzSellerConf(context,showLoading: false); 351 + bool success = await marketingCenterProvider.getDzSellerConf(context,
  352 + showLoading: false);
350 if (success && marketingCenterProvider.dzSellerConfModel != null) { 353 if (success && marketingCenterProvider.dzSellerConfModel != null) {
351 String? cancelDay = marketingCenterProvider.dzSellerConfModel!.cancelDay; 354 String? cancelDay = marketingCenterProvider.dzSellerConfModel!.cancelDay;
352 bool cancelShopowner = 355 bool cancelShopowner =
@@ -855,7 +858,8 @@ class InvicationPageState extends State<InvicationPage> @@ -855,7 +858,8 @@ class InvicationPageState extends State<InvicationPage>
855 "sid": Provider.of<UserModel>(context, listen: false).user!.sellerid, 858 "sid": Provider.of<UserModel>(context, listen: false).user!.sellerid,
856 'phone': phone 859 'phone': phone
857 }; 860 };
858 - Map? temp = await customerProvider.getIsMemberByPhone(context, params,isShowLoading: false); 861 + Map? temp = await customerProvider.getIsMemberByPhone(context, params,
  862 + isShowLoading: false);
859 if (temp == null) { 863 if (temp == null) {
860 //会员状态未知 864 //会员状态未知
861 isMember = '会员状态未知'; 865 isMember = '会员状态未知';
@@ -3025,80 +3029,124 @@ class InvicationPageState extends State<InvicationPage> @@ -3025,80 +3029,124 @@ class InvicationPageState extends State<InvicationPage>
3025 crossAxisAlignment: CrossAxisAlignment.center, 3029 crossAxisAlignment: CrossAxisAlignment.center,
3026 children: [ 3030 children: [
3027 Expanded( 3031 Expanded(
3028 - child: TextField(  
3029 - maxLines: 1,  
3030 - enabled: false,  
3031 -  
3032 - //输入文本的样式  
3033 - style: TextStyle(  
3034 - fontSize: ScreenUtil().setSp(28),  
3035 - color: MyColours.color_515151),  
3036 - // controller: _baseIndoProvider.nameController,  
3037 - // focusNode: _nameNode,  
3038 - // textAlignVertical: TextAlignVertical.top,  
3039 - decoration: InputDecoration(  
3040 - hintText: "用餐类型:",  
3041 - hintStyle: TextStyle(  
3042 - color: MyColours.color_515151,  
3043 - fontSize: ScreenUtil().setSp(28),  
3044 - ),  
3045 - // contentPadding:  
3046 - // EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),  
3047 - // border: InputBorder.none,  
3048 - contentPadding: EdgeInsets.zero,  
3049 - border: OutlineInputBorder(  
3050 - borderSide: BorderSide.none),  
3051 - ),  
3052 - onChanged: (value) {},  
3053 - onTap: () {},  
3054 - onEditingComplete: () {},  
3055 - keyboardType: TextInputType.text,  
3056 - ),  
3057 - ),  
3058 - InkWell(  
3059 - onTap: () {  
3060 - FocusScope.of(context)  
3061 - .requestFocus(FocusNode()); //隐藏键盘  
3062 - // 存储  
3063 -  
3064 - DialogUtil.openDishTypeSelectModalBottomSheet(  
3065 - context,  
3066 - detailModel.reserveTypes!,  
3067 - reserveType, rCallback: (value) async {  
3068 - if (value != null) {  
3069 - reserveType = value;  
3070 - setState(() {});  
3071 - bool sucess = await detailModel  
3072 - .upReserveInfo(context, widget.rid,  
3073 - reserveType: reserveType,  
3074 - needToast: false);  
3075 - if (sucess) {  
3076 - EventBus()  
3077 - .emit("refresh_tablemanager"); //刷新桌位  
3078 - bus.emit("refresh_book_list"); //刷新已预订列表  
3079 - bus.emit("refresh_detail");  
3080 - // await _getReserveDetail(  
3081 - // showCicle: false);  
3082 - }  
3083 - }  
3084 - });  
3085 - },  
3086 - child: Row(children: [  
3087 - Text(  
3088 - reserveType!,  
3089 - style: TextStyle(  
3090 - color: reserveType == '请选择'  
3091 - ? MyColours.color_999999  
3092 - : MyColours.color_515151,  
3093 - fontSize: ScreenUtil().setSp(28),  
3094 - ),  
3095 - ),  
3096 - HEmptyView(4),  
3097 - Image.asset(Utils.getImgPath('quan_down_f'),  
3098 - width: ScreenUtil().setWidth(28),  
3099 - height: ScreenUtil().setWidth(28)),  
3100 - ]),  
3101 - ) 3032 + child: Row(
  3033 + // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  3034 + crossAxisAlignment: CrossAxisAlignment.center,
  3035 + children: [
  3036 + Text("用餐类型:",
  3037 + style: TextStyle(
  3038 + color: MyColours.color_515151,
  3039 + fontSize: ScreenUtil().setSp(28))),
  3040 + Expanded(
  3041 + child: InkWell(
  3042 + onTap: () {
  3043 + FocusScope.of(context)
  3044 + .requestFocus(FocusNode()); //隐藏键盘
  3045 + // 存储
  3046 +
  3047 + DialogUtil
  3048 + .openDishTypeSelectModalBottomSheet(
  3049 + context,
  3050 + detailModel.reserveTypes!,
  3051 + reserveType,
  3052 + rCallback: (value) async {
  3053 + if (value != null) {
  3054 + reserveType = value;
  3055 + setState(() {});
  3056 + bool sucess = await detailModel
  3057 + .upReserveInfo(context, widget.rid,
  3058 + reserveType: reserveType,
  3059 + needToast: false);
  3060 + if (sucess) {
  3061 + EventBus().emit(
  3062 + "refresh_tablemanager"); //刷新桌位
  3063 + bus.emit(
  3064 + "refresh_book_list"); //刷新已预订列表
  3065 + bus.emit("refresh_detail");
  3066 + // await _getReserveDetail(
  3067 + // showCicle: false);
  3068 + }
  3069 + }
  3070 + });
  3071 + },
  3072 + child: Row(children: [
  3073 + Expanded(
  3074 + child: Text(
  3075 + reserveType!,
  3076 + textAlign: TextAlign.center,
  3077 + style: TextStyle(
  3078 + color: reserveType == '请选择'
  3079 + ? MyColours.color_999999
  3080 + : MyColours.color_515151,
  3081 + fontSize: ScreenUtil().setSp(28),
  3082 + ),
  3083 + )),
  3084 + HEmptyView(10),
  3085 + Image.asset(Utils.getImgPath('quan_down_f'),
  3086 + width: ScreenUtil().setWidth(28),
  3087 + height: ScreenUtil().setWidth(28)),
  3088 + ]),
  3089 + ))
  3090 + ],
  3091 + )),
  3092 + HEmptyView(20),
  3093 + Expanded(
  3094 + child: Row(
  3095 + // mainAxisAlignment: MainAxisAlignment.spaceBetween,
  3096 + crossAxisAlignment: CrossAxisAlignment.center,
  3097 + children: [
  3098 + Text("赠券对象:",
  3099 + style: TextStyle(
  3100 + color: MyColours.color_515151,
  3101 + fontSize: ScreenUtil().setSp(28))),
  3102 + Expanded(
  3103 + child: InkWell(
  3104 + onTap: () {
  3105 + FocusScope.of(context)
  3106 + .requestFocus(FocusNode()); //隐藏键盘
  3107 + // 存储
  3108 +
  3109 + DialogUtil.showSelectCusmanDialog(
  3110 + context, couponTypes,
  3111 + title: '赠送优惠券给', (value) async {
  3112 + if (value != null) {
  3113 + int couponSelectIndex = value.first;
  3114 + couponType =
  3115 + couponTypes[couponSelectIndex];
  3116 +
  3117 + setState(() {});
  3118 + }
  3119 + },
  3120 + selecteds: couponTypes
  3121 + .indexOf(couponType) ==
  3122 + -1
  3123 + ? []
  3124 + : [
  3125 + couponTypes
  3126 + .indexOf(couponType)
  3127 + ])
  3128 + .then((value) {});
  3129 + },
  3130 + child: Row(children: [
  3131 + Expanded(
  3132 + child: Text(
  3133 + couponType,
  3134 + textAlign: TextAlign.center,
  3135 + style: TextStyle(
  3136 + color: couponType == '请选择'
  3137 + ? MyColours.color_999999
  3138 + : MyColours.color_515151,
  3139 + fontSize: ScreenUtil().setSp(28),
  3140 + ),
  3141 + )),
  3142 + HEmptyView(10),
  3143 + Image.asset(Utils.getImgPath('quan_down_f'),
  3144 + width: ScreenUtil().setWidth(28),
  3145 + height: ScreenUtil().setWidth(28)),
  3146 + ]),
  3147 + ))
  3148 + ],
  3149 + ))
3102 ], 3150 ],
3103 )), 3151 )),
3104 if (detailModel.isShowNoticeDeposit == '1') 3152 if (detailModel.isShowNoticeDeposit == '1')
@@ -5348,8 +5396,8 @@ class InvicationPageState extends State<InvicationPage> @@ -5348,8 +5396,8 @@ class InvicationPageState extends State<InvicationPage>
5348 return; 5396 return;
5349 } else if (ObjectUtil.isEmpty( 5397 } else if (ObjectUtil.isEmpty(
5350 detailModel.baseInfoSunModel) || 5398 detailModel.baseInfoSunModel) ||
5351 - ObjectUtil.isEmpty( detailModel  
5352 - .baseInfoSunModel!.phone)) { 5399 + ObjectUtil.isEmpty(
  5400 + detailModel.baseInfoSunModel!.phone)) {
5353 // Utils.showToast('请填写经理的联系电话'); 5401 // Utils.showToast('请填写经理的联系电话');
5354 DialogUtil.cupertinoAlertDialog(context, 5402 DialogUtil.cupertinoAlertDialog(context,
5355 title: "填写个人信息", 5403 title: "填写个人信息",
@@ -5609,8 +5657,8 @@ class InvicationPageState extends State<InvicationPage> @@ -5609,8 +5657,8 @@ class InvicationPageState extends State<InvicationPage>
5609 callback: () async { 5657 callback: () async {
5610 if (ObjectUtil.isEmpty( 5658 if (ObjectUtil.isEmpty(
5611 detailModel.baseInfoSunModel) || 5659 detailModel.baseInfoSunModel) ||
5612 - ObjectUtil.isEmpty( detailModel  
5613 - .baseInfoSunModel!.phone)) { 5660 + ObjectUtil.isEmpty(
  5661 + detailModel.baseInfoSunModel!.phone)) {
5614 // Utils.showToast('请填写经理的联系电话'); 5662 // Utils.showToast('请填写经理的联系电话');
5615 DialogUtil.cupertinoAlertDialog(context, 5663 DialogUtil.cupertinoAlertDialog(context,
5616 title: "填写个人信息", 5664 title: "填写个人信息",
@@ -276,8 +276,6 @@ class NotebookDetailModel extends ChangeNotifier { @@ -276,8 +276,6 @@ class NotebookDetailModel extends ChangeNotifier {
276 } 276 }
277 if (baseResp.data['reserve_type_field'] != null) { 277 if (baseResp.data['reserve_type_field'] != null) {
278 reserveTypes = <GetReserveTypeFieldsSunModel>[]; 278 reserveTypes = <GetReserveTypeFieldsSunModel>[];
279 -  
280 - reserveTypes = <GetReserveTypeFieldsSunModel>[];  
281 baseResp.data['reserve_type_field'].forEach((v) { 279 baseResp.data['reserve_type_field'].forEach((v) {
282 GetReserveTypeFieldsSunModel temp = 280 GetReserveTypeFieldsSunModel temp =
283 GetReserveTypeFieldsSunModel(name: v, select: false); 281 GetReserveTypeFieldsSunModel(name: v, select: false);
@@ -910,7 +910,9 @@ class DialogUtil { @@ -910,7 +910,9 @@ class DialogUtil {
910 ///用餐类型 910 ///用餐类型
911 static openDishTypeSelectModalBottomSheet(context, 911 static openDishTypeSelectModalBottomSheet(context,
912 List<GetReserveTypeFieldsSunModel> reserveTypes, String? reserveType, 912 List<GetReserveTypeFieldsSunModel> reserveTypes, String? reserveType,
913 - {VoidCallback? lCallback, ClickCallback? rCallback}) async { 913 + {VoidCallback? lCallback,
  914 + ClickCallback? rCallback,
  915 + String title = "选择客户宴请类型"}) async {
914 String? selectType = reserveType; 916 String? selectType = reserveType;
915 if (selectType != '请选择') { 917 if (selectType != '请选择') {
916 reserveTypes.forEach((element) { 918 reserveTypes.forEach((element) {
@@ -962,7 +964,7 @@ class DialogUtil { @@ -962,7 +964,7 @@ class DialogUtil {
962 padding: EdgeInsets.symmetric( 964 padding: EdgeInsets.symmetric(
963 vertical: ScreenUtil().setWidth(40)), 965 vertical: ScreenUtil().setWidth(40)),
964 child: Text( 966 child: Text(
965 - "选择客户宴请类型", 967 + title,
966 style: TextStyle( 968 style: TextStyle(
967 fontWeight: FontWeight.bold, 969 fontWeight: FontWeight.bold,
968 fontSize: ScreenUtil().setSp(32), 970 fontSize: ScreenUtil().setSp(32),
@@ -607,10 +607,10 @@ packages: @@ -607,10 +607,10 @@ packages:
607 dependency: "direct main" 607 dependency: "direct main"
608 description: 608 description:
609 name: fl_chart 609 name: fl_chart
610 - sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237" 610 + sha256: f2e9137f261d0f53a820f6b829c80ba570ac915284c8e32789d973834796eca0
611 url: "https://pub.flutter-io.cn" 611 url: "https://pub.flutter-io.cn"
612 source: hosted 612 source: hosted
613 - version: "0.70.2" 613 + version: "0.71.0"
614 fluro: 614 fluro:
615 dependency: "direct main" 615 dependency: "direct main"
616 description: 616 description:
@@ -181,6 +181,12 @@ dependencies: @@ -181,6 +181,12 @@ dependencies:
181 amap_map_fluttify: ^2.0.2 181 amap_map_fluttify: ^2.0.2
182 # amap_map: ^1.0.12 182 # amap_map: ^1.0.12
183 # amap_location_fluttify: ^0.22.0 # 请检查最新版本 183 # amap_location_fluttify: ^0.22.0 # 请检查最新版本
  184 +
  185 +
  186 + # git:
  187 +# url: https://github.com/andychucs/flutter_inappwebview.git
  188 +# ref: origin-http
  189 +# path: flutter_inappwebview_ios
184 # amap_search_fluttify: ^0.18.0 # 请检查最新版本 190 # amap_search_fluttify: ^0.18.0 # 请检查最新版本
185 # xbr_gaode_amap: ^6.0.0 191 # xbr_gaode_amap: ^6.0.0
186 192
@@ -260,7 +266,7 @@ dependencies: @@ -260,7 +266,7 @@ dependencies:
260 # 二维码扫描 266 # 二维码扫描
261 barcode_scan2: ^4.5.0 267 barcode_scan2: ^4.5.0
262 # 柱形图 268 # 柱形图
263 - fl_chart: ^0.70.2 269 + fl_chart: ^0.71.0
264 270
265 #评论弹框 271 #评论弹框
266 sliding_up_panel2: ^3.3.0+1 272 sliding_up_panel2: ^3.3.0+1