Showing
10 changed files
with
521 additions
and
56 deletions
| @@ -18,19 +18,19 @@ if (flutterRoot == null) { | @@ -18,19 +18,19 @@ if (flutterRoot == null) { | ||
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | 20 | ||
| 21 | -def flutterVersionCode = "521" | 21 | +def flutterVersionCode = "522" |
| 22 | if (flutterVersionCode == null) { | 22 | if (flutterVersionCode == null) { |
| 23 | - flutterVersionCode = '521' | 23 | + flutterVersionCode = '522' |
| 24 | 24 | ||
| 25 | 25 | ||
| 26 | 26 | ||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | -def flutterVersionName = "5.2.1" | 30 | +def flutterVersionName = "5.2.2" |
| 31 | 31 | ||
| 32 | if (flutterVersionName == null) { | 32 | if (flutterVersionName == null) { |
| 33 | - flutterVersionName = '5.2.1' | 33 | + flutterVersionName = '5.2.2' |
| 34 | 34 | ||
| 35 | 35 | ||
| 36 | } | 36 | } |
| @@ -52,6 +52,7 @@ class GetDzSellerConfSunModel { | @@ -52,6 +52,7 @@ class GetDzSellerConfSunModel { | ||
| 52 | String isMarketing; | 52 | String isMarketing; |
| 53 | 53 | ||
| 54 | String saiyouyun; | 54 | String saiyouyun; |
| 55 | + Bookinginfo bookinginfo; | ||
| 55 | 56 | ||
| 56 | GetDzSellerConfSunModel( | 57 | GetDzSellerConfSunModel( |
| 57 | {this.id, | 58 | {this.id, |
| @@ -75,7 +76,8 @@ class GetDzSellerConfSunModel { | @@ -75,7 +76,8 @@ class GetDzSellerConfSunModel { | ||
| 75 | this.isOpenCancel, | 76 | this.isOpenCancel, |
| 76 | this.isNotice, | 77 | this.isNotice, |
| 77 | this.isMarketing, | 78 | this.isMarketing, |
| 78 | - this.saiyouyun}); | 79 | + this.saiyouyun, |
| 80 | + this.bookinginfo}); | ||
| 79 | 81 | ||
| 80 | GetDzSellerConfSunModel.fromJson(Map<String, dynamic> json) { | 82 | GetDzSellerConfSunModel.fromJson(Map<String, dynamic> json) { |
| 81 | id = json['id']; | 83 | id = json['id']; |
| @@ -102,6 +104,9 @@ class GetDzSellerConfSunModel { | @@ -102,6 +104,9 @@ class GetDzSellerConfSunModel { | ||
| 102 | isNotice = json['is_seller_notice']; | 104 | isNotice = json['is_seller_notice']; |
| 103 | isMarketing = json['is_seller_marketing']; | 105 | isMarketing = json['is_seller_marketing']; |
| 104 | saiyouyun = json['saiyouyun']; | 106 | saiyouyun = json['saiyouyun']; |
| 107 | + bookinginfo = json['bookinginfo'] != null | ||
| 108 | + ? new Bookinginfo.fromJson(json['bookinginfo']) | ||
| 109 | + : null; | ||
| 105 | } | 110 | } |
| 106 | 111 | ||
| 107 | Map<String, dynamic> toJson() { | 112 | Map<String, dynamic> toJson() { |
| @@ -128,7 +133,35 @@ class GetDzSellerConfSunModel { | @@ -128,7 +133,35 @@ class GetDzSellerConfSunModel { | ||
| 128 | data['is_seller_notice'] = this.isNotice; | 133 | data['is_seller_notice'] = this.isNotice; |
| 129 | data['is_seller_marketing'] = this.isMarketing; | 134 | data['is_seller_marketing'] = this.isMarketing; |
| 130 | data['saiyouyun'] = this.saiyouyun; | 135 | data['saiyouyun'] = this.saiyouyun; |
| 136 | + if (this.bookinginfo != null) { | ||
| 137 | + data['bookinginfo'] = this.bookinginfo.toJson(); | ||
| 138 | + } | ||
| 139 | + | ||
| 140 | + return data; | ||
| 141 | + } | ||
| 142 | +} | ||
| 143 | + | ||
| 144 | +class Bookinginfo { | ||
| 145 | + String id; | ||
| 146 | + String sid; | ||
| 147 | + String smsCode; | ||
| 148 | + String content; | ||
| 131 | 149 | ||
| 150 | + Bookinginfo({this.id, this.sid, this.smsCode, this.content}); | ||
| 151 | + | ||
| 152 | + Bookinginfo.fromJson(Map<String, dynamic> json) { | ||
| 153 | + id = json['id']; | ||
| 154 | + sid = json['sid']; | ||
| 155 | + smsCode = json['sms_code']; | ||
| 156 | + content = json['content']; | ||
| 157 | + } | ||
| 158 | + | ||
| 159 | + Map<String, dynamic> toJson() { | ||
| 160 | + final Map<String, dynamic> data = new Map<String, dynamic>(); | ||
| 161 | + data['id'] = this.id; | ||
| 162 | + data['sid'] = this.sid; | ||
| 163 | + data['sms_code'] = this.smsCode; | ||
| 164 | + data['content'] = this.content; | ||
| 132 | return data; | 165 | return data; |
| 133 | } | 166 | } |
| 134 | } | 167 | } |
lib/models/sai_you_yun_change_model.dart
0 → 100644
| 1 | +class SaiYouYunChangeModel { | ||
| 2 | + int ret; | ||
| 3 | + List<SaiYouYunChangeSunModel> data; | ||
| 4 | + String msg; | ||
| 5 | + | ||
| 6 | + SaiYouYunChangeModel({this.ret, this.data, this.msg}); | ||
| 7 | + | ||
| 8 | + SaiYouYunChangeModel.fromJson(Map<String, dynamic> json) { | ||
| 9 | + ret = json['ret']; | ||
| 10 | + if (json['data'] != null) { | ||
| 11 | + data = new List<SaiYouYunChangeSunModel>(); | ||
| 12 | + json['data'].forEach((v) { | ||
| 13 | + data.add(new SaiYouYunChangeSunModel.fromJson(v)); | ||
| 14 | + }); | ||
| 15 | + } | ||
| 16 | + msg = json['msg']; | ||
| 17 | + } | ||
| 18 | + | ||
| 19 | + Map<String, dynamic> toJson() { | ||
| 20 | + final Map<String, dynamic> data = new Map<String, dynamic>(); | ||
| 21 | + data['ret'] = this.ret; | ||
| 22 | + if (this.data != null) { | ||
| 23 | + data['data'] = this.data.map((v) => v.toJson()).toList(); | ||
| 24 | + } | ||
| 25 | + data['msg'] = this.msg; | ||
| 26 | + return data; | ||
| 27 | + } | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +class SaiYouYunChangeSunModel { | ||
| 31 | + String temp; | ||
| 32 | + Content content; | ||
| 33 | + bool select = false; | ||
| 34 | + | ||
| 35 | + SaiYouYunChangeSunModel({this.temp, this.content}); | ||
| 36 | + | ||
| 37 | + SaiYouYunChangeSunModel.fromJson(Map<String, dynamic> json) { | ||
| 38 | + temp = json['temp']; | ||
| 39 | + content = | ||
| 40 | + json['content'] != null ? new Content.fromJson(json['content']) : null; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + Map<String, dynamic> toJson() { | ||
| 44 | + final Map<String, dynamic> data = new Map<String, dynamic>(); | ||
| 45 | + data['temp'] = this.temp; | ||
| 46 | + if (this.content != null) { | ||
| 47 | + data['content'] = this.content.toJson(); | ||
| 48 | + } | ||
| 49 | + return data; | ||
| 50 | + } | ||
| 51 | +} | ||
| 52 | + | ||
| 53 | +class Content { | ||
| 54 | + String id; | ||
| 55 | + String templateCode; | ||
| 56 | + String templateParam; | ||
| 57 | + String templateDemo; | ||
| 58 | + String type; | ||
| 59 | + | ||
| 60 | + Content( | ||
| 61 | + {this.id, | ||
| 62 | + this.templateCode, | ||
| 63 | + this.templateParam, | ||
| 64 | + this.templateDemo, | ||
| 65 | + this.type}); | ||
| 66 | + | ||
| 67 | + Content.fromJson(Map<String, dynamic> json) { | ||
| 68 | + id = json['id']; | ||
| 69 | + templateCode = json['template_code']; | ||
| 70 | + templateParam = json['template_param']; | ||
| 71 | + templateDemo = json['template_demo']; | ||
| 72 | + type = json['type']; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + Map<String, dynamic> toJson() { | ||
| 76 | + final Map<String, dynamic> data = new Map<String, dynamic>(); | ||
| 77 | + data['id'] = this.id; | ||
| 78 | + data['template_code'] = this.templateCode; | ||
| 79 | + data['template_param'] = this.templateParam; | ||
| 80 | + data['template_demo'] = this.templateDemo; | ||
| 81 | + data['type'] = this.type; | ||
| 82 | + return data; | ||
| 83 | + } | ||
| 84 | +} |
lib/models/sms_change_field_model.dart
0 → 100644
| 1 | +class SmsChangeFieldModel { | ||
| 2 | + int ret; | ||
| 3 | + List<SmsChangeFieldSunModel> data; | ||
| 4 | + String msg; | ||
| 5 | + | ||
| 6 | + SmsChangeFieldModel({this.ret, this.data, this.msg}); | ||
| 7 | + | ||
| 8 | + SmsChangeFieldModel.fromJson(Map<String, dynamic> json) { | ||
| 9 | + ret = json['ret']; | ||
| 10 | + if (json['data'] != null) { | ||
| 11 | + data = new List<SmsChangeFieldSunModel>(); | ||
| 12 | + json['data'].forEach((v) { | ||
| 13 | + data.add(new SmsChangeFieldSunModel.fromJson(v)); | ||
| 14 | + }); | ||
| 15 | + } | ||
| 16 | + msg = json['msg']; | ||
| 17 | + } | ||
| 18 | + | ||
| 19 | + Map<String, dynamic> toJson() { | ||
| 20 | + final Map<String, dynamic> data = new Map<String, dynamic>(); | ||
| 21 | + data['ret'] = this.ret; | ||
| 22 | + if (this.data != null) { | ||
| 23 | + data['data'] = this.data.map((v) => v.toJson()).toList(); | ||
| 24 | + } | ||
| 25 | + data['msg'] = this.msg; | ||
| 26 | + return data; | ||
| 27 | + } | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +class SmsChangeFieldSunModel { | ||
| 31 | + String code; | ||
| 32 | + String name; | ||
| 33 | + String show; | ||
| 34 | + int times = 0; | ||
| 35 | + | ||
| 36 | + SmsChangeFieldSunModel({this.code, this.name, this.show}); | ||
| 37 | + | ||
| 38 | + SmsChangeFieldSunModel.fromJson(Map<String, dynamic> json) { | ||
| 39 | + code = json['code']; | ||
| 40 | + name = json['name']; | ||
| 41 | + show = json['show']; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + Map<String, dynamic> toJson() { | ||
| 45 | + final Map<String, dynamic> data = new Map<String, dynamic>(); | ||
| 46 | + data['code'] = this.code; | ||
| 47 | + data['name'] = this.name; | ||
| 48 | + data['show'] = this.show; | ||
| 49 | + return data; | ||
| 50 | + } | ||
| 51 | +} |
| @@ -515,4 +515,15 @@ class HttpUrl { | @@ -515,4 +515,15 @@ class HttpUrl { | ||
| 515 | static const String send_intention = | 515 | static const String send_intention = |
| 516 | "?service=App.SaiYouYun.SendIntention"; // 发送意向店铺通知短信 | 516 | "?service=App.SaiYouYun.SendIntention"; // 发送意向店铺通知短信 |
| 517 | 517 | ||
| 518 | + static const String get_sai_you_yun_change_list = | ||
| 519 | + "?service=App.SaiYouYun.GetSaiYouYunChangeList"; // 获取赛邮云短信可变模板列表 | ||
| 520 | + | ||
| 521 | + static const String get_sms_change_field = | ||
| 522 | + "?service=App.SaiYouYun.GetSmsChangeField"; // 获取可变模板允许配置字段 | ||
| 523 | + | ||
| 524 | + | ||
| 525 | + | ||
| 526 | + static const String save_sai_you_yun_change = | ||
| 527 | + "?service=App.SaiYouYun.SaveSaiYouYunChange"; // 配置可变模板内容 | ||
| 528 | + | ||
| 518 | } | 529 | } |
| @@ -38,6 +38,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | @@ -38,6 +38,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | ||
| 38 | String themeName = ''; | 38 | String themeName = ''; |
| 39 | String previewUrl = ''; //效果预览的图片链接 | 39 | String previewUrl = ''; //效果预览的图片链接 |
| 40 | String smsTemplate = ''; //短信模版 | 40 | String smsTemplate = ''; //短信模版 |
| 41 | + String bookinginfo = ''; //可变模版内容 | ||
| 41 | 42 | ||
| 42 | @override | 43 | @override |
| 43 | void initState() { | 44 | void initState() { |
| @@ -62,7 +63,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | @@ -62,7 +63,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | ||
| 62 | @override | 63 | @override |
| 63 | void dispose() { | 64 | void dispose() { |
| 64 | bus.off('theme_color_type_name'); | 65 | bus.off('theme_color_type_name'); |
| 65 | - bus.off('getDzSellerConf'); | 66 | + bus.off('getDzSellerConf'); |
| 66 | super.dispose(); | 67 | super.dispose(); |
| 67 | } | 68 | } |
| 68 | 69 | ||
| @@ -85,6 +86,10 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | @@ -85,6 +86,10 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | ||
| 85 | : false; | 86 | : false; |
| 86 | 87 | ||
| 87 | smsTemplate = marketingCenterProvider.dzSellerConfModel.saiyouyun ?? ''; | 88 | smsTemplate = marketingCenterProvider.dzSellerConfModel.saiyouyun ?? ''; |
| 89 | + bookinginfo = | ||
| 90 | + marketingCenterProvider.dzSellerConfModel.bookinginfo == null | ||
| 91 | + ? '' | ||
| 92 | + : marketingCenterProvider.dzSellerConfModel.bookinginfo?.content; | ||
| 88 | marketingCenterProvider.pageStateSetting = PageState.Success; | 93 | marketingCenterProvider.pageStateSetting = PageState.Success; |
| 89 | } else { | 94 | } else { |
| 90 | marketingCenterProvider.pageStateSetting = PageState.ConnectivityError; | 95 | marketingCenterProvider.pageStateSetting = PageState.ConnectivityError; |
| @@ -447,7 +452,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | @@ -447,7 +452,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | ||
| 447 | InkWell( | 452 | InkWell( |
| 448 | onTap: () { | 453 | onTap: () { |
| 449 | NavigatorUtil.goSmsTemplateSettingPage( | 454 | NavigatorUtil.goSmsTemplateSettingPage( |
| 450 | - context, smsTemplate); | 455 | + context, smsTemplate, bookinginfo); |
| 451 | }, | 456 | }, |
| 452 | child: Padding( | 457 | child: Padding( |
| 453 | padding: EdgeInsets.only( | 458 | padding: EdgeInsets.only( |
| @@ -460,7 +465,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | @@ -460,7 +465,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> { | ||
| 460 | MainAxisAlignment.spaceBetween, | 465 | MainAxisAlignment.spaceBetween, |
| 461 | children: [ | 466 | children: [ |
| 462 | Text( | 467 | Text( |
| 463 | - '预订通知短信模板选择', | 468 | + '预订通知短信模版选择', |
| 464 | style: TextStyle( | 469 | style: TextStyle( |
| 465 | color: MyColours.color_515151, | 470 | color: MyColours.color_515151, |
| 466 | fontSize: font(14)), | 471 | fontSize: font(14)), |
| @@ -9,6 +9,7 @@ import 'package:one_key/widgets/system_app_bar.dart'; | @@ -9,6 +9,7 @@ import 'package:one_key/widgets/system_app_bar.dart'; | ||
| 9 | import 'package:one_key/widgets/v_empty_view.dart'; | 9 | import 'package:one_key/widgets/v_empty_view.dart'; |
| 10 | import 'package:provider/provider.dart'; | 10 | import 'package:provider/provider.dart'; |
| 11 | 11 | ||
| 12 | +import '../../../models/sai_you_yun_change_model.dart'; | ||
| 12 | import '../../../models/sai_you_yun_model.dart'; | 13 | import '../../../models/sai_you_yun_model.dart'; |
| 13 | import '../../../provider/marketing_center_provider.dart'; | 14 | import '../../../provider/marketing_center_provider.dart'; |
| 14 | import '../../../utils/event_bus.dart'; | 15 | import '../../../utils/event_bus.dart'; |
| @@ -21,7 +22,9 @@ import '../../../widgets/round_button.dart'; | @@ -21,7 +22,9 @@ import '../../../widgets/round_button.dart'; | ||
| 21 | 22 | ||
| 22 | class SmsTemplateSettingPage extends StatefulWidget { | 23 | class SmsTemplateSettingPage extends StatefulWidget { |
| 23 | final String smsTemplate; | 24 | final String smsTemplate; |
| 24 | - SmsTemplateSettingPage({Key key, this.smsTemplate}) : super(key: key); | 25 | + final String bookinginfo; |
| 26 | + SmsTemplateSettingPage({Key key, this.smsTemplate, this.bookinginfo}) | ||
| 27 | + : super(key: key); | ||
| 25 | 28 | ||
| 26 | @override | 29 | @override |
| 27 | _SmsTemplateSettingPageState createState() => _SmsTemplateSettingPageState(); | 30 | _SmsTemplateSettingPageState createState() => _SmsTemplateSettingPageState(); |
| @@ -40,6 +43,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -40,6 +43,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 40 | 43 | ||
| 41 | String smsSelectValue = ''; | 44 | String smsSelectValue = ''; |
| 42 | 45 | ||
| 46 | + int _cursorPosition = 0; | ||
| 47 | + | ||
| 43 | @override | 48 | @override |
| 44 | void initState() { | 49 | void initState() { |
| 45 | // TODO: implement initState | 50 | // TODO: implement initState |
| @@ -51,6 +56,9 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -51,6 +56,9 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 51 | contentChangeStart = | 56 | contentChangeStart = |
| 52 | '尊敬的贵宾,您好!\n诚挚感谢您选择${Provider.of<UserModel>(context, listen: false).user.sellername}用餐!\n'; | 57 | '尊敬的贵宾,您好!\n诚挚感谢您选择${Provider.of<UserModel>(context, listen: false).user.sellername}用餐!\n'; |
| 53 | _getSaiYouYunList(); | 58 | _getSaiYouYunList(); |
| 59 | + // _getSaiYouYunChangeList(); | ||
| 60 | + // _getSmsChangeField(); | ||
| 61 | + _getData(); | ||
| 54 | }); | 62 | }); |
| 55 | } | 63 | } |
| 56 | 64 | ||
| @@ -69,6 +77,91 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -69,6 +77,91 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 69 | marketingCenterProvider.notifyListeners(); | 77 | marketingCenterProvider.notifyListeners(); |
| 70 | } | 78 | } |
| 71 | 79 | ||
| 80 | + Future<bool> _getSaiYouYunChangeList() async { | ||
| 81 | + bool sucess = await marketingCenterProvider.getSaiYouYunChangeList(context); | ||
| 82 | + if (sucess) { | ||
| 83 | + if (widget.smsTemplate != null && widget.smsTemplate.length > 0) { | ||
| 84 | + //默认选中 | ||
| 85 | + | ||
| 86 | + marketingCenterProvider.saiYouYunchangedData.forEach((element) { | ||
| 87 | + if (element.temp == widget.smsTemplate) { | ||
| 88 | + canChange = true; | ||
| 89 | + element.select = true; | ||
| 90 | + contentChangeStart = element.content.templateParam; | ||
| 91 | + // controller.text = element.content; | ||
| 92 | + } | ||
| 93 | + }); | ||
| 94 | + } | ||
| 95 | + setState(() {}); | ||
| 96 | + return true; | ||
| 97 | + } else { | ||
| 98 | + return false; | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + // marketingCenterProvider.notifyListeners(); | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + _getData() async { | ||
| 105 | + Future.wait<bool>([_getSmsChangeField(), _getSaiYouYunChangeList()]) | ||
| 106 | + .then((results) async { | ||
| 107 | + print(results[0]); | ||
| 108 | + if (results[0] && results[1]) { | ||
| 109 | + //成功 | ||
| 110 | + String temp = widget.bookinginfo; | ||
| 111 | + marketingCenterProvider.smsChangeFieldData.forEach((element) { | ||
| 112 | + int count = widget.bookinginfo.split(element.code).length - 1; | ||
| 113 | + | ||
| 114 | + element.times = count; | ||
| 115 | + if (temp.contains(element.code)) { | ||
| 116 | + temp = temp.replaceAll(element.code, element.show); | ||
| 117 | + } | ||
| 118 | + }); | ||
| 119 | + controller.text = temp; | ||
| 120 | + setState(() {}); | ||
| 121 | + } else { | ||
| 122 | + // if (!results[0]) { | ||
| 123 | + // //没有优惠券 | ||
| 124 | + // } else {} | ||
| 125 | + // if (!results[1]) { | ||
| 126 | + // //没有营销中心数据 | ||
| 127 | + // } else {} | ||
| 128 | + setState(() {}); | ||
| 129 | + } | ||
| 130 | + }).catchError((e) { | ||
| 131 | + print(e); | ||
| 132 | + }); | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + /// 获取可变模板允许配置字段 | ||
| 136 | + Future<bool> _getSmsChangeField() async { | ||
| 137 | + bool suceess = await marketingCenterProvider.getSmsChangeField(context); | ||
| 138 | + if (suceess) { | ||
| 139 | + return true; | ||
| 140 | + } else { | ||
| 141 | + return false; | ||
| 142 | + } | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + ///设置店铺短信可变模版 | ||
| 146 | + Future<bool> _saveSaiYouYunChange(String text, | ||
| 147 | + {bool isShowLoading = true}) async { | ||
| 148 | + Map<String, String> params = { | ||
| 149 | + 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid, | ||
| 150 | + 'sms_code': smsSelectValue, | ||
| 151 | + 'bookinginfo': text.startsWith('\n') ? text : '\n' + text, | ||
| 152 | + }; | ||
| 153 | + | ||
| 154 | + bool success = await marketingCenterProvider | ||
| 155 | + .saveSaiYouYunChange(context, params, showLoading: isShowLoading); | ||
| 156 | + // await _setTempleteSMS(); | ||
| 157 | + | ||
| 158 | + if (success) { | ||
| 159 | + await _setTempleteSMS(); | ||
| 160 | + } else { | ||
| 161 | + return false; | ||
| 162 | + } | ||
| 163 | + } | ||
| 164 | + | ||
| 72 | ///设置店铺短信固定模版 | 165 | ///设置店铺短信固定模版 |
| 73 | Future<bool> _setTempleteSMS({bool isShowLoading = true}) async { | 166 | Future<bool> _setTempleteSMS({bool isShowLoading = true}) async { |
| 74 | Map<String, String> params = { | 167 | Map<String, String> params = { |
| @@ -94,46 +187,95 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -94,46 +187,95 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 94 | List<Widget> data = []; | 187 | List<Widget> data = []; |
| 95 | for (var i = 0; i < temData.length; i++) { | 188 | for (var i = 0; i < temData.length; i++) { |
| 96 | data.add(btnItem(temData[i].temp, temData[i].select, onTap: () { | 189 | data.add(btnItem(temData[i].temp, temData[i].select, onTap: () { |
| 97 | - if (title == '固定模版') { | ||
| 98 | - canChange = false; | ||
| 99 | - marketingCenterProvider.saiYouYunFixedData.forEach((element) { | ||
| 100 | - element.select = false; | ||
| 101 | - }); | ||
| 102 | - // i 的select = true; | ||
| 103 | - temData[i].select = true; | ||
| 104 | - smsSelectValue = temData[i].temp; | ||
| 105 | - controller.text = temData[i].content; | ||
| 106 | - marketingCenterProvider.saiYouYunchangedData.forEach((element) { | ||
| 107 | - element.select = false; | ||
| 108 | - }); | ||
| 109 | - } else { | ||
| 110 | - canChange = true; | ||
| 111 | - marketingCenterProvider.saiYouYunchangedData.forEach((element) { | ||
| 112 | - element.select = false; | ||
| 113 | - }); | ||
| 114 | - // i 的select = true; | ||
| 115 | - temData[i].select = true; | ||
| 116 | - smsSelectValue = temData[i].temp; | ||
| 117 | - controller.text = temData[i].content; | ||
| 118 | - marketingCenterProvider.saiYouYunFixedData.forEach((element) { | ||
| 119 | - element.select = false; | ||
| 120 | - }); | ||
| 121 | - } | 190 | + // if (title == '固定模版') { |
| 191 | + canChange = false; | ||
| 192 | + marketingCenterProvider.saiYouYunFixedData.forEach((element) { | ||
| 193 | + element.select = false; | ||
| 194 | + }); | ||
| 195 | + // i 的select = true; | ||
| 196 | + temData[i].select = true; | ||
| 197 | + smsSelectValue = temData[i].temp; | ||
| 198 | + controller.text = temData[i].content; | ||
| 199 | + marketingCenterProvider.saiYouYunchangedData.forEach((element) { | ||
| 200 | + element.select = false; | ||
| 201 | + }); | ||
| 202 | + // } else { | ||
| 203 | + // canChange = true; | ||
| 204 | + // marketingCenterProvider.saiYouYunchangedData.forEach((element) { | ||
| 205 | + // element.select = false; | ||
| 206 | + // }); | ||
| 207 | + // // i 的select = true; | ||
| 208 | + // temData[i].select = true; | ||
| 209 | + // smsSelectValue = temData[i].temp; | ||
| 210 | + // controller.text = temData[i].content; | ||
| 211 | + // marketingCenterProvider.saiYouYunFixedData.forEach((element) { | ||
| 212 | + // element.select = false; | ||
| 213 | + // }); | ||
| 214 | + // } | ||
| 122 | setState(() {}); | 215 | setState(() {}); |
| 123 | })); | 216 | })); |
| 124 | } | 217 | } |
| 125 | return data; | 218 | return data; |
| 126 | } | 219 | } |
| 127 | 220 | ||
| 128 | - List<Widget> btnWidgets(List<String> temData) { | 221 | + List<Widget> templateChangesWidgets( |
| 222 | + String title, List<SaiYouYunChangeSunModel> temData) { | ||
| 129 | List<Widget> data = []; | 223 | List<Widget> data = []; |
| 130 | for (var i = 0; i < temData.length; i++) { | 224 | for (var i = 0; i < temData.length; i++) { |
| 131 | - data.add(btnItem(temData[i], true, onTap: () { | ||
| 132 | - // setState(() { | ||
| 133 | - // contentChangeStart += temData[i] + '\n'; | ||
| 134 | - // }); | 225 | + data.add(btnItem(temData[i].temp, temData[i].select, onTap: () { |
| 226 | + if (!canChange) { | ||
| 227 | + //从固定模版变更过来的,清空文本框内容 | ||
| 228 | + controller.text = ''; | ||
| 229 | + } | ||
| 230 | + canChange = true; | ||
| 231 | + marketingCenterProvider.saiYouYunchangedData.forEach((element) { | ||
| 232 | + element.select = false; | ||
| 233 | + }); | ||
| 234 | + // i 的select = true; | ||
| 235 | + contentChangeStart = temData[i].content.templateParam; | ||
| 236 | + temData[i].select = true; | ||
| 237 | + smsSelectValue = temData[i].temp; | ||
| 238 | + | ||
| 239 | + // controller.text = temData[i].content.templateCode; | ||
| 240 | + marketingCenterProvider.saiYouYunFixedData.forEach((element) { | ||
| 241 | + element.select = false; | ||
| 242 | + }); | ||
| 135 | 243 | ||
| 136 | - // 在光标出插入内容 | 244 | + setState(() {}); |
| 245 | + })); | ||
| 246 | + } | ||
| 247 | + return data; | ||
| 248 | + } | ||
| 249 | + | ||
| 250 | + List<Widget> btnWidgets() { | ||
| 251 | + List<Widget> data = []; | ||
| 252 | + for (var i = 0; | ||
| 253 | + i < marketingCenterProvider.smsChangeFieldData.length; | ||
| 254 | + i++) { | ||
| 255 | + data.add(btnItem(marketingCenterProvider.smsChangeFieldData[i].name, true, | ||
| 256 | + onTap: () { | ||
| 257 | + marketingCenterProvider.smsChangeFieldData[i].times++; | ||
| 258 | + print(controller.text); | ||
| 259 | + | ||
| 260 | + // 获取当前光标位置 | ||
| 261 | + int cursorPosition = _cursorPosition; | ||
| 262 | + | ||
| 263 | + // 插入文本 | ||
| 264 | + controller.text = controller.text.substring(0, cursorPosition) + | ||
| 265 | + marketingCenterProvider.smsChangeFieldData[i].show + | ||
| 266 | + controller.text.substring(cursorPosition); | ||
| 267 | + | ||
| 268 | + print(controller.text); | ||
| 269 | + | ||
| 270 | + // 设置新的光标位置 | ||
| 271 | + controller.selection = TextSelection.fromPosition(TextPosition( | ||
| 272 | + offset: cursorPosition + | ||
| 273 | + marketingCenterProvider.smsChangeFieldData[i].show.length, | ||
| 274 | + affinity: TextAffinity.downstream)); | ||
| 275 | + setState(() { | ||
| 276 | + _cursorPosition = controller.selection.baseOffset; | ||
| 277 | + // cursorPosition = _cursorPosition; | ||
| 278 | + }); | ||
| 137 | })); | 279 | })); |
| 138 | } | 280 | } |
| 139 | return data; | 281 | return data; |
| @@ -174,11 +316,11 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -174,11 +316,11 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 174 | child: Wrap( | 316 | child: Wrap( |
| 175 | spacing: w(5), | 317 | spacing: w(5), |
| 176 | runSpacing: w(5), | 318 | runSpacing: w(5), |
| 177 | - children: templateWidgets( | ||
| 178 | - title, | ||
| 179 | - title == '固定模版' | ||
| 180 | - ? marketingCenterProvider.saiYouYunFixedData | ||
| 181 | - : marketingCenterProvider.saiYouYunchangedData), | 319 | + children: title == '固定模版' |
| 320 | + ? templateWidgets( | ||
| 321 | + title, marketingCenterProvider.saiYouYunFixedData) | ||
| 322 | + : templateChangesWidgets( | ||
| 323 | + title, marketingCenterProvider.saiYouYunchangedData), | ||
| 182 | )) | 324 | )) |
| 183 | ], | 325 | ], |
| 184 | ), | 326 | ), |
| @@ -191,7 +333,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -191,7 +333,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 191 | Provider.of<MarketingCenterProvider>(context, listen: true); | 333 | Provider.of<MarketingCenterProvider>(context, listen: true); |
| 192 | return Scaffold( | 334 | return Scaffold( |
| 193 | backgroundColor: MyColours.color_ffffff, | 335 | backgroundColor: MyColours.color_ffffff, |
| 194 | - appBar: SystemAppBar('预订通知短信模板选择'), | 336 | + appBar: SystemAppBar('预订通知短信模版选择'), |
| 195 | body: Column( | 337 | body: Column( |
| 196 | children: [ | 338 | children: [ |
| 197 | Expanded( | 339 | Expanded( |
| @@ -200,7 +342,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -200,7 +342,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 200 | crossAxisAlignment: CrossAxisAlignment.start, | 342 | crossAxisAlignment: CrossAxisAlignment.start, |
| 201 | children: [ | 343 | children: [ |
| 202 | _templeteWidget('固定模版'), | 344 | _templeteWidget('固定模版'), |
| 203 | - // _templeteWidget('可变模版'), | 345 | + _templeteWidget('可变模版'), |
| 204 | VEmptyView(10), | 346 | VEmptyView(10), |
| 205 | Container( | 347 | Container( |
| 206 | width: double.infinity, | 348 | width: double.infinity, |
| @@ -255,7 +397,19 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -255,7 +397,19 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 255 | ), | 397 | ), |
| 256 | contentPadding: EdgeInsets.zero, | 398 | contentPadding: EdgeInsets.zero, |
| 257 | ), | 399 | ), |
| 258 | - onChanged: (value) {}, | 400 | + onChanged: (value) { |
| 401 | + //添加的代码:光标一直在文本框后面 | ||
| 402 | + // controller.value = TextEditingValue( | ||
| 403 | + // text: controller.text, | ||
| 404 | + // selection: | ||
| 405 | + // TextSelection.fromPosition(TextPosition( | ||
| 406 | + // affinity: TextAffinity.downstream, | ||
| 407 | + // offset: controller.text.length, | ||
| 408 | + // ))); | ||
| 409 | + setState(() { | ||
| 410 | + _cursorPosition = controller.selection.baseOffset; | ||
| 411 | + }); | ||
| 412 | + }, | ||
| 259 | onEditingComplete: () { | 413 | onEditingComplete: () { |
| 260 | FocusScope.of(context) | 414 | FocusScope.of(context) |
| 261 | .requestFocus(FocusNode()); //点击空白处隐藏键盘 | 415 | .requestFocus(FocusNode()); //点击空白处隐藏键盘 |
| @@ -273,7 +427,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -273,7 +427,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 273 | crossAxisAlignment: WrapCrossAlignment.start, | 427 | crossAxisAlignment: WrapCrossAlignment.start, |
| 274 | spacing: w(10), | 428 | spacing: w(10), |
| 275 | runSpacing: w(10), | 429 | runSpacing: w(10), |
| 276 | - children: btnWidgets(btnData), | 430 | + children: btnWidgets(), |
| 277 | )) | 431 | )) |
| 278 | ], | 432 | ], |
| 279 | ), | 433 | ), |
| @@ -336,7 +490,45 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | @@ -336,7 +490,45 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { | ||
| 336 | Utils.showToast('请选择模版类型'); | 490 | Utils.showToast('请选择模版类型'); |
| 337 | return; | 491 | return; |
| 338 | } | 492 | } |
| 339 | - _setTempleteSMS(); | 493 | + if (canChange) { |
| 494 | + if (controller.text.trim().length == 0) { | ||
| 495 | + Utils.showToast('请输入内容后保存'); | ||
| 496 | + return; | ||
| 497 | + } | ||
| 498 | + | ||
| 499 | + bool canRequest = marketingCenterProvider | ||
| 500 | + .smsChangeFieldData | ||
| 501 | + .every((element) { | ||
| 502 | + if (element.times > 0) { | ||
| 503 | + int count = | ||
| 504 | + controller.text.split(element.show).length - | ||
| 505 | + 1; | ||
| 506 | + | ||
| 507 | + if (count != element.times) { | ||
| 508 | + Utils.showToast('${element.show}不符合规范,请检查'); | ||
| 509 | + | ||
| 510 | + return false; | ||
| 511 | + } | ||
| 512 | + } | ||
| 513 | + return true; | ||
| 514 | + }); | ||
| 515 | + | ||
| 516 | + if (canRequest) { | ||
| 517 | + String tempStr = controller.text; | ||
| 518 | + marketingCenterProvider.smsChangeFieldData | ||
| 519 | + .forEach((element) { | ||
| 520 | + if (tempStr.contains(element.show)) { | ||
| 521 | + tempStr = tempStr.replaceAll( | ||
| 522 | + element.show, element.code); | ||
| 523 | + } | ||
| 524 | + }); | ||
| 525 | + | ||
| 526 | + _saveSaiYouYunChange(tempStr); | ||
| 527 | + } | ||
| 528 | + print('fffff'); | ||
| 529 | + } else { | ||
| 530 | + _setTempleteSMS(); | ||
| 531 | + } | ||
| 340 | }, | 532 | }, |
| 341 | ), | 533 | ), |
| 342 | ) | 534 | ) |
| @@ -9,8 +9,10 @@ import '../constant/error.dart'; | @@ -9,8 +9,10 @@ import '../constant/error.dart'; | ||
| 9 | import '../models/GetDzSellerConfModel.dart'; | 9 | import '../models/GetDzSellerConfModel.dart'; |
| 10 | import '../models/mark_data_model.dart'; | 10 | import '../models/mark_data_model.dart'; |
| 11 | import '../models/recharge_notice_model.dart'; | 11 | import '../models/recharge_notice_model.dart'; |
| 12 | +import '../models/sai_you_yun_change_model.dart'; | ||
| 12 | import '../models/sai_you_yun_model.dart'; | 13 | import '../models/sai_you_yun_model.dart'; |
| 13 | import '../models/seller_template_color_list_model.dart'; | 14 | import '../models/seller_template_color_list_model.dart'; |
| 15 | +import '../models/sms_change_field_model.dart'; | ||
| 14 | import '../models/tableOuter.dart'; | 16 | import '../models/tableOuter.dart'; |
| 15 | import '../net/base_resp.dart'; | 17 | import '../net/base_resp.dart'; |
| 16 | import '../net/dio_util.dart'; | 18 | import '../net/dio_util.dart'; |
| @@ -44,7 +46,9 @@ class MarketingCenterProvider extends ChangeNotifier { | @@ -44,7 +46,9 @@ class MarketingCenterProvider extends ChangeNotifier { | ||
| 44 | List<SellerTemplateColorListSunModel> templeteDatas = []; //后台配置的模版数据 | 46 | List<SellerTemplateColorListSunModel> templeteDatas = []; //后台配置的模版数据 |
| 45 | 47 | ||
| 46 | List<SaiYouYunSunModel> saiYouYunFixedData = []; //塞邮云固定模版数据 | 48 | List<SaiYouYunSunModel> saiYouYunFixedData = []; //塞邮云固定模版数据 |
| 47 | - List<SaiYouYunSunModel> saiYouYunchangedData = []; //塞邮云固定模版数据 | 49 | + List<SaiYouYunChangeSunModel> saiYouYunchangedData = []; //塞邮云可变模版数据 |
| 50 | + | ||
| 51 | + List<SmsChangeFieldSunModel> smsChangeFieldData = []; // 获取可变模板允许配置字段 | ||
| 48 | 52 | ||
| 49 | // 获取赛邮云短信模板列表 (固定模版) | 53 | // 获取赛邮云短信模板列表 (固定模版) |
| 50 | 54 | ||
| @@ -74,6 +78,65 @@ class MarketingCenterProvider extends ChangeNotifier { | @@ -74,6 +78,65 @@ class MarketingCenterProvider extends ChangeNotifier { | ||
| 74 | return false; | 78 | return false; |
| 75 | } | 79 | } |
| 76 | 80 | ||
| 81 | + // 获取赛邮云短信模板列表 (可变模版) | ||
| 82 | + | ||
| 83 | + Future<bool> getSaiYouYunChangeList(BuildContext context, | ||
| 84 | + {bool showLoading = true}) async { | ||
| 85 | + Map<String, String> params = { | ||
| 86 | + 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid | ||
| 87 | + }; | ||
| 88 | + BaseResp<dynamic> baseResp = await DioUtil() | ||
| 89 | + .request<dynamic>( | ||
| 90 | + context, Method.get, HttpUrl.get_sai_you_yun_change_list, | ||
| 91 | + data: params, showLoading: showLoading) | ||
| 92 | + .catchError((error) { | ||
| 93 | + print(error.toString()); | ||
| 94 | + Utils.showToast('请求失败,请重试'); | ||
| 95 | + return false; | ||
| 96 | + }); | ||
| 97 | + if (baseResp.code == Constant.status_success) { | ||
| 98 | + saiYouYunchangedData = | ||
| 99 | + SaiYouYunChangeModel.fromJson(baseResp.responseData).data; | ||
| 100 | + // if (saiYouYunFixedData.length > 0) { | ||
| 101 | + // saiYouYunFixedData[0].select = true; | ||
| 102 | + // } | ||
| 103 | + // notifyListeners(); | ||
| 104 | + return true; | ||
| 105 | + } else { | ||
| 106 | + Utils.showToast(baseResp.msg ?? '请求失败,请重试'); | ||
| 107 | + } | ||
| 108 | + return false; | ||
| 109 | + } | ||
| 110 | + | ||
| 111 | + // 获取可变模板允许配置字段 | ||
| 112 | + | ||
| 113 | + Future<bool> getSmsChangeField(BuildContext context, | ||
| 114 | + {bool showLoading = true}) async { | ||
| 115 | + // Map<String, String> params = { | ||
| 116 | + // 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid | ||
| 117 | + // }; | ||
| 118 | + BaseResp<dynamic> baseResp = await DioUtil() | ||
| 119 | + .request<dynamic>(context, Method.get, HttpUrl.get_sms_change_field, | ||
| 120 | + showLoading: showLoading) | ||
| 121 | + .catchError((error) { | ||
| 122 | + print(error.toString()); | ||
| 123 | + Utils.showToast('请求失败,请重试'); | ||
| 124 | + return false; | ||
| 125 | + }); | ||
| 126 | + if (baseResp.code == Constant.status_success) { | ||
| 127 | + smsChangeFieldData = | ||
| 128 | + SmsChangeFieldModel.fromJson(baseResp.responseData).data; | ||
| 129 | + // if (saiYouYunFixedData.length > 0) { | ||
| 130 | + // saiYouYunFixedData[0].select = true; | ||
| 131 | + // } | ||
| 132 | + // notifyListeners(); | ||
| 133 | + return true; | ||
| 134 | + } else { | ||
| 135 | + Utils.showToast(baseResp.msg ?? '请求失败,请重试'); | ||
| 136 | + } | ||
| 137 | + return false; | ||
| 138 | + } | ||
| 139 | + | ||
| 77 | //获取桌位列表 | 140 | //获取桌位列表 |
| 78 | getTableList(context, {needLoading = true}) async { | 141 | getTableList(context, {needLoading = true}) async { |
| 79 | UserModel userModel = Provider.of<UserModel>(context, listen: false); | 142 | UserModel userModel = Provider.of<UserModel>(context, listen: false); |
| @@ -160,6 +223,30 @@ class MarketingCenterProvider extends ChangeNotifier { | @@ -160,6 +223,30 @@ class MarketingCenterProvider extends ChangeNotifier { | ||
| 160 | return false; | 223 | return false; |
| 161 | } | 224 | } |
| 162 | 225 | ||
| 226 | + // 配置可变模板内容 | ||
| 227 | + Future<bool> saveSaiYouYunChange( | ||
| 228 | + BuildContext context, Map<String, String> params, | ||
| 229 | + {bool showLoading = true}) async { | ||
| 230 | + BaseResp<dynamic> baseResp = await DioUtil() | ||
| 231 | + .request<dynamic>(context, Method.get, HttpUrl.save_sai_you_yun_change, | ||
| 232 | + data: params, showLoading: showLoading) | ||
| 233 | + .catchError((error) { | ||
| 234 | + print(error.toString()); | ||
| 235 | + Utils.showToast('配置可变模板内容失败,请重试'); | ||
| 236 | + return false; | ||
| 237 | + }); | ||
| 238 | + if (baseResp.code == Constant.status_success) { | ||
| 239 | + // if (baseResp.data == 0 || baseResp.data == 1) { | ||
| 240 | + return true; | ||
| 241 | + // } else { | ||
| 242 | + // Utils.showToast('配置可变模板内容失败,请重试'); | ||
| 243 | + // } | ||
| 244 | + } else { | ||
| 245 | + Utils.showToast(baseResp.msg ?? '商配置可变模板内容失败,请重试'); | ||
| 246 | + } | ||
| 247 | + return false; | ||
| 248 | + } | ||
| 249 | + | ||
| 163 | // 设置订座商家配置信息 | 250 | // 设置订座商家配置信息 |
| 164 | Future<bool> setConfing(BuildContext context, Map<String, String> params, | 251 | Future<bool> setConfing(BuildContext context, Map<String, String> params, |
| 165 | {bool showLoading = true, bool needToast = true}) async { | 252 | {bool showLoading = true, bool needToast = true}) async { |
| @@ -1893,14 +1893,15 @@ class NavigatorUtil { | @@ -1893,14 +1893,15 @@ class NavigatorUtil { | ||
| 1893 | replace: replace); | 1893 | replace: replace); |
| 1894 | } | 1894 | } |
| 1895 | 1895 | ||
| 1896 | - ///预订通知短信模板选择 | 1896 | + ///预订通知短信模版选择 |
| 1897 | static Future<dynamic> goSmsTemplateSettingPage( | 1897 | static Future<dynamic> goSmsTemplateSettingPage( |
| 1898 | BuildContext context, | 1898 | BuildContext context, |
| 1899 | - String smsTemplate, { | 1899 | + String smsTemplate, |
| 1900 | + String bookinginfo, { | ||
| 1900 | replace = false, | 1901 | replace = false, |
| 1901 | }) { | 1902 | }) { |
| 1902 | return _navigateTo(context, | 1903 | return _navigateTo(context, |
| 1903 | - "${Routes.sms_template_setting_page}?smsTemplate=${Uri.encodeComponent(smsTemplate)}", | 1904 | + "${Routes.sms_template_setting_page}?smsTemplate=${Uri.encodeComponent(smsTemplate)}&bookinginfo=${Uri.encodeComponent(bookinginfo)}", |
| 1904 | replace: replace); | 1905 | replace: replace); |
| 1905 | } | 1906 | } |
| 1906 | 1907 |
| @@ -3228,15 +3228,16 @@ var exportBookDataPageHandle = new Handler( | @@ -3228,15 +3228,16 @@ var exportBookDataPageHandle = new Handler( | ||
| 3228 | create: (_) => CustomerProvider(), child: ExportBookDataPage()); | 3228 | create: (_) => CustomerProvider(), child: ExportBookDataPage()); |
| 3229 | }); | 3229 | }); |
| 3230 | 3230 | ||
| 3231 | -//预订通知短信模板选择 | 3231 | +//预订通知短信模版选择 |
| 3232 | 3232 | ||
| 3233 | var smsTemplateSettingPageHandle = new Handler( | 3233 | var smsTemplateSettingPageHandle = new Handler( |
| 3234 | handlerFunc: (BuildContext context, Map<String, List<Object>> params) { | 3234 | handlerFunc: (BuildContext context, Map<String, List<Object>> params) { |
| 3235 | // String rid = params["rid"].first; | 3235 | // String rid = params["rid"].first; |
| 3236 | String smsTemplate = params["smsTemplate"].first; | 3236 | String smsTemplate = params["smsTemplate"].first; |
| 3237 | + String bookinginfo = params["bookinginfo"].first; | ||
| 3237 | return ChangeNotifierProvider<MarketingCenterProvider>( | 3238 | return ChangeNotifierProvider<MarketingCenterProvider>( |
| 3238 | create: (_) => MarketingCenterProvider(), | 3239 | create: (_) => MarketingCenterProvider(), |
| 3239 | - child: SmsTemplateSettingPage(smsTemplate: smsTemplate)); | 3240 | + child: SmsTemplateSettingPage(smsTemplate: smsTemplate,bookinginfo:bookinginfo)); |
| 3240 | }); | 3241 | }); |
| 3241 | 3242 | ||
| 3242 | //优惠券海报 | 3243 | //优惠券海报 |
-
Please register or login to post a comment