Showing
11 changed files
with
981 additions
and
20 deletions
| @@ -20,19 +20,19 @@ if (flutterRoot == null) { | @@ -20,19 +20,19 @@ if (flutterRoot == null) { | ||
| 20 | 20 | ||
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | -def flutterVersionCode = "701" | 23 | +def flutterVersionCode = "702" |
| 24 | if (flutterVersionCode == null) { | 24 | if (flutterVersionCode == null) { |
| 25 | - flutterVersionCode = '701' | 25 | + flutterVersionCode = '702' |
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | 31 | ||
| 32 | -def flutterVersionName = "7.0.1" | 32 | +def flutterVersionName = "7.0.2" |
| 33 | 33 | ||
| 34 | if (flutterVersionName == null) { | 34 | if (flutterVersionName == null) { |
| 35 | - flutterVersionName = '7.0.1' | 35 | + flutterVersionName = '7.0.2' |
| 36 | 36 | ||
| 37 | } | 37 | } |
| 38 | 38 | ||
| @@ -83,8 +83,8 @@ android { | @@ -83,8 +83,8 @@ android { | ||
| 83 | 83 | ||
| 84 | ndk { | 84 | ndk { |
| 85 | //选择要添加的对应 cpu 类型的 .so 库。 | 85 | //选择要添加的对应 cpu 类型的 .so 库。 |
| 86 | - // abiFilters 'arm64-v8a', 'x86_64', 'mips64' //魅族64位,不支持32位 | ||
| 87 | - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64','x86', 'mips', 'mips64' | 86 | + abiFilters 'arm64-v8a', 'x86_64', 'mips64' //魅族64位,不支持32位 |
| 87 | + // abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64','x86', 'mips', 'mips64' | ||
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | lintOptions { | 90 | lintOptions { |
| @@ -355,10 +355,14 @@ | @@ -355,10 +355,14 @@ | ||
| 355 | inputFileListPaths = ( | 355 | inputFileListPaths = ( |
| 356 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", | 356 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", |
| 357 | ); | 357 | ); |
| 358 | + inputPaths = ( | ||
| 359 | + ); | ||
| 358 | name = "[CP] Embed Pods Frameworks"; | 360 | name = "[CP] Embed Pods Frameworks"; |
| 359 | outputFileListPaths = ( | 361 | outputFileListPaths = ( |
| 360 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", | 362 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", |
| 361 | ); | 363 | ); |
| 364 | + outputPaths = ( | ||
| 365 | + ); | ||
| 362 | runOnlyForDeploymentPostprocessing = 0; | 366 | runOnlyForDeploymentPostprocessing = 0; |
| 363 | shellPath = /bin/sh; | 367 | shellPath = /bin/sh; |
| 364 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; | 368 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; |
| @@ -372,10 +376,14 @@ | @@ -372,10 +376,14 @@ | ||
| 372 | inputFileListPaths = ( | 376 | inputFileListPaths = ( |
| 373 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", | 377 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", |
| 374 | ); | 378 | ); |
| 379 | + inputPaths = ( | ||
| 380 | + ); | ||
| 375 | name = "[CP] Copy Pods Resources"; | 381 | name = "[CP] Copy Pods Resources"; |
| 376 | outputFileListPaths = ( | 382 | outputFileListPaths = ( |
| 377 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", | 383 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", |
| 378 | ); | 384 | ); |
| 385 | + outputPaths = ( | ||
| 386 | + ); | ||
| 379 | runOnlyForDeploymentPostprocessing = 0; | 387 | runOnlyForDeploymentPostprocessing = 0; |
| 380 | shellPath = /bin/sh; | 388 | shellPath = /bin/sh; |
| 381 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; | 389 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; |
| @@ -527,7 +535,7 @@ | @@ -527,7 +535,7 @@ | ||
| 527 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 535 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 528 | CLANG_ENABLE_MODULES = YES; | 536 | CLANG_ENABLE_MODULES = YES; |
| 529 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | 537 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; |
| 530 | - CURRENT_PROJECT_VERSION = 7000; | 538 | + CURRENT_PROJECT_VERSION = 703; |
| 531 | DEVELOPMENT_TEAM = 8J59HM8B82; | 539 | DEVELOPMENT_TEAM = 8J59HM8B82; |
| 532 | ENABLE_BITCODE = NO; | 540 | ENABLE_BITCODE = NO; |
| 533 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; | 541 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; |
| @@ -537,7 +545,7 @@ | @@ -537,7 +545,7 @@ | ||
| 537 | "$(inherited)", | 545 | "$(inherited)", |
| 538 | "@executable_path/Frameworks", | 546 | "@executable_path/Frameworks", |
| 539 | ); | 547 | ); |
| 540 | - MARKETING_VERSION = 7.0.0; | 548 | + MARKETING_VERSION = 7.0.3; |
| 541 | PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; | 549 | PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; |
| 542 | PRODUCT_NAME = "$(TARGET_NAME)"; | 550 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 543 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | 551 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; |
| @@ -712,7 +720,7 @@ | @@ -712,7 +720,7 @@ | ||
| 712 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 720 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 713 | CLANG_ENABLE_MODULES = YES; | 721 | CLANG_ENABLE_MODULES = YES; |
| 714 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | 722 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; |
| 715 | - CURRENT_PROJECT_VERSION = 7000; | 723 | + CURRENT_PROJECT_VERSION = 703; |
| 716 | DEVELOPMENT_TEAM = 8J59HM8B82; | 724 | DEVELOPMENT_TEAM = 8J59HM8B82; |
| 717 | ENABLE_BITCODE = NO; | 725 | ENABLE_BITCODE = NO; |
| 718 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; | 726 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; |
| @@ -722,7 +730,7 @@ | @@ -722,7 +730,7 @@ | ||
| 722 | "$(inherited)", | 730 | "$(inherited)", |
| 723 | "@executable_path/Frameworks", | 731 | "@executable_path/Frameworks", |
| 724 | ); | 732 | ); |
| 725 | - MARKETING_VERSION = 7.0.0; | 733 | + MARKETING_VERSION = 7.0.3; |
| 726 | PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; | 734 | PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; |
| 727 | PRODUCT_NAME = "$(TARGET_NAME)"; | 735 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 728 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | 736 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; |
| @@ -740,7 +748,7 @@ | @@ -740,7 +748,7 @@ | ||
| 740 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 748 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; |
| 741 | CLANG_ENABLE_MODULES = YES; | 749 | CLANG_ENABLE_MODULES = YES; |
| 742 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | 750 | CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; |
| 743 | - CURRENT_PROJECT_VERSION = 7000; | 751 | + CURRENT_PROJECT_VERSION = 703; |
| 744 | DEVELOPMENT_TEAM = 8J59HM8B82; | 752 | DEVELOPMENT_TEAM = 8J59HM8B82; |
| 745 | ENABLE_BITCODE = NO; | 753 | ENABLE_BITCODE = NO; |
| 746 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; | 754 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; |
| @@ -750,7 +758,7 @@ | @@ -750,7 +758,7 @@ | ||
| 750 | "$(inherited)", | 758 | "$(inherited)", |
| 751 | "@executable_path/Frameworks", | 759 | "@executable_path/Frameworks", |
| 752 | ); | 760 | ); |
| 753 | - MARKETING_VERSION = 7.0.0; | 761 | + MARKETING_VERSION = 7.0.3; |
| 754 | PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; | 762 | PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; |
| 755 | PRODUCT_NAME = "$(TARGET_NAME)"; | 763 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| 756 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | 764 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; |
| @@ -82,6 +82,8 @@ class _CustomerHomePageState extends State<CustomerHomePage> { | @@ -82,6 +82,8 @@ class _CustomerHomePageState extends State<CustomerHomePage> { | ||
| 82 | } else { | 82 | } else { |
| 83 | NavigatorUtil.goCustomerStatisticsPage(context); | 83 | NavigatorUtil.goCustomerStatisticsPage(context); |
| 84 | } | 84 | } |
| 85 | + } else { | ||
| 86 | + Utils.showToast('您还没有操作权限,请联系管理员'); | ||
| 85 | } | 87 | } |
| 86 | } else { | 88 | } else { |
| 87 | if (Utils.getAuthority(context, '我的客情')) { | 89 | if (Utils.getAuthority(context, '我的客情')) { |
| @@ -96,6 +98,8 @@ class _CustomerHomePageState extends State<CustomerHomePage> { | @@ -96,6 +98,8 @@ class _CustomerHomePageState extends State<CustomerHomePage> { | ||
| 96 | } else { | 98 | } else { |
| 97 | NavigatorUtil.goMyCustomerPage(context); | 99 | NavigatorUtil.goMyCustomerPage(context); |
| 98 | } | 100 | } |
| 101 | + } else { | ||
| 102 | + Utils.showToast('您还没有操作权限,请联系管理员'); | ||
| 99 | } | 103 | } |
| 100 | } | 104 | } |
| 101 | }, | 105 | }, |
| 1 | +import 'package:flutter/material.dart'; | ||
| 2 | +import 'package:one_key/res/colors.dart'; | ||
| 3 | +import 'package:one_key/route/navigator_util.dart'; | ||
| 4 | +import 'package:one_key/utils/screen_util.dart'; | ||
| 5 | +import 'package:one_key/utils/utils.dart'; | ||
| 6 | +import 'package:one_key/widgets/MyDivider.dart'; | ||
| 7 | +import 'package:one_key/widgets/system_app_bar.dart'; | ||
| 8 | +import 'package:one_key/widgets/v_empty_view.dart'; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * 沉睡/流失客户唤醒营销 | ||
| 12 | + */ | ||
| 13 | + | ||
| 14 | +class AwakeningMarketingPage extends StatefulWidget { | ||
| 15 | + const AwakeningMarketingPage({super.key}); | ||
| 16 | + | ||
| 17 | + @override | ||
| 18 | + State<AwakeningMarketingPage> createState() => _AwakeningMarketingPageState(); | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +class _AwakeningMarketingPageState extends State<AwakeningMarketingPage> { | ||
| 22 | + bool isRemindSleep = false; | ||
| 23 | + bool isSendSleep = false; | ||
| 24 | + | ||
| 25 | + bool isRemindLeave = false; | ||
| 26 | + bool isSendLeave = false; | ||
| 27 | + | ||
| 28 | + Widget _itemSmsWidget(bool isSelect, String title, | ||
| 29 | + {GestureTapCallback? onTap}) { | ||
| 30 | + return Column( | ||
| 31 | + children: [ | ||
| 32 | + InkWell( | ||
| 33 | + onTap: onTap, | ||
| 34 | + child: Padding( | ||
| 35 | + padding: EdgeInsets.only( | ||
| 36 | + left: w(16), top: w(14), bottom: w(3), right: w(12)), | ||
| 37 | + child: Row( | ||
| 38 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 39 | + children: [ | ||
| 40 | + Text( | ||
| 41 | + title, | ||
| 42 | + style: TextStyle( | ||
| 43 | + color: MyColours.color_515151, fontSize: font(14)), | ||
| 44 | + ), | ||
| 45 | + Spacer(), | ||
| 46 | + Container( | ||
| 47 | + margin: EdgeInsets.symmetric( | ||
| 48 | + horizontal: w(7), vertical: w(4)), | ||
| 49 | + child: Image.asset( | ||
| 50 | + Utils.getImgPath(isSelect ? 'swich_on' : 'swich_off'), | ||
| 51 | + width: w(44), | ||
| 52 | + ), | ||
| 53 | + ) | ||
| 54 | + // RoundButton( | ||
| 55 | + // text: '预览', | ||
| 56 | + // gradientStart: MyColours.color_ffffff, | ||
| 57 | + // gradientEnd: MyColours.color_ffffff, | ||
| 58 | + // borderColor: MyColours.color_438E93, | ||
| 59 | + // textColor: MyColours.color_438E93, | ||
| 60 | + // radius: ScreenUtil().setWidth(22), | ||
| 61 | + // fontSize: 24, | ||
| 62 | + // width: w(72), | ||
| 63 | + // height: ScreenUtil().setWidth(44), | ||
| 64 | + // isBold: true, | ||
| 65 | + // onPressed: () { | ||
| 66 | + // NavigatorUtil.goMarkingPreviewPage(context); | ||
| 67 | + // }, | ||
| 68 | + // ), | ||
| 69 | + ]))), | ||
| 70 | + Padding( | ||
| 71 | + padding: EdgeInsets.only(left: w(16)), | ||
| 72 | + child: MyDivider(double.infinity, w(0.5), | ||
| 73 | + color: MyColours.color_E7E7E7)), | ||
| 74 | + ], | ||
| 75 | + ); | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + Widget _title(String title) { | ||
| 79 | + return Column( | ||
| 80 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 81 | + children: [ | ||
| 82 | + Padding( | ||
| 83 | + padding: EdgeInsets.symmetric(vertical: w(8)), | ||
| 84 | + child: Text( | ||
| 85 | + title, | ||
| 86 | + style: TextStyle(color: MyColours.color_515151, fontSize: font(16)), | ||
| 87 | + ), | ||
| 88 | + ), | ||
| 89 | + MyDivider(double.infinity, w(0.5), color: MyColours.color_E7E7E7), | ||
| 90 | + ], | ||
| 91 | + ); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + @override | ||
| 95 | + Widget build(BuildContext context) { | ||
| 96 | + return Scaffold( | ||
| 97 | + backgroundColor: MyColours.color_ffffff, | ||
| 98 | + appBar: SystemAppBar('沉睡/流失客户唤醒营销'), | ||
| 99 | + body: Column( | ||
| 100 | + children: [ | ||
| 101 | + Expanded( | ||
| 102 | + child: SingleChildScrollView( | ||
| 103 | + child: Padding( | ||
| 104 | + padding: EdgeInsets.only(left: w(16)), | ||
| 105 | + child: Column( | ||
| 106 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 107 | + children: [ | ||
| 108 | + _title('活跃客户转沉睡'), | ||
| 109 | + _itemSmsWidget(isRemindSleep, '进入沉睡状态时给经理发送提醒消息', | ||
| 110 | + onTap: () { | ||
| 111 | + setState(() { | ||
| 112 | + isRemindSleep = !isRemindSleep; | ||
| 113 | + }); | ||
| 114 | + // _setCancelSMS(); | ||
| 115 | + }), | ||
| 116 | + _itemSmsWidget(isSendSleep, '进入沉睡状态时给客户发送优惠', onTap: () { | ||
| 117 | + setState(() { | ||
| 118 | + isSendSleep = !isSendSleep; | ||
| 119 | + }); | ||
| 120 | + // _setNotice(); | ||
| 121 | + }), | ||
| 122 | + VEmptyView(28), | ||
| 123 | + InkWell( | ||
| 124 | + onTap: () { | ||
| 125 | + NavigatorUtil.goAwakeningSendSettingPage(context); | ||
| 126 | + }, | ||
| 127 | + child: Padding( | ||
| 128 | + padding: EdgeInsets.only( | ||
| 129 | + left: w(16), | ||
| 130 | + top: w(14), | ||
| 131 | + bottom: w(10), | ||
| 132 | + right: w(12)), | ||
| 133 | + child: Row( | ||
| 134 | + mainAxisAlignment: | ||
| 135 | + MainAxisAlignment.spaceBetween, | ||
| 136 | + children: [ | ||
| 137 | + Text( | ||
| 138 | + '客户沉睡发放优惠设置', | ||
| 139 | + style: TextStyle( | ||
| 140 | + color: MyColours.color_515151, | ||
| 141 | + fontSize: font(14)), | ||
| 142 | + ), | ||
| 143 | + Spacer(), | ||
| 144 | + // HEmptyView(20), | ||
| 145 | + // Expanded( | ||
| 146 | + // child: Text( | ||
| 147 | + // smsTemplate, | ||
| 148 | + // textAlign: TextAlign.right, | ||
| 149 | + // style: TextStyle( | ||
| 150 | + // color: MyColours.color_515151, | ||
| 151 | + // fontSize: font(14)), | ||
| 152 | + // )), | ||
| 153 | + Container( | ||
| 154 | + padding: EdgeInsets.symmetric( | ||
| 155 | + horizontal: w(11), vertical: w(4)), | ||
| 156 | + child: Image.asset( | ||
| 157 | + "assets/arrow_right_new.png", | ||
| 158 | + width: w(9), | ||
| 159 | + height: w(16), | ||
| 160 | + ), | ||
| 161 | + ) | ||
| 162 | + ]))), | ||
| 163 | + | ||
| 164 | + Padding( | ||
| 165 | + padding: EdgeInsets.only(left: w(16)), | ||
| 166 | + child: MyDivider(double.infinity, w(0.5), | ||
| 167 | + color: MyColours.color_E7E7E7)), | ||
| 168 | + // _itemSmsWidget(marketingSms, '使用店铺手机发送营销短信', | ||
| 169 | + // onTap: () { | ||
| 170 | + // setState(() { | ||
| 171 | + // marketingSms = !marketingSms; | ||
| 172 | + // }); | ||
| 173 | + // }), | ||
| 174 | + VEmptyView(24), | ||
| 175 | + _title('沉睡客户转流失'), | ||
| 176 | + _itemSmsWidget(isRemindLeave, '进入流失状态时给经理发送提醒消息', | ||
| 177 | + onTap: () { | ||
| 178 | + setState(() { | ||
| 179 | + isRemindLeave = !isRemindLeave; | ||
| 180 | + }); | ||
| 181 | + // _setCancelSMS(); | ||
| 182 | + }), | ||
| 183 | + _itemSmsWidget(isSendLeave, '进入流失状态时给客户发送优惠', onTap: () { | ||
| 184 | + setState(() { | ||
| 185 | + isSendLeave = !isSendLeave; | ||
| 186 | + }); | ||
| 187 | + // _setNotice(); | ||
| 188 | + }), | ||
| 189 | + VEmptyView(28), | ||
| 190 | + InkWell( | ||
| 191 | + onTap: () { | ||
| 192 | + NavigatorUtil.goAwakeningSendSettingPage(context); | ||
| 193 | + }, | ||
| 194 | + child: Padding( | ||
| 195 | + padding: EdgeInsets.only( | ||
| 196 | + left: w(16), | ||
| 197 | + top: w(14), | ||
| 198 | + bottom: w(10), | ||
| 199 | + right: w(12)), | ||
| 200 | + child: Row( | ||
| 201 | + mainAxisAlignment: | ||
| 202 | + MainAxisAlignment.spaceBetween, | ||
| 203 | + children: [ | ||
| 204 | + Text( | ||
| 205 | + '客户流失发放优惠设置', | ||
| 206 | + style: TextStyle( | ||
| 207 | + color: MyColours.color_515151, | ||
| 208 | + fontSize: font(14)), | ||
| 209 | + ), | ||
| 210 | + Spacer(), | ||
| 211 | + // HEmptyView(20), | ||
| 212 | + // Expanded( | ||
| 213 | + // child: Text( | ||
| 214 | + // smsTemplate, | ||
| 215 | + // textAlign: TextAlign.right, | ||
| 216 | + // style: TextStyle( | ||
| 217 | + // color: MyColours.color_515151, | ||
| 218 | + // fontSize: font(14)), | ||
| 219 | + // )), | ||
| 220 | + Container( | ||
| 221 | + padding: EdgeInsets.symmetric( | ||
| 222 | + horizontal: w(11), vertical: w(4)), | ||
| 223 | + child: Image.asset( | ||
| 224 | + "assets/arrow_right_new.png", | ||
| 225 | + width: w(9), | ||
| 226 | + height: w(16), | ||
| 227 | + ), | ||
| 228 | + ) | ||
| 229 | + ]))), | ||
| 230 | + | ||
| 231 | + Padding( | ||
| 232 | + padding: EdgeInsets.only(left: w(16)), | ||
| 233 | + child: MyDivider(double.infinity, w(0.5), | ||
| 234 | + color: MyColours.color_E7E7E7)), | ||
| 235 | + // _itemSmsWidget(marketingSms, '使用店铺手机发送营销短信', | ||
| 236 | + // onTap: () { | ||
| 237 | + // setState(() { | ||
| 238 | + // marketingSms = !marketingSms; | ||
| 239 | + // }); | ||
| 240 | + // }), | ||
| 241 | + VEmptyView(24), | ||
| 242 | + ], | ||
| 243 | + )), | ||
| 244 | + )), | ||
| 245 | + // Container( | ||
| 246 | + // color: MyColours.color_ffffff, | ||
| 247 | + // padding: EdgeInsets.only( | ||
| 248 | + // left: w(23), right: w(23), top: w(12), bottom: w(25)), | ||
| 249 | + // child: Row( | ||
| 250 | + // children: [ | ||
| 251 | + // // RoundButton( | ||
| 252 | + // // text: '图文预览', | ||
| 253 | + // // width: w(100), | ||
| 254 | + // // gradientStart: MyColours.color_ffffff, | ||
| 255 | + // // gradientEnd: MyColours.color_ffffff, | ||
| 256 | + // // borderColor: MyColours.color_438E93, | ||
| 257 | + // // radius: r(5), | ||
| 258 | + // // fontSize: 32, | ||
| 259 | + // // height: w(40), | ||
| 260 | + // // textColor: MyColours.color_438E93, | ||
| 261 | + // // isBold: true, | ||
| 262 | + // // onPressed: () async { | ||
| 263 | + // // // NavigatorUtil.goMarkingPreviewPage(context); | ||
| 264 | + // // if (previewUrl == '') { | ||
| 265 | + // // Utils.showToast('暂时没有可预览的图文信息'); | ||
| 266 | + // // return; | ||
| 267 | + // // } | ||
| 268 | + // // // | ||
| 269 | + // // _showPhotoView(context, 0, [previewUrl]); | ||
| 270 | + // // }), | ||
| 271 | + // // HEmptyView(30), | ||
| 272 | + // Expanded( | ||
| 273 | + // child: RoundButton( | ||
| 274 | + // text: '保存', | ||
| 275 | + // gradientStart: MyColours.color_199095, | ||
| 276 | + // gradientEnd: MyColours.color_199095, | ||
| 277 | + // // borderColor: MyColours.color_999999, | ||
| 278 | + // radius: r(5), | ||
| 279 | + // fontSize: 32, | ||
| 280 | + // height: w(40), | ||
| 281 | + // isBold: true, | ||
| 282 | + // onPressed: () async { | ||
| 283 | + // //调用接口 | ||
| 284 | + // _setData(); | ||
| 285 | + // })) | ||
| 286 | + // ], | ||
| 287 | + // )) | ||
| 288 | + ], | ||
| 289 | + )); | ||
| 290 | + } | ||
| 291 | +} |
| 1 | +import 'package:flutter/material.dart'; | ||
| 2 | +import 'package:flutter/services.dart'; | ||
| 3 | +import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
| 4 | +import 'package:one_key/provider/customer_making_provider.dart'; | ||
| 5 | +import 'package:one_key/provider/customer_provider.dart'; | ||
| 6 | +import 'package:one_key/provider/user_model.dart'; | ||
| 7 | +import 'package:one_key/res/colors.dart'; | ||
| 8 | +import 'package:one_key/route/navigator_util.dart'; | ||
| 9 | +import 'package:one_key/utils/dialog_util.dart'; | ||
| 10 | +import 'package:one_key/utils/screen_util.dart'; | ||
| 11 | +import 'package:one_key/utils/utils.dart'; | ||
| 12 | +import 'package:one_key/widgets/h_empty_view.dart'; | ||
| 13 | +import 'package:one_key/widgets/system_app_bar.dart'; | ||
| 14 | +import 'package:one_key/widgets/v_empty_view.dart'; | ||
| 15 | +import 'package:provider/provider.dart'; | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * 客户沉睡/流失发放优惠设置 | ||
| 19 | + */ | ||
| 20 | + | ||
| 21 | +typedef ClickCallback = void Function(dynamic value); | ||
| 22 | + | ||
| 23 | +class AwakeningSendSettingPage extends StatefulWidget { | ||
| 24 | + const AwakeningSendSettingPage({super.key}); | ||
| 25 | + | ||
| 26 | + @override | ||
| 27 | + State<AwakeningSendSettingPage> createState() => | ||
| 28 | + _AwakeningSendSettingPageState(); | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +class _AwakeningSendSettingPageState extends State<AwakeningSendSettingPage> { | ||
| 32 | + TextEditingController moneyC = TextEditingController(); | ||
| 33 | + FocusNode moneyNode = FocusNode(); | ||
| 34 | + | ||
| 35 | + late CustomerMakingProvider customerMakingProvider; | ||
| 36 | + late CustomerProvider customerProvider; | ||
| 37 | + List<String?> couponList = []; | ||
| 38 | + | ||
| 39 | + ///消费券 | ||
| 40 | + _couponNetworkData({bool isShowLoading = true}) async { | ||
| 41 | + // customerMakingProvider.couponSelectIndex = 0; | ||
| 42 | + Map<String, String?> params = { | ||
| 43 | + "uid": Provider.of<UserModel>(context, listen: false).user!.openid, | ||
| 44 | + 'status': '1' | ||
| 45 | + }; | ||
| 46 | + await customerProvider.getCustomerSelectActivityNew(context, params, | ||
| 47 | + isShowLoading: isShowLoading); | ||
| 48 | + //此人已经新建好券 | ||
| 49 | + if (customerProvider.couponListSelect!.length > 0) { | ||
| 50 | + // couponProvider.initCouponSelect(context); | ||
| 51 | + couponList = []; | ||
| 52 | + for (int i = 0; i < customerProvider.couponListSelect!.length; i++) { | ||
| 53 | + couponList.add(customerProvider.couponListSelect![i].aname); | ||
| 54 | + } | ||
| 55 | + customerProvider.notifyListeners(); | ||
| 56 | + } else { | ||
| 57 | + //没有新建的优惠券 | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + List<Widget> _templateUI() { | ||
| 62 | + List<Widget> templates = []; | ||
| 63 | + customerProvider.marketingSmsData!.forEach((element) { | ||
| 64 | + templates.add(InkWell( | ||
| 65 | + onTap: () { | ||
| 66 | + //选择模版.默认数据 | ||
| 67 | + | ||
| 68 | + String newStr = ''; | ||
| 69 | + UserModel userModel = | ||
| 70 | + Provider.of<UserModel>(context, listen: false); | ||
| 71 | + newStr = element.content! | ||
| 72 | + .replaceAll('{店铺名称}', userModel.user!.sellername!); | ||
| 73 | + newStr = | ||
| 74 | + newStr.replaceAll('{店铺电话号码}', userModel.user!.sellerphone!); | ||
| 75 | + newStr = | ||
| 76 | + newStr.replaceAll('{经理名称}', userModel.user!.nickName ?? ''); | ||
| 77 | + newStr = newStr.replaceAll('{礼品领取链接}', ''); | ||
| 78 | + | ||
| 79 | + customerMakingProvider.controller.text = newStr; | ||
| 80 | + }, | ||
| 81 | + child: Container( | ||
| 82 | + padding: EdgeInsets.symmetric(horizontal: w(10), vertical: w(5)), | ||
| 83 | + decoration: BoxDecoration( | ||
| 84 | + borderRadius: BorderRadius.circular(r(5)), | ||
| 85 | + color: MyColours.color_ffffff, | ||
| 86 | + border: Border.all(width: w(1), color: MyColours.color_438E93)), | ||
| 87 | + child: Text( | ||
| 88 | + element.title!, | ||
| 89 | + style: TextStyle( | ||
| 90 | + color: MyColours.color_438E93, | ||
| 91 | + fontSize: font(12), | ||
| 92 | + fontWeight: FontWeight.bold), | ||
| 93 | + ), | ||
| 94 | + ))); | ||
| 95 | + }); | ||
| 96 | + return templates; | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | + _insertUrllink(String? link) { | ||
| 100 | + // *************开始直接插入会报错***********还没有改 | ||
| 101 | + | ||
| 102 | + var cursorPos = | ||
| 103 | + customerMakingProvider.controller.selection.base.offset; //获取到光标的在字符串的位置 | ||
| 104 | + | ||
| 105 | + if (cursorPos < 0) { | ||
| 106 | + customerMakingProvider.controller.text += link!; | ||
| 107 | + } else { | ||
| 108 | + String textAfterCursor = customerMakingProvider.controller.text | ||
| 109 | + .substring(cursorPos); //把字符串从光标的位置截取,光标后面的 | ||
| 110 | + | ||
| 111 | + String textBeforeCursor = customerMakingProvider.controller.text | ||
| 112 | + .substring(0, cursorPos); //光标前面的字符串 | ||
| 113 | + customerMakingProvider.controller.text = | ||
| 114 | + textBeforeCursor + link! + textAfterCursor; //把想要的插入的内容拼接在光标位置处 | ||
| 115 | + | ||
| 116 | + customerMakingProvider.controller.selection = TextSelection.collapsed( | ||
| 117 | + offset: customerMakingProvider.controller.text.length); | ||
| 118 | + } | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + _buttonChoose(String title, ClickCallback callback) { | ||
| 122 | + return InkWell( | ||
| 123 | + onTap: () { | ||
| 124 | + callback(title); | ||
| 125 | + }, | ||
| 126 | + child: Padding( | ||
| 127 | + padding: EdgeInsets.symmetric( | ||
| 128 | + horizontal: ScreenUtil().setWidth(20), | ||
| 129 | + vertical: ScreenUtil().setWidth(10)), | ||
| 130 | + // height: ScreenUtil().setWidth(50), | ||
| 131 | + // decoration: BoxDecoration( | ||
| 132 | + // // border: Border.all( | ||
| 133 | + // // width: ScreenUtil().setWidth(2), | ||
| 134 | + // // color: MyColours.color_199095), | ||
| 135 | + // borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))), | ||
| 136 | + child: Row( | ||
| 137 | + children: [ | ||
| 138 | + Expanded( | ||
| 139 | + child: Text( | ||
| 140 | + title, | ||
| 141 | + overflow: TextOverflow.ellipsis, | ||
| 142 | + textAlign: TextAlign.right, | ||
| 143 | + style: TextStyle( | ||
| 144 | + color: title == '时间(选填)' || | ||
| 145 | + title == '(选填)' || | ||
| 146 | + title == '选择优惠' || | ||
| 147 | + !customerMakingProvider.isUse | ||
| 148 | + ? MyColours.color_999999 | ||
| 149 | + : MyColours.color_438E93, | ||
| 150 | + fontSize: ScreenUtil().setWidth(30)), | ||
| 151 | + )), | ||
| 152 | + HEmptyView(20), | ||
| 153 | + Image.asset( | ||
| 154 | + // Utils.getImgPath(!customerMakingProvider.isUse | ||
| 155 | + // ? 'c_arrow_down_unsel' | ||
| 156 | + // : 'c_arrow_down'), | ||
| 157 | + Utils.getImgPath('down_c'), | ||
| 158 | + width: ScreenUtil().setWidth(44), | ||
| 159 | + // height: ScreenUtil().setWidth(10), | ||
| 160 | + ) | ||
| 161 | + ], | ||
| 162 | + ))); | ||
| 163 | + } | ||
| 164 | + | ||
| 165 | + ///短信内容编辑UI | ||
| 166 | + Widget _contentWidget(String hintText) { | ||
| 167 | + return Container( | ||
| 168 | + // height: ScreenUtil().setWidth(380), | ||
| 169 | + child: Column( | ||
| 170 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 171 | + children: [ | ||
| 172 | + // Align( | ||
| 173 | + // alignment: Alignment.centerLeft, | ||
| 174 | + // child: Text( | ||
| 175 | + // title, | ||
| 176 | + // textAlign: TextAlign.left, | ||
| 177 | + // style: TextStyle( | ||
| 178 | + // color: MyColours.color_515151, | ||
| 179 | + // fontWeight: FontWeight.bold, | ||
| 180 | + // fontSize: ScreenUtil().setSp(34)), | ||
| 181 | + // )), | ||
| 182 | + // VEmptyView(30), | ||
| 183 | + TextField( | ||
| 184 | + controller: customerMakingProvider.controller, | ||
| 185 | + // keyboardType: TextInputType.numberWithOptions(decimal: true), //键盘类型,数字键盘 | ||
| 186 | + maxLines: 6, | ||
| 187 | + // focusNode: _focusNode, | ||
| 188 | + // maxLength: 50, | ||
| 189 | + | ||
| 190 | + // maxLengthEnforced: true, | ||
| 191 | + style: TextStyle( | ||
| 192 | + fontSize: ScreenUtil().setSp(28), | ||
| 193 | + color: MyColours.color_515151), //输入文本的样式 | ||
| 194 | + decoration: InputDecoration( | ||
| 195 | + contentPadding: EdgeInsets.all(ScreenUtil().setWidth(30)), | ||
| 196 | + hintText: hintText, | ||
| 197 | + hintStyle: TextStyle( | ||
| 198 | + color: MyColours.color_999999, | ||
| 199 | + fontSize: ScreenUtil().setSp(28), | ||
| 200 | + ), | ||
| 201 | + fillColor: MyColours.color_ffffff, | ||
| 202 | + // fillColor: Colors.red, | ||
| 203 | + filled: true, | ||
| 204 | + enabledBorder: OutlineInputBorder( | ||
| 205 | + //未选中时候的颜色 | ||
| 206 | + borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)), | ||
| 207 | + borderSide: BorderSide( | ||
| 208 | + color: MyColours.color_cccccc, | ||
| 209 | + width: ScreenUtil().setWidth(2)), | ||
| 210 | + ), | ||
| 211 | + focusedBorder: OutlineInputBorder( | ||
| 212 | + //选中时外边框颜色 | ||
| 213 | + borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)), | ||
| 214 | + borderSide: BorderSide( | ||
| 215 | + color: MyColours.app_main, | ||
| 216 | + ), | ||
| 217 | + ), | ||
| 218 | + // border: OutlineInputBorder( | ||
| 219 | + // borderRadius: | ||
| 220 | + // BorderRadius.circular(ScreenUtil().setWidth(20)), | ||
| 221 | + // borderSide: BorderSide( | ||
| 222 | + // color: Colors.red, width: ScreenUtil().setWidth(2))), | ||
| 223 | + ), | ||
| 224 | + onChanged: (value) { | ||
| 225 | + setState(() {}); | ||
| 226 | + }, | ||
| 227 | + ), | ||
| 228 | + VEmptyView(20), | ||
| 229 | + Container( | ||
| 230 | + padding: EdgeInsets.only(left: w(10), right: w(10), bottom: w(10)), | ||
| 231 | + decoration: BoxDecoration( | ||
| 232 | + borderRadius: BorderRadius.circular(r(5)), | ||
| 233 | + border: Border.all(width: w(1), color: MyColours.color_F8F7F3)), | ||
| 234 | + child: Column( | ||
| 235 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 236 | + children: [ | ||
| 237 | + Container( | ||
| 238 | + height: w(34), | ||
| 239 | + alignment: Alignment.centerLeft, | ||
| 240 | + child: Text( | ||
| 241 | + '常用模版', | ||
| 242 | + style: TextStyle( | ||
| 243 | + color: MyColours.color_515151, | ||
| 244 | + fontSize: font(12), | ||
| 245 | + ), | ||
| 246 | + ), | ||
| 247 | + ), | ||
| 248 | + VEmptyView(10), | ||
| 249 | + Padding( | ||
| 250 | + padding: EdgeInsets.only(left: w(10)), | ||
| 251 | + child: Wrap( | ||
| 252 | + spacing: w(10), | ||
| 253 | + runSpacing: w(5), | ||
| 254 | + crossAxisAlignment: WrapCrossAlignment.center, | ||
| 255 | + children: _templateUI(), | ||
| 256 | + ), | ||
| 257 | + ) | ||
| 258 | + ], | ||
| 259 | + ), | ||
| 260 | + ), | ||
| 261 | + VEmptyView(50), | ||
| 262 | + Row( | ||
| 263 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 264 | + children: [ | ||
| 265 | + InkWell( | ||
| 266 | + onTap: () { | ||
| 267 | + customerMakingProvider.controller.text = ''; | ||
| 268 | + setState(() {}); | ||
| 269 | + // NavigatorUtil.goMarketingRecordsDetailPage(context); | ||
| 270 | + }, | ||
| 271 | + child: Padding( | ||
| 272 | + padding: EdgeInsets.only(right: ScreenUtil().setWidth(20)), | ||
| 273 | + child: Text('清空', | ||
| 274 | + style: TextStyle( | ||
| 275 | + color: MyColours.color_199095, | ||
| 276 | + fontSize: ScreenUtil().setSp(30))), | ||
| 277 | + )), | ||
| 278 | + Text( | ||
| 279 | + '共 ${customerMakingProvider.controller.text.length} 字 ${customerMakingProvider.selectCustomerSeller.length} 条短信', | ||
| 280 | + style: TextStyle( | ||
| 281 | + color: MyColours.color_515151, | ||
| 282 | + fontSize: ScreenUtil().setSp(26))), | ||
| 283 | + ], | ||
| 284 | + ), | ||
| 285 | + | ||
| 286 | + Column(children: [ | ||
| 287 | + VEmptyView(30), | ||
| 288 | + InkWell( | ||
| 289 | + onTap: () { | ||
| 290 | + customerMakingProvider.isUpdate = | ||
| 291 | + !customerMakingProvider.isUpdate; | ||
| 292 | + setState(() {}); | ||
| 293 | + }, | ||
| 294 | + child: Row(children: [ | ||
| 295 | + Image.asset( | ||
| 296 | + Utils.getImgPath(customerMakingProvider.isUpdate | ||
| 297 | + ? 'f_select' | ||
| 298 | + : 'f_select_not'), | ||
| 299 | + width: ScreenUtil().setWidth(44)), | ||
| 300 | + HEmptyView(15), | ||
| 301 | + Text( | ||
| 302 | + '客户经理不可修改短信内容', | ||
| 303 | + style: TextStyle( | ||
| 304 | + fontWeight: FontWeight.bold, | ||
| 305 | + fontSize: ScreenUtil().setSp(32), | ||
| 306 | + color: MyColours.color_515151), | ||
| 307 | + ), | ||
| 308 | + ])), | ||
| 309 | + VEmptyView(30), | ||
| 310 | + ]), | ||
| 311 | + VEmptyView(30), | ||
| 312 | + ], | ||
| 313 | + ), | ||
| 314 | + ); | ||
| 315 | + } | ||
| 316 | + | ||
| 317 | + @override | ||
| 318 | + Widget build(BuildContext context) { | ||
| 319 | + customerProvider = Provider.of<CustomerProvider>(context, listen: true); | ||
| 320 | + customerMakingProvider = | ||
| 321 | + Provider.of<CustomerMakingProvider>(context, listen: true); | ||
| 322 | + return Scaffold( | ||
| 323 | + backgroundColor: MyColours.color_ffffff, | ||
| 324 | + appBar: SystemAppBar('客户沉睡发放优惠设置'), | ||
| 325 | + body: Column( | ||
| 326 | + children: [ | ||
| 327 | + Expanded( | ||
| 328 | + child: SingleChildScrollView( | ||
| 329 | + child: Column( | ||
| 330 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 331 | + children: [ | ||
| 332 | + Container( | ||
| 333 | + decoration: BoxDecoration( | ||
| 334 | + border: Border( | ||
| 335 | + bottom: BorderSide( | ||
| 336 | + width: w(0.5), color: MyColours.color_E7E7E7))), | ||
| 337 | + margin: EdgeInsets.only(left: w(16)), | ||
| 338 | + padding: EdgeInsets.symmetric(vertical: w(13)), | ||
| 339 | + child: Text('赠送优惠选择', | ||
| 340 | + style: TextStyle( | ||
| 341 | + color: MyColours.color_515151, fontSize: font(16))), | ||
| 342 | + ), | ||
| 343 | + InkWell( | ||
| 344 | + onTap: () {}, | ||
| 345 | + child: Container( | ||
| 346 | + height: w(40), | ||
| 347 | + margin: EdgeInsets.only(left: w(40)), | ||
| 348 | + // padding: EdgeInsets.only( | ||
| 349 | + // top: w(8), | ||
| 350 | + // bottom: w(8), | ||
| 351 | + // ), | ||
| 352 | + decoration: BoxDecoration( | ||
| 353 | + border: Border( | ||
| 354 | + bottom: BorderSide( | ||
| 355 | + color: MyColours.color_E7E7E7, width: w(0.5)))), | ||
| 356 | + child: Row( | ||
| 357 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
| 358 | + mainAxisAlignment: MainAxisAlignment.start, | ||
| 359 | + children: [ | ||
| 360 | + Image.asset( | ||
| 361 | + Utils.getImgPath( | ||
| 362 | + true ? 'radio_back' : 'radio_back_un'), | ||
| 363 | + width: ScreenUtil().setWidth(18), | ||
| 364 | + ), | ||
| 365 | + HEmptyView(4), | ||
| 366 | + Container( | ||
| 367 | + // height: ScreenUtil().setWidth(40), | ||
| 368 | + // color: Colors.red, | ||
| 369 | + child: Text( | ||
| 370 | + '发放消费金', | ||
| 371 | + style: TextStyle( | ||
| 372 | + color: MyColours.color_515151, | ||
| 373 | + fontSize: ScreenUtil().setSp(28)), | ||
| 374 | + ), | ||
| 375 | + ), | ||
| 376 | + HEmptyView(4), | ||
| 377 | + Container( | ||
| 378 | + width: w(54), | ||
| 379 | + height: w(26), | ||
| 380 | + alignment: Alignment.center, | ||
| 381 | + decoration: BoxDecoration( | ||
| 382 | + border: Border.all( | ||
| 383 | + color: MyColours.color_999999, width: w(1))), | ||
| 384 | + child: TextField( | ||
| 385 | + controller: moneyC, | ||
| 386 | + textAlign: TextAlign.center, | ||
| 387 | + textAlignVertical: TextAlignVertical.center, | ||
| 388 | + maxLines: 1, | ||
| 389 | + // //光标颜色 | ||
| 390 | + // cursorColor: | ||
| 391 | + // widget.isSelect ? Colors.white : MyColours.color_199095, | ||
| 392 | + //输入文本的样式 | ||
| 393 | + inputFormatters: [ | ||
| 394 | + FilteringTextInputFormatter.allow( | ||
| 395 | + RegExp("[0-9.]")), | ||
| 396 | + ], // 限制输入为数字, | ||
| 397 | + style: TextStyle( | ||
| 398 | + color: MyColours.color_515151, | ||
| 399 | + fontSize: ScreenUtil().setSp(20), | ||
| 400 | + ), | ||
| 401 | + focusNode: moneyNode, | ||
| 402 | + decoration: InputDecoration( | ||
| 403 | + isCollapsed: true, | ||
| 404 | + border: OutlineInputBorder( | ||
| 405 | + borderSide: BorderSide.none), | ||
| 406 | + hintText: '请输入数字', | ||
| 407 | + hintStyle: TextStyle( | ||
| 408 | + color: MyColours.color_999999, | ||
| 409 | + fontSize: ScreenUtil().setSp(20), | ||
| 410 | + ), | ||
| 411 | + enabledBorder: new UnderlineInputBorder( | ||
| 412 | + borderSide: BorderSide.none, | ||
| 413 | + ), | ||
| 414 | + focusedBorder: new UnderlineInputBorder( | ||
| 415 | + borderSide: BorderSide.none, | ||
| 416 | + ), | ||
| 417 | + ), | ||
| 418 | + onChanged: (value) {}, | ||
| 419 | + onEditingComplete: () { | ||
| 420 | + FocusScope.of(context) | ||
| 421 | + .requestFocus(FocusNode()); //点击空白处隐藏键盘 | ||
| 422 | + }, | ||
| 423 | + keyboardType: TextInputType.numberWithOptions()), | ||
| 424 | + ), | ||
| 425 | + HEmptyView(10), | ||
| 426 | + Text( | ||
| 427 | + '元', | ||
| 428 | + style: TextStyle( | ||
| 429 | + color: MyColours.color_515151, | ||
| 430 | + fontSize: font(14)), | ||
| 431 | + ), | ||
| 432 | + ], | ||
| 433 | + ), | ||
| 434 | + ), | ||
| 435 | + ), | ||
| 436 | + InkWell( | ||
| 437 | + onTap: () {}, | ||
| 438 | + child: Container( | ||
| 439 | + height: w(40), | ||
| 440 | + margin: EdgeInsets.only(left: w(40)), | ||
| 441 | + // padding: EdgeInsets.only( | ||
| 442 | + // top: w(8), | ||
| 443 | + // bottom: w(8), | ||
| 444 | + // ), | ||
| 445 | + decoration: BoxDecoration( | ||
| 446 | + border: Border( | ||
| 447 | + bottom: BorderSide( | ||
| 448 | + color: MyColours.color_E7E7E7, width: w(0.5)))), | ||
| 449 | + child: Row( | ||
| 450 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
| 451 | + mainAxisAlignment: MainAxisAlignment.start, | ||
| 452 | + children: [ | ||
| 453 | + Image.asset( | ||
| 454 | + Utils.getImgPath( | ||
| 455 | + true ? 'radio_back' : 'radio_back_un'), | ||
| 456 | + width: ScreenUtil().setWidth(18), | ||
| 457 | + ), | ||
| 458 | + HEmptyView(4), | ||
| 459 | + Container( | ||
| 460 | + // height: ScreenUtil().setWidth(40), | ||
| 461 | + // color: Colors.red, | ||
| 462 | + child: Text( | ||
| 463 | + '赠送优惠券', | ||
| 464 | + style: TextStyle( | ||
| 465 | + color: MyColours.color_515151, | ||
| 466 | + fontSize: ScreenUtil().setSp(28)), | ||
| 467 | + ), | ||
| 468 | + ), | ||
| 469 | + HEmptyView(4), | ||
| 470 | + Spacer(), | ||
| 471 | + Row(children: [ | ||
| 472 | + Expanded( | ||
| 473 | + child: Container( | ||
| 474 | + height: ScreenUtil().setWidth(70), | ||
| 475 | + // width: ScreenUtil().setWidth(130), | ||
| 476 | + decoration: BoxDecoration( | ||
| 477 | + borderRadius: BorderRadius.circular( | ||
| 478 | + ScreenUtil().setWidth(10)), | ||
| 479 | + color: MyColours.color_DBDBDB), | ||
| 480 | + child: _buttonChoose( | ||
| 481 | + customerMakingProvider.youhui!, (value) { | ||
| 482 | + FocusScope.of(context) | ||
| 483 | + .requestFocus(FocusNode()); //隐藏键盘 | ||
| 484 | + if (couponList == null || | ||
| 485 | + couponList.length == 0) { | ||
| 486 | + Utils.showToast('暂无优惠券,请创建新优惠'); | ||
| 487 | + return; | ||
| 488 | + } | ||
| 489 | + DialogUtil.showSelectCusmanDialog( | ||
| 490 | + context, couponList, (value) async { | ||
| 491 | + if (value != null) { | ||
| 492 | + if (customerProvider | ||
| 493 | + .couponListSelect![value.first] | ||
| 494 | + .urllink == | ||
| 495 | + null) { | ||
| 496 | + //创建链接 | ||
| 497 | + //创建券的二维码 | ||
| 498 | + Map<String, String?> param = { | ||
| 499 | + "sid": Provider.of<UserModel>( | ||
| 500 | + context, | ||
| 501 | + listen: false) | ||
| 502 | + .user! | ||
| 503 | + .sellerid, | ||
| 504 | + "id": customerProvider | ||
| 505 | + .couponListSelect![value.first] | ||
| 506 | + .id, | ||
| 507 | + }; | ||
| 508 | + dynamic object = | ||
| 509 | + await customerProvider | ||
| 510 | + .createActivityUrlLink( | ||
| 511 | + context, param); | ||
| 512 | + if (object is bool || | ||
| 513 | + object == null) { | ||
| 514 | + // | ||
| 515 | + } else { | ||
| 516 | + //成功 | ||
| 517 | + | ||
| 518 | + setState(() { | ||
| 519 | + customerMakingProvider | ||
| 520 | + .couponSelectIndex = | ||
| 521 | + value.first; | ||
| 522 | + customerMakingProvider.youhui = | ||
| 523 | + couponList[ | ||
| 524 | + customerMakingProvider | ||
| 525 | + .couponSelectIndex!]; | ||
| 526 | + }); | ||
| 527 | + _insertUrllink(object); | ||
| 528 | + } | ||
| 529 | + } else { | ||
| 530 | + // 直接使用 | ||
| 531 | + setState(() { | ||
| 532 | + customerMakingProvider | ||
| 533 | + .couponSelectIndex = | ||
| 534 | + value.first; | ||
| 535 | + customerMakingProvider.youhui = | ||
| 536 | + couponList[ | ||
| 537 | + customerMakingProvider | ||
| 538 | + .couponSelectIndex!]; | ||
| 539 | + }); | ||
| 540 | + | ||
| 541 | + _insertUrllink(customerProvider | ||
| 542 | + .couponListSelect![value.first] | ||
| 543 | + .urllink); | ||
| 544 | + } | ||
| 545 | + } | ||
| 546 | + }, | ||
| 547 | + selecteds: customerMakingProvider | ||
| 548 | + .couponSelectIndex == | ||
| 549 | + null | ||
| 550 | + ? [] | ||
| 551 | + : [ | ||
| 552 | + customerMakingProvider | ||
| 553 | + .couponSelectIndex! | ||
| 554 | + ]) | ||
| 555 | + .then((value) {}); | ||
| 556 | + }))), | ||
| 557 | + HEmptyView(40), | ||
| 558 | + InkWell( | ||
| 559 | + onTap: () async { | ||
| 560 | + // NavigatorUtil.goMarketingRecordsDetailPage(context); | ||
| 561 | + // bool? needRefresh = | ||
| 562 | + // await NavigatorUtil.goCouponEditPage(context) ; | ||
| 563 | + // print(needRefresh); | ||
| 564 | + // if (needRefresh != null && needRefresh) { | ||
| 565 | + // //刷新页面数据 | ||
| 566 | + // // _controller.callRefresh(); | ||
| 567 | + // _couponNetworkData(); | ||
| 568 | + // } | ||
| 569 | + bool? needRefresh = await NavigatorUtil | ||
| 570 | + .goCouponCreateSelectTypePage( | ||
| 571 | + context, | ||
| 572 | + ); | ||
| 573 | + if (needRefresh != null && needRefresh) { | ||
| 574 | + //刷新页面数据 | ||
| 575 | + // _controller.callRefresh(); | ||
| 576 | + _couponNetworkData(); | ||
| 577 | + } else { | ||
| 578 | + Utils.showToast('您没有相关权限!'); | ||
| 579 | + } | ||
| 580 | + }, | ||
| 581 | + child: Text('创建新优惠', | ||
| 582 | + style: TextStyle( | ||
| 583 | + decoration: TextDecoration.underline, | ||
| 584 | + color: MyColours.color_438E93, | ||
| 585 | + fontWeight: FontWeight.bold, | ||
| 586 | + fontSize: ScreenUtil().setSp(28)))), | ||
| 587 | + ]), | ||
| 588 | + ], | ||
| 589 | + ), | ||
| 590 | + ), | ||
| 591 | + ), | ||
| 592 | + _contentWidget(('输入营销短信内容')) | ||
| 593 | + ], | ||
| 594 | + ), | ||
| 595 | + )) | ||
| 596 | + ], | ||
| 597 | + ), | ||
| 598 | + ); | ||
| 599 | + } | ||
| 600 | +} |
| @@ -375,7 +375,10 @@ class _MarketingCenterHomePageState extends State<MarketingCenterHomePage> { | @@ -375,7 +375,10 @@ class _MarketingCenterHomePageState extends State<MarketingCenterHomePage> { | ||
| 375 | color: MyColours.color_E7E7E7)), | 375 | color: MyColours.color_E7E7E7)), |
| 376 | VEmptyView(24), | 376 | VEmptyView(24), |
| 377 | InkWell( | 377 | InkWell( |
| 378 | - onTap: () {}, | 378 | + onTap: () { |
| 379 | + // | ||
| 380 | + NavigatorUtil.goAwakeningMarketingPage(context); | ||
| 381 | + }, | ||
| 379 | child: Padding( | 382 | child: Padding( |
| 380 | padding: EdgeInsets.only( | 383 | padding: EdgeInsets.only( |
| 381 | left: w(16), | 384 | left: w(16), |
| @@ -619,7 +619,7 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | @@ -619,7 +619,7 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | ||
| 619 | ), | 619 | ), |
| 620 | child: Text( | 620 | child: Text( |
| 621 | '${model.user!.nickName} ${model.user!.role_name} >', | 621 | '${model.user!.nickName} ${model.user!.role_name} >', |
| 622 | - maxLines: 1, | 622 | + maxLines: 2, |
| 623 | overflow: TextOverflow.ellipsis, | 623 | overflow: TextOverflow.ellipsis, |
| 624 | style: TextStyle( | 624 | style: TextStyle( |
| 625 | letterSpacing: 0.2, | 625 | letterSpacing: 0.2, |
| @@ -640,8 +640,9 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | @@ -640,8 +640,9 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | ||
| 640 | ], | 640 | ], |
| 641 | )), | 641 | )), |
| 642 | HEmptyView(22), | 642 | HEmptyView(22), |
| 643 | - Spacer(), | ||
| 644 | - Column( | 643 | + // Spacer(), |
| 644 | + Expanded( | ||
| 645 | + child: Column( | ||
| 645 | crossAxisAlignment: CrossAxisAlignment.end, | 646 | crossAxisAlignment: CrossAxisAlignment.end, |
| 646 | mainAxisAlignment: MainAxisAlignment.center, | 647 | mainAxisAlignment: MainAxisAlignment.center, |
| 647 | children: [ | 648 | children: [ |
| @@ -665,6 +666,8 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | @@ -665,6 +666,8 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | ||
| 665 | // json.encode(user.toJson())); | 666 | // json.encode(user.toJson())); |
| 666 | // print(userModel.user); | 667 | // print(userModel.user); |
| 667 | setState(() {}); | 668 | setState(() {}); |
| 669 | + } else { | ||
| 670 | + Utils.showToast('您还没有操作权限,请联系管理员!'); | ||
| 668 | } | 671 | } |
| 669 | }, | 672 | }, |
| 670 | child: Container( | 673 | child: Container( |
| @@ -672,7 +675,8 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | @@ -672,7 +675,8 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | ||
| 672 | EdgeInsets.only(bottom: w(6)), | 675 | EdgeInsets.only(bottom: w(6)), |
| 673 | child: Text( | 676 | child: Text( |
| 674 | '${model.user!.sellername} >', | 677 | '${model.user!.sellername} >', |
| 675 | - maxLines: 1, | 678 | + maxLines: 2, |
| 679 | + textAlign: TextAlign.end, | ||
| 676 | overflow: TextOverflow.ellipsis, | 680 | overflow: TextOverflow.ellipsis, |
| 677 | style: TextStyle( | 681 | style: TextStyle( |
| 678 | letterSpacing: 0.2, | 682 | letterSpacing: 0.2, |
| @@ -723,7 +727,7 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | @@ -723,7 +727,7 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver { | ||
| 723 | }, | 727 | }, |
| 724 | ), | 728 | ), |
| 725 | ], | 729 | ], |
| 726 | - ) | 730 | + )) |
| 727 | ])), | 731 | ])), |
| 728 | ), | 732 | ), |
| 729 | Positioned( | 733 | Positioned( |
| @@ -411,8 +411,11 @@ class MenuManageProvider extends ChangeNotifier { | @@ -411,8 +411,11 @@ class MenuManageProvider extends ChangeNotifier { | ||
| 411 | .cast<CookbookCategorySunModel>(); | 411 | .cast<CookbookCategorySunModel>(); |
| 412 | categorySunModel! | 412 | categorySunModel! |
| 413 | .removeWhere((element) => element.classType == '1'); | 413 | .removeWhere((element) => element.classType == '1'); |
| 414 | - | ||
| 415 | - pageStateCategory = PageState.Success; | 414 | + if (categorySunModel!.length == 0) { |
| 415 | + pageStateCategory = PageState.Empty; | ||
| 416 | + } else { | ||
| 417 | + pageStateCategory = PageState.Success; | ||
| 418 | + } | ||
| 416 | } | 419 | } |
| 417 | } else { | 420 | } else { |
| 418 | pageStateCategory = PageState.Empty; | 421 | pageStateCategory = PageState.Empty; |
| @@ -2653,4 +2653,22 @@ class NavigatorUtil { | @@ -2653,4 +2653,22 @@ class NavigatorUtil { | ||
| 2653 | return _navigateTo(context, "${Routes.integral_details_page}", | 2653 | return _navigateTo(context, "${Routes.integral_details_page}", |
| 2654 | replace: replace); | 2654 | replace: replace); |
| 2655 | } | 2655 | } |
| 2656 | + | ||
| 2657 | + //沉睡/流失客户唤醒营销 | ||
| 2658 | + static Future<dynamic> goAwakeningMarketingPage( | ||
| 2659 | + BuildContext context, { | ||
| 2660 | + replace = false, | ||
| 2661 | + }) { | ||
| 2662 | + return _navigateTo(context, "${Routes.awakening_marketing_page}", | ||
| 2663 | + replace: replace); | ||
| 2664 | + } | ||
| 2665 | + | ||
| 2666 | + //沉睡/流失发放优惠设置 | ||
| 2667 | + static Future<dynamic> goAwakeningSendSettingPage( | ||
| 2668 | + BuildContext context, { | ||
| 2669 | + replace = false, | ||
| 2670 | + }) { | ||
| 2671 | + return _navigateTo(context, "${Routes.awakening_send_setting_page}", | ||
| 2672 | + replace: replace); | ||
| 2673 | + } | ||
| 2656 | } | 2674 | } |
| @@ -104,6 +104,8 @@ import 'package:one_key/pages/my/feast_manage/feast_setmeal_manage_page.dart'; | @@ -104,6 +104,8 @@ import 'package:one_key/pages/my/feast_manage/feast_setmeal_manage_page.dart'; | ||
| 104 | import 'package:one_key/pages/my/finance_manage/deposit_record_detail_page.dart'; | 104 | import 'package:one_key/pages/my/finance_manage/deposit_record_detail_page.dart'; |
| 105 | import 'package:one_key/pages/my/finance_manage/record_home_classify_home_page.dart'; | 105 | import 'package:one_key/pages/my/finance_manage/record_home_classify_home_page.dart'; |
| 106 | import 'package:one_key/pages/my/finance_manage/vip_record_detail_page.dart'; | 106 | import 'package:one_key/pages/my/finance_manage/vip_record_detail_page.dart'; |
| 107 | +import 'package:one_key/pages/my/marketing_center/awakening_marketing_page.dart'; | ||
| 108 | +import 'package:one_key/pages/my/marketing_center/awakening_send_setting_page.dart'; | ||
| 107 | import 'package:one_key/pages/my/marketing_center/book_notification/marking_interaction_page.dart'; | 109 | import 'package:one_key/pages/my/marketing_center/book_notification/marking_interaction_page.dart'; |
| 108 | import 'package:one_key/pages/my/marketing_center/recharge/recharge_edit_page.dart'; | 110 | import 'package:one_key/pages/my/marketing_center/recharge/recharge_edit_page.dart'; |
| 109 | import 'package:one_key/pages/my/marketing_center/recharge/recharge_type_select_page.dart'; | 111 | import 'package:one_key/pages/my/marketing_center/recharge/recharge_type_select_page.dart'; |
| @@ -161,6 +163,7 @@ import 'package:one_key/provider/choose_table_model.dart'; | @@ -161,6 +163,7 @@ import 'package:one_key/provider/choose_table_model.dart'; | ||
| 161 | import 'package:one_key/provider/contant_show_model.dart'; | 163 | import 'package:one_key/provider/contant_show_model.dart'; |
| 162 | import 'package:one_key/provider/coupon_provider.dart'; | 164 | import 'package:one_key/provider/coupon_provider.dart'; |
| 163 | import 'package:one_key/provider/create_store_model.dart'; | 165 | import 'package:one_key/provider/create_store_model.dart'; |
| 166 | +import 'package:one_key/provider/customer_making_provider.dart'; | ||
| 164 | import 'package:one_key/provider/customer_provider.dart'; | 167 | import 'package:one_key/provider/customer_provider.dart'; |
| 165 | import 'package:one_key/provider/menu_provider.dart'; | 168 | import 'package:one_key/provider/menu_provider.dart'; |
| 166 | import 'package:one_key/provider/my_model.dart'; | 169 | import 'package:one_key/provider/my_model.dart'; |
| @@ -4547,6 +4550,22 @@ var integralDetailsPageHandle = new Handler( | @@ -4547,6 +4550,22 @@ var integralDetailsPageHandle = new Handler( | ||
| 4547 | create: (_) => CustomerProvider(), child: IntegralDetailsPage()); | 4550 | create: (_) => CustomerProvider(), child: IntegralDetailsPage()); |
| 4548 | }); | 4551 | }); |
| 4549 | 4552 | ||
| 4553 | +var awakeningMarketingPageHandle = new Handler( | ||
| 4554 | + handlerFunc: (BuildContext? context, Map<dynamic, List<Object>> params) { | ||
| 4555 | + return ChangeNotifierProvider<MarketingCenterProvider>( | ||
| 4556 | + create: (_) => MarketingCenterProvider(), | ||
| 4557 | + child: AwakeningMarketingPage()); | ||
| 4558 | +}); | ||
| 4559 | + | ||
| 4560 | +var awakeningSendSettingPageHandle = new Handler( | ||
| 4561 | + handlerFunc: (BuildContext? context, Map<dynamic, List<Object>> params) { | ||
| 4562 | + return ChangeNotifierProvider<CustomerMakingProvider>( | ||
| 4563 | + create: (_) => CustomerMakingProvider(), | ||
| 4564 | + child: ChangeNotifierProvider<CustomerProvider>( | ||
| 4565 | + create: (_) => CustomerProvider(), | ||
| 4566 | + child: AwakeningSendSettingPage())); | ||
| 4567 | +}); | ||
| 4568 | + | ||
| 4550 | var customLabelPageHandle = new Handler( | 4569 | var customLabelPageHandle = new Handler( |
| 4551 | handlerFunc: (BuildContext? context, Map<dynamic, List<Object>> params) { | 4570 | handlerFunc: (BuildContext? context, Map<dynamic, List<Object>> params) { |
| 4552 | return ChangeNotifierProvider<CustomerProvider>( | 4571 | return ChangeNotifierProvider<CustomerProvider>( |
| @@ -475,6 +475,12 @@ class Routes { | @@ -475,6 +475,12 @@ class Routes { | ||
| 475 | 475 | ||
| 476 | static String integral_details_page = "/integral_details_page"; // 积分明细页面 | 476 | static String integral_details_page = "/integral_details_page"; // 积分明细页面 |
| 477 | 477 | ||
| 478 | + static String awakening_marketing_page = | ||
| 479 | + "/awakening_marketing_page"; // 沉睡/流失客户唤醒营销 | ||
| 480 | + | ||
| 481 | + static String awakening_send_setting_page = | ||
| 482 | + "/awakening_send_setting_page"; // 沉睡/流失发放优惠设置 | ||
| 483 | + | ||
| 478 | static void configureRoutes(FluroRouter router) { | 484 | static void configureRoutes(FluroRouter router) { |
| 479 | router.notFoundHandler = new Handler( | 485 | router.notFoundHandler = new Handler( |
| 480 | handlerFunc: (BuildContext? context, Map<String, List<String>> params) { | 486 | handlerFunc: (BuildContext? context, Map<String, List<String>> params) { |
| @@ -904,5 +910,10 @@ class Routes { | @@ -904,5 +910,10 @@ class Routes { | ||
| 904 | router.define(consumer_details_page, handler: consumerDetailsPageHandle); | 910 | router.define(consumer_details_page, handler: consumerDetailsPageHandle); |
| 905 | 911 | ||
| 906 | router.define(integral_details_page, handler: integralDetailsPageHandle); | 912 | router.define(integral_details_page, handler: integralDetailsPageHandle); |
| 913 | + | ||
| 914 | + router.define(awakening_marketing_page, | ||
| 915 | + handler: awakeningMarketingPageHandle); | ||
| 916 | + router.define(awakening_send_setting_page, | ||
| 917 | + handler: awakeningSendSettingPageHandle); | ||
| 907 | } | 918 | } |
| 908 | } | 919 | } |
-
Please register or login to post a comment