Showing
13 changed files
with
444 additions
and
211 deletions
assets/tts_order.mp3
0 → 100755
No preview for this file type
| @@ -26,6 +26,8 @@ import 'package:one_key/provider/tools.dart'; | @@ -26,6 +26,8 @@ import 'package:one_key/provider/tools.dart'; | ||
| 26 | import 'package:one_key/provider/update_model.dart'; | 26 | import 'package:one_key/provider/update_model.dart'; |
| 27 | import 'package:one_key/provider/user_model.dart'; | 27 | import 'package:one_key/provider/user_model.dart'; |
| 28 | import 'package:one_key/res/colors.dart'; | 28 | import 'package:one_key/res/colors.dart'; |
| 29 | +import 'package:one_key/utils/dialog_util.dart'; | ||
| 30 | +import 'package:one_key/utils/event_bus.dart'; | ||
| 29 | import 'package:one_key/utils/misc.dart'; | 31 | import 'package:one_key/utils/misc.dart'; |
| 30 | import 'package:one_key/utils/navigator_util.dart'; | 32 | import 'package:one_key/utils/navigator_util.dart'; |
| 31 | import 'package:one_key/utils/utils.dart'; | 33 | import 'package:one_key/utils/utils.dart'; |
| @@ -34,6 +36,7 @@ import 'package:provider/provider.dart'; | @@ -34,6 +36,7 @@ import 'package:provider/provider.dart'; | ||
| 34 | import 'package:shared_preferences/shared_preferences.dart'; | 36 | import 'package:shared_preferences/shared_preferences.dart'; |
| 35 | import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart'; | 37 | import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart'; |
| 36 | import 'package:flutter_app_badger/flutter_app_badger.dart'; | 38 | import 'package:flutter_app_badger/flutter_app_badger.dart'; |
| 39 | +import 'package:one_key/models/message.dart'; | ||
| 37 | 40 | ||
| 38 | class HomePage extends StatefulWidget { | 41 | class HomePage extends StatefulWidget { |
| 39 | final int initialIndex; //初始tab | 42 | final int initialIndex; //初始tab |
| @@ -98,7 +101,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -98,7 +101,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 98 | updateModel.checkUpdate(context, showToast: false); | 101 | updateModel.checkUpdate(context, showToast: false); |
| 99 | }); | 102 | }); |
| 100 | timer = Timer.periodic(Duration(minutes: 3), (_) { | 103 | timer = Timer.periodic(Duration(minutes: 3), (_) { |
| 101 | - getUntreatedMessage(); | 104 | + _getAllUnMessages(); |
| 102 | }); | 105 | }); |
| 103 | }); | 106 | }); |
| 104 | } | 107 | } |
| @@ -123,9 +126,25 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -123,9 +126,25 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 123 | NavigatorUtil.goNotebookDetailPage(context, notifyParam['rid'], | 126 | NavigatorUtil.goNotebookDetailPage(context, notifyParam['rid'], |
| 124 | mid: notifyParam['mid'], fromNotify: true); | 127 | mid: notifyParam['mid'], fromNotify: true); |
| 125 | break; | 128 | break; |
| 129 | + case "1": | ||
| 130 | + NavigatorUtil.goHasOrderFoodPage(context, | ||
| 131 | + rid: notifyParam["rid"], fromNotify: true); | ||
| 132 | + // bus.emit("remove_untreated_message_order", notifyParam["rid"]); | ||
| 133 | + | ||
| 134 | + Map<String, String> params = { | ||
| 135 | + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid, | ||
| 136 | + "id": notifyParam['mid'], | ||
| 137 | + "status": "is_read" | ||
| 138 | + }; | ||
| 139 | + MessageDialogModel messageDialogModel = | ||
| 140 | + Provider.of<MessageDialogModel>(context, listen: false); | ||
| 141 | + await messageDialogModel.setMessageStatus(context, params); | ||
| 142 | + // bus.emit("refresh_untreated_num"); //刷新未读消息数目 | ||
| 143 | + | ||
| 144 | + break; | ||
| 126 | } | 145 | } |
| 127 | } else { | 146 | } else { |
| 128 | - getUntreatedMessage(); | 147 | + _getAllUnMessages(); |
| 129 | } | 148 | } |
| 130 | } | 149 | } |
| 131 | 150 | ||
| @@ -134,7 +153,6 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -134,7 +153,6 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 134 | /// 开启DEBUG | 153 | /// 开启DEBUG |
| 135 | XgFlutterPlugin().setEnableDebug(false); | 154 | XgFlutterPlugin().setEnableDebug(false); |
| 136 | 155 | ||
| 137 | - | ||
| 138 | /// 添加回调事件 | 156 | /// 添加回调事件 |
| 139 | XgFlutterPlugin().addEventHandler( | 157 | XgFlutterPlugin().addEventHandler( |
| 140 | onRegisteredDeviceToken: (String msg) async { | 158 | onRegisteredDeviceToken: (String msg) async { |
| @@ -266,19 +284,20 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -266,19 +284,20 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 266 | userModel.userTokenInit(context, params); | 284 | userModel.userTokenInit(context, params); |
| 267 | } | 285 | } |
| 268 | 286 | ||
| 287 | + // 消息类型ID 1/2/10 提前点餐/新订单(预定)消息/在线预订 | ||
| 269 | //获取未处理在线预订消息 | 288 | //获取未处理在线预订消息 |
| 270 | - getUntreatedMessage() { | 289 | + getUntreatedMessage(String typeId, VoidCallback callback) { |
| 271 | UserModel userModel = Provider.of<UserModel>(context, listen: false); | 290 | UserModel userModel = Provider.of<UserModel>(context, listen: false); |
| 272 | Map<String, String> params = { | 291 | Map<String, String> params = { |
| 273 | "sid": userModel.user.sellerid, | 292 | "sid": userModel.user.sellerid, |
| 274 | - "type_id": "10", //10 在线预订 | 293 | + "type_id": typeId, |
| 275 | "status": "0", //未处理 | 294 | "status": "0", //未处理 |
| 276 | "offset": "0", | 295 | "offset": "0", |
| 277 | "limit": "100", | 296 | "limit": "100", |
| 278 | }; | 297 | }; |
| 279 | MessageDialogModel messageModel = | 298 | MessageDialogModel messageModel = |
| 280 | Provider.of<MessageDialogModel>(context, listen: false); | 299 | Provider.of<MessageDialogModel>(context, listen: false); |
| 281 | - messageModel.getUntreatedMsg(context, params); | 300 | + messageModel.getUntreatedMsg(context, params, callback); |
| 282 | } | 301 | } |
| 283 | 302 | ||
| 284 | @override | 303 | @override |
| @@ -288,7 +307,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -288,7 +307,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 288 | switch (state) { | 307 | switch (state) { |
| 289 | case AppLifecycleState.resumed: //应用前台可见 | 308 | case AppLifecycleState.resumed: //应用前台可见 |
| 290 | _clearBadge(() { | 309 | _clearBadge(() { |
| 291 | - getUntreatedMessage(); | 310 | + _getAllUnMessages(); |
| 292 | }); | 311 | }); |
| 293 | 312 | ||
| 294 | break; | 313 | break; |
| @@ -307,6 +326,33 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -307,6 +326,33 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 307 | } | 326 | } |
| 308 | } | 327 | } |
| 309 | 328 | ||
| 329 | + ///获取全部未读消息 | ||
| 330 | + /// | ||
| 331 | + _getAllUnMessages() { | ||
| 332 | + getUntreatedMessage('1', () { | ||
| 333 | + getUntreatedMessage('10', () { | ||
| 334 | + MessageDialogModel messageModel = | ||
| 335 | + Provider.of<MessageDialogModel>(context, listen: false); | ||
| 336 | + if (messageModel.messages.isNotEmpty) { | ||
| 337 | + //底部弹出布局 | ||
| 338 | + if (!messageModel.showMessageDialog) { | ||
| 339 | + DialogUtil.showMessageDialog(context); | ||
| 340 | + } else { | ||
| 341 | + messageModel.notifyListeners(); | ||
| 342 | + } | ||
| 343 | + //播放声音 | ||
| 344 | + if (messageModel.messages.length > 1) { | ||
| 345 | + messageModel.play("-1"); | ||
| 346 | + } else { | ||
| 347 | + for (Message message in messageModel.messages) { | ||
| 348 | + messageModel.play(message.message_type); | ||
| 349 | + } | ||
| 350 | + } | ||
| 351 | + } | ||
| 352 | + }); | ||
| 353 | + }); | ||
| 354 | + } | ||
| 355 | + | ||
| 310 | // 系统窗口相关改变回调 | 356 | // 系统窗口相关改变回调 |
| 311 | void didChangeMetrics() { | 357 | void didChangeMetrics() { |
| 312 | super.didChangeMetrics(); | 358 | super.didChangeMetrics(); |
| @@ -7,6 +7,7 @@ import 'package:one_key/pages/home/home_page.dart'; | @@ -7,6 +7,7 @@ import 'package:one_key/pages/home/home_page.dart'; | ||
| 7 | import 'package:one_key/provider/message_dialog_model.dart'; | 7 | import 'package:one_key/provider/message_dialog_model.dart'; |
| 8 | import 'package:one_key/provider/user_model.dart'; | 8 | import 'package:one_key/provider/user_model.dart'; |
| 9 | import 'package:one_key/res/colors.dart'; | 9 | import 'package:one_key/res/colors.dart'; |
| 10 | +import 'package:one_key/utils/event_bus.dart'; | ||
| 10 | import 'package:one_key/utils/navigator_util.dart'; | 11 | import 'package:one_key/utils/navigator_util.dart'; |
| 11 | import 'package:one_key/widgets/common_button.dart'; | 12 | import 'package:one_key/widgets/common_button.dart'; |
| 12 | import 'package:one_key/widgets/h_empty_view.dart'; | 13 | import 'package:one_key/widgets/h_empty_view.dart'; |
| @@ -16,126 +17,176 @@ import 'package:provider/provider.dart'; | @@ -16,126 +17,176 @@ import 'package:provider/provider.dart'; | ||
| 16 | import '../../app.dart'; | 17 | import '../../app.dart'; |
| 17 | 18 | ||
| 18 | class MessageDialogItem extends StatelessWidget { | 19 | class MessageDialogItem extends StatelessWidget { |
| 19 | - | ||
| 20 | final Message message; | 20 | final Message message; |
| 21 | final bool isTreated; | 21 | final bool isTreated; |
| 22 | final VoidCallback callback; | 22 | final VoidCallback callback; |
| 23 | - MessageDialogItem(this.message,{this.isTreated=false,this.callback}); | 23 | + MessageDialogItem(this.message, {this.isTreated = false, this.callback}); |
| 24 | 24 | ||
| 25 | @override | 25 | @override |
| 26 | Widget build(BuildContext context) { | 26 | Widget build(BuildContext context) { |
| 27 | // TODO: implement build | 27 | // TODO: implement build |
| 28 | - Color textColor=isTreated?MyColours.color_999999:MyColours.color_353535; | ||
| 29 | - MessageDialogModel messageDialogModel=Provider.of<MessageDialogModel>(context,listen: false); | 28 | + String title = ''; //大标题 |
| 29 | + String subTitleFir = ''; //第一行标题 | ||
| 30 | + String subTitleSec = ''; //第二行标题 | ||
| 31 | + String subTitleThr = ''; //第三行标题 | ||
| 32 | + if (message.message_type == "10") { | ||
| 33 | + title = "在线预订"; | ||
| 34 | + subTitleFir = '包间需求'; | ||
| 35 | + subTitleSec = '就餐时间'; | ||
| 36 | + subTitleThr = '预订人'; | ||
| 37 | + } else if (message.message_type == "11") { | ||
| 38 | + title = "取消预订"; | ||
| 39 | + } else if (message.message_type == "1") { | ||
| 40 | + title = "提前点餐"; | ||
| 41 | + subTitleFir = '桌位信息'; | ||
| 42 | + subTitleSec = '就餐时间'; | ||
| 43 | + subTitleThr = '预订人'; | ||
| 44 | + } | ||
| 45 | + Color textColor = | ||
| 46 | + isTreated ? MyColours.color_999999 : MyColours.color_353535; | ||
| 47 | + MessageDialogModel messageDialogModel = | ||
| 48 | + Provider.of<MessageDialogModel>(context, listen: false); | ||
| 30 | return GestureDetector( | 49 | return GestureDetector( |
| 31 | - onTap: (){ | ||
| 32 | - if(isTreated){ | ||
| 33 | - NavigatorUtil.goNotebookDetailPage(context,message.rid.toString()); | ||
| 34 | - } | ||
| 35 | - }, | ||
| 36 | - child: Stack( | ||
| 37 | - children: <Widget>[ | ||
| 38 | - Container( | ||
| 39 | - height: ScreenUtil().setWidth(290), | ||
| 40 | - margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)), | ||
| 41 | - padding: EdgeInsets.fromLTRB( | ||
| 42 | - ScreenUtil().setWidth(12), | ||
| 43 | - ScreenUtil().setWidth(45), | ||
| 44 | - ScreenUtil().setWidth(21), | ||
| 45 | - ScreenUtil().setWidth(43)), | ||
| 46 | - decoration: BoxDecoration( | ||
| 47 | - color: MyColours.color_fefefe, | ||
| 48 | - borderRadius: | ||
| 49 | - BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8)))), | ||
| 50 | - child:Column( | ||
| 51 | - mainAxisSize: MainAxisSize.min, | ||
| 52 | - crossAxisAlignment: CrossAxisAlignment.start, | ||
| 53 | - children: <Widget>[ | ||
| 54 | - Row( | ||
| 55 | - crossAxisAlignment: CrossAxisAlignment.center, | ||
| 56 | - children: <Widget>[ | ||
| 57 | - Text( | ||
| 58 | - message.message_type=="10"?"在线预订":"取消预订", | ||
| 59 | - style: TextStyle( | ||
| 60 | - color: textColor, | ||
| 61 | - fontSize: ScreenUtil().setSp(28)), | ||
| 62 | - ), | ||
| 63 | - Spacer(), | ||
| 64 | - Text( | ||
| 65 | - message.cdateStr, | ||
| 66 | - style: TextStyle( | ||
| 67 | - color: MyColours.color_999999, | ||
| 68 | - fontSize: ScreenUtil().setSp(24)), | ||
| 69 | - ), | ||
| 70 | - ], | ||
| 71 | - ), | ||
| 72 | - VEmptyView(20), | ||
| 73 | - message.message_type=="11"? | ||
| 74 | - Text( | ||
| 75 | - "${message.ddateStr}的${message.rnameStr}取消了预订", | ||
| 76 | - style: TextStyle( | ||
| 77 | - color: textColor, | ||
| 78 | - fontSize: ScreenUtil().setSp(28)), | ||
| 79 | - ): | ||
| 80 | - Column( | ||
| 81 | - mainAxisSize: MainAxisSize.min, | ||
| 82 | - crossAxisAlignment: CrossAxisAlignment.start, | ||
| 83 | - children: <Widget>[ | ||
| 84 | - Text( | ||
| 85 | - "包间需求:${message.room_demand}", | ||
| 86 | - style: TextStyle( | ||
| 87 | - color: textColor, | ||
| 88 | - fontSize: ScreenUtil().setSp(28)), | ||
| 89 | - ), | ||
| 90 | - VEmptyView(10), | ||
| 91 | - Text( | ||
| 92 | - "就餐时间:${message.ddateStr}", | ||
| 93 | - style: TextStyle( | ||
| 94 | - color: textColor, | ||
| 95 | - fontSize: ScreenUtil().setSp(28)), | ||
| 96 | - ), | ||
| 97 | - VEmptyView(10), | ||
| 98 | - Text( | ||
| 99 | - "预订人:${message.rnameStr}", | ||
| 100 | - style: TextStyle( | ||
| 101 | - color: textColor, | ||
| 102 | - fontSize: ScreenUtil().setSp(28)), | ||
| 103 | - ), | ||
| 104 | - ], | ||
| 105 | - ) | ||
| 106 | - ], | ||
| 107 | - ), | ||
| 108 | - ), | ||
| 109 | - Positioned( | ||
| 110 | - right: ScreenUtil().setWidth(60), | ||
| 111 | - bottom: ScreenUtil().setWidth(55), | ||
| 112 | - child:Offstage( | ||
| 113 | - offstage: isTreated?true:false, | ||
| 114 | - child: CommonButton( | ||
| 115 | - width: 160, | ||
| 116 | - height: 48, | ||
| 117 | - fontSize: 28, | ||
| 118 | - content: message.message_type=="10"?"立即处理":"立即查看", | ||
| 119 | - state: 1, | ||
| 120 | - onPress: () { | ||
| 121 | - messageDialogModel.removeMessage(message.id); | ||
| 122 | - if(message.message_type=="10"){ | ||
| 123 | - NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id,replace: messageDialogModel.messages.isEmpty?true:false); | ||
| 124 | - }else{ | ||
| 125 | - NavigatorUtil.goNotebookDetailPage(context,message.rid.toString(),replace: messageDialogModel.messages.isEmpty?true:false); | ||
| 126 | - Map<String, String> params = { | ||
| 127 | - "sid": Provider.of<UserModel>(context, listen: false).user.sellerid, | ||
| 128 | - "id": message.id, | ||
| 129 | - "status": "is_handle" | ||
| 130 | - }; | ||
| 131 | - messageDialogModel.setMessageStatus(context,params); | ||
| 132 | - } | ||
| 133 | - }, | 50 | + onTap: () { |
| 51 | + if (isTreated) { | ||
| 52 | + NavigatorUtil.goNotebookDetailPage(context, message.rid.toString()); | ||
| 53 | + } | ||
| 54 | + }, | ||
| 55 | + child: Stack( | ||
| 56 | + children: <Widget>[ | ||
| 57 | + Container( | ||
| 58 | + height: ScreenUtil().setWidth(290), | ||
| 59 | + margin: EdgeInsets.symmetric( | ||
| 60 | + horizontal: ScreenUtil().setWidth(39), | ||
| 61 | + vertical: ScreenUtil().setWidth(12)), | ||
| 62 | + padding: EdgeInsets.fromLTRB( | ||
| 63 | + ScreenUtil().setWidth(12), | ||
| 64 | + ScreenUtil().setWidth(45), | ||
| 65 | + ScreenUtil().setWidth(21), | ||
| 66 | + ScreenUtil().setWidth(43)), | ||
| 67 | + decoration: BoxDecoration( | ||
| 68 | + color: MyColours.color_fefefe, | ||
| 69 | + borderRadius: BorderRadius.all( | ||
| 70 | + Radius.circular(ScreenUtil().setWidth(8)))), | ||
| 71 | + child: Column( | ||
| 72 | + mainAxisSize: MainAxisSize.min, | ||
| 73 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 74 | + children: <Widget>[ | ||
| 75 | + Row( | ||
| 76 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
| 77 | + children: <Widget>[ | ||
| 78 | + Text( | ||
| 79 | + title, | ||
| 80 | + style: TextStyle( | ||
| 81 | + color: textColor, fontSize: ScreenUtil().setSp(28)), | ||
| 82 | + ), | ||
| 83 | + Spacer(), | ||
| 84 | + Text( | ||
| 85 | + message.cdateStr, | ||
| 86 | + style: TextStyle( | ||
| 87 | + color: MyColours.color_999999, | ||
| 88 | + fontSize: ScreenUtil().setSp(24)), | ||
| 89 | + ), | ||
| 90 | + ], | ||
| 91 | + ), | ||
| 92 | + VEmptyView(20), | ||
| 93 | + message.message_type == "11" | ||
| 94 | + ? Text( | ||
| 95 | + "${message.ddateStr}的${message.rnameStr}取消了预订", | ||
| 96 | + style: TextStyle( | ||
| 97 | + color: textColor, | ||
| 98 | + fontSize: ScreenUtil().setSp(28)), | ||
| 99 | + ) | ||
| 100 | + : Column( | ||
| 101 | + mainAxisSize: MainAxisSize.min, | ||
| 102 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 103 | + children: <Widget>[ | ||
| 104 | + Text( | ||
| 105 | + "${subTitleFir}:${message.room_demand}", | ||
| 106 | + style: TextStyle( | ||
| 107 | + color: textColor, | ||
| 108 | + fontSize: ScreenUtil().setSp(28)), | ||
| 109 | + ), | ||
| 110 | + VEmptyView(10), | ||
| 111 | + Text( | ||
| 112 | + "${subTitleSec}:${message.ddateStr}", | ||
| 113 | + style: TextStyle( | ||
| 114 | + color: textColor, | ||
| 115 | + fontSize: ScreenUtil().setSp(28)), | ||
| 116 | + ), | ||
| 117 | + VEmptyView(10), | ||
| 118 | + Text( | ||
| 119 | + "${subTitleThr}:${message.rnameStr}", | ||
| 120 | + style: TextStyle( | ||
| 121 | + color: textColor, | ||
| 122 | + fontSize: ScreenUtil().setSp(28)), | ||
| 123 | + ), | ||
| 124 | + ], | ||
| 125 | + ) | ||
| 126 | + ], | ||
| 134 | ), | 127 | ), |
| 135 | ), | 128 | ), |
| 136 | - ) | ||
| 137 | - ], | ||
| 138 | - ) | ||
| 139 | - ); | 129 | + Positioned( |
| 130 | + right: ScreenUtil().setWidth(60), | ||
| 131 | + bottom: ScreenUtil().setWidth(55), | ||
| 132 | + child: Offstage( | ||
| 133 | + offstage: isTreated ? true : false, | ||
| 134 | + child: CommonButton( | ||
| 135 | + width: 160, | ||
| 136 | + height: 48, | ||
| 137 | + fontSize: 28, | ||
| 138 | + content: message.message_type == "10" ? "立即处理" : "立即查看", | ||
| 139 | + state: 1, | ||
| 140 | + onPress: () async { | ||
| 141 | + messageDialogModel.removeMessage(message.id); | ||
| 142 | + if (message.message_type == "10") { | ||
| 143 | + NavigatorUtil.goHandleOnlinePage( | ||
| 144 | + context, message.rid.toString(), message.id, | ||
| 145 | + replace: messageDialogModel.messages.isEmpty | ||
| 146 | + ? true | ||
| 147 | + : false); | ||
| 148 | + } else if (message.message_type == "11") { | ||
| 149 | + NavigatorUtil.goNotebookDetailPage( | ||
| 150 | + context, message.rid.toString(), | ||
| 151 | + replace: messageDialogModel.messages.isEmpty | ||
| 152 | + ? true | ||
| 153 | + : false); | ||
| 154 | + bus.emit("remove_untreated_message", message.id); | ||
| 155 | + | ||
| 156 | + Map<String, String> params = { | ||
| 157 | + "sid": Provider.of<UserModel>(context, listen: false) | ||
| 158 | + .user | ||
| 159 | + .sellerid, | ||
| 160 | + "id": message.id, | ||
| 161 | + "status": "is_handle" | ||
| 162 | + }; | ||
| 163 | + await messageDialogModel.setMessageStatus( | ||
| 164 | + context, params); | ||
| 165 | + bus.emit("refresh_untreated_num"); //刷新未读消息数目 | ||
| 166 | + } else if (message.message_type == "1") { | ||
| 167 | + //提前点餐 | ||
| 168 | + NavigatorUtil.goHasOrderFoodPage(context, | ||
| 169 | + rid: message.rid, | ||
| 170 | + replace: messageDialogModel.messages.isEmpty | ||
| 171 | + ? true | ||
| 172 | + : false); | ||
| 173 | + bus.emit("remove_untreated_message_order", message.id); | ||
| 174 | + Map<String, String> params = { | ||
| 175 | + "sid": Provider.of<UserModel>(context, listen: false) | ||
| 176 | + .user | ||
| 177 | + .sellerid, | ||
| 178 | + "id": message.id, | ||
| 179 | + "status": "is_read" | ||
| 180 | + }; | ||
| 181 | + await messageDialogModel.setMessageStatus( | ||
| 182 | + context, params); | ||
| 183 | + bus.emit("refresh_untreated_num"); //刷新未读消息数目 | ||
| 184 | + } | ||
| 185 | + }, | ||
| 186 | + ), | ||
| 187 | + ), | ||
| 188 | + ) | ||
| 189 | + ], | ||
| 190 | + )); | ||
| 140 | } | 191 | } |
| 141 | } | 192 | } |
| @@ -31,18 +31,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -31,18 +31,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 31 | 31 | ||
| 32 | int selectedIndex = 0; | 32 | int selectedIndex = 0; |
| 33 | 33 | ||
| 34 | - int offset=0; | 34 | + int offset = 0; |
| 35 | + MessageModel messageModel; | ||
| 36 | + UserModel userModel; | ||
| 37 | + MessageDialogModel messageDialogModel; | ||
| 35 | 38 | ||
| 36 | @override | 39 | @override |
| 37 | void initState() { | 40 | void initState() { |
| 38 | // TODO: implement initState | 41 | // TODO: implement initState |
| 39 | super.initState(); | 42 | super.initState(); |
| 43 | + //移除在线预订消息 | ||
| 40 | bus.on("remove_untreated_message", (args) { | 44 | bus.on("remove_untreated_message", (args) { |
| 41 | - MessageModel messageModel = | ||
| 42 | - Provider.of<MessageModel>(context, listen: false); | ||
| 43 | messageModel.removeUntreatedMessageByMid(args.toString()); | 45 | messageModel.removeUntreatedMessageByMid(args.toString()); |
| 44 | - MessageDialogModel messageDialogModel = | ||
| 45 | - Provider.of<MessageDialogModel>(context, listen: false); | 46 | + |
| 46 | messageDialogModel.removeMessage(args.toString()); | 47 | messageDialogModel.removeMessage(args.toString()); |
| 47 | }); | 48 | }); |
| 48 | _controller = EasyRefreshController(); | 49 | _controller = EasyRefreshController(); |
| @@ -51,9 +52,21 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -51,9 +52,21 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 51 | }); | 52 | }); |
| 52 | } | 53 | } |
| 53 | 54 | ||
| 54 | - //获取未处理在线预订消息 | ||
| 55 | - getMessage({bool showLoading = true}) { | ||
| 56 | - UserModel userModel = Provider.of<UserModel>(context, listen: false); | 55 | + @override |
| 56 | + void dispose() { | ||
| 57 | + // TODO: implement dispose | ||
| 58 | + super.dispose(); | ||
| 59 | + bus.off("remove_untreated_message"); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + //三种分类各自的未读消息数目 | ||
| 63 | + _getUnMsgNum() async { | ||
| 64 | + Map<String, String> params = {"sid": userModel.user.sellerid}; | ||
| 65 | + await messageModel.getUnMsgNum(context, params); | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + //获取在线预订消息status 0未处理 1已处理 | ||
| 69 | + getMessage({bool showLoading = true}) async { | ||
| 57 | Map<String, String> params = { | 70 | Map<String, String> params = { |
| 58 | "sid": userModel.user.sellerid, | 71 | "sid": userModel.user.sellerid, |
| 59 | "type_id": "10", //1提前点餐2内部预订10在线预订 | 72 | "type_id": "10", //1提前点餐2内部预订10在线预订 |
| @@ -61,14 +74,17 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -61,14 +74,17 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 61 | "offset": offset.toString(), | 74 | "offset": offset.toString(), |
| 62 | "limit": "20", | 75 | "limit": "20", |
| 63 | }; | 76 | }; |
| 64 | - MessageModel messageModel = | ||
| 65 | - Provider.of<MessageModel>(context, listen: false); | ||
| 66 | - messageModel.getMessages(context, params, showLoading: showLoading); | 77 | + |
| 78 | + await messageModel.getMessages(context, params, showLoading: showLoading); | ||
| 79 | + _getUnMsgNum(); | ||
| 67 | } | 80 | } |
| 68 | 81 | ||
| 69 | @override | 82 | @override |
| 70 | Widget build(BuildContext context) { | 83 | Widget build(BuildContext context) { |
| 71 | - // TODO: implement build | 84 | + messageModel = Provider.of<MessageModel>(context, listen: true); |
| 85 | + userModel = Provider.of<UserModel>(context, listen: false); | ||
| 86 | + messageDialogModel = | ||
| 87 | + Provider.of<MessageDialogModel>(context, listen: false); | ||
| 72 | return Container( | 88 | return Container( |
| 73 | color: MyColours.color_f5f5f5, | 89 | color: MyColours.color_f5f5f5, |
| 74 | child: Column( | 90 | child: Column( |
| @@ -81,32 +97,46 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -81,32 +97,46 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 81 | children: [ | 97 | children: [ |
| 82 | Expanded( | 98 | Expanded( |
| 83 | child: GestureDetector( | 99 | child: GestureDetector( |
| 84 | - behavior: HitTestBehavior.opaque, | ||
| 85 | - onTap: () { | ||
| 86 | - if(selectedIndex==0)return; | ||
| 87 | - setState(() { | ||
| 88 | - selectedIndex = 0; | ||
| 89 | - getMessage(showLoading: true); | ||
| 90 | - }); | ||
| 91 | - }, | ||
| 92 | - child: Center( | ||
| 93 | - child: Text("未处理",style: TextStyle(color: selectedIndex==0?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),), | ||
| 94 | - ) | ||
| 95 | - )), | 100 | + behavior: HitTestBehavior.opaque, |
| 101 | + onTap: () { | ||
| 102 | + if (selectedIndex == 0) return; | ||
| 103 | + setState(() { | ||
| 104 | + selectedIndex = 0; | ||
| 105 | + messageModel.messages = []; | ||
| 106 | + }); | ||
| 107 | + getMessage(showLoading: true); | ||
| 108 | + }, | ||
| 109 | + child: Center( | ||
| 110 | + child: Text( | ||
| 111 | + "未处理", | ||
| 112 | + style: TextStyle( | ||
| 113 | + color: selectedIndex == 0 | ||
| 114 | + ? selectedColor | ||
| 115 | + : unSelectedColor, | ||
| 116 | + fontSize: ScreenUtil().setSp(30)), | ||
| 117 | + ), | ||
| 118 | + ))), | ||
| 96 | Expanded( | 119 | Expanded( |
| 97 | child: GestureDetector( | 120 | child: GestureDetector( |
| 98 | - behavior: HitTestBehavior.opaque, | ||
| 99 | - onTap: () { | ||
| 100 | - if(selectedIndex==1)return; | ||
| 101 | - setState(() { | ||
| 102 | - selectedIndex = 1; | 121 | + behavior: HitTestBehavior.opaque, |
| 122 | + onTap: () { | ||
| 123 | + if (selectedIndex == 1) return; | ||
| 124 | + setState(() { | ||
| 125 | + selectedIndex = 1; | ||
| 126 | + messageModel.messages = []; | ||
| 127 | + }); | ||
| 103 | getMessage(showLoading: true); | 128 | getMessage(showLoading: true); |
| 104 | - }); | ||
| 105 | - }, | ||
| 106 | - child: Center( | ||
| 107 | - child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),), | ||
| 108 | - ) | ||
| 109 | - )) | 129 | + }, |
| 130 | + child: Center( | ||
| 131 | + child: Text( | ||
| 132 | + "已处理", | ||
| 133 | + style: TextStyle( | ||
| 134 | + color: selectedIndex == 1 | ||
| 135 | + ? selectedColor | ||
| 136 | + : unSelectedColor, | ||
| 137 | + fontSize: ScreenUtil().setSp(30)), | ||
| 138 | + ), | ||
| 139 | + ))) | ||
| 110 | ], | 140 | ], |
| 111 | ), | 141 | ), |
| 112 | ), | 142 | ), |
| @@ -117,10 +147,11 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -117,10 +147,11 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 117 | return ExceptionPage( | 147 | return ExceptionPage( |
| 118 | pageState: model.pageState, | 148 | pageState: model.pageState, |
| 119 | callback: () { | 149 | callback: () { |
| 120 | - offset=0; | 150 | + offset = 0; |
| 121 | getMessage(showLoading: true); | 151 | getMessage(showLoading: true); |
| 122 | }, | 152 | }, |
| 123 | - emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的在线预订消息哦", | 153 | + emptyMsg: |
| 154 | + "暂时没有${selectedIndex == 0 ? '未处理' : '已处理'}的在线预订消息哦", | ||
| 124 | emptyImg: "empty_search", | 155 | emptyImg: "empty_search", |
| 125 | showMsg: "加载中,请稍后...", | 156 | showMsg: "加载中,请稍后...", |
| 126 | ); | 157 | ); |
| @@ -130,16 +161,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -130,16 +161,19 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 130 | slivers: [ | 161 | slivers: [ |
| 131 | SliverList( | 162 | SliverList( |
| 132 | delegate: SliverChildBuilderDelegate( | 163 | delegate: SliverChildBuilderDelegate( |
| 133 | - (BuildContext context, int index) { | ||
| 134 | - return MessageItem(model.messages[index],isTreated: selectedIndex==1,); | ||
| 135 | - }, childCount: model.messages.length), | 164 | + (BuildContext context, int index) { |
| 165 | + return MessageItem( | ||
| 166 | + model.messages[index], | ||
| 167 | + isTreated: selectedIndex == 1, | ||
| 168 | + ); | ||
| 169 | + }, childCount: model.messages.length), | ||
| 136 | ) | 170 | ) |
| 137 | ], | 171 | ], |
| 138 | onRefresh: () async { | 172 | onRefresh: () async { |
| 139 | - offset=0; | 173 | + offset = 0; |
| 140 | getMessage(showLoading: false); | 174 | getMessage(showLoading: false); |
| 141 | }, | 175 | }, |
| 142 | - onLoad: ()async{ | 176 | + onLoad: () async { |
| 143 | offset++; | 177 | offset++; |
| 144 | getMessage(showLoading: false); | 178 | getMessage(showLoading: false); |
| 145 | }, | 179 | }, |
| @@ -152,11 +186,4 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | @@ -152,11 +186,4 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { | ||
| 152 | ), | 186 | ), |
| 153 | ); | 187 | ); |
| 154 | } | 188 | } |
| 155 | - | ||
| 156 | - @override | ||
| 157 | - void dispose() { | ||
| 158 | - // TODO: implement dispose | ||
| 159 | - super.dispose(); | ||
| 160 | - bus.off("remove_untreated_message"); | ||
| 161 | - } | ||
| 162 | } | 189 | } |
| @@ -3,9 +3,12 @@ import 'package:common_utils/common_utils.dart'; | @@ -3,9 +3,12 @@ import 'package:common_utils/common_utils.dart'; | ||
| 3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 5 | import 'package:one_key/constant/state.dart'; | 5 | import 'package:one_key/constant/state.dart'; |
| 6 | +import 'package:one_key/provider/message_dialog_model.dart'; | ||
| 6 | import 'package:one_key/provider/order_food_provider.dart'; | 7 | import 'package:one_key/provider/order_food_provider.dart'; |
| 7 | import 'package:one_key/provider/user_model.dart'; | 8 | import 'package:one_key/provider/user_model.dart'; |
| 8 | import 'package:one_key/res/colors.dart'; | 9 | import 'package:one_key/res/colors.dart'; |
| 10 | +import 'package:one_key/utils/event_bus.dart'; | ||
| 11 | +import 'package:one_key/utils/navigator_util.dart'; | ||
| 9 | import 'package:one_key/utils/utils.dart'; | 12 | import 'package:one_key/utils/utils.dart'; |
| 10 | import 'package:one_key/widgets/MyDivider.dart'; | 13 | import 'package:one_key/widgets/MyDivider.dart'; |
| 11 | import 'package:one_key/widgets/h_empty_view.dart'; | 14 | import 'package:one_key/widgets/h_empty_view.dart'; |
| @@ -18,7 +21,9 @@ import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; | @@ -18,7 +21,9 @@ import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; | ||
| 18 | 21 | ||
| 19 | class MessageHasOrderFoodPage extends StatefulWidget { | 22 | class MessageHasOrderFoodPage extends StatefulWidget { |
| 20 | final String rid; | 23 | final String rid; |
| 21 | - MessageHasOrderFoodPage({Key key, this.rid}) : super(key: key); | 24 | + final bool fromNotify; |
| 25 | + MessageHasOrderFoodPage({Key key, this.rid, this.fromNotify = false}) | ||
| 26 | + : super(key: key); | ||
| 22 | 27 | ||
| 23 | @override | 28 | @override |
| 24 | _MessageHasOrderFoodPageState createState() => | 29 | _MessageHasOrderFoodPageState createState() => |
| @@ -33,12 +38,29 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { | @@ -33,12 +38,29 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { | ||
| 33 | @override | 38 | @override |
| 34 | void initState() { | 39 | void initState() { |
| 35 | super.initState(); | 40 | super.initState(); |
| 41 | + // if (widget.fromNotify) { | ||
| 42 | + // _setMessageStatus(); | ||
| 43 | + // } | ||
| 36 | WidgetsBinding.instance.addPostFrameCallback((_) { | 44 | WidgetsBinding.instance.addPostFrameCallback((_) { |
| 37 | _getOrderFoodData(); | 45 | _getOrderFoodData(); |
| 38 | _getTableInfoData(); | 46 | _getTableInfoData(); |
| 39 | }); | 47 | }); |
| 40 | } | 48 | } |
| 41 | 49 | ||
| 50 | + _setMessageStatus() { | ||
| 51 | + Future.delayed(Duration(milliseconds: 200), () async { | ||
| 52 | + Map<String, String> params = { | ||
| 53 | + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid, | ||
| 54 | + "id": widget.rid, | ||
| 55 | + "status": "is_read" | ||
| 56 | + }; | ||
| 57 | + MessageDialogModel messageDialogModel = | ||
| 58 | + Provider.of<MessageDialogModel>(context, listen: false); | ||
| 59 | + await messageDialogModel.setMessageStatus(context, params); | ||
| 60 | + bus.emit("refresh_untreated_num"); //刷新未读消息数目 | ||
| 61 | + }); | ||
| 62 | + } | ||
| 63 | + | ||
| 42 | ///接口获取菜单信息 | 64 | ///接口获取菜单信息 |
| 43 | _getOrderFoodData() async { | 65 | _getOrderFoodData() async { |
| 44 | Map<String, String> params = { | 66 | Map<String, String> params = { |
| @@ -293,7 +315,11 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { | @@ -293,7 +315,11 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { | ||
| 293 | appBar: SystemAppBar( | 315 | appBar: SystemAppBar( |
| 294 | '已点菜品', | 316 | '已点菜品', |
| 295 | onTap: () { | 317 | onTap: () { |
| 296 | - Navigator.of(context).pop(); | 318 | + if (widget.fromNotify) { |
| 319 | + NavigatorUtil.goHomePage(context, initialIndex: 0); | ||
| 320 | + } else { | ||
| 321 | + Navigator.of(context).pop(); | ||
| 322 | + } | ||
| 297 | }, | 323 | }, |
| 298 | ), | 324 | ), |
| 299 | body: Consumer<OrderFoodProvider>( | 325 | body: Consumer<OrderFoodProvider>( |
| @@ -328,6 +354,13 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { | @@ -328,6 +354,13 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> { | ||
| 328 | gradientStart: MyColours.color_199095, | 354 | gradientStart: MyColours.color_199095, |
| 329 | gradientEnd: MyColours.color_199095, | 355 | gradientEnd: MyColours.color_199095, |
| 330 | radius: ScreenUtil().setWidth(10), | 356 | radius: ScreenUtil().setWidth(10), |
| 357 | + onPressed: () { | ||
| 358 | + Utils.goShareOrderFoodToWeChat(context, | ||
| 359 | + rid: widget.rid, | ||
| 360 | + title: '菜品已点好,快来看看都点了什么~', | ||
| 361 | + img: | ||
| 362 | + 'http://nosqn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148571.jpg'); | ||
| 363 | + }, | ||
| 331 | ) | 364 | ) |
| 332 | ], | 365 | ], |
| 333 | ), | 366 | ), |
| @@ -34,6 +34,10 @@ class MessageOrderPageState extends State<MessageOrderPage> { | @@ -34,6 +34,10 @@ class MessageOrderPageState extends State<MessageOrderPage> { | ||
| 34 | 34 | ||
| 35 | int offset = 0; //当前页数 | 35 | int offset = 0; //当前页数 |
| 36 | 36 | ||
| 37 | + MessageModel messageModel; | ||
| 38 | + UserModel userModel; | ||
| 39 | + MessageDialogModel messageDialogModel; | ||
| 40 | + | ||
| 37 | @override | 41 | @override |
| 38 | void initState() { | 42 | void initState() { |
| 39 | // TODO: implement initState | 43 | // TODO: implement initState |
| @@ -42,12 +46,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { | @@ -42,12 +46,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { | ||
| 42 | WidgetsBinding.instance.addPostFrameCallback((_) { | 46 | WidgetsBinding.instance.addPostFrameCallback((_) { |
| 43 | getMessages(); | 47 | getMessages(); |
| 44 | }); | 48 | }); |
| 49 | + //从列表数据本地移除提前点餐消息 | ||
| 45 | bus.on("remove_untreated_message_order", (args) { | 50 | bus.on("remove_untreated_message_order", (args) { |
| 46 | - MessageModel messageModel = | ||
| 47 | - Provider.of<MessageModel>(context, listen: false); | ||
| 48 | messageModel.removeUntreatedMessageByMid(args.toString()); | 51 | messageModel.removeUntreatedMessageByMid(args.toString()); |
| 49 | - MessageDialogModel messageDialogModel = | ||
| 50 | - Provider.of<MessageDialogModel>(context, listen: false); | ||
| 51 | messageDialogModel.removeMessage(args.toString()); | 52 | messageDialogModel.removeMessage(args.toString()); |
| 52 | }); | 53 | }); |
| 53 | } | 54 | } |
| @@ -58,24 +59,32 @@ class MessageOrderPageState extends State<MessageOrderPage> { | @@ -58,24 +59,32 @@ class MessageOrderPageState extends State<MessageOrderPage> { | ||
| 58 | bus.off("remove_untreated_message_order"); | 59 | bus.off("remove_untreated_message_order"); |
| 59 | } | 60 | } |
| 60 | 61 | ||
| 62 | + //三种分类各自的未读消息数目 | ||
| 63 | + _getUnMsgNum() async { | ||
| 64 | + Map<String, String> params = {"sid": userModel.user.sellerid}; | ||
| 65 | + await messageModel.getUnMsgNum(context, params); | ||
| 66 | + } | ||
| 67 | + | ||
| 61 | //获取消息 | 68 | //获取消息 |
| 62 | - getMessages({bool showLoading = true}) { | ||
| 63 | - UserModel userModel = Provider.of<UserModel>(context, listen: false); | 69 | + getMessages({bool showLoading = true}) async { |
| 64 | Map<String, String> params = { | 70 | Map<String, String> params = { |
| 65 | "sid": userModel.user.sellerid, | 71 | "sid": userModel.user.sellerid, |
| 66 | - "type_id": "1", | 72 | + "type_id": "1", //1提前点餐2内部预订10在线预订 |
| 67 | "status": selectedIndex.toString(), | 73 | "status": selectedIndex.toString(), |
| 68 | "offset": offset.toString(), | 74 | "offset": offset.toString(), |
| 69 | "limit": "20", | 75 | "limit": "20", |
| 70 | }; | 76 | }; |
| 71 | - MessageModel messageModel = | ||
| 72 | - Provider.of<MessageModel>(context, listen: false); | ||
| 73 | - messageModel.getMessages(context, params, showLoading: showLoading); | 77 | + await messageModel.getMessages(context, params, showLoading: showLoading); |
| 78 | + _getUnMsgNum(); | ||
| 74 | } | 79 | } |
| 75 | 80 | ||
| 76 | @override | 81 | @override |
| 77 | Widget build(BuildContext context) { | 82 | Widget build(BuildContext context) { |
| 78 | // TODO: implement build | 83 | // TODO: implement build |
| 84 | + messageModel = Provider.of<MessageModel>(context, listen: true); | ||
| 85 | + userModel = Provider.of<UserModel>(context, listen: false); | ||
| 86 | + messageDialogModel = | ||
| 87 | + Provider.of<MessageDialogModel>(context, listen: false); | ||
| 79 | return Container( | 88 | return Container( |
| 80 | color: MyColours.color_f5f5f5, | 89 | color: MyColours.color_f5f5f5, |
| 81 | child: Column( | 90 | child: Column( |
| @@ -93,8 +102,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { | @@ -93,8 +102,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { | ||
| 93 | if (selectedIndex == 0) return; | 102 | if (selectedIndex == 0) return; |
| 94 | setState(() { | 103 | setState(() { |
| 95 | selectedIndex = 0; | 104 | selectedIndex = 0; |
| 96 | - getMessages(); | 105 | + messageModel.messages = []; |
| 97 | }); | 106 | }); |
| 107 | + getMessages(); | ||
| 98 | }, | 108 | }, |
| 99 | child: Center( | 109 | child: Center( |
| 100 | child: Text( | 110 | child: Text( |
| @@ -113,8 +123,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { | @@ -113,8 +123,9 @@ class MessageOrderPageState extends State<MessageOrderPage> { | ||
| 113 | if (selectedIndex == 1) return; | 123 | if (selectedIndex == 1) return; |
| 114 | setState(() { | 124 | setState(() { |
| 115 | selectedIndex = 1; | 125 | selectedIndex = 1; |
| 116 | - getMessages(); | 126 | + messageModel.messages = []; |
| 117 | }); | 127 | }); |
| 128 | + getMessages(); | ||
| 118 | }, | 129 | }, |
| 119 | child: Center( | 130 | child: Center( |
| 120 | child: Text( | 131 | child: Text( |
| @@ -26,6 +26,7 @@ class MessagePageState extends State<MessagePage> | @@ -26,6 +26,7 @@ class MessagePageState extends State<MessagePage> | ||
| 26 | TabController tabController; | 26 | TabController tabController; |
| 27 | 27 | ||
| 28 | MessageModel messageModel; | 28 | MessageModel messageModel; |
| 29 | + UserModel userModel; | ||
| 29 | 30 | ||
| 30 | @override | 31 | @override |
| 31 | void initState() { | 32 | void initState() { |
| @@ -38,24 +39,22 @@ class MessagePageState extends State<MessagePage> | @@ -38,24 +39,22 @@ class MessagePageState extends State<MessagePage> | ||
| 38 | WidgetsBinding.instance.addPostFrameCallback((timeStamp) { | 39 | WidgetsBinding.instance.addPostFrameCallback((timeStamp) { |
| 39 | _getUnMsgNum(); | 40 | _getUnMsgNum(); |
| 40 | }); | 41 | }); |
| 42 | + //刷新未读数 | ||
| 41 | bus.on("refresh_untreated_num", (arg) { | 43 | bus.on("refresh_untreated_num", (arg) { |
| 42 | - //刷新未读消息数目 | ||
| 43 | _getUnMsgNum(); | 44 | _getUnMsgNum(); |
| 44 | }); | 45 | }); |
| 45 | } | 46 | } |
| 46 | 47 | ||
| 48 | + //三种分类各自的未读消息数目 | ||
| 47 | _getUnMsgNum() async { | 49 | _getUnMsgNum() async { |
| 48 | - Map<String, String> params = { | ||
| 49 | - "sid": Provider.of<UserModel>(context, listen: false).user.sellerid | ||
| 50 | - }; | 50 | + Map<String, String> params = {"sid": userModel.user.sellerid}; |
| 51 | await messageModel.getUnMsgNum(context, params); | 51 | await messageModel.getUnMsgNum(context, params); |
| 52 | - setState(() {}); | ||
| 53 | } | 52 | } |
| 54 | 53 | ||
| 55 | @override | 54 | @override |
| 56 | Widget build(BuildContext context) { | 55 | Widget build(BuildContext context) { |
| 57 | - // TODO: implement build | ||
| 58 | - messageModel = Provider.of<MessageModel>(context, listen: false); | 56 | + messageModel = Provider.of<MessageModel>(context, listen: true); |
| 57 | + userModel = Provider.of<UserModel>(context, listen: false); | ||
| 59 | return Container( | 58 | return Container( |
| 60 | width: double.infinity, | 59 | width: double.infinity, |
| 61 | height: double.infinity, | 60 | height: double.infinity, |
| @@ -15,7 +15,9 @@ class MessageDialogModel extends ChangeNotifier { | @@ -15,7 +15,9 @@ class MessageDialogModel extends ChangeNotifier { | ||
| 15 | 15 | ||
| 16 | bool showMessageDialog = false; | 16 | bool showMessageDialog = false; |
| 17 | 17 | ||
| 18 | - List<Message> messages = []; | 18 | + List<Message> messages = []; //所有消息用于展示 |
| 19 | + List<Message> unMessagesOnline = []; //未读在线预定 | ||
| 20 | + List<Message> unMessagesOrder = []; //未读提前点餐 | ||
| 19 | 21 | ||
| 20 | void init() { | 22 | void init() { |
| 21 | _player.load("tts_online.mp3"); | 23 | _player.load("tts_online.mp3"); |
| @@ -30,6 +32,9 @@ class MessageDialogModel extends ChangeNotifier { | @@ -30,6 +32,9 @@ class MessageDialogModel extends ChangeNotifier { | ||
| 30 | case "11": //取消在线预订 | 32 | case "11": //取消在线预订 |
| 31 | _player.play("tts_cancel.mp3"); | 33 | _player.play("tts_cancel.mp3"); |
| 32 | break; | 34 | break; |
| 35 | + case "1": //提前点餐 | ||
| 36 | + _player.play("tts_order.mp3"); | ||
| 37 | + break; | ||
| 33 | case "-1": //>3 | 38 | case "-1": //>3 |
| 34 | _player.play("tts_all.mp3"); | 39 | _player.play("tts_all.mp3"); |
| 35 | break; | 40 | break; |
| @@ -55,18 +60,20 @@ class MessageDialogModel extends ChangeNotifier { | @@ -55,18 +60,20 @@ class MessageDialogModel extends ChangeNotifier { | ||
| 55 | } | 60 | } |
| 56 | 61 | ||
| 57 | //获取未处理在线预订消息 | 62 | //获取未处理在线预订消息 |
| 58 | - getUntreatedMsg(BuildContext context, Map<String, String> params) async { | 63 | + getUntreatedMsg(BuildContext context, Map<String, String> params, |
| 64 | + VoidCallback callback) async { | ||
| 59 | BaseResp<List> baseResp = await DioUtil() | 65 | BaseResp<List> baseResp = await DioUtil() |
| 60 | .request<List>(context, Method.get, HttpUrl.get_message_list, | 66 | .request<List>(context, Method.get, HttpUrl.get_message_list, |
| 61 | showLoading: false, data: params) | 67 | showLoading: false, data: params) |
| 62 | .catchError((error) { | 68 | .catchError((error) { |
| 63 | print(error.toString()); | 69 | print(error.toString()); |
| 64 | }); | 70 | }); |
| 71 | + List<Message> messagesTemp = []; | ||
| 65 | if (baseResp != null && baseResp.code == Constant.status_success) { | 72 | if (baseResp != null && baseResp.code == Constant.status_success) { |
| 66 | - messages = baseResp.data.map<Message>((value) { | 73 | + messagesTemp = baseResp.data.map<Message>((value) { |
| 67 | return Message.fromJson(value); | 74 | return Message.fromJson(value); |
| 68 | }).toList(); | 75 | }).toList(); |
| 69 | - messages.removeWhere((message) { | 76 | + messagesTemp.removeWhere((message) { |
| 70 | if (message.message_type.toString() == "10") { | 77 | if (message.message_type.toString() == "10") { |
| 71 | if (message.status == "4") { | 78 | if (message.status == "4") { |
| 72 | return true; | 79 | return true; |
| @@ -74,23 +81,30 @@ class MessageDialogModel extends ChangeNotifier { | @@ -74,23 +81,30 @@ class MessageDialogModel extends ChangeNotifier { | ||
| 74 | return false; | 81 | return false; |
| 75 | } else if (message.message_type.toString() == "11") { | 82 | } else if (message.message_type.toString() == "11") { |
| 76 | return false; | 83 | return false; |
| 84 | + } else if (message.message_type.toString() == "1") { | ||
| 85 | + return false; | ||
| 77 | } | 86 | } |
| 78 | return true; | 87 | return true; |
| 79 | }); | 88 | }); |
| 80 | - if (messages.isNotEmpty) { | ||
| 81 | - if (!showMessageDialog) { | ||
| 82 | - DialogUtil.showMessageDialog(context); | ||
| 83 | - } else { | ||
| 84 | - notifyListeners(); | ||
| 85 | - } | ||
| 86 | - if (messages.length > 1) { | ||
| 87 | - play("-1"); | ||
| 88 | - } else { | ||
| 89 | - for (Message message in messages) { | ||
| 90 | - play(message.message_type); | ||
| 91 | - } | ||
| 92 | - } | 89 | + if (params["type_id"] == '10') { |
| 90 | + unMessagesOnline = messagesTemp; | ||
| 91 | + } else if (params["type_id"] == '1') { | ||
| 92 | + unMessagesOrder = messagesTemp; | ||
| 93 | } | 93 | } |
| 94 | + messages = []; | ||
| 95 | + messages.addAll(unMessagesOnline); | ||
| 96 | + messages.addAll(unMessagesOrder); | ||
| 97 | + callback(); | ||
| 98 | + // if (messages.isNotEmpty) { | ||
| 99 | + // //播放声音 | ||
| 100 | + // if (messages.length > 1) { | ||
| 101 | + // play("-1"); | ||
| 102 | + // } else { | ||
| 103 | + // for (Message message in messages) { | ||
| 104 | + // play(message.message_type); | ||
| 105 | + // } | ||
| 106 | + // } | ||
| 107 | + // } | ||
| 94 | } | 108 | } |
| 95 | } | 109 | } |
| 96 | 110 |
| @@ -10,6 +10,8 @@ import 'package:one_key/net/http_url.dart'; | @@ -10,6 +10,8 @@ import 'package:one_key/net/http_url.dart'; | ||
| 10 | class MessageModel extends ChangeNotifier { | 10 | class MessageModel extends ChangeNotifier { |
| 11 | List<Message> messages = []; //消息 | 11 | List<Message> messages = []; //消息 |
| 12 | 12 | ||
| 13 | + List<Message> unMessagesOnline = []; //未读在线消息(取消预定和新的预订) | ||
| 14 | + List<Message> unMessagesOrder = []; //未读提前点餐消息 | ||
| 13 | PageState pageState = PageState.Loading; | 15 | PageState pageState = PageState.Loading; |
| 14 | 16 | ||
| 15 | int onlineTotal = 0; //未处理在线消息数目 | 17 | int onlineTotal = 0; //未处理在线消息数目 |
| @@ -21,6 +23,7 @@ class MessageModel extends ChangeNotifier { | @@ -21,6 +23,7 @@ class MessageModel extends ChangeNotifier { | ||
| 21 | {showLoading = true}) async { | 23 | {showLoading = true}) async { |
| 22 | if (showLoading) { | 24 | if (showLoading) { |
| 23 | pageState = PageState.Loading; | 25 | pageState = PageState.Loading; |
| 26 | + messages = []; | ||
| 24 | notifyListeners(); | 27 | notifyListeners(); |
| 25 | } | 28 | } |
| 26 | BaseResp<List> baseResp = await DioUtil() | 29 | BaseResp<List> baseResp = await DioUtil() |
| @@ -48,6 +51,19 @@ class MessageModel extends ChangeNotifier { | @@ -48,6 +51,19 @@ class MessageModel extends ChangeNotifier { | ||
| 48 | messages = baseResp.data.map<Message>((value) { | 51 | messages = baseResp.data.map<Message>((value) { |
| 49 | return Message.fromJson(value); | 52 | return Message.fromJson(value); |
| 50 | }).toList(); | 53 | }).toList(); |
| 54 | + } else { | ||
| 55 | + messages.addAll(baseResp.data.map<Message>((value) { | ||
| 56 | + return Message.fromJson(value); | ||
| 57 | + }).toList()); | ||
| 58 | + } | ||
| 59 | + if (params["status"] == '0') { | ||
| 60 | + //未读消息数据 | ||
| 61 | + //1提前点餐2内部预订 在线预订展示包括取消预订和新的预定 "type_id" | ||
| 62 | + if (params["type_id"] == '1') { | ||
| 63 | + unMessagesOrder = messages; | ||
| 64 | + } else { | ||
| 65 | + unMessagesOnline = messages; | ||
| 66 | + } | ||
| 51 | } | 67 | } |
| 52 | // if(params["type_id"]=="10"){//在线预订 | 68 | // if(params["type_id"]=="10"){//在线预订 |
| 53 | // messages.removeWhere((message) { | 69 | // messages.removeWhere((message) { |
| @@ -72,7 +88,7 @@ class MessageModel extends ChangeNotifier { | @@ -72,7 +88,7 @@ class MessageModel extends ChangeNotifier { | ||
| 72 | } | 88 | } |
| 73 | 89 | ||
| 74 | //获取未处理消息数目 | 90 | //获取未处理消息数目 |
| 75 | - Future getUnMsgNum(BuildContext context, Map<String, String> params) async { | 91 | + getUnMsgNum(BuildContext context, Map<String, String> params) async { |
| 76 | BaseResp<Map<String, dynamic>> baseResp = await DioUtil() | 92 | BaseResp<Map<String, dynamic>> baseResp = await DioUtil() |
| 77 | .request<Map<String, dynamic>>( | 93 | .request<Map<String, dynamic>>( |
| 78 | context, Method.get, HttpUrl.get_message_num, | 94 | context, Method.get, HttpUrl.get_message_num, |
| @@ -84,9 +100,8 @@ class MessageModel extends ChangeNotifier { | @@ -84,9 +100,8 @@ class MessageModel extends ChangeNotifier { | ||
| 84 | onlineTotal = int.parse(baseResp.data['online_total'].toString()); | 100 | onlineTotal = int.parse(baseResp.data['online_total'].toString()); |
| 85 | inlineTotal = int.parse(baseResp.data['inline_total'].toString()); | 101 | inlineTotal = int.parse(baseResp.data['inline_total'].toString()); |
| 86 | orderTotal = int.parse(baseResp.data['order_total'].toString()); | 102 | orderTotal = int.parse(baseResp.data['order_total'].toString()); |
| 87 | - return; | 103 | + notifyListeners(); |
| 88 | } | 104 | } |
| 89 | - return; | ||
| 90 | } | 105 | } |
| 91 | 106 | ||
| 92 | //根据消息id移除消息 | 107 | //根据消息id移除消息 |
| @@ -169,7 +169,8 @@ var handleRemarkManagerHandler = new Handler( | @@ -169,7 +169,8 @@ var handleRemarkManagerHandler = new Handler( | ||
| 169 | var handleHasOrderFoodHandler = new Handler( | 169 | var handleHasOrderFoodHandler = new Handler( |
| 170 | handlerFunc: (BuildContext context, Map<String, List<Object>> params) { | 170 | handlerFunc: (BuildContext context, Map<String, List<Object>> params) { |
| 171 | String rid = params["rid"].first; | 171 | String rid = params["rid"].first; |
| 172 | + bool fromNotify = FluroConvertUtils.string2bool(params["fromNotify"].first); | ||
| 172 | return ChangeNotifierProvider<OrderFoodProvider>( | 173 | return ChangeNotifierProvider<OrderFoodProvider>( |
| 173 | create: (_) => OrderFoodProvider(), | 174 | create: (_) => OrderFoodProvider(), |
| 174 | - child: MessageHasOrderFoodPage(rid: rid)); | 175 | + child: MessageHasOrderFoodPage(rid: rid, fromNotify: fromNotify)); |
| 175 | }); | 176 | }); |
| @@ -269,6 +269,7 @@ class DialogUtil { | @@ -269,6 +269,7 @@ class DialogUtil { | ||
| 269 | }); | 269 | }); |
| 270 | messageModel.showMessageDialog = false; | 270 | messageModel.showMessageDialog = false; |
| 271 | } | 271 | } |
| 272 | + | ||
| 272 | 273 | ||
| 273 | //解析返回显示的日期 | 274 | //解析返回显示的日期 |
| 274 | static String _parseDateDay(DateTime dateTime) { | 275 | static String _parseDateDay(DateTime dateTime) { |
| @@ -122,7 +122,10 @@ class NavigatorUtil { | @@ -122,7 +122,10 @@ class NavigatorUtil { | ||
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | /// 已选菜品 | 124 | /// 已选菜品 |
| 125 | - static void goHasOrderFoodPage(BuildContext context, {String rid}) { | ||
| 126 | - _navigateTo(context, "${Routes.has_order_food}?rid=${rid}"); | 125 | + static void goHasOrderFoodPage(BuildContext context, |
| 126 | + {String rid, fromNotify = false, replace = false}) { | ||
| 127 | + _navigateTo( | ||
| 128 | + context, "${Routes.has_order_food}?rid=${rid}&fromNotify=${fromNotify}", | ||
| 129 | + replace: replace); | ||
| 127 | } | 130 | } |
| 128 | } | 131 | } |
| @@ -11,6 +11,7 @@ import 'package:flutter/services.dart'; | @@ -11,6 +11,7 @@ import 'package:flutter/services.dart'; | ||
| 11 | import 'package:fluwx/fluwx.dart'; | 11 | import 'package:fluwx/fluwx.dart'; |
| 12 | import 'package:one_key/provider/user_model.dart'; | 12 | import 'package:one_key/provider/user_model.dart'; |
| 13 | import 'package:one_key/utils/navigator_util.dart'; | 13 | import 'package:one_key/utils/navigator_util.dart'; |
| 14 | +import 'package:one_key/widgets/loading.dart'; | ||
| 14 | import 'package:package_info/package_info.dart'; | 15 | import 'package:package_info/package_info.dart'; |
| 15 | import 'package:provider/provider.dart'; | 16 | import 'package:provider/provider.dart'; |
| 16 | import 'package:url_launcher/url_launcher.dart'; | 17 | import 'package:url_launcher/url_launcher.dart'; |
| @@ -92,6 +93,37 @@ class Utils { | @@ -92,6 +93,37 @@ class Utils { | ||
| 92 | miniProgramType: WXMiniProgramType.RELEASE); | 93 | miniProgramType: WXMiniProgramType.RELEASE); |
| 93 | } | 94 | } |
| 94 | 95 | ||
| 96 | + //分享已点菜品 | ||
| 97 | + static goShareOrderFoodToWeChat(BuildContext context, | ||
| 98 | + {String title, String rid, String img}) async { | ||
| 99 | + Loading.showLoading(context); | ||
| 100 | + String _webPageUrl = "http://colorcun.com/"; | ||
| 101 | + String _thumbnail = img; | ||
| 102 | + String _title = title; | ||
| 103 | + String _userName = "gh_487873d353b3"; | ||
| 104 | + String _path = | ||
| 105 | + "pack-cookbook/pages/success?rid=$rid&identity=2&hasOnlyShow=1"; | ||
| 106 | + String _description = "OneKey"; | ||
| 107 | + var model = new WeChatShareMiniProgramModel( | ||
| 108 | + webPageUrl: _webPageUrl, | ||
| 109 | + userName: _userName, | ||
| 110 | + title: _title, | ||
| 111 | + path: _path, | ||
| 112 | + description: _description, | ||
| 113 | + thumbnail: WeChatImage.network(_thumbnail)); | ||
| 114 | + bool isShare = await shareToWeChat(model); | ||
| 115 | + print(isShare); | ||
| 116 | + Loading.hideLoading(context); | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + //拉起小程序已点菜品 | ||
| 120 | + static goMiniProgramOrderFood({String rid}) { | ||
| 121 | + launchWeChatMiniProgram( | ||
| 122 | + username: "gh_487873d353b3", | ||
| 123 | + path: "pack-cookbook/pages/success?rid=$rid&identity=2", | ||
| 124 | + miniProgramType: WXMiniProgramType.RELEASE); | ||
| 125 | + } | ||
| 126 | + | ||
| 95 | //跳转拨打电话页面 | 127 | //跳转拨打电话页面 |
| 96 | static goHelp(BuildContext context) async { | 128 | static goHelp(BuildContext context) async { |
| 97 | NavigatorUtil.goWebviewPage(context); | 129 | NavigatorUtil.goWebviewPage(context); |
-
Please register or login to post a comment