Commit a603b61b609caaefd0b9eb6a31eaecab29b3b7bd

Authored by 蓋亞光
1 parent f457628a

消息中心

@@ -11,14 +11,14 @@ if (flutterRoot == null) { @@ -11,14 +11,14 @@ if (flutterRoot == null) {
11 throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 11 throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 } 12 }
13 13
14 -def flutterVersionCode = "163" 14 +def flutterVersionCode = "171"
15 if (flutterVersionCode == null) { 15 if (flutterVersionCode == null) {
16 - flutterVersionCode = '163' 16 + flutterVersionCode = '171'
17 } 17 }
18 18
19 -def flutterVersionName = "1.6.3" 19 +def flutterVersionName = "1.7.1"
20 if (flutterVersionName == null) { 20 if (flutterVersionName == null) {
21 - flutterVersionName = '1.6.3' 21 + flutterVersionName = '1.7.1'
22 } 22 }
23 23
24 apply plugin: 'com.android.application' 24 apply plugin: 'com.android.application'
@@ -34,7 +34,7 @@ Future<void> main() async { @@ -34,7 +34,7 @@ Future<void> main() async {
34 Routes.configureRoutes(router); 34 Routes.configureRoutes(router);
35 App.router = router; 35 App.router = router;
36 App.setupLocator(); 36 App.setupLocator();
37 - LogUtil.init(isDebug: false, tag: 'ONE_KEY'); 37 + LogUtil.init(isDebug: true, tag: 'ONE_KEY');
38 Provider.debugCheckInvalidValueType = null; 38 Provider.debugCheckInvalidValueType = null;
39 await initializeDateFormatting(); 39 await initializeDateFormatting();
40 Utils.changeStatusColor(); 40 Utils.changeStatusColor();
@@ -28,9 +28,11 @@ class Message { @@ -28,9 +28,11 @@ class Message {
28 switch(sex.toString()){ 28 switch(sex.toString()){
29 case "1"://先生 29 case "1"://先生
30 case "男": 30 case "男":
  31 + case "先生":
31 return rname+"先生"; 32 return rname+"先生";
32 case "2"://女士 33 case "2"://女士
33 case "女": 34 case "女":
  35 + case "女士":
34 return rname+"女士"; 36 return rname+"女士";
35 case "3"://公司 37 case "3"://公司
36 case "公司": 38 case "公司":
@@ -39,8 +41,13 @@ class Message { @@ -39,8 +41,13 @@ class Message {
39 } 41 }
40 42
41 String get ddateStr{ 43 String get ddateStr{
42 - DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate_long.toString())*1000);  
43 - String ymd=dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day); 44 + String ymd="";
  45 + if(ddate_long!=null){
  46 + DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate_long.toString())*1000);
  47 + ymd=dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day);
  48 + }else{
  49 + ymd=ddate.substring(0,10);
  50 + }
44 switch(ddate_solt){ 51 switch(ddate_solt){
45 case "1"://早餐 52 case "1"://早餐
46 return ymd+" 早餐"; 53 return ymd+" 早餐";
@@ -54,7 +61,26 @@ class Message { @@ -54,7 +61,26 @@ class Message {
54 } 61 }
55 62
56 String get cdateStr{ 63 String get cdateStr{
57 - DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString())*1000); 64 + String temp_date=cdate;
  65 + switch (message_type){
  66 + case "1"://提前点餐
  67 + case "2"://内部预订
  68 + if (is_read=="0"){//未读 下单时间
  69 + temp_date=cdate;
  70 + }else{
  71 + temp_date=read_time; //已读 查看时间
  72 + }
  73 + break;
  74 + case "10"://在线预订
  75 + case "11"://在线预订
  76 + if (is_handle=="0"){//未处理 下单时间
  77 + temp_date=cdate;
  78 + }else{
  79 + temp_date=handle_time;//已处理 处理时间
  80 + }
  81 + break;
  82 + }
  83 + DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(temp_date.toString())*1000);
58 if((DateTime.now().difference(dateTime)).inMilliseconds<60000){ 84 if((DateTime.now().difference(dateTime)).inMilliseconds<60000){
59 return "刚刚"; 85 return "刚刚";
60 }else{ 86 }else{
@@ -9,6 +9,8 @@ class HttpUrl { @@ -9,6 +9,8 @@ class HttpUrl {
9 static const String login_out = "?service=Android.User.AppLoginOut"; //退出登录 9 static const String login_out = "?service=Android.User.AppLoginOut"; //退出登录
10 static const String get_message_list = 10 static const String get_message_list =
11 "?service=Android.Reserve.GetMessageList"; //获取消息列表 11 "?service=Android.Reserve.GetMessageList"; //获取消息列表
  12 + static const String get_message_num =
  13 + "?service=Android.Reserve.GetUnMsgTotal"; //获取未处理消息数目
12 static const String get_reserve_list = 14 static const String get_reserve_list =
13 "?service=Android.Reserve.NewGetReserveList"; //获取已预订列表 15 "?service=Android.Reserve.NewGetReserveList"; //获取已预订列表
14 static const String reserve_count_day = 16 static const String reserve_count_day =
@@ -335,6 +335,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> { @@ -335,6 +335,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
335 //处理在线预订 335 //处理在线预订
336 setReserveStatus(String status, {String tid = "", String ac = ""}) async { 336 setReserveStatus(String status, {String tid = "", String ac = ""}) async {
337 bus.emit("remove_untreated_message", widget.mid); 337 bus.emit("remove_untreated_message", widget.mid);
  338 + bus.emit("refresh_untreated_num");//刷新未读消息数目
338 UserModel userModel = Provider.of<UserModel>(context, listen: false); 339 UserModel userModel = Provider.of<UserModel>(context, listen: false);
339 Map<String, String> causeMap = { 340 Map<String, String> causeMap = {
340 "uid": userModel.user.openid, 341 "uid": userModel.user.openid,
@@ -370,6 +371,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> { @@ -370,6 +371,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
370 //处理在线预订 371 //处理在线预订
371 setMessageStatus() { 372 setMessageStatus() {
372 bus.emit("remove_untreated_message", widget.mid); 373 bus.emit("remove_untreated_message", widget.mid);
  374 + bus.emit("refresh_untreated_num");//刷新未读消息数目
373 Map<String, String> params = { 375 Map<String, String> params = {
374 "sid": Provider.of<UserModel>(context, listen: false).user.sellerid, 376 "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
375 "id": widget.mid, 377 "id": widget.mid,
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter_easyrefresh/easy_refresh.dart'; 2 import 'package:flutter_easyrefresh/easy_refresh.dart';
  3 +import 'package:flutter_screenutil/flutter_screenutil.dart';
3 import 'package:one_key/constant/state.dart'; 4 import 'package:one_key/constant/state.dart';
4 import 'package:one_key/pages/message/messsage_item.dart'; 5 import 'package:one_key/pages/message/messsage_item.dart';
5 import 'package:one_key/provider/message_dialog_model.dart'; 6 import 'package:one_key/provider/message_dialog_model.dart';
6 import 'package:one_key/provider/message_model.dart'; 7 import 'package:one_key/provider/message_model.dart';
7 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';
8 import 'package:one_key/widgets/page_error.dart'; 10 import 'package:one_key/widgets/page_error.dart';
9 import 'package:one_key/widgets/page_exception.dart'; 11 import 'package:one_key/widgets/page_exception.dart';
10 import 'package:provider/provider.dart'; 12 import 'package:provider/provider.dart';
11 import 'package:one_key/utils/event_bus.dart'; 13 import 'package:one_key/utils/event_bus.dart';
12 14
13 -class MessageLeftPage extends StatefulWidget { 15 +/**
  16 + * 在线预订消息
  17 + */
  18 +class MessageOnlinePage extends StatefulWidget {
14 @override 19 @override
15 State<StatefulWidget> createState() { 20 State<StatefulWidget> createState() {
16 // TODO: implement createState 21 // TODO: implement createState
17 - return new MessageLeftPageState(); 22 + return new MessageOnlinePageState();
18 } 23 }
19 } 24 }
20 25
21 -class MessageLeftPageState extends State<MessageLeftPage> { 26 +class MessageOnlinePageState extends State<MessageOnlinePage> {
22 EasyRefreshController _controller; 27 EasyRefreshController _controller;
23 28
  29 + Color selectedColor = MyColours.color_199095;
  30 + Color unSelectedColor = MyColours.color_999999;
  31 +
  32 + int selectedIndex = 0;
  33 +
  34 + int offset=0;
  35 +
24 @override 36 @override
25 void initState() { 37 void initState() {
26 // TODO: implement initState 38 // TODO: implement initState
@@ -35,57 +47,109 @@ class MessageLeftPageState extends State<MessageLeftPage> { @@ -35,57 +47,109 @@ class MessageLeftPageState extends State<MessageLeftPage> {
35 }); 47 });
36 _controller = EasyRefreshController(); 48 _controller = EasyRefreshController();
37 WidgetsBinding.instance.addPostFrameCallback((_) { 49 WidgetsBinding.instance.addPostFrameCallback((_) {
38 - getUntreatedMessage(); 50 + getMessage();
39 }); 51 });
40 } 52 }
41 53
42 //获取未处理在线预订消息 54 //获取未处理在线预订消息
43 - getUntreatedMessage({bool showLoading = true}) { 55 + getMessage({bool showLoading = true}) {
44 UserModel userModel = Provider.of<UserModel>(context, listen: false); 56 UserModel userModel = Provider.of<UserModel>(context, listen: false);
45 Map<String, String> params = { 57 Map<String, String> params = {
46 "sid": userModel.user.sellerid, 58 "sid": userModel.user.sellerid,
47 - "type_id": "10",  
48 - "status": "0",  
49 - "offset": "0",  
50 - "limit": "100", 59 + "type_id": "10", //1提前点餐2内部预订10在线预订
  60 + "status": selectedIndex.toString(),
  61 + "offset": offset.toString(),
  62 + "limit": "20",
51 }; 63 };
52 MessageModel messageModel = 64 MessageModel messageModel =
53 Provider.of<MessageModel>(context, listen: false); 65 Provider.of<MessageModel>(context, listen: false);
54 - messageModel.getUntreatedMsg(context, params, showLoading: showLoading); 66 + messageModel.getMessages(context, params, showLoading: showLoading);
55 } 67 }
56 68
57 @override 69 @override
58 Widget build(BuildContext context) { 70 Widget build(BuildContext context) {
59 // TODO: implement build 71 // TODO: implement build
60 - return Consumer<MessageModel>(  
61 - builder: (context, model, _) {  
62 - if (model.unPageState != PageState.Success) {  
63 - return ExceptionPage(  
64 - pageState: model.unPageState,  
65 - callback: () {  
66 - getUntreatedMessage();  
67 - },  
68 - emptyMsg: "暂时没有未处理的消息哦",  
69 - emptyImg: "empty_search",  
70 - showMsg: "加载中,请稍后...",  
71 - );  
72 - } else {  
73 - return EasyRefresh.custom(  
74 - controller: _controller,  
75 - slivers: [  
76 - SliverList(  
77 - delegate: SliverChildBuilderDelegate(  
78 - (BuildContext context, int index) {  
79 - return MessageItem(model.untreatedMsgs[index]);  
80 - }, childCount: model.untreatedMsgs.length),  
81 - )  
82 - ],  
83 - onRefresh: () async {  
84 - getUntreatedMessage(showLoading: false);  
85 - },  
86 - );  
87 - }  
88 - }, 72 + return Container(
  73 + color: MyColours.color_f5f5f5,
  74 + child: Column(
  75 + children: [
  76 + Container(
  77 + width: double.infinity,
  78 + height: ScreenUtil().setWidth(84),
  79 + color: MyColours.color_ffffff,
  80 + child: Row(
  81 + children: [
  82 + Expanded(
  83 + 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 + )),
  96 + Expanded(
  97 + child: GestureDetector(
  98 + behavior: HitTestBehavior.opaque,
  99 + onTap: () {
  100 + if(selectedIndex==1)return;
  101 + setState(() {
  102 + selectedIndex = 1;
  103 + getMessage(showLoading: true);
  104 + });
  105 + },
  106 + child: Center(
  107 + child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
  108 + )
  109 + ))
  110 + ],
  111 + ),
  112 + ),
  113 + Expanded(
  114 + child: Consumer<MessageModel>(
  115 + builder: (context, model, _) {
  116 + if (model.pageState != PageState.Success) {
  117 + return ExceptionPage(
  118 + pageState: model.pageState,
  119 + callback: () {
  120 + offset=0;
  121 + getMessage(showLoading: true);
  122 + },
  123 + emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的在线预订消息哦",
  124 + emptyImg: "empty_search",
  125 + showMsg: "加载中,请稍后...",
  126 + );
  127 + } else {
  128 + return EasyRefresh.custom(
  129 + controller: _controller,
  130 + slivers: [
  131 + SliverList(
  132 + delegate: SliverChildBuilderDelegate(
  133 + (BuildContext context, int index) {
  134 + return MessageItem(model.messages[index],isTreated: selectedIndex==1,);
  135 + }, childCount: model.messages.length),
  136 + )
  137 + ],
  138 + onRefresh: () async {
  139 + offset=0;
  140 + getMessage(showLoading: false);
  141 + },
  142 + onLoad: ()async{
  143 + offset++;
  144 + getMessage(showLoading: false);
  145 + },
  146 + );
  147 + }
  148 + },
  149 + ),
  150 + )
  151 + ],
  152 + ),
89 ); 153 );
90 } 154 }
91 155
  1 +import 'package:common_utils/common_utils.dart';
1 import 'package:flutter/material.dart'; 2 import 'package:flutter/material.dart';
2 import 'package:flutter_easyrefresh/easy_refresh.dart'; 3 import 'package:flutter_easyrefresh/easy_refresh.dart';
  4 +import 'package:flutter_screenutil/screenutil.dart';
3 import 'package:one_key/constant/state.dart'; 5 import 'package:one_key/constant/state.dart';
4 import 'package:one_key/pages/message/messsage_item.dart'; 6 import 'package:one_key/pages/message/messsage_item.dart';
5 import 'package:one_key/provider/message_model.dart'; 7 import 'package:one_key/provider/message_model.dart';
6 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';
7 import 'package:one_key/widgets/page_error.dart'; 10 import 'package:one_key/widgets/page_error.dart';
8 import 'package:one_key/widgets/page_exception.dart'; 11 import 'package:one_key/widgets/page_exception.dart';
9 import 'package:provider/provider.dart'; 12 import 'package:provider/provider.dart';
10 13
11 -class MessageRightPage extends StatefulWidget { 14 +/**
  15 + * 提前点餐消息
  16 + */
  17 +class MessageOrderPage extends StatefulWidget {
12 @override 18 @override
13 State<StatefulWidget> createState() { 19 State<StatefulWidget> createState() {
14 // TODO: implement createState 20 // TODO: implement createState
15 - return new MessageRightPageState(); 21 + return new MessageOrderPageState();
16 } 22 }
17 } 23 }
18 24
19 -class MessageRightPageState extends State<MessageRightPage> { 25 +class MessageOrderPageState extends State<MessageOrderPage> {
20 EasyRefreshController _controller; 26 EasyRefreshController _controller;
21 27
  28 + Color selectedColor = MyColours.color_199095;
  29 + Color unSelectedColor = MyColours.color_999999;
  30 +
  31 + int selectedIndex = 0;
  32 +
22 int offset = 0; //当前页数 33 int offset = 0; //当前页数
23 34
  35 +
24 @override 36 @override
25 void initState() { 37 void initState() {
26 // TODO: implement initState 38 // TODO: implement initState
27 super.initState(); 39 super.initState();
28 _controller = EasyRefreshController(); 40 _controller = EasyRefreshController();
29 WidgetsBinding.instance.addPostFrameCallback((_) { 41 WidgetsBinding.instance.addPostFrameCallback((_) {
30 - getTreatedMessage(); 42 + getMessages();
31 }); 43 });
32 } 44 }
33 45
34 - //获取未处理在线预订消息  
35 - getTreatedMessage({bool showLoading = true}) { 46 + //获取消息
  47 + getMessages({bool showLoading = true}) {
36 UserModel userModel = Provider.of<UserModel>(context, listen: false); 48 UserModel userModel = Provider.of<UserModel>(context, listen: false);
37 Map<String, String> params = { 49 Map<String, String> params = {
38 "sid": userModel.user.sellerid, 50 "sid": userModel.user.sellerid,
39 - "type_id": "10",  
40 - "status": "1", 51 + "type_id": "1",
  52 + "status": selectedIndex.toString(),
41 "offset": offset.toString(), 53 "offset": offset.toString(),
42 - "limit": "10", 54 + "limit": "20",
43 }; 55 };
44 MessageModel messageModel = 56 MessageModel messageModel =
45 - Provider.of<MessageModel>(context, listen: false);  
46 - messageModel.getTreatedMsg(context, params, showLoading: showLoading); 57 + Provider.of<MessageModel>(context, listen: false);
  58 + messageModel.getMessages(context, params, showLoading: showLoading);
47 } 59 }
48 60
49 @override 61 @override
50 Widget build(BuildContext context) { 62 Widget build(BuildContext context) {
51 // TODO: implement build 63 // TODO: implement build
52 - return Consumer<MessageModel>(  
53 - builder: (context, model, _) {  
54 - if (model.pageState != PageState.Success) {  
55 - return ExceptionPage(  
56 - pageState: model.pageState,  
57 - callback: () {  
58 - getTreatedMessage();  
59 - },  
60 - emptyMsg: "暂时没有已处理的消息哦",  
61 - emptyImg: "empty_search",  
62 - showMsg: "加载中,请稍后...",  
63 - );  
64 - } else {  
65 - return EasyRefresh.custom(  
66 - controller: _controller,  
67 - slivers: [  
68 - SliverList(  
69 - delegate: SliverChildBuilderDelegate(  
70 - (BuildContext context, int index) {  
71 - return MessageItem(  
72 - model.treatedMsgs[index],  
73 - isTreated: true, 64 + return Container(
  65 + color: MyColours.color_f5f5f5,
  66 + child: Column(
  67 + children: [
  68 + Container(
  69 + width: double.infinity,
  70 + height: ScreenUtil().setWidth(84),
  71 + color: MyColours.color_ffffff,
  72 + child: Row(
  73 + children: [
  74 + Expanded(
  75 + child: GestureDetector(
  76 + behavior: HitTestBehavior.opaque,
  77 + onTap: () {
  78 + if(selectedIndex==0)return;
  79 + setState(() {
  80 + selectedIndex = 0;
  81 + getMessages();
  82 + });
  83 + },
  84 + child: Center(
  85 + child: Text("未处理",style: TextStyle(color: selectedIndex==0?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
  86 + )
  87 + )),
  88 + Expanded(
  89 + child: GestureDetector(
  90 + behavior: HitTestBehavior.opaque,
  91 + onTap: () {
  92 + if(selectedIndex==1)return;
  93 + setState(() {
  94 + selectedIndex = 1;
  95 + getMessages();
  96 + });
  97 + },
  98 + child: Center(
  99 + child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
  100 + )
  101 + ))
  102 + ],
  103 + ),
  104 + ),
  105 + Expanded(
  106 + child: Consumer<MessageModel>(
  107 + builder: (context, model, _) {
  108 + if (model.pageState != PageState.Success) {
  109 + return ExceptionPage(
  110 + pageState: model.pageState,
  111 + callback: () {
  112 + offset=0;
  113 + getMessages();
  114 + },
  115 + emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的提前点餐消息哦",
  116 + emptyImg: "empty_search",
  117 + showMsg: "加载中,请稍后...",
  118 + );
  119 + } else {
  120 + return EasyRefresh.custom(
  121 + controller: _controller,
  122 + slivers: [
  123 + SliverList(
  124 + delegate: SliverChildBuilderDelegate(
  125 + (BuildContext context, int index) {
  126 + return MessageItem(model.messages[index],isTreated: selectedIndex==1);
  127 + }, childCount: model.messages.length),
  128 + )
  129 + ],
  130 + onRefresh: () async {
  131 + offset=0;
  132 + getMessages(showLoading: false);
  133 + },
  134 + onLoad: ()async{
  135 + offset++;
  136 + getMessages(showLoading: false);
  137 + },
74 ); 138 );
75 - }, childCount: model.treatedMsgs.length),  
76 - )  
77 - ],  
78 - onRefresh: () async {  
79 - getTreatedMessage(showLoading: false);  
80 - },  
81 - );  
82 - }  
83 - }, 139 + }
  140 + },
  141 + ),
  142 + )
  143 + ],
  144 + ),
84 ); 145 );
85 } 146 }
86 } 147 }
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/provider/message_model.dart';
  4 +import 'package:one_key/provider/user_model.dart';
3 import 'package:one_key/res/colors.dart'; 5 import 'package:one_key/res/colors.dart';
  6 +import 'package:one_key/utils/event_bus.dart';
4 import 'package:one_key/widgets/app_bar.dart'; 7 import 'package:one_key/widgets/app_bar.dart';
5 import 'package:one_key/widgets/v_empty_view.dart'; 8 import 'package:one_key/widgets/v_empty_view.dart';
6 -import 'message_left_page.dart';  
7 -import 'message_right_page.dart'; 9 +import 'package:provider/provider.dart';
  10 +import 'message_online_page.dart';
  11 +import 'message_order_page.dart';
8 12
9 class MessagePage extends StatefulWidget { 13 class MessagePage extends StatefulWidget {
10 @override 14 @override
@@ -14,61 +18,137 @@ class MessagePage extends StatefulWidget { @@ -14,61 +18,137 @@ class MessagePage extends StatefulWidget {
14 } 18 }
15 } 19 }
16 20
17 -class MessagePageState extends State<MessagePage> { 21 +class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
  22 + Color selectedColor = MyColours.color_199095;
  23 + Color unSelectedColor = MyColours.color_999999;
  24 +
  25 + TabController tabController;
  26 +
  27 + MessageModel messageModel;
  28 +
  29 + @override
  30 + void initState() {
  31 + // TODO: implement initState
  32 + super.initState();
  33 + tabController = TabController(length: 2,vsync: this);
  34 + tabController.addListener(() {
  35 + setState(() {
  36 + });
  37 + });
  38 + WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  39 + _getUnMsgNum();
  40 + });
  41 + bus.on("refresh_untreated_num", (arg) {//舒心未读消息数目
  42 + _getUnMsgNum();
  43 + });
  44 + }
  45 +
  46 + _getUnMsgNum() async {
  47 + Map<String,String> params={
  48 + "sid":Provider.of<UserModel>(context,listen:false).user.sellerid
  49 + };
  50 + await messageModel.getUnMsgNum(context, params);
  51 + setState(() {
  52 + });
  53 + }
18 @override 54 @override
19 Widget build(BuildContext context) { 55 Widget build(BuildContext context) {
20 // TODO: implement build 56 // TODO: implement build
  57 + messageModel=Provider.of<MessageModel>(context,listen: false);
21 return Container( 58 return Container(
22 width: double.infinity, 59 width: double.infinity,
23 height: double.infinity, 60 height: double.infinity,
24 - color: MyColours.color_f5f5f5, 61 + color: MyColours.color_ffffff,
25 child: Column( 62 child: Column(
26 children: <Widget>[ 63 children: <Widget>[
27 MyAppBar( 64 MyAppBar(
28 "消息中心", 65 "消息中心",
29 showBack: false, 66 showBack: false,
30 ), 67 ),
31 - Expanded(  
32 - child: DefaultTabController(  
33 - length: 2,  
34 - child: Column(  
35 - children: <Widget>[  
36 - Material(  
37 - color: MyColours.color_ffffff,  
38 - child: SizedBox(  
39 - width: double.infinity,  
40 - height: ScreenUtil().setHeight(76),  
41 - child: TabBar(  
42 - tabs: [  
43 - Tab(  
44 - text: "未处理",  
45 - ),  
46 - Tab(  
47 - text: "已处理",  
48 - )  
49 - ],  
50 - indicatorColor: MyColours.color_199095,  
51 - indicatorSize: TabBarIndicatorSize.label,  
52 - indicatorWeight: ScreenUtil().setHeight(4.0),  
53 - labelColor: MyColours.color_199095,  
54 - unselectedLabelColor: MyColours.color_999999,  
55 - labelStyle: TextStyle(  
56 - fontSize: ScreenUtil().setSp(32),  
57 - fontWeight: FontWeight.bold), 68 + TabBar(
  69 + controller: tabController,
  70 + tabs: [
  71 + Tab(
  72 + child: SizedBox(
  73 + height: ScreenUtil().setWidth(60),
  74 + width: ScreenUtil().setWidth(144),
  75 + child: Stack(
  76 + children: [
  77 + Text(
  78 + "在线预订",
  79 + style: TextStyle(
  80 + color: tabController.index == 0
  81 + ? selectedColor
  82 + : unSelectedColor,
  83 + fontSize: ScreenUtil().setSp(32),fontWeight: FontWeight.bold),
  84 + ),
  85 + Positioned(
  86 + top: 0,
  87 + right: 0,
  88 + child: Container(
  89 + width: ScreenUtil().setWidth(16),
  90 + height: ScreenUtil().setWidth(16),
  91 + decoration: BoxDecoration(
  92 + borderRadius: BorderRadius.circular(
  93 + ScreenUtil().setWidth(16)),
  94 + color: messageModel.onlineTotal>0?MyColours.color_fa5151:MyColours.color_ffffff),
58 ), 95 ),
  96 + )
  97 + ],
  98 + ),
  99 + ),
  100 + ),
  101 + Tab(
  102 + child: SizedBox(
  103 + height: ScreenUtil().setWidth(60),
  104 + width: ScreenUtil().setWidth(144),
  105 + child: Stack(
  106 + children: [
  107 + Text(
  108 + "提前点餐",
  109 + style: TextStyle(
  110 + color: tabController.index == 1
  111 + ? selectedColor
  112 + : unSelectedColor,
  113 + fontSize: ScreenUtil().setSp(32),fontWeight: FontWeight.bold),
59 ), 114 ),
60 - ),  
61 - VEmptyView(11),  
62 - Expanded(  
63 - flex: 1,  
64 - child: TabBarView(  
65 - children: [MessageLeftPage(), MessageRightPage()]),  
66 - )  
67 - ],  
68 - )), 115 + Positioned(
  116 + top: 0,
  117 + right: 0,
  118 + child: Container(
  119 + width: ScreenUtil().setWidth(16),
  120 + height: ScreenUtil().setWidth(16),
  121 + decoration: BoxDecoration(
  122 + borderRadius: BorderRadius.circular(
  123 + ScreenUtil().setWidth(16)),
  124 + color: messageModel.orderTotal>0?MyColours.color_fa5151:MyColours.color_ffffff),
  125 + ),
  126 + )
  127 + ],
  128 + ),
  129 + ),
  130 + ),
  131 + ],
  132 + indicatorColor: MyColours.color_199095,
  133 + indicatorSize: TabBarIndicatorSize.label,
  134 + indicatorPadding: EdgeInsets.only(left: ScreenUtil().setWidth(16),right: ScreenUtil().setWidth(32)),
  135 + indicatorWeight: ScreenUtil().setWidth(6.0),
  136 + ),
  137 + VEmptyView(11),
  138 + Expanded(
  139 + flex: 1,
  140 + child:
  141 + TabBarView(controller:tabController,children: [MessageOnlinePage(), MessageOrderPage()]),
69 ) 142 )
70 ], 143 ],
71 ), 144 ),
72 ); 145 );
73 } 146 }
  147 +
  148 + @override
  149 + void dispose() {
  150 + // TODO: implement dispose
  151 + super.dispose();
  152 + bus.off("refresh_untreated_num");
  153 + }
74 } 154 }
@@ -18,10 +18,19 @@ class MessageItem extends StatelessWidget { @@ -18,10 +18,19 @@ class MessageItem extends StatelessWidget {
18 final VoidCallback callback; 18 final VoidCallback callback;
19 MessageItem(this.message,{this.isTreated=false,this.callback}); 19 MessageItem(this.message,{this.isTreated=false,this.callback});
20 20
  21 +
21 @override 22 @override
22 Widget build(BuildContext context) { 23 Widget build(BuildContext context) {
23 // TODO: implement build 24 // TODO: implement build
24 Color textColor=isTreated?MyColours.color_999999:MyColours.color_353535; 25 Color textColor=isTreated?MyColours.color_999999:MyColours.color_353535;
  26 + String titleText="";
  27 + if(message.message_type=="10"){
  28 + titleText="在线预订";
  29 + }else if(message.message_type=="11"){
  30 + titleText="取消预订";
  31 + }else if(message.message_type=="1"){
  32 + titleText="提前点餐";
  33 + }
25 MessageDialogModel messageDialogModel=Provider.of<MessageDialogModel>(context,listen: false); 34 MessageDialogModel messageDialogModel=Provider.of<MessageDialogModel>(context,listen: false);
26 return GestureDetector( 35 return GestureDetector(
27 onTap: (){ 36 onTap: (){
@@ -51,7 +60,7 @@ class MessageItem extends StatelessWidget { @@ -51,7 +60,7 @@ class MessageItem extends StatelessWidget {
51 crossAxisAlignment: CrossAxisAlignment.center, 60 crossAxisAlignment: CrossAxisAlignment.center,
52 children: <Widget>[ 61 children: <Widget>[
53 Text( 62 Text(
54 - message.message_type=="10"?"在线预订":"取消预订", 63 + titleText,
55 style: TextStyle( 64 style: TextStyle(
56 color: textColor, 65 color: textColor,
57 fontSize: ScreenUtil().setSp(28)), 66 fontSize: ScreenUtil().setSp(28)),
@@ -78,7 +87,7 @@ class MessageItem extends StatelessWidget { @@ -78,7 +87,7 @@ class MessageItem extends StatelessWidget {
78 crossAxisAlignment: CrossAxisAlignment.start, 87 crossAxisAlignment: CrossAxisAlignment.start,
79 children: <Widget>[ 88 children: <Widget>[
80 Text( 89 Text(
81 - "包间需求:${message.room_demand}", 90 + "${message.message_type=='1'?'桌位信息:':'包间需求:'}${message.message_type=='1'?message.room_info:message.room_demand}",
82 style: TextStyle( 91 style: TextStyle(
83 color: textColor, 92 color: textColor,
84 fontSize: ScreenUtil().setSp(28)), 93 fontSize: ScreenUtil().setSp(28)),
@@ -120,10 +129,11 @@ class MessageItem extends StatelessWidget { @@ -120,10 +129,11 @@ class MessageItem extends StatelessWidget {
120 }else{ 129 }else{
121 NavigatorUtil.goNotebookDetailPage(context,message.rid.toString()); 130 NavigatorUtil.goNotebookDetailPage(context,message.rid.toString());
122 bus.emit("remove_untreated_message", message.id); 131 bus.emit("remove_untreated_message", message.id);
  132 + bus.emit("refresh_untreated_num");//刷新未读消息数目
123 Map<String, String> params = { 133 Map<String, String> params = {
124 "sid": Provider.of<UserModel>(context, listen: false).user.sellerid, 134 "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
125 "id": message.id, 135 "id": message.id,
126 - "status": "is_handle" 136 + "status": message.message_type=="1"?"is_read":"is_handle"
127 }; 137 };
128 messageDialogModel.setMessageStatus(context,params); 138 messageDialogModel.setMessageStatus(context,params);
129 } 139 }
@@ -49,7 +49,7 @@ class MessageDialogModel extends ChangeNotifier{ @@ -49,7 +49,7 @@ class MessageDialogModel extends ChangeNotifier{
49 } 49 }
50 } 50 }
51 51
52 - //添加一条信息 52 + //移除一条信息
53 removeMessage(String mid){ 53 removeMessage(String mid){
54 messages.removeWhere((message)=>message.id==mid); 54 messages.removeWhere((message)=>message.id==mid);
55 notifyListeners(); 55 notifyListeners();
@@ -6,69 +6,20 @@ import 'package:one_key/models/message.dart'; @@ -6,69 +6,20 @@ import 'package:one_key/models/message.dart';
6 import 'package:one_key/net/base_resp.dart'; 6 import 'package:one_key/net/base_resp.dart';
7 import 'package:one_key/net/dio_util.dart'; 7 import 'package:one_key/net/dio_util.dart';
8 import 'package:one_key/net/http_url.dart'; 8 import 'package:one_key/net/http_url.dart';
9 -import 'package:one_key/utils/utils.dart';  
10 9
11 class MessageModel extends ChangeNotifier { 10 class MessageModel extends ChangeNotifier {
12 - List<Message> untreatedMsgs = []; //未处理在线预订消息  
13 - List<Message> treatedMsgs = []; //已处理在线预订消息 11 + List<Message> messages = []; //消息
14 12
15 - PageState unPageState = PageState.Loading;  
16 PageState pageState = PageState.Loading; 13 PageState pageState = PageState.Loading;
17 - //获取未处理在线预订消息  
18 - getUntreatedMsg(BuildContext context, Map<String, String> params,  
19 - {showLoading = true}) async {  
20 - if (showLoading) {  
21 - unPageState = PageState.Loading;  
22 - }  
23 14
24 - notifyListeners();  
25 - BaseResp<List> baseResp = await DioUtil()  
26 - .request<List>(context, Method.get, HttpUrl.get_message_list,  
27 - data: params, showLoading: false)  
28 - .catchError((error) {  
29 - print(error.toString());  
30 - if (error is MyError) {  
31 - switch (error.type) {  
32 - case 1:  
33 - unPageState = PageState.ConnectivityError;  
34 - break;  
35 - case 2:  
36 - unPageState = PageState.ConnectivityTimeOut;  
37 - break;  
38 - default:  
39 - unPageState = PageState.ConnectivityError;  
40 - break;  
41 - }  
42 - }  
43 - notifyListeners();  
44 - });  
45 - if (baseResp != null && baseResp.code == Constant.status_success) {  
46 - untreatedMsgs = baseResp.data.map<Message>((value) {  
47 - return Message.fromJson(value);  
48 - }).toList();  
49 - untreatedMsgs.removeWhere((message) {  
50 - if (message.message_type.toString() == "10") {  
51 - if (message.status == "4") {  
52 - return true;  
53 - }  
54 - return false;  
55 - } else if (message.message_type.toString() == "11") {  
56 - return false;  
57 - }  
58 - return true;  
59 - });  
60 - if (untreatedMsgs.isEmpty) {  
61 - unPageState = PageState.Empty;  
62 - } else {  
63 - unPageState = PageState.Success;  
64 - }  
65 - notifyListeners();  
66 - }  
67 - } 15 + int onlineTotal=0;//未处理在线消息数目
  16 + int inlineTotal=0;//未处理内部消息数目
  17 + int orderTotal=0;//未处理提前点餐消息数目
68 18
69 - //获取已处理在线预订消息  
70 - getTreatedMsg(BuildContext context, Map<String, String> params,{showLoading = true}) async {  
71 - if (params["offset"] == "0" && showLoading) { 19 + //获取消息
  20 + getMessages(BuildContext context, Map<String, String> params,
  21 + {showLoading = true}) async {
  22 + if(showLoading){
72 pageState = PageState.Loading; 23 pageState = PageState.Loading;
73 notifyListeners(); 24 notifyListeners();
74 } 25 }
@@ -93,24 +44,25 @@ class MessageModel extends ChangeNotifier { @@ -93,24 +44,25 @@ class MessageModel extends ChangeNotifier {
93 notifyListeners(); 44 notifyListeners();
94 }); 45 });
95 if (baseResp != null && baseResp.code == Constant.status_success) { 46 if (baseResp != null && baseResp.code == Constant.status_success) {
96 - if (params["offset"] == "0") {  
97 - //第一页  
98 - treatedMsgs = baseResp.data.map<Message>((value) { 47 + if(params['offset']=="0"){
  48 + messages = baseResp.data.map<Message>((value) {
99 return Message.fromJson(value); 49 return Message.fromJson(value);
100 }).toList(); 50 }).toList();
101 - } else {  
102 - treatedMsgs.addAll(baseResp.data.map<Message>((value) {  
103 - return Message.fromJson(value);  
104 - }).toList());  
105 } 51 }
106 - treatedMsgs.removeWhere((message) {  
107 - if (message.message_type.toString() == "10" ||  
108 - message.message_type.toString() == "11") {  
109 - return false;  
110 - }  
111 - return true;  
112 - });  
113 - if (treatedMsgs.isEmpty) { 52 + // if(params["type_id"]=="10"){//在线预订
  53 + // messages.removeWhere((message) {
  54 + // if (message.message_type.toString() == "10") {//在线预订
  55 + // if (message.status == "4") {//已取消
  56 + // return true;
  57 + // }
  58 + // return false;
  59 + // } else if (message.message_type.toString() == "11") {//取消在线预订
  60 + // return false;
  61 + // }
  62 + // return true;
  63 + // });
  64 + // }
  65 + if (messages.isEmpty) {
114 pageState = PageState.Empty; 66 pageState = PageState.Empty;
115 } else { 67 } else {
116 pageState = PageState.Success; 68 pageState = PageState.Success;
@@ -119,9 +71,26 @@ class MessageModel extends ChangeNotifier { @@ -119,9 +71,26 @@ class MessageModel extends ChangeNotifier {
119 } 71 }
120 } 72 }
121 73
122 - //移除未处理在线预订消息  
123 - removeUntreatedMessageByMid(String mid) {  
124 - untreatedMsgs.removeWhere((message) => message.id == mid); 74 + //获取未处理消息数目
  75 + Future getUnMsgNum(BuildContext context, Map<String, String> params) async {
  76 + BaseResp<Map<String,dynamic>> baseResp = await DioUtil()
  77 + .request<Map<String,dynamic>>(context, Method.get, HttpUrl.get_message_num,
  78 + data: params, showLoading: false)
  79 + .catchError((error) {
  80 + print(error.toString());
  81 + });
  82 + if (baseResp != null && baseResp.code == Constant.status_success) {
  83 + onlineTotal=int.parse(baseResp.data['online_total'].toString());
  84 + inlineTotal=int.parse(baseResp.data['inline_total'].toString());
  85 + orderTotal=int.parse(baseResp.data['order_total'].toString());
  86 + return;
  87 + }
  88 + return;
  89 + }
  90 +
  91 + //根据消息id移除消息
  92 + removeUntreatedMessageByMid(String mid){
  93 + messages.removeWhere((element) => element.id==mid);
125 notifyListeners(); 94 notifyListeners();
126 } 95 }
127 } 96 }
@@ -50,4 +50,5 @@ class MyColours { @@ -50,4 +50,5 @@ class MyColours {
50 static const Color color_e5e5e5 = Color(0xffe5e5e5); 50 static const Color color_e5e5e5 = Color(0xffe5e5e5);
51 static const Color color_efefef = Color(0xffefefef); 51 static const Color color_efefef = Color(0xffefefef);
52 static const Color color_0A0A0A = Color(0xff0A0A0A); 52 static const Color color_0A0A0A = Color(0xff0A0A0A);
  53 + static const Color color_fa5151 = Color(0xfffa5151);
53 } 54 }