Commit f4b9875776cc1213095e82a7465447d69f63028f

Authored by gaiyaguang
1 parent db777d30

OneKey-debug-v1.0.4

... ... @@ -107,15 +107,15 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
//华为推送
implementation 'cn.jiguang.sdk.plugin:huawei:3.5.4'
implementation 'cn.jiguang.sdk.plugin:huawei:3.5.8'
implementation 'com.huawei.hms:push:3.0.3.301'
//小米推送
implementation 'cn.jiguang.sdk.plugin:xiaomi:3.5.4'
implementation 'cn.jiguang.sdk.plugin:xiaomi:3.5.8'
// //OPPO推送
// implementation 'cn.jiguang.sdk.plugin:oppo:3.4.0'
// implementation 'cn.jiguang.sdk.plugin:oppo:3.5.8'
//
// //vivo推送
// implementation 'cn.jiguang.sdk.plugin:vivo:3.5.4'
// implementation 'cn.jiguang.sdk.plugin:vivo:3.5.8'
}
... ...
... ... @@ -13,7 +13,7 @@ class Manager{
}
String get userName{
return nick_name.isEmpty?user_name:nick_name;
return (nick_name==null||nick_name.isEmpty)?user_name:nick_name;
}
factory Manager.fromJson(Map<String,dynamic> json)=>
... ...
import 'package:json_annotation/json_annotation.dart';
import 'package:one_key/utils/utils.dart';
part 'message.g.dart';
... ... @@ -7,7 +8,7 @@ class Message {
Message();
String id;
String message_type;
dynamic message_type;
String handle_time;//10在线预订 11取消预订
String read_time;
String is_read;
... ... @@ -26,20 +27,38 @@ class Message {
String get rnameStr{
switch(sex.toString()){
case "1"://先生
case "男":
return rname+"先生";
case "2"://女士
case "女":
return rname+"女士";
case "3"://公司
case "公司":
return rname+"公司";
}
}
String get ddateStr{
DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate_long.toString())*1000);
String ymd=dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day);
switch(ddate_solt){
case "1"://早餐
return ymd+" 早餐";
case "2"://午餐
return ymd+" 午餐";
case "3"://晚餐
return ymd+" 晚餐";
default:
return ymd;
}
}
String get cdateStr{
DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString())*1000);
if((DateTime.now().difference(dateTime)).inMilliseconds<60000){
return "刚刚";
}else{
return dateTime.year.toString()+"/"+(dateTime.month<10?"0"+dateTime.month.toString():dateTime.month.toString())+"/"+(dateTime.day<10?"0"+dateTime.day.toString():dateTime.day.toString());
return dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day)+" "+Utils.addZeroNumber(dateTime.hour)+":"+Utils.addZeroNumber(dateTime.minute);
}
}
... ...
... ... @@ -9,7 +9,7 @@ part of 'message.dart';
Message _$MessageFromJson(Map<String, dynamic> json) {
return Message()
..id = json['id'] as String
..message_type = json['message_type'] as String
..message_type = json['message_type'] as dynamic
..handle_time = json['handle_time'] as String
..read_time = json['read_time'] as String
..is_read = json['is_read'] as String
... ...
... ... @@ -40,9 +40,9 @@ class Table {
//获取桌位可坐人数
String get tableNum{
if(max!=null){
if(max!=null&&max.isNotEmpty&&max!="0"){
return "最多可坐$max人";
}else if(table_pnum==null){
}else if(table_pnum==null||table_pnum.isEmpty||table_pnum=="0"){
return "";
}else{
if(table_pnum==most_pnum){
... ... @@ -55,7 +55,7 @@ class Table {
//获取最低消费
String get lowStr{
return low==null?"":"最低消费$low元";
return (low==null||low.isEmpty||low=="0")?"":"最低消费$low元";
}
String get signStr{
... ...
... ... @@ -3,6 +3,8 @@ import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/loading.dart';
import 'base_resp.dart';
... ... @@ -167,6 +169,11 @@ class DioUtil {
/// <BaseResp<T> 返回 status code msg data .
Future<BaseResp<T>> request<T>(BuildContext context,String method, String path,
{data, Options options, CancelToken cancelToken,bool showLoading=true}) async {
bool connectivity=await Utils.checkConnectiviy();
if(!connectivity){
Utils.showToast("网络错误,请稍后重试");
return new Future.error("网络错误,请稍后重试");
}
if(showLoading)Loading.showLoading(context);
Response response = await _dio.request(path,
data: data,
... ...
... ... @@ -18,6 +18,7 @@ import 'package:one_key/widgets/table_item.dart';
import 'package:one_key/models/table.dart' as t;
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'package:one_key/utils/event_bus.dart';
class HandleOnlinePage extends StatefulWidget {
... ... @@ -98,7 +99,9 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
onPressed: () async {
Navigator.of(context).pop();
String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,DateTime.fromMillisecondsSinceEpoch(int.parse(detailEntity.ddate)*1000),detailEntity.ddate_solt);
setReserveStatus("5",tid:tid);
if(tid!=null){
setReserveStatus("5",tid:tid);
}
},
)
],
... ... @@ -108,6 +111,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
//处理在线预订
setReserveStatus(String status,{String tid=""}){
bus.emit("remove_untreated_message",widget.mid);
UserModel userModel=Provider.of<UserModel>(context,listen: false);
Map<String,String> causeMap={
"uid":userModel.user.openid,
... ... @@ -126,6 +130,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
//处理在线预订
setMessageStatus(){
bus.emit("remove_untreated_message",widget.mid);
Map<String,String> params={
"sid":Provider.of<UserModel>(context,listen: false).user.sellerid,
"id":widget.mid,
... ... @@ -187,8 +192,7 @@ class HandleOnlinePageState extends State<HandleOnlinePage> {
color: MyColours.color_ffffff,
width: double.infinity,
height: ScreenUtil().setHeight(80),
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setHeight(26)),
alignment: Alignment.center,
child: Stack(
alignment: Alignment.center,
children: <Widget>[
... ...
... ... @@ -144,8 +144,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
color: MyColours.color_ffffff,
width: double.infinity,
height: ScreenUtil().setHeight(80),
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setHeight(26)),
alignment: Alignment.center,
child: Stack(
alignment: Alignment.center,
children: <Widget>[
... ... @@ -167,10 +166,12 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
list.add(manager.roleUserName);
}
DialogUtil.showSelectCusmanDialog(context,list).then((value){
setState(() {
cusmanText=managers[value.first].userName;
});
_setCurrManager();
if(value!=null){
setState(() {
cusmanText=managers[value.first].userName;
});
_setCurrManager();
}
});
},
child: Text(
... ... @@ -193,7 +194,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
children: <Widget>[
MyDivider(double.infinity, ScreenUtil().setHeight(2)),
RowMultiText("取消原因", detailEntity.cancel?.desc??""),
RowMultiText("取消时间", detailEntity.cancel?.cdateStr),
RowMultiText("取消时间", detailEntity.cancel?.cdateStr??""),
RowMultiText("操作人", detailEntity.cancel?.uname??""),
],
),
... ...
... ... @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/app.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/v_empty_view.dart';
... ... @@ -35,9 +36,19 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
@override
void initState(){
// TODO: implement initState
WidgetsBinding.instance.addObserver(this);
super.initState();
isLogin();
WidgetsBinding.instance.addObserver(this);
WidgetsBinding.instance.addPostFrameCallback((_){
final UserModel userModel=Provider.of<UserModel>(context,listen: false);
if(userModel!=null&&userModel.user!=null){
Future.delayed(Duration(milliseconds: 50),(){
_sellerCodeController.text=userModel.user.sellercode;
_accountController.text=userModel.user.account;
FocusScope.of(context).requestFocus(_pwdFocusNode);
});
}
});
}
handlePostFrame(_){
... ... @@ -94,14 +105,6 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
App.statusBarHeight=MediaQuery.of(context).padding.top;
App.bottomBarHeight=MediaQuery.of(context).padding.bottom;
final UserModel userModel=Provider.of<UserModel>(context);
if(userModel!=null&&userModel.user!=null){
// _sellerCodeController.text=userModel.user.sellercode;
_accountController.text=userModel.user.account;
_sellerCodeController=TextEditingController.fromValue(TextEditingValue(text:userModel.user.sellercode,selection: TextSelection.fromPosition(TextPosition(affinity: TextAffinity.downstream,offset: userModel.user.sellercode.length))));
}
final double prefixIconWidth=ScreenUtil().setWidth(24);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
... ... @@ -140,7 +143,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
hintText: "请输入6位商户编码",
hintStyle: TextStyle(color: MyColours.color_c1c1c1,fontSize: ScreenUtil().setSp(26)),
border: InputBorder.none,
contentPadding: EdgeInsets.all(10)
contentPadding: EdgeInsets.symmetric(vertical: ScreenUtil().setHeight(30),horizontal: ScreenUtil().setWidth(10))
),
onChanged: (_){
setActivate();
... ... @@ -175,7 +178,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
hintText: "请输入4位工号",
hintStyle: TextStyle(color: MyColours.color_c1c1c1,fontSize: ScreenUtil().setSp(26)),
border: InputBorder.none,
contentPadding: EdgeInsets.all(10)
contentPadding: EdgeInsets.symmetric(vertical: ScreenUtil().setHeight(30),horizontal: ScreenUtil().setWidth(10))
),
onChanged: (_){
setActivate();
... ... @@ -210,8 +213,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
decoration: InputDecoration(
hintText: "请输入密码",
hintStyle: TextStyle(color: MyColours.color_c1c1c1,fontSize: ScreenUtil().setSp(26)),
border: InputBorder.none,
contentPadding: EdgeInsets.all(10)
border: InputBorder.none,
contentPadding: EdgeInsets.symmetric(vertical: ScreenUtil().setHeight(30),horizontal: ScreenUtil().setWidth(10))
),
onChanged: (_){
setActivate();
... ...
... ... @@ -69,7 +69,7 @@ class MessageDialogItem extends StatelessWidget {
),
VEmptyView(10),
Text(
"就餐时间:${message.ddate}",
"就餐时间:${message.ddateStr}",
style: TextStyle(
color: textColor,
fontSize: ScreenUtil().setSp(26)),
... ...
... ... @@ -2,9 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/utils/log_util.dart';
import 'package:provider/provider.dart';
import 'package:one_key/utils/event_bus.dart';
import 'message_dialog_item.dart';
class MessageLeftPage extends StatefulWidget {
... ... @@ -23,6 +22,10 @@ class MessageLeftPageState extends State<MessageLeftPage> {
void initState() {
// TODO: implement initState
super.initState();
bus.on("remove_untreated_message",(args){
MessageModel messageModel=Provider.of<MessageModel>(context,listen: false);
messageModel.removeUntreatedMessageByMid(args.toString());
});
_controller=EasyRefreshController();
WidgetsBinding.instance.addPostFrameCallback((_){
getUntreatedMessage();
... ... @@ -64,4 +67,11 @@ class MessageLeftPageState extends State<MessageLeftPage> {
},
);
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
bus.off("remove_untreated_message");
}
}
... ...
... ... @@ -277,7 +277,9 @@ class NoteBookPageState extends State<NoteBookPage> {
child: GestureDetector(
onTap: () {
DialogUtil.showCalendarDialog(context,dateTime).then((day) {
_createDateText(day);
if(day!=null){
_createDateText(day);
}
});
},
child: Text(
... ...
... ... @@ -26,15 +26,17 @@ class SmsModel with ChangeNotifier {
//发送短信
sendSms(BuildContext context, Map<String, String> params) async {
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
.request<Map<String, dynamic>>(context, Method.get, HttpUrl.send_sms,
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.send_sms,
data: params)
.catchError((error) {
print(error.toString());
});
if (baseResp.code == Constant.status_success) {
Utils.showToast("短信发送成功");
} else {
} else if(baseResp.code==396){
Utils.showToast("短信余量不足,请前去充值");
}else{
Utils.showToast(baseResp.msg ?? "");
}
}
... ...
... ... @@ -56,7 +56,7 @@ class MessageDialogModel extends ChangeNotifier{
messages=baseResp.data.map<Message>((value){
return Message.fromJson(value);
}).toList();
messages.removeWhere((message)=>message.message_type!="10");
messages.removeWhere((message)=>message.message_type.toString()!="10");
if(messages.isNotEmpty){
play();
if(!showMessageDialog){
... ...
... ... @@ -24,7 +24,7 @@ class MessageModel extends ChangeNotifier{
untreatedMsgs=baseResp.data.map<Message>((value){
return Message.fromJson(value);
}).toList();
untreatedMsgs.removeWhere((message)=>message.message_type!="10");
untreatedMsgs.removeWhere((message)=>message.message_type.toString()!="10");
notifyListeners();
}
}
... ... @@ -47,8 +47,14 @@ class MessageModel extends ChangeNotifier{
return Message.fromJson(value);
}).toList());
}
treatedMsgs.removeWhere((message)=>message.message_type!="10");
treatedMsgs.removeWhere((message)=>message.message_type.toString()!="10");
notifyListeners();
}
}
//移除未处理在线预订消息
removeUntreatedMessageByMid(String mid){
untreatedMsgs.removeWhere((message)=>message.id==mid);
notifyListeners();
}
}
\ No newline at end of file
... ...
... ... @@ -44,7 +44,7 @@ class UserModel with ChangeNotifier {
Map<String, dynamic> seller = baseResp.data[0]["seller"];
Map<String, dynamic> user = baseResp.data[0]["user"];
Map<String, dynamic> userMap = {
"openid": seller['openid'],
"openid": user['id'],
"account": user['account'],
"role_name": user['role_name'],
"sellerid": seller['id'],
... ...
//订阅者回调签名
typedef void EventCallback(arg);
class EventBus {
//私有构造函数
EventBus._internal();
//保存单例
static EventBus _singleton = new EventBus._internal();
//工厂构造函数
factory EventBus()=> _singleton;
//保存事件订阅者队列,key:事件名(id),value: 对应事件的订阅者队列
var _emap = new Map<Object, List<EventCallback>>();
//添加订阅者
void on(eventName, EventCallback f) {
if (eventName == null || f == null) return;
_emap[eventName] ??= new List<EventCallback>();
_emap[eventName].add(f);
}
//移除订阅者
void off(eventName, [EventCallback f]) {
var list = _emap[eventName];
if (eventName == null || list == null) return;
if (f == null) {
_emap[eventName] = null;
} else {
list.remove(f);
}
}
//触发事件,事件触发后该事件所有订阅者会被调用
void emit(eventName, [arg]) {
var list = _emap[eventName];
if (list == null) return;
int len = list.length - 1;
//反向遍历,防止在订阅者在回调中移除自身带来的下标错位
for (var i = len; i > -1; --i) {
list[i](arg);
}
}
}
//定义一个top-level变量,页面引入该文件后可以直接使用bus
var bus = new EventBus();
\ No newline at end of file
... ...
import 'package:connectivity/connectivity.dart';
import 'package:extended_image/extended_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
... ... @@ -100,4 +101,17 @@ class Utils {
);
shareToWeChat(model);
}
//检查网络连接
static Future<bool> checkConnectiviy()async{
var connectivityResult = await (new Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
// I am connected to a mobile network.
return true;
} else if (connectivityResult == ConnectivityResult.wifi) {
// I am connected to a wifi network.
return true;
}
return false;
}
}
... ...
... ... @@ -15,8 +15,8 @@ class RowMultiText extends StatelessWidget{
return Container(
color: MyColours.color_ffffff,
width: double.infinity,
height: ScreenUtil().setHeight(74),
padding: EdgeInsets.symmetric(vertical: ScreenUtil().setHeight(26)),
height: ScreenUtil().setHeight(80),
alignment: Alignment.center,
child: Stack(
alignment: Alignment.center,
children: <Widget>[
... ...
... ... @@ -134,6 +134,27 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.14.11"
connectivity:
dependency: "direct main"
description:
name: connectivity
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.4.8+2"
connectivity_macos:
dependency: transitive
description:
name: connectivity_macos
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.1.0+2"
connectivity_platform_interface:
dependency: transitive
description:
name: connectivity_platform_interface
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.3"
convert:
dependency: transitive
description:
... ... @@ -793,4 +814,4 @@ packages:
version: "2.2.0"
sdks:
dart: ">=2.7.0 <3.0.0"
flutter: ">=1.12.13+hotfix.4 <1.16.0"
flutter: ">=1.12.13+hotfix.5 <1.16.0"
... ...
... ... @@ -69,6 +69,8 @@ dependencies:
url_launcher: ^5.4.2
# 滚轮选择器
flutter_picker: ^1.1.3
# 网络状态
connectivity: ^0.4.8
dev_dependencies:
flutter_test:
... ...