Commit 4d6776afa7dfebc60548804172d416113350c240

Authored by wdn127929
1 parent fd51f221

消息中心修改

... ... @@ -81,7 +81,7 @@ class Message {
case "11": //在线预订
if (is_handle == "0") {
//未处理 下单时间
temp_date = cdate;
temp_date = '${cdate}';
} else {
temp_date = handle_time; //已处理 处理时间
}
... ...
... ... @@ -5,6 +5,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/manager.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
... ... @@ -57,7 +58,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
bool isRefused = false; //是否已拒绝
bool isPause = false; //是否暂停预订
bool isSelf=false;//订单是否自己处理
bool isSelf = false; //订单是否自己处理
StateSetter refuseDialogState; //决绝弹框setState
@override
... ... @@ -92,11 +93,13 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
}
}
});
if(detailEntity.status=="6"){//已拒绝不跳转
if(refuseDialogState!=null){
refuseDialogState((){});
if (detailEntity.status == "6") {
//已拒绝不跳转
if (refuseDialogState != null) {
refuseDialogState(() {});
}
}else if (detailEntity.status != "0") {//已拒绝
} else if (detailEntity.status != "0") {
//已拒绝
//已处理
Future.delayed(Duration(milliseconds: 200), () {
NavigatorUtil.goNotebookDetailPage(context, detailEntity.id,
... ... @@ -308,7 +311,8 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
],
),
);
if(detailEntity.status=="6"&&isSelf==false){//订单已被拒绝
if (detailEntity.status == "6" && isSelf == false) {
//订单已被拒绝
Navigator.of(context).pop();
}
return container;
... ... @@ -335,7 +339,15 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
//处理在线预订
setReserveStatus(String status, {String tid = "", String ac = ""}) async {
bus.emit("remove_untreated_message", widget.mid);
bus.emit("refresh_untreated_num");//刷新未读消息数目
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
Map<String, String> paramsSetMessageStatus = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"id": widget.mid,
"status": "is_handle"
};
await messageDialogModel.setMessageStatus(context, paramsSetMessageStatus);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, String> causeMap = {
"uid": userModel.user.openid,
... ... @@ -350,20 +362,20 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
"cause": json.encode(causeMap)
};
if (status == "6") {
isPause = (ac=="1"?true:false);
isPause = (ac == "1" ? true : false);
params['ac'] = ac; //0=直接拒绝 1=拒绝并暂停预订
}
bool success = await detailModel.setReserveStatus(context, params,
ifPush: (status=="6" ? false : true), showLoading: true);
ifPush: (status == "6" ? false : true), showLoading: true);
if (success != null && success) {
bus.emit("refresh_book_list");
if (status == "6") {
isRefused = true;
isSelf=true;
isSelf = true;
_getOrderListData();
}
}else{
isSelf=false;
} else {
isSelf = false;
_getOrderListData();
}
}
... ... @@ -371,7 +383,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
//处理在线预订
setMessageStatus() {
bus.emit("remove_untreated_message", widget.mid);
bus.emit("refresh_untreated_num");//刷新未读消息数目
bus.emit("refresh_untreated_num"); //刷新未读消息数目
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"id": widget.mid,
... ...
... ... @@ -290,7 +290,12 @@ class _MessageHasOrderFoodPageState extends State<MessageHasOrderFoodPage> {
_orderFoodProvider = Provider.of<OrderFoodProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('已点菜品'),
appBar: SystemAppBar(
'已点菜品',
onTap: () {
Navigator.of(context).pop();
},
),
body: Consumer<OrderFoodProvider>(
builder: (context, model, _) {
if (model.pageState != PageState.Success) {
... ...
... ... @@ -4,9 +4,11 @@ import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/message/messsage_item.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/widgets/page_error.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:provider/provider.dart';
... ... @@ -32,7 +34,6 @@ class MessageOrderPageState extends State<MessageOrderPage> {
int offset = 0; //当前页数
@override
void initState() {
// TODO: implement initState
... ... @@ -41,6 +42,20 @@ class MessageOrderPageState extends State<MessageOrderPage> {
WidgetsBinding.instance.addPostFrameCallback((_) {
getMessages();
});
bus.on("remove_untreated_message_order", (args) {
MessageModel messageModel =
Provider.of<MessageModel>(context, listen: false);
messageModel.removeUntreatedMessageByMid(args.toString());
MessageDialogModel messageDialogModel =
Provider.of<MessageDialogModel>(context, listen: false);
messageDialogModel.removeMessage(args.toString());
});
}
@override
void dispose() {
super.dispose();
bus.off("remove_untreated_message_order");
}
//获取消息
... ... @@ -54,7 +69,7 @@ class MessageOrderPageState extends State<MessageOrderPage> {
"limit": "20",
};
MessageModel messageModel =
Provider.of<MessageModel>(context, listen: false);
Provider.of<MessageModel>(context, listen: false);
messageModel.getMessages(context, params, showLoading: showLoading);
}
... ... @@ -75,30 +90,42 @@ class MessageOrderPageState extends State<MessageOrderPage> {
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
if(selectedIndex==0)return;
if (selectedIndex == 0) return;
setState(() {
selectedIndex = 0;
getMessages();
});
},
child: Center(
child: Text("未处理",style: TextStyle(color: selectedIndex==0?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
)
)),
child: Text(
"未处理",
style: TextStyle(
color: selectedIndex == 0
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(30)),
),
))),
Expanded(
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
if(selectedIndex==1)return;
if (selectedIndex == 1) return;
setState(() {
selectedIndex = 1;
getMessages();
});
},
child: Center(
child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
)
))
child: Text(
"已处理",
style: TextStyle(
color: selectedIndex == 1
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(30)),
),
)))
],
),
),
... ... @@ -109,10 +136,11 @@ class MessageOrderPageState extends State<MessageOrderPage> {
return ExceptionPage(
pageState: model.pageState,
callback: () {
offset=0;
offset = 0;
getMessages();
},
emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的提前点餐消息哦",
emptyMsg:
"暂时没有${selectedIndex == 0 ? '未处理' : '已处理'}的提前点餐消息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
... ... @@ -122,16 +150,17 @@ class MessageOrderPageState extends State<MessageOrderPage> {
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return MessageItem(model.messages[index],isTreated: selectedIndex==1);
}, childCount: model.messages.length),
(BuildContext context, int index) {
return MessageItem(model.messages[index],
isTreated: selectedIndex == 1);
}, childCount: model.messages.length),
)
],
onRefresh: () async {
offset=0;
offset = 0;
getMessages(showLoading: false);
},
onLoad: ()async{
onLoad: () async {
offset++;
getMessages(showLoading: false);
},
... ...
... ... @@ -18,7 +18,8 @@ class MessagePage extends StatefulWidget {
}
}
class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
class MessagePageState extends State<MessagePage>
with TickerProviderStateMixin {
Color selectedColor = MyColours.color_199095;
Color unSelectedColor = MyColours.color_999999;
... ... @@ -30,31 +31,31 @@ class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
void initState() {
// TODO: implement initState
super.initState();
tabController = TabController(length: 2,vsync: this);
tabController = TabController(length: 2, vsync: this);
tabController.addListener(() {
setState(() {
});
setState(() {});
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_getUnMsgNum();
});
bus.on("refresh_untreated_num", (arg) {//舒心未读消息数目
bus.on("refresh_untreated_num", (arg) {
//刷新未读消息数目
_getUnMsgNum();
});
}
_getUnMsgNum() async {
Map<String,String> params={
"sid":Provider.of<UserModel>(context,listen:false).user.sellerid
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid
};
await messageModel.getUnMsgNum(context, params);
setState(() {
});
setState(() {});
}
@override
Widget build(BuildContext context) {
// TODO: implement build
messageModel=Provider.of<MessageModel>(context,listen: false);
messageModel = Provider.of<MessageModel>(context, listen: false);
return Container(
width: double.infinity,
height: double.infinity,
... ... @@ -80,7 +81,8 @@ class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
color: tabController.index == 0
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(32),fontWeight: FontWeight.bold),
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold),
),
Positioned(
top: 0,
... ... @@ -91,7 +93,9 @@ class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(16)),
color: messageModel.onlineTotal>0?MyColours.color_fa5151:MyColours.color_ffffff),
color: messageModel.onlineTotal > 0
? MyColours.color_fa5151
: MyColours.color_ffffff),
),
)
],
... ... @@ -110,7 +114,8 @@ class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
color: tabController.index == 1
? selectedColor
: unSelectedColor,
fontSize: ScreenUtil().setSp(32),fontWeight: FontWeight.bold),
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold),
),
Positioned(
top: 0,
... ... @@ -121,7 +126,9 @@ class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(16)),
color: messageModel.orderTotal>0?MyColours.color_fa5151:MyColours.color_ffffff),
color: messageModel.orderTotal > 0
? MyColours.color_fa5151
: MyColours.color_ffffff),
),
)
],
... ... @@ -131,14 +138,17 @@ class MessagePageState extends State<MessagePage> with TickerProviderStateMixin{
],
indicatorColor: MyColours.color_199095,
indicatorSize: TabBarIndicatorSize.label,
indicatorPadding: EdgeInsets.only(left: ScreenUtil().setWidth(16),right: ScreenUtil().setWidth(32)),
indicatorPadding: EdgeInsets.only(
left: ScreenUtil().setWidth(16),
right: ScreenUtil().setWidth(32)),
indicatorWeight: ScreenUtil().setWidth(6.0),
),
VEmptyView(11),
Expanded(
flex: 1,
child:
TabBarView(controller:tabController,children: [MessageOnlinePage(), MessageOrderPage()]),
child: TabBarView(
controller: tabController,
children: [MessageOnlinePage(), MessageOrderPage()]),
)
],
),
... ...
... ... @@ -35,7 +35,12 @@ class MessageItem extends StatelessWidget {
return GestureDetector(
onTap: () {
if (isTreated) {
NavigatorUtil.goNotebookDetailPage(context, message.rid.toString());
if (message.message_type == "10") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString());
} else if (message.message_type == "1") {
NavigatorUtil.goHasOrderFoodPage(context, rid: message.rid);
}
}
},
child: Stack(
... ... @@ -123,16 +128,35 @@ class MessageItem extends StatelessWidget {
fontSize: 30,
content: message.message_type == "10" ? "立即处理" : "立即查看",
state: 1,
onPress: () {
onPress: () async {
messageDialogModel.removeMessage(message.id);
//message_type:10 跳转在线预订 11 取消订单 1 提前点餐
if (message.message_type == "10") {
NavigatorUtil.goHandleOnlinePage(
context, message.rid.toString(), message.id);
} else {
} else if (message.message_type == "11") {
NavigatorUtil.goNotebookDetailPage(
context, message.rid.toString());
bus.emit("remove_untreated_message", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": message.id,
"status": message.message_type == "1"
? "is_read"
: "is_handle"
};
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
} else if (message.message_type == "1") {
//提前点餐
NavigatorUtil.goHasOrderFoodPage(context,
rid: message.rid);
bus.emit("remove_untreated_message_order", message.id);
Map<String, String> params = {
"sid": Provider.of<UserModel>(context, listen: false)
.user
... ... @@ -142,7 +166,9 @@ class MessageItem extends StatelessWidget {
? "is_read"
: "is_handle"
};
messageDialogModel.setMessageStatus(context, params);
await messageDialogModel.setMessageStatus(
context, params);
bus.emit("refresh_untreated_num"); //刷新未读消息数目
}
},
),
... ...
... ... @@ -10,13 +10,12 @@ import 'package:one_key/utils/dialog_util.dart';
import 'package:audioplayers/audio_cache.dart';
import 'package:one_key/utils/utils.dart';
class MessageDialogModel extends ChangeNotifier{
class MessageDialogModel extends ChangeNotifier {
final _player = AudioCache();
bool showMessageDialog=false;
bool showMessageDialog = false;
List<Message> messages=[];
List<Message> messages = [];
void init() {
_player.load("tts_online.mp3");
... ... @@ -24,70 +23,70 @@ class MessageDialogModel extends ChangeNotifier{
/// 播放
void play(String message_type) {
switch(message_type){
case "10"://在线预订
switch (message_type) {
case "10": //在线预订
_player.play("tts_online.mp3");
break;
case "11"://取消在线预订
case "11": //取消在线预订
_player.play("tts_cancel.mp3");
break;
case "-1"://>3
case "-1": //>3
_player.play("tts_all.mp3");
break;
}
}
//添加一条信息
addMessage(BuildContext context,Message message){
addMessage(BuildContext context, Message message) {
LogUtil.v(message.toString());
play(message.message_type);
messages.add(message);
if(!showMessageDialog){
if (!showMessageDialog) {
DialogUtil.showMessageDialog(context);
}else{
} else {
notifyListeners();
}
}
//移除一条信息
removeMessage(String mid){
messages.removeWhere((message)=>message.id==mid);
removeMessage(String mid) {
messages.removeWhere((message) => message.id == mid);
notifyListeners();
}
//获取未处理在线预订消息
getUntreatedMsg(BuildContext context,Map<String,String> params) async {
getUntreatedMsg(BuildContext context, Map<String, String> params) async {
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.get_message_list,showLoading: false,
data: params)
.request<List>(context, Method.get, HttpUrl.get_message_list,
showLoading: false, data: params)
.catchError((error) {
print(error.toString());
});
if (baseResp!=null&&baseResp.code == Constant.status_success) {
messages=baseResp.data.map<Message>((value){
if (baseResp != null && baseResp.code == Constant.status_success) {
messages = baseResp.data.map<Message>((value) {
return Message.fromJson(value);
}).toList();
messages.removeWhere((message){
if(message.message_type.toString()=="10"){
if(message.status=="4"){
messages.removeWhere((message) {
if (message.message_type.toString() == "10") {
if (message.status == "4") {
return true;
}
return false;
}else if(message.message_type.toString()=="11"){
} else if (message.message_type.toString() == "11") {
return false;
}
return true;
});
if(messages.isNotEmpty){
if(!showMessageDialog){
if (messages.isNotEmpty) {
if (!showMessageDialog) {
DialogUtil.showMessageDialog(context);
}else{
} else {
notifyListeners();
}
if(messages.length>1){
if (messages.length > 1) {
play("-1");
}else{
for(Message message in messages){
} else {
for (Message message in messages) {
play(message.message_type);
}
}
... ... @@ -99,7 +98,7 @@ class MessageDialogModel extends ChangeNotifier{
setMessageStatus(BuildContext context, Map<String, String> params) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.set_message_status,
data: params, showLoading: false)
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
});
... ... @@ -108,4 +107,4 @@ class MessageDialogModel extends ChangeNotifier{
Utils.showToast(baseResp.msg);
}
}
}
\ No newline at end of file
}
... ...
... ... @@ -12,14 +12,14 @@ class MessageModel extends ChangeNotifier {
PageState pageState = PageState.Loading;
int onlineTotal=0;//未处理在线消息数目
int inlineTotal=0;//未处理内部消息数目
int orderTotal=0;//未处理提前点餐消息数目
int onlineTotal = 0; //未处理在线消息数目
int inlineTotal = 0; //未处理内部消息数目
int orderTotal = 0; //未处理提前点餐消息数目
//获取消息
getMessages(BuildContext context, Map<String, String> params,
{showLoading = true}) async {
if(showLoading){
if (showLoading) {
pageState = PageState.Loading;
notifyListeners();
}
... ... @@ -44,7 +44,7 @@ class MessageModel extends ChangeNotifier {
notifyListeners();
});
if (baseResp != null && baseResp.code == Constant.status_success) {
if(params['offset']=="0"){
if (params['offset'] == "0") {
messages = baseResp.data.map<Message>((value) {
return Message.fromJson(value);
}).toList();
... ... @@ -73,24 +73,28 @@ class MessageModel extends ChangeNotifier {
//获取未处理消息数目
Future getUnMsgNum(BuildContext context, Map<String, String> params) async {
BaseResp<Map<String,dynamic>> baseResp = await DioUtil()
.request<Map<String,dynamic>>(context, Method.get, HttpUrl.get_message_num,
data: params, showLoading: false)
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
.request<Map<String, dynamic>>(
context, Method.get, HttpUrl.get_message_num,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
});
if (baseResp != null && baseResp.code == Constant.status_success) {
onlineTotal=int.parse(baseResp.data['online_total'].toString());
inlineTotal=int.parse(baseResp.data['inline_total'].toString());
orderTotal=int.parse(baseResp.data['order_total'].toString());
onlineTotal = int.parse(baseResp.data['online_total'].toString());
inlineTotal = int.parse(baseResp.data['inline_total'].toString());
orderTotal = int.parse(baseResp.data['order_total'].toString());
return;
}
return;
}
//根据消息id移除消息
removeUntreatedMessageByMid(String mid){
messages.removeWhere((element) => element.id==mid);
removeUntreatedMessageByMid(String mid) {
messages.removeWhere((element) => element.id == mid);
if (messages.length == 0) {
pageState = PageState.Empty;
}
notifyListeners();
}
}
... ...