Commit 0204e8810cf2f65ab2ec73a7613c26a7ec862fea

Authored by wdn127929
1 parent c2d37c26

检测微信收否绑定过手机号码

... ... @@ -11,14 +11,14 @@ if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = "221"
def flutterVersionCode = "220"
if (flutterVersionCode == null) {
flutterVersionCode = '221'
flutterVersionCode = '220'
}
def flutterVersionName = "2.2.1"
def flutterVersionName = "2.2.0"
if (flutterVersionName == null) {
flutterVersionName = '2.2.1'
flutterVersionName = '2.2.0'
}
apply plugin: 'com.android.application'
... ... @@ -59,6 +59,7 @@ android {
VIVO_APPID: "103886384",
VIVO_APPKEY:"5a04e5c3485c0b19a2911c95dcaff5d2",
PACKAGE_NAME : "com.naji.one_key",// 小米通道
AMAP_KEY : "dbced781d0acd36184d5b4b54da7188d"
]
}
... ... @@ -109,4 +110,6 @@ dependencies {
implementation 'com.tencent.tpns:xiaomi:1.2.0.3-release' // 小米推送
implementation 'com.tencent.tpns:oppo:1.2.0.3-release' // OPPO 推送
implementation 'com.tencent.tpns:vivo:1.2.0.3-release' // vivo 推送
implementation 'com.amap.api:location:latest.integration'
}
... ...
... ... @@ -8,7 +8,10 @@
FlutterApplication and put your custom class here. -->
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
... ...
... ... @@ -79,9 +79,9 @@ PODS:
- Flutter
- sign_in_with_apple (0.0.1):
- Flutter
- sqflite (0.0.2):
- sqflite (0.0.1):
- Flutter
- FMDB (>= 2.7.5)
- FMDB (~> 2.7.2)
- TPNS-iOS (1.2.7.2)
- tpns_flutter_plugin (1.0.4):
- Flutter
... ... @@ -249,7 +249,7 @@ SPEC CHECKSUMS:
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
sign_in_with_apple: 34f3f5456a45fd7ac5fb42905e2ad31dae061b4a
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
TPNS-iOS: 9b35473a4a0d07f2c2730ea1e66c6749c2b98095
tpns_flutter_plugin: 8dbbee157aab91a878f64d056c1383726a6c5c4d
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
... ...
... ... @@ -44,6 +44,7 @@
2DCAB49DF131E02F3BAF38E1 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
720060DA25B9912C0014BE3B /* tts_all.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = tts_all.caf; sourceTree = "<group>"; };
7206E2DB26200F770055D76E /* 一键订Debug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "一键订Debug.entitlements"; sourceTree = "<group>"; };
72DFBB8C25BA6CBF00EE1E5D /* tts_cancel.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = tts_cancel.caf; sourceTree = "<group>"; };
72DFBB8D25BA6CBF00EE1E5D /* tts_pay.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = tts_pay.caf; sourceTree = "<group>"; };
72DFBB8E25BA6CBF00EE1E5D /* tts_new.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = tts_new.caf; sourceTree = "<group>"; };
... ... @@ -138,6 +139,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
7206E2DB26200F770055D76E /* 一键订Debug.entitlements */,
EE6AF9002457DC0C0005E3B9 /* Runner.entitlements */,
EE6AF8FF2457DB720005E3B9 /* RunnerProfile.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
... ... @@ -611,7 +613,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_ENTITLEMENTS = "Runner/一键订Debug.entitlements";
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 170;
... ...
... ... @@ -4,6 +4,10 @@
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:xt04.colorcun.com</string>
... ...
... ... @@ -4,6 +4,10 @@
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:xt04.colorcun.com</string>
... ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:xt04.colorcun.com</string>
</array>
</dict>
</plist>
... ...
... ... @@ -18,6 +18,7 @@ import 'package:one_key/provider/message_dialog_model.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
import 'package:one_key/provider/other_login_provider.dart';
import 'package:one_key/provider/tools.dart';
import 'package:one_key/provider/upload_img_provider.dart';
import 'package:one_key/utils/navigator_util.dart';
... ... @@ -155,7 +156,8 @@ class MyAppState extends State<MyApp> {
textTheme:
TextTheme(overline: TextStyle(decoration: TextDecoration.none)),
tooltipTheme: TooltipThemeData(verticalOffset: -100000)),
home: LoginPage(),
home: ChangeNotifierProvider<OtherLoginProvider>(
create: (_) => OtherLoginProvider(), child: LoginPage()),
onGenerateRoute: App.router.generator,
);
}
... ...
import 'package:json_annotation/json_annotation.dart';
part 'checkbind_phone_model.g.dart';
@JsonSerializable()
class CheckbindPhoneModel extends Object {
@JsonKey(name: 'ret')
int ret;
@JsonKey(name: 'data')
CheckbindPhoneSunModel data;
@JsonKey(name: 'msg')
String msg;
CheckbindPhoneModel(this.ret,this.data,this.msg,);
factory CheckbindPhoneModel.fromJson(Map<String, dynamic> srcJson) => _$CheckbindPhoneModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$CheckbindPhoneModelToJson(this);
}
@JsonSerializable()
class CheckbindPhoneSunModel extends Object {
@JsonKey(name: 'id')
String id;
@JsonKey(name: 'nick_name')
String nickName;
@JsonKey(name: 'role_id')
String roleId;
@JsonKey(name: 'auth_user_id')
String authUserId;
@JsonKey(name: 'seat_openid')
String seatOpenid;
@JsonKey(name: 'sellerid')
String sellerid;
@JsonKey(name: 'seller_code')
String sellerCode;
@JsonKey(name: 'account')
String account;
@JsonKey(name: 'phone')
String phone;
@JsonKey(name: 'user_token')
String userToken;
@JsonKey(name: 'registrationId')
String registrationId;
@JsonKey(name: 'connection_id')
String connectionId;
@JsonKey(name: 'alias')
String alias;
@JsonKey(name: 'password')
String password;
@JsonKey(name: 'is_on_call')
String isOnCall;
@JsonKey(name: 'cdate')
String cdate;
CheckbindPhoneSunModel(this.id,this.nickName,this.roleId,this.authUserId,this.seatOpenid,this.sellerid,this.sellerCode,this.account,this.phone,this.userToken,this.registrationId,this.connectionId,this.alias,this.password,this.isOnCall,this.cdate,);
factory CheckbindPhoneSunModel.fromJson(Map<String, dynamic> srcJson) => _$CheckbindPhoneSunModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$CheckbindPhoneSunModelToJson(this);
}
... ...
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'checkbind_phone_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
CheckbindPhoneModel _$CheckbindPhoneModelFromJson(Map<String, dynamic> json) {
return CheckbindPhoneModel(
json['ret'] as int,
json['data'] == null
? null
: CheckbindPhoneSunModel.fromJson(
json['data'] as Map<String, dynamic>),
json['msg'] as String);
}
Map<String, dynamic> _$CheckbindPhoneModelToJson(
CheckbindPhoneModel instance) =>
<String, dynamic>{
'ret': instance.ret,
'data': instance.data,
'msg': instance.msg
};
CheckbindPhoneSunModel _$CheckbindPhoneSunModelFromJson(
Map<String, dynamic> json) {
return CheckbindPhoneSunModel(
json['id'] as String,
json['nick_name'] as String,
json['role_id'] as String,
json['auth_user_id'] as String,
json['seat_openid'] as String,
json['sellerid'] as String,
json['seller_code'] as String,
json['account'] as String,
json['phone'] as String,
json['user_token'] as String,
json['registrationId'] as String,
json['connection_id'] as String,
json['alias'] as String,
json['password'] as String,
json['is_on_call'] as String,
json['cdate'] as String);
}
Map<String, dynamic> _$CheckbindPhoneSunModelToJson(
CheckbindPhoneSunModel instance) =>
<String, dynamic>{
'id': instance.id,
'nick_name': instance.nickName,
'role_id': instance.roleId,
'auth_user_id': instance.authUserId,
'seat_openid': instance.seatOpenid,
'sellerid': instance.sellerid,
'seller_code': instance.sellerCode,
'account': instance.account,
'phone': instance.phone,
'user_token': instance.userToken,
'registrationId': instance.registrationId,
'connection_id': instance.connectionId,
'alias': instance.alias,
'password': instance.password,
'is_on_call': instance.isOnCall,
'cdate': instance.cdate
};
... ...
... ... @@ -9,4 +9,5 @@ class StoreInfo {
String phone; //接单电话
String photoFront; //门头照片
List enviromentList; //店铺环境
String sellerid; //店铺id
}
... ...
class UserCreateStore {
UserCreateStore();
String id; //uid
String nick_name; //
String role_id; //
String role_name;
String sellerid; //
String seller_code; //
String account; //
}
... ...
... ... @@ -93,5 +93,10 @@ class HttpUrl {
"?service=App.User.CheckSellerAcc"; //APP微信登录后检测是否存在商家
static const String app_sendsms_wxSendSms =
"?service=App.SendSMS.WxSendSms"; //预订安排发短信
static const String add_seller_info =
"?service=App.Seller.AddSeller"; //添加商家信息
static const String get_seller_user_info =
"?service=App.Seller.GetUserData"; //添加商家信息和当前登录人的信息
static const String check_bind_phone =
"?service=App.User.CheckbindPhone"; //APP微信登录后检测是否绑定过手机号
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/app.dart';
import 'package:one_key/models/get_seller_info_model.dart';
import 'package:one_key/models/user.dart';
import 'package:one_key/provider/book_set_time_model.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class CompleteCreateStorePage extends StatefulWidget {
CompleteCreateStorePage({Key key}) : super(key: key);
@override
_CompleteCreateStorePageState createState() =>
_CompleteCreateStorePageState();
}
class _CompleteCreateStorePageState extends State<CompleteCreateStorePage> {
///进入某个店铺
// _loginStore(context, CheckSellerAccSunModel sunModel) {
// UserModel userModel = Provider.of<UserModel>(context, listen: false);
// Map<String, dynamic> seller = sunModel.toJson();
// Map<String, dynamic> userMap = {
// "openid": seller['uid'],
// "account": seller['account'],
// "role_name": seller['role_name'],
// "sellerid": seller['id'],
// "sellercode": seller['seller_code'],
// "sellername": seller['sellername'],
// "sellerphone": seller['seller_tel'],
// "sellerAddr": '',
// "scatter": 0,
// "room": 0,
// "cassette": 0,
// "morning": "",
// "noon": "",
// "night": "",
// };
// userModel.saveUserInfo(User.fromJson(userMap));
// userModel.getSellerInfo(
// context,
// {"seller_id": seller['id'], "seller_openid": seller['openid']},
// userMap);
// }
///通过sellerid获取店铺和当前登录人的基本信息
_getSellerAndUserData() async {
CreateStoreModel createStoreModel =
Provider.of<CreateStoreModel>(context, listen: false);
Map<String, String> params = {
"sellerid": createStoreModel.storeInfo.sellerid,
"openid": App.sp.getString("openid")
};
await createStoreModel.getStoreInfo(context, params);
GetSellerInfoSunModel infoSunModel =
await createStoreModel.getSellerById(context);
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, dynamic> seller = infoSunModel.data.toJson();
Map<String, dynamic> userMap = {
"openid": createStoreModel.userCreateStore.id,
"account": createStoreModel.userCreateStore.account,
"role_name": createStoreModel.userCreateStore.role_name,
"sellerid": createStoreModel.userCreateStore.sellerid,
"sellercode": createStoreModel.userCreateStore.seller_code,
"sellername": seller['sellername'],
"sellerphone": seller['phone'],
"sellerAddr": '',
"scatter": 0,
"room": 0,
"cassette": 0,
"morning": "",
"noon": "",
"night": "",
};
userModel.saveUserInfo(User.fromJson(userMap));
userModel.getSellerInfo(
context,
{"seller_id": seller['id'], "seller_openid": seller['openid']},
userMap);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: SystemAppBar(
'',
onTap: () {
Navigator.pop(context);
},
),
body: InkWell(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(70),
vertical: ScreenUtil().setWidth(80)),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
Utils.getImgPath('complete'),
width: ScreenUtil().setWidth(120),
),
VEmptyView(60),
Text(
'店铺已创建成功',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_333333),
),
VEmptyView(220),
RoundButton(
radius: ScreenUtil().setWidth(10),
text: '继续创建桌位',
fontSize: 34,
gradientStart: MyColours.color_2AB5B7,
gradientEnd: MyColours.color_2AB5B7,
onPressed: () {},
isBold: false,
),
VEmptyView(20),
RoundButton(
radius: ScreenUtil().setWidth(10),
text: '进入店铺',
fontSize: 34,
textColor: MyColours.color_2AB5B7,
gradientStart: Colors.white,
gradientEnd: Colors.white,
borderColor: MyColours.color_2AB5B7,
onPressed: () {
_getSellerAndUserData();
},
isBold: false,
),
])))));
}
}
... ...
... ... @@ -102,48 +102,48 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> {
)),
),
),
VEmptyView(20),
TextField(
controller: _controller,
// textAlignVertical: TextAlignVertical.bottom,
maxLines: 1,
// //光标颜色
// cursorColor:
// widget.isSelect ? Colors.white : MyColours.color_199095,
//输入文本的样式
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(28),
),
// focusNode: _codeNode,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(32),
horizontal: ScreenUtil().setWidth(40)),
border: OutlineInputBorder(),
hintText: '请输入详细地址(选填)',
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: MyColours.color_bff6f7,
width: ScreenUtil().setWidth(2))),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: MyColours.color_bff6f7,
width: ScreenUtil().setWidth(2))),
),
onChanged: (value) {
createStoreModel.storeInfo.addressDetail = value;
},
onEditingComplete: () {
FocusScope.of(context)
.requestFocus(FocusNode()); //点击空白处隐藏键盘
},
keyboardType: TextInputType.text,
),
// VEmptyView(20),
// TextField(
// controller: _controller,
// // textAlignVertical: TextAlignVertical.bottom,
// maxLines: 1,
// // //光标颜色
// // cursorColor:
// // widget.isSelect ? Colors.white : MyColours.color_199095,
// //输入文本的样式
// style: TextStyle(
// color: MyColours.color_333333,
// fontSize: ScreenUtil().setSp(28),
// ),
// // focusNode: _codeNode,
// decoration: InputDecoration(
// contentPadding: EdgeInsets.symmetric(
// vertical: ScreenUtil().setWidth(32),
// horizontal: ScreenUtil().setWidth(40)),
// border: OutlineInputBorder(),
// hintText: '请输入详细地址(选填)',
// hintStyle: TextStyle(
// color: MyColours.color_999999,
// fontSize: ScreenUtil().setSp(28),
// ),
// enabledBorder: OutlineInputBorder(
// borderSide: BorderSide(
// color: MyColours.color_bff6f7,
// width: ScreenUtil().setWidth(2))),
// focusedBorder: OutlineInputBorder(
// borderSide: BorderSide(
// color: MyColours.color_bff6f7,
// width: ScreenUtil().setWidth(2))),
// ),
// onChanged: (value) {
// createStoreModel.storeInfo.addressDetail = value;
// },
// onEditingComplete: () {
// FocusScope.of(context)
// .requestFocus(FocusNode()); //点击空白处隐藏键盘
// },
// keyboardType: TextInputType.text,
// ),
VEmptyView(160),
RoundButton(
text: '下一步',
... ... @@ -154,7 +154,8 @@ class _EnterStoreAddressPageState extends State<EnterStoreAddressPage> {
fontSize: 28,
isBold: false,
onPressed: () {
NavigatorUtil.goEnterStorePositionPage(context);
NavigatorUtil.goEnterStorePhonePage(context);
// NavigatorUtil.goEnterStorePositionPage(context);
},
)
])))));
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/app.dart';
import 'package:one_key/pages/create_store/video_widget.dart';
import 'package:one_key/pages/online_check/img_picker_widget.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/upload_img_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/upload_image_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
... ... @@ -19,10 +22,12 @@ class EnterStoreEnvironmentPage extends StatefulWidget {
_EnterStoreEnvironmentPageState();
}
class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> with AutomaticKeepAliveClientMixin {
class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage>
with AutomaticKeepAliveClientMixin {
@override
bool get wantKeepAlive => true;
ScrollController _controller = ScrollController();
@override
Widget build(BuildContext context) {
return Scaffold(
... ... @@ -76,11 +81,11 @@ class _EnterStoreEnvironmentPageState extends State<EnterStoreEnvironmentPage> w
fontSize: 28,
isBold: false,
onPressed: () {
// _addStoreInfo();
// NavigatorUtil.goEnterStoreAddressPage(
// context);
},
))
])))));
;
}
}
... ...
... ... @@ -6,6 +6,7 @@ import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/route_handles.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
... ... @@ -27,6 +28,54 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> {
super.initState();
}
///添加商家信息
_addStoreInfo() async {
CreateStoreModel createStoreModel =
Provider.of<CreateStoreModel>(context, listen: false);
// UploadImageProvider uploadImageProvider =
// Provider.of<UploadImageProvider>(context, listen: false);
if (createStoreModel.storeInfo.name == null ||
createStoreModel.storeInfo.name.trim().length == 0) {
Utils.showToast('请填写店铺名称!');
return;
}
if (createStoreModel.storeInfo.address == null ||
createStoreModel.storeInfo.address.trim().length == 0) {
Utils.showToast('请选择店铺地址!');
return;
}
if (createStoreModel.storeInfo.phone == null ||
createStoreModel.storeInfo.phone.trim().length == 0) {
Utils.showToast('请填写店铺接单电话!');
return;
}
Map<String, String> params = {
"name": createStoreModel.storeInfo.name,
"phone": createStoreModel.storeInfo.phone,
"map_address": createStoreModel.storeInfo.address,
"long": createStoreModel.storeInfo.lng.toString(),
"lat": createStoreModel.storeInfo.lat.toString(),
};
// print(App.sp.getString("unionid"));
// if (uploadImageProvider.imageListFront.length > 0) {
// params["file"] = uploadImageProvider.imageListFront[0].qiniuUrl;
// }
// if (uploadImageProvider.imageListDenvironment.length > 0) {
// List<String> temp = [];
// for (var i = 0;
// i < uploadImageProvider.imageListDenvironment.length;
// i++) {
// temp.add(uploadImageProvider.imageListDenvironment[i].qiniuUrl);
// }
// params["image"] = Utils.listToStringEnglish(temp);
// }
bool success = await createStoreModel.addStoreInfo(context, params);
if (success) {
//跳转至完成页面
NavigatorUtil.goCompleteStorePage(context);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
... ... @@ -102,7 +151,7 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> {
}),
VEmptyView(160),
RoundButton(
text: '下一步',
text: '完成',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
... ... @@ -110,7 +159,8 @@ class _EnterStorePhonePageState extends State<EnterStorePhonePage> {
fontSize: 28,
isBold: false,
onPressed: () {
NavigatorUtil.goEnterStoreFrontPhotoPage(context);
_addStoreInfo();
// NavigatorUtil.goEnterStoreFrontPhotoPage(context);
},
)
])))));
... ...
... ... @@ -35,6 +35,7 @@ class _MapChoicePointPageState extends State<MapChoicePointPage> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_requestLocationPermission();
});
... ... @@ -42,7 +43,7 @@ class _MapChoicePointPageState extends State<MapChoicePointPage> {
/// 获取定位权限
_requestLocationPermission() async {
final location = await AmapLocation.instance.fetchLocation(
Location location = await AmapLocation.instance.fetchLocation(
// needAddress: true,
// mode: LocationAccuracy.High,
// timeout: Duration(seconds: 10)
... ...
import 'dart:async';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/app.dart';
import 'package:one_key/models/store_info.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/other_login_provider.dart';
... ... @@ -18,7 +16,8 @@ import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class BindingPhone extends StatefulWidget {
BindingPhone({Key key}) : super(key: key);
final bool wechat;
BindingPhone({Key key, this.wechat = true}) : super(key: key);
@override
_BindingPhoneState createState() => _BindingPhoneState();
... ... @@ -272,34 +271,48 @@ class _BindingPhoneState extends State<BindingPhone> {
fontSize: 34,
isBold: false,
onPressed: () async {
// if (phone == null || phone.trim().length == 0) {
// Utils.showToast('请输入手机号码');
// return;
// }
// if (code == null || code.trim().length == 0) {
// Utils.showToast('请输入验证码');
// return;
// }
// if (model.code != null && !codeEnabled) {
// Utils.showToast('验证码已失效,请重新获取');
// return;
// }
// if (model.code == null) {
// Utils.showToast('请获取验证码');
// return;
// }
// if (model.code != code) {
// Utils.showToast('您输入的验证码不正确,请重新输入');
// return;
// }
CreateStoreModel createStoreModel =
Provider.of<CreateStoreModel>(context,
listen: false);
if (phone == null || phone.trim().length == 0) {
Utils.showToast('请输入手机号码');
return;
}
if (code == null || code.trim().length == 0) {
Utils.showToast('请输入验证码');
return;
}
if (model.code != null && !codeEnabled) {
Utils.showToast('验证码已失效,请重新获取');
return;
}
if (model.code == null) {
Utils.showToast('请获取验证码');
return;
}
if (model.code != code) {
Utils.showToast('您输入的验证码不正确,请重新输入');
return;
}
if (widget.wechat) {
CreateStoreModel createStoreModel =
Provider.of<CreateStoreModel>(context,
listen: false);
createStoreModel.storeInfo = StoreInfo();
//新建店铺默认接单电话号码
createStoreModel.storeInfo.phone = phone;
NavigatorUtil.goIfNeedCreateStorePage(context);
createStoreModel.storeInfo = StoreInfo();
//新建店铺默认接单电话号码
createStoreModel.storeInfo.phone = phone;
NavigatorUtil.goIfNeedCreateStorePage(
context);
} else {
Map<String, String> params = {
"seller_code": '001297',
"alias": "ssahdahgdafgahjkhakjgh",
"account": "0001",
"password": "123456"
};
UserModel userModel = UserModel();
userModel
.login(context, params)
.then((value) {});
}
},
)
... ...
... ... @@ -94,7 +94,8 @@ class _IfNeedCreateStoreState extends State<IfNeedCreateStore> {
Navigator.pop(context);
},
),
body: Padding(
body: Container(
// margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(40)),
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(70)),
child: Consumer<OtherLoginProvider>(builder: (context, model, _) {
... ... @@ -171,6 +172,8 @@ class _IfNeedCreateStoreState extends State<IfNeedCreateStore> {
VEmptyView(100),
Expanded(
child: GridView.builder(
padding: EdgeInsets.only(
bottom: ScreenUtil().setWidth(50)),
// controller: widget.scrollController,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
... ... @@ -248,112 +251,3 @@ class _IfNeedCreateStoreState extends State<IfNeedCreateStore> {
})));
}
}
// body:
// return Padding(
// padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
// ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
// child: EasyRefresh.custom(
// // controller: _controller,
// slivers: [
// SliverList(
// delegate: SliverChildBuilderDelegate(
// (BuildContext context, int index) {
// return Container(
// child: Container(
// alignment: Alignment.centerLeft,
// height: ScreenUtil().setWidth(90),
// child: InkWell(
// onTap: () {
// //跳转至新建店铺流程
// NavigatorUtil.goEnterStoreNamePage(context);
// },
// child: Text(
// '不是我的店铺,我要重新建店',
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MyColours.color_199095,
// fontSize: ScreenUtil().setSp(30)),
// ),
// )),
// );
// }, childCount: 1),
// ),
// SliverList(
// delegate: SliverChildBuilderDelegate(
// (BuildContext context, int index) {
// return DottedBorder(
// borderType: BorderType.RRect,
// radius: Radius.circular(ScreenUtil().setWidth(10)),
// // padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
// color: MyColours.color_cccccc,
// strokeWidth: ScreenUtil().setWidth(2),
// child: ClipRRect(
// borderRadius: BorderRadius.all(Radius.circular(12)),
// child: Container(
// height: ScreenUtil().setWidth(197 * 2),
// width: ScreenUtil().setWidth(140 * 2),
// color: Colors.amber,
// ),
// ),
// );
// }, childCount: 1),
// ),
// SliverList(
// delegate: SliverChildBuilderDelegate(
// (BuildContext context, int index) {
// return ListTile(
// onTap: () {
// UserModel userModel = Provider.of<UserModel>(
// context,
// listen: false);
// Map<String, dynamic> seller =
// model.sellerList[index].toJson();
// Map<String, dynamic> daily =
// jsonDecode(model.sellerList[index].daily);
// Map<String, dynamic> user = {};
// user['sellerAddr'] = seller['real_address'] ??
// seller['map_address'];
// // user['scatter'] = baseResp.data['scatter'];
// // user['room'] = baseResp.data['room'];
// // user['cassette'] = baseResp.data['cassette'];
// user['morning'] = daily['morning'];
// user['noon'] = daily['noon'];
// user['night'] = daily['night'];
// userModel.saveUserInfo(User.fromJson(user));
// App.sp.setBool("isLogin", true);
// App.sp.setString("is_call_tel",
// seller['is_call_tel'].toString());
// NavigatorUtil.goHomePage(context);
// },
// leading: Container(
// width: ScreenUtil().setWidth(70),
// height: ScreenUtil().setWidth(70),
// decoration: BoxDecoration(
// shape: BoxShape.circle,
// image: DecorationImage(
// image: NetworkImage(
// '${model.sellerList[index].sellerImage}'),
// fit: BoxFit.cover))),
// title: Text(
// '${model.sellerList[index].sellername}',
// style: TextStyle(
// color: MyColours.color_333333,
// fontSize: ScreenUtil().setSp(28),
// ),
// ));
// }, childCount: model.sellerList.length),
// )
// ],
// onRefresh: () async {
// // offset = 0;
// // getMessage(showLoading: false);
// },
// onLoad: () async {
// // offset++;
// // getMessage(showLoading: false);
// },
// ));
// }
// }));
// }}
... ...
... ... @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/models/check_seller_acc_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/v_empty_view.dart';
class IfNeedCreateStoreItem extends StatefulWidget {
... ... @@ -32,12 +33,19 @@ class _IfNeedCreateStoreItemState extends State<IfNeedCreateStoreItem> {
borderRadius: BorderRadius.only(
topRight: Radius.circular(ScreenUtil().setWidth(10)),
topLeft: Radius.circular(ScreenUtil().setWidth(10))),
child: Image.network(
widget.model.sellerImage,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(140 * 2),
height: ScreenUtil().setWidth(140 * 2),
),
child: widget.model.sellerImage != ''
? Image.network(
widget.model.sellerImage,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(140 * 2),
height: ScreenUtil().setWidth(140 * 2),
)
: Image.asset(
Utils.getImgPath('no_image'),
fit: BoxFit.cover,
width: ScreenUtil().setWidth(140 * 2),
height: ScreenUtil().setWidth(140 * 2),
),
)),
Positioned(
bottom: 0,
... ...
... ... @@ -4,12 +4,17 @@ import 'dart:io';
import 'package:common_utils/common_utils.dart';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluwx/fluwx.dart' as fluwx;
import 'package:fluwx/fluwx.dart';
import 'package:one_key/app.dart';
import 'package:one_key/models/checkbind_phone_model.dart';
import 'package:one_key/models/store_info.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/other_login_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/navigator_util.dart';
... ... @@ -46,6 +51,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver {
bool _check = true;
StreamSubscription<BaseWeChatResponse> _wxlogin;
OtherLoginProvider otherLoginProvider;
@override
void initState() {
... ... @@ -169,8 +175,20 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver {
//判断是否已经绑定手机号码 ******调用接口*******
//有,通过手机号吗或者opened查找店铺信息进行登陆
//没有,跳转至绑定手机号码页面
NavigatorUtil.goBindingPhonePage(context);
Map<String, String> params = {
"unionid": responseData["unionid"],
};
CheckbindPhoneSunModel model =
await otherLoginProvider.checkbindPhone(context, params);
if (model != null) {
CreateStoreModel createStoreModel =
Provider.of<CreateStoreModel>(context, listen: false);
createStoreModel.storeInfo = StoreInfo();
createStoreModel.storeInfo.phone = model.phone;
NavigatorUtil.goIfNeedCreateStorePage(context);
} else {
NavigatorUtil.goBindingPhonePage(context);
}
// _getUserInfo(responseData["access_token"], responseData["openid"]);
}
... ... @@ -240,28 +258,52 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver {
// }
}
_showLoading(BuildContext context) {
showGeneralDialog(
context: context,
barrierDismissible: false,
barrierLabel:
MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 150),
pageBuilder: (BuildContext context, Animation animation,
Animation secondaryAnimation) {
return Align(
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Container(
width: 80,
height: 80,
child: CupertinoActivityIndicator(),
),
),
);
}).then((v) {});
}
///苹果登陆
_iosLogin() async {
// String info = await Utils.getDeviceInfoSystem();
// int systemInfo = info.compareTo('13');
// if (systemInfo < 0) {
// Utils.showToast('该系统版本不支持苹果登录');
// return;
// }
// final credential = await SignInWithApple.getAppleIDCredential(
// scopes: [
// AppleIDAuthorizationScopes.email,
// AppleIDAuthorizationScopes.fullName,
// ],
// webAuthenticationOptions: WebAuthenticationOptions(
// // TODO: Set the `clientId` and `redirectUri` arguments to the values you entered in the Apple Developer portal during the setup
// clientId: 'com.naji.zdap',
// redirectUri: Uri.parse(
// 'https://flutter-sign-in-with-apple-example.glitch.me/callbacks/sign_in_with_apple',
// ),
// ),
// );
String info = await Utils.getDeviceInfoSystem();
int systemInfo = info.compareTo('13');
if (systemInfo < 0) {
Utils.showToast('该系统版本不支持苹果登录');
return;
}
final credential = await SignInWithApple.getAppleIDCredential(
scopes: [
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
webAuthenticationOptions: WebAuthenticationOptions(
// TODO: Set the `clientId` and `redirectUri` arguments to the values you entered in the Apple Developer portal during the setup
clientId: 'com.naji.reserveLine',
redirectUri: Uri.parse(
'https://flutter-sign-in-with-apple-example.glitch.me/callbacks/sign_in_with_apple',
),
),
);
// _showLoading(context);
print(credential.userIdentifier);
NavigatorUtil.goBindingPhonePage(context, wechat: false);
// String mdString = Utils.generateMd5(credential.userIdentifier);
// String temp = mdString.substring(8, mdString.length - 2);
// String openid = 'IOSID_$temp';
... ... @@ -269,7 +311,7 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver {
// App.sp.setString("unionid", '');
// print(openid.length);
// // 第一次授权
// 第一次授权
// if (ObjectUtil.isNotEmpty(credential.familyName)) {
// Map param = {
// 'openid': openid,
... ... @@ -295,8 +337,9 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver {
@override
Widget build(BuildContext context) {
// TODO: implement build
ScreenUtil.init(context, width: 750, height: 1334);
otherLoginProvider =
Provider.of<OtherLoginProvider>(context, listen: false);
final Size size = MediaQuery.of(context).size;
App.screenWidth = size.width;
App.screenHeight = size.height;
... ...
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/models/get_seller_info_model.dart';
import 'package:one_key/models/store_info.dart';
import 'package:one_key/models/user_create_store.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/utils/utils.dart';
/**
* 第三方登陆
* 新建店铺
*/
class CreateStoreModel extends ChangeNotifier {
StoreInfo storeInfo; //新建店铺基本信息
UserCreateStore userCreateStore;
///添加商家信息
Future<dynamic> addStoreInfo(BuildContext context, Map<String, String> params,
{isShowLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.add_seller_info,
data: params, showLoading: isShowLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {}
return false;
});
if (baseResp.code == Constant.status_success) {
// getStoreInfo(context, {});
if (baseResp.data != null) {
storeInfo.sellerid = baseResp.data['sellerid'];
return true;
} else {
// Utils.showToast(baseResp.msg ?? "修改失败");
return false;
}
} else {
if (baseResp != null) {
if (baseResp.msg == '非法请求:手机号已存在') {
Utils.showToast('接单电话已存在,请重新填写接单电话');
} else {
Utils.showToast(baseResp.msg ?? "");
}
}
return false;
}
}
Future<dynamic> getStoreInfo(BuildContext context, Map<String, String> params,
{isShowLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.get_seller_user_info,
data: params, showLoading: isShowLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {}
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.data != null) {
List<dynamic> temp = baseResp.data;
if (temp.length > 0) {
Map<String, dynamic> data = {};
data = temp[0];
print(data.keys);
print(data);
// print(data[0]);
userCreateStore = UserCreateStore();
userCreateStore.id = data['uid'].toString();
userCreateStore.account = data['account'].toString();
userCreateStore.nick_name = data['nick_name'].toString();
userCreateStore.role_id = data['role_id'].toString();
userCreateStore.seller_code = data['seller_code'].toString();
userCreateStore.sellerid = data['sellerid'].toString();
userCreateStore.role_name = data['role_name'].toString();
return true;
}
// coupons = baseResp.data['aid'].split('');
return false;
} else {
// Utils.showToast(baseResp.msg ?? "修改失败");
return false;
}
} else {
if (baseResp != null) {
// Utils.showToast(baseResp.msg ?? "");
}
return false;
}
}
///根据商家ID获取商家信息
Future<GetSellerInfoSunModel> getSellerById(BuildContext context) async {
Map<String, String> params = {
"sellerid": storeInfo.sellerid,
};
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
.request<Map<String, dynamic>>(
context, Method.get, HttpUrl.get_seller_info,
data: params)
.catchError((error) {
print(error.toString());
});
GetSellerInfoSunModel itemModel;
if (baseResp == null) return itemModel;
if (baseResp.code == Constant.status_success) {
if (int.parse(baseResp.status) != Constant.status_success) {
Utils.showToast(baseResp.msg ?? "");
return itemModel;
}
if (baseResp.responseData['data'] != null) {
itemModel = GetSellerInfoModel.fromJson(baseResp.responseData).data;
print(itemModel);
} else {
Utils.showToast(baseResp.msg ?? "");
}
return itemModel;
}
}
}
... ...
... ... @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/check_seller_acc_model.dart';
import 'package:one_key/models/checkbind_phone_model.dart';
import 'package:one_key/models/phone_code_model.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
... ... @@ -66,4 +67,32 @@ class OtherLoginProvider extends ChangeNotifier {
notifyListeners();
return sellerList;
}
/// APP微信登录后检测是否绑定过手机号
Future<CheckbindPhoneSunModel> checkbindPhone(
BuildContext context, Map<String, String> params,
{isShowLoading = true}) async {
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
.request<Map<String, dynamic>>(
context, Method.get, HttpUrl.check_bind_phone,
data: params, showLoading: false)
.catchError((error) {});
CheckbindPhoneSunModel checkbindPhoneSunModel;
if (baseResp.code == Constant.status_success) {
if (baseResp.data == null) {
return checkbindPhoneSunModel;
} else {
//解析解析
checkbindPhoneSunModel =
CheckbindPhoneModel.fromJson(baseResp.responseData).data;
return checkbindPhoneSunModel;
}
} else {
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
return checkbindPhoneSunModel;
;
}
}
}
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
... ... @@ -19,8 +17,7 @@ import 'package:provider/provider.dart';
import 'notebook_model.dart';
class TableManagerModel with ChangeNotifier{
class TableManagerModel with ChangeNotifier {
List<Area> areas = []; //区域列表
List<t.Table> selectTables = []; //选择的桌位
... ... @@ -28,13 +25,13 @@ class TableManagerModel with ChangeNotifier{
List<TableOuter> tableOuterList = []; //区域-桌位列表
Map<String, List<t.Table>> areaTableMap = {}; //区域-桌位Map
List<t.Table> currentTables=[];//当前显示的区域-桌位
List<t.Table> currentTables = []; //当前显示的区域-桌位
Map<String, Notebook> tableMap = {}; //记录已预订桌位对应的订单
String currentArea; //当前选中区域
DateTime dateTime=DateTime.now();
DateTime dateTime = DateTime.now();
String dateText = ""; //当前显示日期时间
int currTimeIndex = 1; //当前选中时间段
... ... @@ -51,18 +48,25 @@ class TableManagerModel with ChangeNotifier{
initTime(BuildContext context) async {
userModel = Provider.of<UserModel>(context, listen: false);
dateTime = DateTime.now();
dateText = "${dateTime.year}年 "+Utils.addZeroNumber(dateTime.month) +
dateText = "${dateTime.year}年 " +
Utils.addZeroNumber(dateTime.month) +
"月" +
Utils.addZeroNumber(dateTime.day) +
"日" +
" 今天";
morning =
userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
noon = userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
night = userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
userModel.user.morning.isEmpty?dailyMap.putIfAbsent("morning", ()=>""):dailyMap.putIfAbsent("morning", () => _getHourAndMinute(morning,1));
userModel.user.noon.isEmpty?dailyMap.putIfAbsent("noon", ()=>""):dailyMap.putIfAbsent("noon", () => _getHourAndMinute(noon,2));
userModel.user.night.isEmpty?dailyMap.putIfAbsent("night", ()=>""):dailyMap.putIfAbsent("night", () => _getHourAndMinute(night,3));
userModel.user.morning.isEmpty
? dailyMap.putIfAbsent("morning", () => "")
: dailyMap.putIfAbsent("morning", () => _getHourAndMinute(morning, 1));
userModel.user.noon.isEmpty
? dailyMap.putIfAbsent("noon", () => "")
: dailyMap.putIfAbsent("noon", () => _getHourAndMinute(noon, 2));
userModel.user.night.isEmpty
? dailyMap.putIfAbsent("night", () => "")
: dailyMap.putIfAbsent("night", () => _getHourAndMinute(night, 3));
if (dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
... ... @@ -74,13 +78,13 @@ class TableManagerModel with ChangeNotifier{
//未过早市
currTimeIndex = 1;
} else if (dateTime.isAfter(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
morning.split("-")[1] +
":00")) &&
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
morning.split("-")[1] +
":00")) &&
dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
... ... @@ -92,13 +96,13 @@ class TableManagerModel with ChangeNotifier{
//过了早市,未过午市
currTimeIndex = 2;
} else if (dateTime.isAfter(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
noon.split("-")[1] +
":00")) &&
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
noon.split("-")[1] +
":00")) &&
dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
... ... @@ -113,52 +117,72 @@ class TableManagerModel with ChangeNotifier{
//过了晚市
currTimeIndex = 3;
}
await getTableList(context);
getReserveList(context);
List temp = await getTableList(context);
if (temp.length > 0) {
getReserveList(context);
} else {
pageState = PageState.Empty;
notifyListeners();
}
}
getCurrDdateStr(){
String currSelectTime="";
int timeMillsNow=DateTime.now().millisecondsSinceEpoch;
if(currTimeIndex==1){
List<String> mornings=_getHourAndMinute(morning, 1);
for(String temp in mornings){
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))){
currSelectTime=temp;
getCurrDdateStr() {
String currSelectTime = "";
int timeMillsNow = DateTime.now().millisecondsSinceEpoch;
if (currTimeIndex == 1) {
List<String> mornings = _getHourAndMinute(morning, 1);
for (String temp in mornings) {
if (timeMillsNow <=
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "$temp:00"))) {
currSelectTime = temp;
break;
}
}
}else if(currTimeIndex==2){
List<String> noons=_getHourAndMinute(noon, 2);
for(String temp in noons){
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))){
currSelectTime=temp;
if(noons.contains("12:30")&&DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))<DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "12:30:00"))){
currSelectTime="12:30";
} else if (currTimeIndex == 2) {
List<String> noons = _getHourAndMinute(noon, 2);
for (String temp in noons) {
if (timeMillsNow <=
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "$temp:00"))) {
currSelectTime = temp;
if (noons.contains("12:30") &&
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "$temp:00")) <
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "12:30:00"))) {
currSelectTime = "12:30";
}
break;
}
}
}else{
List<String> nights=_getHourAndMinute(night, 3);
for(String temp in nights){
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))){
currSelectTime=temp;
if(nights.contains("18:30")&&DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))<DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "18:30:00"))){
currSelectTime="18:30";
} else {
List<String> nights = _getHourAndMinute(night, 3);
for (String temp in nights) {
if (timeMillsNow <=
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "$temp:00"))) {
currSelectTime = temp;
if (nights.contains("18:30") &&
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "$temp:00")) <
DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "18:30:00"))) {
currSelectTime = "18:30";
}
break;
}
}
}
LogUtil.v("currSelectTime:$currSelectTime");
String ddateStr=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$currSelectTime:00")).toString();
return ddateStr.substring(0,10);
String ddateStr = DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime)
.replaceRange(11, 19, "$currSelectTime:00"))
.toString();
return ddateStr.substring(0, 10);
}
//根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
_getHourAndMinute(
String hourAndMinuteStr, int mnd) {
_getHourAndMinute(String hourAndMinuteStr, int mnd) {
List tempDate = hourAndMinuteStr.split("-");
String beginDate = tempDate[0];
String endDate = tempDate[1];
... ... @@ -211,7 +235,7 @@ class TableManagerModel with ChangeNotifier{
Map<String, String> params = {"sellerid": userModel.user.sellerid};
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.table_list,
data: params,showLoading: false)
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
if (error is MyError) {
... ... @@ -229,17 +253,22 @@ class TableManagerModel with ChangeNotifier{
}
notifyListeners();
});
tableOuterList=[];
if(baseResp.code==Constant.status_success){
tableOuterList = [];
if (baseResp.code == Constant.status_success) {
if (baseResp.data.length == 0) {
pageState = PageState.ConnectivityError;
notifyListeners();
}
if ((baseResp.data[0] as List).isEmpty) {
pageState = PageState.Empty;
notifyListeners();
return [];
}
tableOuterList=(baseResp.data[0] as List).map((value){
TableOuter tableOuter=TableOuter();
tableOuter.name=value["name"];
tableOuter.list=(value["list"] as List).map((table){
return t.Table.fromJson(table as Map<String,dynamic>);
tableOuterList = (baseResp.data[0] as List).map((value) {
TableOuter tableOuter = TableOuter();
tableOuter.name = value["name"];
tableOuter.list = (value["list"] as List).map((table) {
return t.Table.fromJson(table as Map<String, dynamic>);
}).toList();
return tableOuter;
}).toList();
... ... @@ -283,21 +312,21 @@ class TableManagerModel with ChangeNotifier{
String _getRdate() {
//一天开始时间
double startDay = (DateTime.parse((dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" 00:00:00"))
.millisecondsSinceEpoch) /
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" 00:00:00"))
.millisecondsSinceEpoch) /
1000;
//一天结束时间
double endDay = (DateTime.parse((dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" 23:59:59"))
.millisecondsSinceEpoch) /
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" 23:59:59"))
.millisecondsSinceEpoch) /
1000;
return startDay.floor().toString() + "-" + endDay.floor().toString();
}
... ... @@ -312,7 +341,8 @@ class TableManagerModel with ChangeNotifier{
table.sign = "";
table.notebookId = "";
table.reserver = "";
if (table.tablestatus == "0") {//没有用餐中
if (table.tablestatus == "0") {
//没有用餐中
if (tableMap["${table.id}"] != null) {
Notebook notebook = tableMap["${table.id}"];
table.sign = notebook.status;
... ... @@ -325,7 +355,8 @@ class TableManagerModel with ChangeNotifier{
count++;
}
}
} else {//用餐中
} else {
//用餐中
table.sign = "2";
table.notebookId = "";
}
... ... @@ -337,16 +368,17 @@ class TableManagerModel with ChangeNotifier{
areas.add(area);
}
currentArea = areaTableMap.keys.first;
currentTables=areaTableMap[currentArea];
currentTables = areaTableMap[currentArea];
pageState = PageState.Success;
notifyListeners();
}
//生成日期文本
createDateText(BuildContext context,DateTime day) {
createDateText(BuildContext context, DateTime day) {
if (Utils.isOneDay(day, dateTime)) return; //日期没变
DateTime dateNow = DateTime.now();
dateText = "${day.year}年 "+Utils.addZeroNumber(day.month) +
dateText = "${day.year}年 " +
Utils.addZeroNumber(day.month) +
"月" +
Utils.addZeroNumber(day.day) +
"日";
... ... @@ -364,18 +396,19 @@ class TableManagerModel with ChangeNotifier{
}
//获取桌位数据
Future<dynamic> setSwitchStatus(BuildContext context,Map<String,String> params) async {
Future<dynamic> setSwitchStatus(
BuildContext context, Map<String, String> params) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.set_switch_status,
data: params,showLoading: true)
data: params, showLoading: true)
.catchError((error) {
print(error.toString());
});
if(baseResp==null)return null;
if(baseResp.code==Constant.status_success){
if (baseResp == null) return null;
if (baseResp.code == Constant.status_success) {
return baseResp.data;
}else{
} else {
Utils.showToast(baseResp.msg);
}
}
}
\ No newline at end of file
}
... ...
... ... @@ -85,4 +85,5 @@ class MyColours {
static const Color color_EEDBC4 = Color(0xffEEDBC4);
static const Color color_BA9953 = Color(0xffBA9953);
static const Color color_D7F7F7 = Color(0xffD7F7F7);
static const Color color_2AB5B7 = Color(0xff2AB5B7);
}
... ...
... ... @@ -10,6 +10,7 @@ import 'package:one_key/pages/coupon/coupon_edit_page.dart';
import 'package:one_key/pages/coupon/coupon_history_page.dart';
import 'package:one_key/pages/coupon/coupon_page.dart';
import 'package:one_key/pages/coupon/coupon_selecet_page.dart';
import 'package:one_key/pages/create_store/complete_create_store.dart';
import 'package:one_key/pages/create_store/create_store.dart';
import 'package:one_key/pages/create_store/enter_store_address.dart';
import 'package:one_key/pages/create_store/enter_store_environment.dart';
... ... @@ -42,6 +43,7 @@ import 'package:one_key/pages/table/select_table_page.dart';
import 'package:one_key/pages/webview/webview_page.dart';
import 'package:one_key/provider/book_set_time_model.dart';
import 'package:one_key/provider/choose_table_model.dart';
import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/notebook_detail_change_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/order_food_provider.dart';
... ... @@ -54,7 +56,8 @@ import 'package:provider/provider.dart';
// 登录页
var loginHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
return LoginPage();
return ChangeNotifierProvider<OtherLoginProvider>(
create: (_) => OtherLoginProvider(), child: LoginPage());
});
// 跳转到主页
... ... @@ -291,9 +294,9 @@ var bindingPhonePageHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
// FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
bool wechat = FluroConvertUtils.string2bool(params["wechat"].first);
return ChangeNotifierProvider<OtherLoginProvider>(
create: (_) => OtherLoginProvider(), child: BindingPhone());
create: (_) => OtherLoginProvider(), child: BindingPhone(wechat: wechat));
});
///是否新建店铺页面
... ... @@ -302,8 +305,7 @@ var ifNeedCreateStorePageHandler = new Handler(
// CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
// FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
return ChangeNotifierProvider<OtherLoginProvider>(
create: (_) => OtherLoginProvider(),
child: IfNeedCreateStore());
create: (_) => OtherLoginProvider(), child: IfNeedCreateStore());
});
///新建店铺页面
... ... @@ -401,3 +403,13 @@ var enterStoreEnvironmentPageHandler = new Handler(
// return ChangeNotifierProvider<UploadImageProvider>(
// create: (_) => UploadImageProvider(), child: EnterStoreEnvironmentPage());
});
///店铺环境
var completeCreateStorePageHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// CouponSunModel couponSunModel = CouponSunModel.fromJson(json.decode(
// FluroConvertUtils.fluroCnParamsDecode(params["couponSunModel"].first)));
// String urlStr = FluroConvertUtils.fluroCnParamsDecode(params["urlStr"].first);
return CompleteCreateStorePage();
});
... ...
... ... @@ -39,9 +39,8 @@ class Routes {
static String enter_store_time = "/enter_store_time"; //店铺营业时间
static String enter_store_phone = "/enter_store_phone"; //接单电话
static String enter_store_front_photo = "/enter_store_front_photo"; //门头照片
static String enter_store_environment = "/enter_store_environment"; //店铺环境
static String enter_store_environment = "/enter_store_environment"; //店铺环境
static String complete_create_store = "/complete_create_store"; //创建店铺完成
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
... ... @@ -84,10 +83,13 @@ class Routes {
router.define(enter_store_position, handler: enterStorePositionPageHandler);
router.define(enter_store_time, handler: enterStoreTimePageHandler);
router.define(enter_store_phone, handler: enterStorePhonePageHandler);
router.define(enter_store_front_photo, handler: enterStoreFrontPhotoPageHandler);
router.define(enter_store_environment, handler: enterStoreEnvironmentPageHandler);
router.define(enter_store_front_photo,
handler: enterStoreFrontPhotoPageHandler);
router.define(enter_store_environment,
handler: enterStoreEnvironmentPageHandler);
router.define(complete_create_store,
handler: completeCreateStorePageHandler);
}
}
... ...
... ... @@ -197,8 +197,9 @@ class NavigatorUtil {
/// 绑定手机号吗页面
static Future<dynamic> goBindingPhonePage(BuildContext context,
{replace = false}) {
return _navigateTo(context, "${Routes.binding_phone}", replace: replace);
{replace = false, bool wechat = true}) {
return _navigateTo(context, "${Routes.binding_phone}?wechat=${wechat}",
replace: replace);
}
/// 是否新建店铺页面
... ... @@ -276,4 +277,11 @@ class NavigatorUtil {
return _navigateTo(context, "${Routes.enter_store_environment}",
replace: replace);
}
/// 新建店铺完成页面
static Future<dynamic> goCompleteStorePage(BuildContext context,
{replace = false}) {
return _navigateTo(context, "${Routes.complete_create_store}",
replace: replace);
}
}
... ...
... ... @@ -100,6 +100,7 @@ dependencies:
photo: ^0.4.8
#苹果登陆
sign_in_with_apple: ^2.5.1
# sign_in_with_apple: ^3.0.0
# video_thumbnail: ^0.2.5
video_player: ^1.0.1
chewie:
... ...