Commit f73c7b19f72c55766bb42aa99c53ac894242f7e9

Authored by wdn127929
1 parent 0089236a

消息中心调整

1 -83b3ddec6f4d9a6ed2f11de1a0a1915e  
  1 +7babc7873f8d177769b987ba4c6c2911
@@ -40,6 +40,7 @@ class Message { @@ -40,6 +40,7 @@ class Message {
40 } 40 }
41 } 41 }
42 42
  43 + ///年月日 餐段
43 String get ddateStr { 44 String get ddateStr {
44 String ymd = ""; 45 String ymd = "";
45 if (ddate_long != null) { 46 if (ddate_long != null) {
  1 +import 'package:flutter/material.dart';
  2 +import 'package:flutter_easyrefresh/easy_refresh.dart';
  3 +import 'package:flutter_screenutil/flutter_screenutil.dart';
  4 +import 'package:one_key/constant/state.dart';
  5 +import 'package:one_key/pages/message/messsage_item.dart';
  6 +import 'package:one_key/provider/message_dialog_model.dart';
  7 +import 'package:one_key/provider/message_model.dart';
  8 +import 'package:one_key/provider/user_model.dart';
  9 +import 'package:one_key/res/colors.dart';
  10 +import 'package:one_key/widgets/page_error.dart';
  11 +import 'package:one_key/widgets/page_exception.dart';
  12 +import 'package:provider/provider.dart';
  13 +import 'package:one_key/utils/event_bus.dart';
  14 +
  15 +/**
  16 + * 在线买单消息
  17 + */
  18 +class MessageOnlineCheckPage extends StatefulWidget {
  19 + @override
  20 + State<StatefulWidget> createState() {
  21 + // TODO: implement createState
  22 + return new MessageOnlineCheckPageState();
  23 + }
  24 +}
  25 +
  26 +class MessageOnlineCheckPageState extends State<MessageOnlineCheckPage> {
  27 + EasyRefreshController _controller;
  28 +
  29 + Color selectedColor = MyColours.color_199095;
  30 + Color unSelectedColor = MyColours.color_999999;
  31 +
  32 + int selectedIndex = 0;
  33 +
  34 + int offset = 0;
  35 + MessageModel messageModel;
  36 + UserModel userModel;
  37 + MessageDialogModel messageDialogModel;
  38 +
  39 + @override
  40 + void initState() {
  41 + // TODO: implement initState
  42 + super.initState();
  43 + //移除在线买单消息
  44 + // bus.on("remove_untreated_message", (args) {
  45 + // messageModel.removeUntreatedMessageByMid(args.toString());
  46 +
  47 + // messageDialogModel.removeMessage(args.toString());
  48 + // });
  49 + _controller = EasyRefreshController();
  50 + WidgetsBinding.instance.addPostFrameCallback((_) {
  51 + // getMessage();
  52 + setState(() {
  53 + messageModel.pageState = PageState.Loading;
  54 + });
  55 + });
  56 + }
  57 +
  58 + @override
  59 + void dispose() {
  60 + // TODO: implement dispose
  61 + super.dispose();
  62 + // bus.off("remove_untreated_message");
  63 + }
  64 +
  65 + //三种分类各自的未读消息数目
  66 + _getUnMsgNum() async {
  67 + Map<String, String> params = {"sid": userModel.user.sellerid};
  68 + await messageModel.getUnMsgNum(context, params);
  69 + }
  70 +
  71 + //获取在线预订消息status 0未处理 1已处理
  72 + getMessage({bool showLoading = true}) async {
  73 + Map<String, String> params = {
  74 + "sid": userModel.user.sellerid,
  75 + "type_id": "12", //1提前点餐 2内部预订 10在线预订 12在线买单
  76 + "status": selectedIndex.toString(),
  77 + "offset": offset.toString(),
  78 + "limit": "20",
  79 + };
  80 +
  81 + await messageModel.getMessages(context, params, showLoading: showLoading);
  82 + _getUnMsgNum();
  83 + }
  84 +
  85 + @override
  86 + Widget build(BuildContext context) {
  87 + messageModel = Provider.of<MessageModel>(context, listen: true);
  88 + userModel = Provider.of<UserModel>(context, listen: false);
  89 + messageDialogModel =
  90 + Provider.of<MessageDialogModel>(context, listen: false);
  91 + return Container(
  92 + color: MyColours.color_f5f5f5,
  93 + child: Column(
  94 + children: [
  95 + Container(
  96 + width: double.infinity,
  97 + height: ScreenUtil().setWidth(84),
  98 + color: MyColours.color_ffffff,
  99 + child: Row(
  100 + children: [
  101 + Expanded(
  102 + child: GestureDetector(
  103 + behavior: HitTestBehavior.opaque,
  104 + onTap: () {
  105 + if (selectedIndex == 0) return;
  106 + setState(() {
  107 + selectedIndex = 0;
  108 + messageModel.messages = [];
  109 + });
  110 + getMessage(showLoading: true);
  111 + },
  112 + child: Center(
  113 + child: Text(
  114 + "未处理",
  115 + style: TextStyle(
  116 + color: selectedIndex == 0
  117 + ? selectedColor
  118 + : unSelectedColor,
  119 + fontSize: ScreenUtil().setSp(30)),
  120 + ),
  121 + ))),
  122 + Expanded(
  123 + child: GestureDetector(
  124 + behavior: HitTestBehavior.opaque,
  125 + onTap: () {
  126 + if (selectedIndex == 1) return;
  127 + setState(() {
  128 + selectedIndex = 1;
  129 + messageModel.messages = [];
  130 + });
  131 + getMessage(showLoading: true);
  132 + },
  133 + child: Center(
  134 + child: Text(
  135 + "已处理",
  136 + style: TextStyle(
  137 + color: selectedIndex == 1
  138 + ? selectedColor
  139 + : unSelectedColor,
  140 + fontSize: ScreenUtil().setSp(30)),
  141 + ),
  142 + )))
  143 + ],
  144 + ),
  145 + ),
  146 + Expanded(
  147 + child: Consumer<MessageModel>(
  148 + builder: (context, model, _) {
  149 + if (model.pageState != PageState.Success) {
  150 + return ExceptionPage(
  151 + pageState: model.pageState,
  152 + callback: () {
  153 + offset = 0;
  154 + getMessage(showLoading: true);
  155 + },
  156 + emptyMsg:
  157 + "暂时没有${selectedIndex == 0 ? '未处理' : '已处理'}的在线预订消息哦",
  158 + emptyImg: "empty_search",
  159 + showMsg: "加载中,请稍后...",
  160 + );
  161 + } else {
  162 + return EasyRefresh.custom(
  163 + controller: _controller,
  164 + slivers: [
  165 + SliverList(
  166 + delegate: SliverChildBuilderDelegate(
  167 + (BuildContext context, int index) {
  168 + return MessageItem(
  169 + model.messages[index],
  170 + isTreated: selectedIndex == 1,
  171 + );
  172 + }, childCount: model.messages.length),
  173 + )
  174 + ],
  175 + onRefresh: () async {
  176 + offset = 0;
  177 + getMessage(showLoading: false);
  178 + },
  179 + onLoad: () async {
  180 + offset++;
  181 + getMessage(showLoading: false);
  182 + },
  183 + );
  184 + }
  185 + },
  186 + ),
  187 + )
  188 + ],
  189 + ),
  190 + );
  191 + }
  192 +}
@@ -48,7 +48,10 @@ class MessageOnlinePageState extends State<MessageOnlinePage> { @@ -48,7 +48,10 @@ class MessageOnlinePageState extends State<MessageOnlinePage> {
48 }); 48 });
49 _controller = EasyRefreshController(); 49 _controller = EasyRefreshController();
50 WidgetsBinding.instance.addPostFrameCallback((_) { 50 WidgetsBinding.instance.addPostFrameCallback((_) {
51 - getMessage(); 51 + // getMessage();
  52 + setState(() {
  53 + messageModel.pageState = PageState.Loading;
  54 + });
52 }); 55 });
53 } 56 }
54 57
@@ -19,6 +19,9 @@ import 'package:one_key/widgets/v_empty_view.dart'; @@ -19,6 +19,9 @@ import 'package:one_key/widgets/v_empty_view.dart';
19 import 'package:provider/provider.dart'; 19 import 'package:provider/provider.dart';
20 import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; 20 import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
21 21
  22 +/*
  23 + 已选菜品
  24 +*/
22 class MessageHasOrderFoodPage extends StatefulWidget { 25 class MessageHasOrderFoodPage extends StatefulWidget {
23 final String rid; 26 final String rid;
24 final bool fromNotify; 27 final bool fromNotify;
@@ -44,7 +44,11 @@ class MessageOrderPageState extends State<MessageOrderPage> { @@ -44,7 +44,11 @@ class MessageOrderPageState extends State<MessageOrderPage> {
44 super.initState(); 44 super.initState();
45 _controller = EasyRefreshController(); 45 _controller = EasyRefreshController();
46 WidgetsBinding.instance.addPostFrameCallback((_) { 46 WidgetsBinding.instance.addPostFrameCallback((_) {
47 - getMessages(); 47 + // getMessages();
  48 + setState(() {
  49 + messageModel.pageState = PageState.Loading;
  50 + });
  51 +
48 }); 52 });
49 //从列表数据本地移除提前点餐消息 53 //从列表数据本地移除提前点餐消息
50 bus.on("remove_untreated_message_order", (args) { 54 bus.on("remove_untreated_message_order", (args) {
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/flutter_screenutil.dart'; 2 import 'package:flutter_screenutil/flutter_screenutil.dart';
  3 +import 'package:one_key/constant/state.dart';
  4 +import 'package:one_key/pages/message/message_online_check_page.dart';
3 import 'package:one_key/provider/message_model.dart'; 5 import 'package:one_key/provider/message_model.dart';
4 import 'package:one_key/provider/user_model.dart'; 6 import 'package:one_key/provider/user_model.dart';
5 import 'package:one_key/res/colors.dart'; 7 import 'package:one_key/res/colors.dart';
@@ -10,6 +12,9 @@ import 'package:provider/provider.dart'; @@ -10,6 +12,9 @@ import 'package:provider/provider.dart';
10 import 'message_online_page.dart'; 12 import 'message_online_page.dart';
11 import 'message_order_page.dart'; 13 import 'message_order_page.dart';
12 14
  15 +/*
  16 + 消息中心
  17 +*/
13 class MessagePage extends StatefulWidget { 18 class MessagePage extends StatefulWidget {
14 @override 19 @override
15 State<StatefulWidget> createState() { 20 State<StatefulWidget> createState() {
@@ -30,14 +35,16 @@ class MessagePageState extends State<MessagePage> @@ -30,14 +35,16 @@ class MessagePageState extends State<MessagePage>
30 35
31 @override 36 @override
32 void initState() { 37 void initState() {
33 - // TODO: implement initState  
34 super.initState(); 38 super.initState();
35 - tabController = TabController(length: 2, vsync: this); 39 + tabController = TabController(length: 3, vsync: this);
36 tabController.addListener(() { 40 tabController.addListener(() {
37 - setState(() {}); 41 + //点击tab时或滑动tab回调一次
  42 + if (tabController.index.toDouble() == tabController.animation.value) {
  43 + getMessage(index: tabController.index);
  44 + }
38 }); 45 });
39 WidgetsBinding.instance.addPostFrameCallback((timeStamp) { 46 WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
40 - _getUnMsgNum(); 47 + getMessage(index: 0);
41 }); 48 });
42 //刷新未读数 49 //刷新未读数
43 bus.on("refresh_untreated_num", (arg) { 50 bus.on("refresh_untreated_num", (arg) {
@@ -51,6 +58,27 @@ class MessagePageState extends State<MessagePage> @@ -51,6 +58,27 @@ class MessagePageState extends State<MessagePage>
51 await messageModel.getUnMsgNum(context, params); 58 await messageModel.getUnMsgNum(context, params);
52 } 59 }
53 60
  61 + //获取在线预订消息status 0未处理 1已处理
  62 + getMessage({bool showLoading = true, int index}) async {
  63 + String typeId = '';
  64 + if (index == 0) {
  65 + typeId = '10';
  66 + } else if (index == 1) {
  67 + typeId = '1';
  68 + } else if (index == 2) {
  69 + typeId = '12';
  70 + }
  71 + Map<String, String> params = {
  72 + "sid": userModel.user.sellerid,
  73 + "type_id": typeId, //1提前点餐2内部预订10在线预订
  74 + "status": '0',
  75 + "offset": '0',
  76 + "limit": "20",
  77 + };
  78 + await messageModel.getMessages(context, params, showLoading: showLoading);
  79 + _getUnMsgNum();
  80 + }
  81 +
54 @override 82 @override
55 Widget build(BuildContext context) { 83 Widget build(BuildContext context) {
56 messageModel = Provider.of<MessageModel>(context, listen: true); 84 messageModel = Provider.of<MessageModel>(context, listen: true);
@@ -134,6 +162,39 @@ class MessagePageState extends State<MessagePage> @@ -134,6 +162,39 @@ class MessagePageState extends State<MessagePage>
134 ), 162 ),
135 ), 163 ),
136 ), 164 ),
  165 + Tab(
  166 + child: SizedBox(
  167 + height: ScreenUtil().setWidth(60),
  168 + width: ScreenUtil().setWidth(144),
  169 + child: Stack(
  170 + children: [
  171 + Text(
  172 + "在线买单",
  173 + style: TextStyle(
  174 + color: tabController.index == 2
  175 + ? selectedColor
  176 + : unSelectedColor,
  177 + fontSize: ScreenUtil().setSp(32),
  178 + fontWeight: FontWeight.bold),
  179 + ),
  180 + Positioned(
  181 + top: 0,
  182 + right: 0,
  183 + child: Container(
  184 + width: ScreenUtil().setWidth(16),
  185 + height: ScreenUtil().setWidth(16),
  186 + decoration: BoxDecoration(
  187 + borderRadius: BorderRadius.circular(
  188 + ScreenUtil().setWidth(16)),
  189 + color: messageModel.checkTotal > 0
  190 + ? MyColours.color_fa5151
  191 + : MyColours.color_ffffff),
  192 + ),
  193 + )
  194 + ],
  195 + ),
  196 + ),
  197 + )
137 ], 198 ],
138 indicatorColor: MyColours.color_199095, 199 indicatorColor: MyColours.color_199095,
139 indicatorSize: TabBarIndicatorSize.label, 200 indicatorSize: TabBarIndicatorSize.label,
@@ -145,9 +206,11 @@ class MessagePageState extends State<MessagePage> @@ -145,9 +206,11 @@ class MessagePageState extends State<MessagePage>
145 VEmptyView(11), 206 VEmptyView(11),
146 Expanded( 207 Expanded(
147 flex: 1, 208 flex: 1,
148 - child: TabBarView(  
149 - controller: tabController,  
150 - children: [MessageOnlinePage(), MessageOrderPage()]), 209 + child: TabBarView(controller: tabController, children: [
  210 + MessageOnlinePage(),
  211 + MessageOrderPage(),
  212 + MessageOnlineCheckPage()
  213 + ]),
151 ) 214 )
152 ], 215 ],
153 ), 216 ),
@@ -23,17 +23,29 @@ class MessageItem extends StatelessWidget { @@ -23,17 +23,29 @@ class MessageItem extends StatelessWidget {
23 Color textColor = 23 Color textColor =
24 isTreated ? MyColours.color_999999 : MyColours.color_353535; 24 isTreated ? MyColours.color_999999 : MyColours.color_353535;
25 String titleText = ""; 25 String titleText = "";
  26 + String subTitleTextFir = "";
  27 + String subTitleTextSec = "";
26 if (message.message_type == "10") { 28 if (message.message_type == "10") {
27 titleText = "在线预订"; 29 titleText = "在线预订";
  30 + subTitleTextFir = '包间需求';
  31 + subTitleTextSec = '就餐时间';
28 } else if (message.message_type == "11") { 32 } else if (message.message_type == "11") {
29 titleText = "取消预订"; 33 titleText = "取消预订";
30 } else if (message.message_type == "1") { 34 } else if (message.message_type == "1") {
31 titleText = "提前点餐"; 35 titleText = "提前点餐";
  36 + subTitleTextFir = '桌位信息';
  37 + subTitleTextSec = '就餐时间';
  38 + } else if (message.message_type == "12") {
  39 + titleText = "在线买单";
  40 + subTitleTextFir = '桌位信息';
  41 + subTitleTextSec = '申请时间';
32 } 42 }
  43 +
33 MessageDialogModel messageDialogModel = 44 MessageDialogModel messageDialogModel =
34 Provider.of<MessageDialogModel>(context, listen: false); 45 Provider.of<MessageDialogModel>(context, listen: false);
35 return GestureDetector( 46 return GestureDetector(
36 onTap: () { 47 onTap: () {
  48 + //true已处理跳转 false未处理列表不需要点击事件
37 if (isTreated) { 49 if (isTreated) {
38 if (message.message_type == "10") { 50 if (message.message_type == "10") {
39 NavigatorUtil.goNotebookDetailPage( 51 NavigatorUtil.goNotebookDetailPage(
@@ -43,6 +55,8 @@ class MessageItem extends StatelessWidget { @@ -43,6 +55,8 @@ class MessageItem extends StatelessWidget {
43 } else if (message.message_type == "11") { 55 } else if (message.message_type == "11") {
44 NavigatorUtil.goNotebookDetailPage( 56 NavigatorUtil.goNotebookDetailPage(
45 context, message.rid.toString()); 57 context, message.rid.toString());
  58 + } else if (message.message_type == "12") {
  59 + //在线买单消息查看
46 } 60 }
47 } 61 }
48 }, 62 },
@@ -96,14 +110,14 @@ class MessageItem extends StatelessWidget { @@ -96,14 +110,14 @@ class MessageItem extends StatelessWidget {
96 crossAxisAlignment: CrossAxisAlignment.start, 110 crossAxisAlignment: CrossAxisAlignment.start,
97 children: <Widget>[ 111 children: <Widget>[
98 Text( 112 Text(
99 - "${message.message_type == '1' ? '桌位信息:' : '包间需求:'}${message.message_type == '1' ? message.room_info : message.room_demand}", 113 + "${subTitleTextFir}:${message.message_type == '1' ? message.room_info : message.room_demand}",
100 style: TextStyle( 114 style: TextStyle(
101 color: textColor, 115 color: textColor,
102 fontSize: ScreenUtil().setSp(28)), 116 fontSize: ScreenUtil().setSp(28)),
103 ), 117 ),
104 VEmptyView(10), 118 VEmptyView(10),
105 Text( 119 Text(
106 - "就餐时间:${message.ddateStr}", 120 + "${subTitleTextSec}:${message.message_type != '12' ? message.ddateStr : message.cdateStr}",
107 style: TextStyle( 121 style: TextStyle(
108 color: textColor, 122 color: textColor,
109 fontSize: ScreenUtil().setSp(28)), 123 fontSize: ScreenUtil().setSp(28)),
@@ -129,7 +143,10 @@ class MessageItem extends StatelessWidget { @@ -129,7 +143,10 @@ class MessageItem extends StatelessWidget {
129 width: 152, 143 width: 152,
130 height: 50, 144 height: 50,
131 fontSize: 30, 145 fontSize: 30,
132 - content: message.message_type == "10" ? "立即处理" : "立即查看", 146 + content: message.message_type == "10" ||
  147 + message.message_type == "12"
  148 + ? "立即处理"
  149 + : "立即查看",
133 state: 1, 150 state: 1,
134 onPress: () async { 151 onPress: () async {
135 messageDialogModel.removeMessage(message.id); 152 messageDialogModel.removeMessage(message.id);
@@ -172,6 +189,8 @@ class MessageItem extends StatelessWidget { @@ -172,6 +189,8 @@ class MessageItem extends StatelessWidget {
172 await messageDialogModel.setMessageStatus( 189 await messageDialogModel.setMessageStatus(
173 context, params); 190 context, params);
174 bus.emit("refresh_untreated_num"); //刷新未读消息数目 191 bus.emit("refresh_untreated_num"); //刷新未读消息数目
  192 + } else if (message.message_type == "12") {
  193 + //在线买单消息 去处理 跳转在线买单处理页面
175 } 194 }
176 }, 195 },
177 ), 196 ),
@@ -13,10 +13,18 @@ class MessageModel extends ChangeNotifier { @@ -13,10 +13,18 @@ class MessageModel extends ChangeNotifier {
13 List<Message> unMessagesOnline = []; //未读在线消息(取消预定和新的预订) 13 List<Message> unMessagesOnline = []; //未读在线消息(取消预定和新的预订)
14 List<Message> unMessagesOrder = []; //未读提前点餐消息 14 List<Message> unMessagesOrder = []; //未读提前点餐消息
15 PageState pageState = PageState.Loading; 15 PageState pageState = PageState.Loading;
  16 + // 未处理消息总数
  17 + int onlineTotal = 0; //在线消息
  18 + int inlineTotal = 0; //内部消息
  19 + int orderTotal = 0; //提前点餐
  20 + int checkTotal = 0; //在线买单
16 21
17 - int onlineTotal = 0; //未处理在线消息数目  
18 - int inlineTotal = 0; //未处理内部消息数目  
19 - int orderTotal = 0; //未处理提前点餐消息数目 22 + initData() {
  23 + messages = []; //消息
  24 + unMessagesOnline = []; //未读在线消息(取消预定和新的预订)
  25 + unMessagesOrder = []; //未读提前点餐消息
  26 + pageState = PageState.Loading;
  27 + }
20 28
21 //获取消息 29 //获取消息
22 getMessages(BuildContext context, Map<String, String> params, 30 getMessages(BuildContext context, Map<String, String> params,
@@ -100,6 +108,7 @@ class MessageModel extends ChangeNotifier { @@ -100,6 +108,7 @@ class MessageModel extends ChangeNotifier {
100 onlineTotal = int.parse(baseResp.data['online_total'].toString()); 108 onlineTotal = int.parse(baseResp.data['online_total'].toString());
101 inlineTotal = int.parse(baseResp.data['inline_total'].toString()); 109 inlineTotal = int.parse(baseResp.data['inline_total'].toString());
102 orderTotal = int.parse(baseResp.data['order_total'].toString()); 110 orderTotal = int.parse(baseResp.data['order_total'].toString());
  111 + checkTotal = int.parse(baseResp.data['check_total'].toString());
103 notifyListeners(); 112 notifyListeners();
104 } 113 }
105 } 114 }