Commit f507313cb2b5808ef50e1373840bc00374b3b23c

Authored by wdn127929
1 parent 41c53bf0

预订信息模块OK

... ... @@ -83,19 +83,21 @@ class MarkHomeModel {
String title; //
String slogan; //
String image; //
String isFirstImage;
MarkHomeModel({
this.themeColor,
this.title,
this.slogan,
this.image,
});
MarkHomeModel(
{this.themeColor,
this.title,
this.slogan,
this.image,
this.isFirstImage});
MarkHomeModel.fromJson(Map<String, dynamic> json) {
themeColor = json['theme_color'];
title = json['title'];
slogan = json['slogan'];
image = json['image'];
isFirstImage = json['id_first_image'];
}
Map<String, dynamic> toJson() {
... ... @@ -104,6 +106,7 @@ class MarkHomeModel {
data['title'] = this.title;
data['slogan'] = this.slogan;
data['image'] = this.image;
data['id_first_image'] = this.isFirstImage;
return data;
}
}
... ... @@ -330,6 +333,8 @@ class MarkMarketingModel {
String isCommentsCoupon;
List<CouponSunModel> couponDataListComments;
String isLogo; //
MarkMarketingModel(
{this.isArrival,
this.isLink,
... ... @@ -344,7 +349,8 @@ class MarkMarketingModel {
this.couponDataList,
this.isComments,
this.isCommentsCoupon,
this.couponDataListComments});
this.couponDataListComments,
this.isLogo});
MarkMarketingModel.fromJson(Map<String, dynamic> json) {
isTranspond = json['is_transpond'];
... ... @@ -365,7 +371,13 @@ class MarkMarketingModel {
//旧数据map
couponDataList.add(CouponSunModel.fromJson(json['coupon_data']));
} else {
var couponData = convert.jsonDecode(json['coupon_data']);
var couponData;
if (json['coupon_data'] is String) {
couponData = convert.jsonDecode(json['coupon_data']);
} else {
couponData = json['coupon_data'];
}
if (couponData is List) {
couponData.forEach((v) {
couponDataList.add(CouponSunModel.fromJson(v));
... ... @@ -382,6 +394,7 @@ class MarkMarketingModel {
}
}
isComments = json['is_comments'];
isLogo = json['is_logo'];
isCommentsCoupon = json['is_comments_coupon'];
if (json['coupon_data_comments'] != null) {
... ... @@ -391,7 +404,13 @@ class MarkMarketingModel {
couponDataListComments
.add(CouponSunModel.fromJson(json['coupon_data_comments']));
} else {
var couponData = convert.jsonDecode(json['coupon_data_comments']);
var couponData;
if (json['coupon_data_comments'] is String) {
couponData = convert.jsonDecode(json['coupon_data_comments']);
} else {
couponData = json['coupon_data_comments'];
}
if (couponData is List) {
couponData.forEach((v) {
couponDataListComments.add(CouponSunModel.fromJson(v));
... ...
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:image_picker/image_picker.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import '../../../../constant/state.dart';
import '../../../../models/get_seller_info_model.dart';
import '../../../../models/mark_data_model.dart';
import '../../../../models/upload_img_model.dart';
import '../../../../provider/base_info_provider.dart';
import '../../../../provider/marketing_center_provider.dart';
import '../../../../provider/store_base_info_provider.dart';
import '../../../../provider/upload_img_provider.dart';
import '../../../../provider/user_model.dart';
import '../../../../res/colors.dart';
import '../../../../utils/screen_util.dart';
import '../../../../utils/upload_image_util.dart';
import '../../../../widgets/page_exception.dart';
import '../../../../widgets/round_button.dart';
import '../../personnel_type/base_info_personnal_page.dart';
... ... @@ -54,77 +61,90 @@ class _BookInfoPageState extends State<BookInfoPage> {
bool addParking = false;
bool addPhone = true;
bool addFirstImage = true; //附加餐厅首图
bool addLogo = true; //logo是否展示
String dateValue;
BaseIndoProvider _baseIndoProvider;
String lat;
String long;
TextEditingController welcomeC = TextEditingController();
TextEditingController sloganC = TextEditingController();
FocusNode sloganNode = FocusNode();
final picker = ImagePicker();
UploadImageProvider _uploadImageProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_initData(context);
await marketingCenterProvider.getTableList(context);
_getStoreBaseinfo();
_getCustomerActivityBaseinfo();
_getQiniuInfo();
await getSellerTemplateConf();
});
}
getSellerTemplateConf() async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.reserve != null) {
addPhone = marketingCenterProvider.markDataModel.reserve.swichPhone == '0'
? false
: true;
addManager =
marketingCenterProvider.markDataModel.reserve.swichManager == '1'
? true
: false;
addParking =
marketingCenterProvider.markDataModel.reserve.swichPark == '1'
? true
: false;
parkingIncoC.text =
marketingCenterProvider.markDataModel.reserve.parkInfo;
setState(() {});
}
///获取七牛云token
///
_getQiniuInfo() async {
await _uploadImageProvider.getQiniuInfo(context, {});
}
_getCustomerActivityBaseinfo() async {
Map<String, String> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid,
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
};
bool success =
await _baseIndoProvider.getCustomerActivityBaseinfo(context, params);
getSellerTemplateConf() async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success) {
// _nameController.text = _baseIndoProvider.baseInfoSunModel.name;
// nameStr = _baseIndoProvider.baseInfoSunModel.name;
// _uploadImageProvider.touxiang.qiniuUrl =
// _baseIndoProvider.baseInfoSunModel.photo;
// _uploadImageProvider.erweima.qiniuUrl =
// _baseIndoProvider.baseInfoSunModel.qrcode;
// _phoneController.text = _baseIndoProvider.baseInfoSunModel.phone;
// phoneStr = _baseIndoProvider.baseInfoSunModel.phone ?? '';
// _wechatController.text = _baseIndoProvider.baseInfoSunModel.wechat;
// if (_baseIndoProvider.baseInfoSunModel.wechat != null &&
// _baseIndoProvider.baseInfoSunModel.wechat != '' &&
// phoneStr != '' &&
// _baseIndoProvider.baseInfoSunModel.wechat == phoneStr) {
// isSelect = true;
// } else {
// isSelect = false;
// }
// _positionController.text = _baseIndoProvider.baseInfoSunModel.position;
// _uploadImageProvider.imgSizeErweima = 64;
// // setState(() {});
// _uploadImageProvider.notifyListeners();
if (marketingCenterProvider.markDataModel.home != null) {
sloganC.text = marketingCenterProvider.markDataModel.home.slogan ?? '';
_uploadImageProvider.firstImage.qiniuUrl =
marketingCenterProvider.markDataModel.home.image ?? null;
_uploadImageProvider.firstImage.process =
marketingCenterProvider.markDataModel.home.image != null &&
marketingCenterProvider.markDataModel.home.image != ''
? 1
: null;
addFirstImage =
marketingCenterProvider.markDataModel.home.isFirstImage == '1'
? true
: false;
}
if (marketingCenterProvider.markDataModel.reserve != null) {
addPhone =
marketingCenterProvider.markDataModel.reserve.swichPhone == '0'
? false
: true;
addManager =
marketingCenterProvider.markDataModel.reserve.swichManager == '1'
? true
: false;
addParking =
marketingCenterProvider.markDataModel.reserve.swichPark == '1'
? true
: false;
parkingIncoC.text =
marketingCenterProvider.markDataModel.reserve.parkInfo ?? '';
}
if (marketingCenterProvider.markDataModel.marketing != null) {
welcomeC.text =
marketingCenterProvider.markDataModel.marketing.wecomle ?? '';
addLogo = marketingCenterProvider.markDataModel.marketing.isLogo == '1'
? true
: false;
_uploadImageProvider.logo.qiniuUrl =
marketingCenterProvider.markDataModel.marketing.logo ?? null;
_uploadImageProvider.logo.process =
marketingCenterProvider.markDataModel.marketing.logo != null &&
marketingCenterProvider.markDataModel.marketing.logo != ''
? 1
: 0;
}
marketingCenterProvider.pageStateBookInfo = PageState.Success;
setState(() {});
}
}
... ... @@ -159,132 +179,6 @@ class _BookInfoPageState extends State<BookInfoPage> {
)));
}
//初始化时间
_initData(BuildContext context) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
sellername = userModel.user.sellername;
address = userModel.user.sellerAddr;
userphone = userModel.user.userphone;
sellerphone = userModel.user.sellerphone;
username = userModel.user.nickName ?? userModel.user.account;
DateTime dateTime = DateTime.now();
dateValue = ((dateTime.millisecondsSinceEpoch) / 1000).floor().toString();
date = Utils.returnYMDandLunarCalendar(DateTime.now(), context);
String morning =
userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
String noon =
userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
String night =
userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
if (dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
morning.split("-")[1] +
":00"))) {
//未过早市
dsolt = '午餐';
} else if (dateTime.isAfter(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
morning.split("-")[1] +
":00")) &&
dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
noon.split("-")[1] +
":00"))) {
//过了早市,未过午市
dsolt = '晚餐';
} else if (dateTime.isAfter(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
noon.split("-")[1] +
":00")) &&
dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
night.split("-")[1] +
":00"))) {
//过了午市,未过晚市
dsolt = '早餐';
//日期增加一天
date = Utils.returnYMDandLunarCalendar(
dateTime.add(Duration(days: 1)), context);
dateValue =
((dateTime.add(Duration(days: 1)).millisecondsSinceEpoch) / 1000)
.floor()
.toString();
;
} else {
//过了晚市
dsolt = '早餐';
//日期增加一天
date = Utils.returnYMDandLunarCalendar(
dateTime.add(Duration(days: 1)), context);
}
setState(() {});
}
///获取店铺信息
_getStoreBaseinfo() async {
GetSellerInfoSunModel itemModel =
await _storeBaseIndoProvider.getSellerById(context);
if (itemModel != null) {
lat = itemModel.data.lat;
long = itemModel.data.long;
address = itemModel.data.mapAddress??'' + itemModel.data.realAddress??'';
setState(() {});
// _introductionController.text = itemModel.data.sellerdesc;
// // _uploadImageProvider.notifyListeners();
// _countName = _nameController.text.trim().length;
// _countAddress = _addressController.text.trim().length;
// if (itemModel.data.sellerTel.contains(',')) {
// List<String> list = itemModel.data.sellerTel.split(',');
// if (list.length == 2) {
// _phoneController.text = list[0];
// _phoneController2.text = list[1];
// onePhone = false;
// } else {
// _phoneController.text = '';
// _phoneController2.text = '';
// onePhone = true;
// }
// } else {
// _phoneController.text = itemModel.data.sellerTel;
// onePhone = true;
// }
// mapAddress = {
// "address": itemModel.data.mapAddress,
// 'lat': itemModel.data.lat,
// 'lng': itemModel.data.long,
// };
// setState(() {});
}
}
_itemTitleAndSubTtile(String title, String subtitle) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
... ... @@ -301,6 +195,223 @@ class _BookInfoPageState extends State<BookInfoPage> {
);
}
///#相机拍照,单图选择
Future _getFromPictureOrCamera(
UploadImgModel imgModel, imageSource, int type) async {
final pickedFile = await picker.pickImage(source: imageSource);
File compressedFile = await FlutterNativeImage.compressImage(
pickedFile.path,
quality: 50,
percentage: 50);
setState(() {
if (pickedFile != null) {
imgModel.file = File(pickedFile.path);
imgModel.process = 0.01;
} else {
print('No image selected.');
}
});
if (pickedFile != null) {
// if (title == '头像') {
// _uploadImageProvider.imgSizeTouxiang = 76;
// _uploadImageProvider.touxiang.qiniuUrl = null;
// } else {
// _uploadImageProvider.imgSizeErweima = 76;
// _uploadImageProvider.firstImage.qiniuUrl = null;
imgModel.qiniuUrl = null;
// }
bool need = await Utils.sizeNeed(File(pickedFile.path));
File file = File(pickedFile.path);
if (need) {
file = File(compressedFile.absolute.path);
}
UploadImageUtil()
.startUploadOnly(context, file, type, true, _uploadImageProvider);
}
}
///添加图片UI弹出
Future _openModalBottomSheet(
context, UploadImgModel uploadImageModel, int type) async {
final option = await showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
isDismissible: false,
builder: (BuildContext context) {
return Container(
// height: ScreenUtil().setWidth(180 * 2),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(24)),
topRight: Radius.circular(ScreenUtil().setWidth(24)))),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
InkWell(
onTap: () {
// Utils.getPickPermission(context, () {
// _getFromPictureOrCamera(
// _uploadImageProvider.firstImage, ImageSource.camera);
// Navigator.pop(context);
// }, Permission.camera);
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(
uploadImageModel, ImageSource.camera, type);
Navigator.pop(context);
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
},
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(58 * 2),
child: Center(
child: Text(
'拍摄',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)),
),
MyDivider(
double.infinity,
ScreenUtil().setWidth(2),
color: MyColours.color_EEEEEE,
),
InkWell(
onTap: () {
// Utils.getPickPermission(context, () {
// // pickAsset(RequestType.image);
// _getFromPictureOrCamera(
// _uploadImageProvider.firstImage, ImageSource.gallery);
// Navigator.pop(context);
// },
// Platform.isAndroid
// ? Permission.storage
// : Permission.photos);
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(
uploadImageModel, ImageSource.gallery, type);
Navigator.pop(context);
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
},
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(58 * 2),
child: Center(
child: Text(
'从相册选择',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)),
),
MyDivider(
double.infinity,
ScreenUtil().setWidth(10),
color: MyColours.color_EEEEEE,
),
InkWell(
onTap: () {
Navigator.pop(context, '取消');
},
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(58 * 2),
child: Center(
child: Text(
'取消',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)))
],
),
);
});
}
/// 高级筛选输入框
Widget _textFeildWidget(
TextEditingController controller, String name, String hintText) {
return Container(
padding: EdgeInsets.only(
right: ScreenUtil().setWidth(32),
),
margin: EdgeInsets.only(
left: ScreenUtil().setWidth(32),
),
decoration: BoxDecoration(
border: Border(
bottom:
BorderSide(color: MyColours.color_E7E7E7, width: w(0.5)))),
height: w(48),
alignment: Alignment.center,
child: Row(crossAxisAlignment: CrossAxisAlignment.center, children: [
_textWidget(name, MyColours.color_515151, FontWeight.normal, 32),
Expanded(
child: TextField(
maxLines: 1,
controller: controller,
// focusNode: _focusNode,
// autofocus: true,
textAlign: TextAlign.right,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
// textAlignVertical: TextAlignVertical.center,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32),
),
isCollapsed: true, //重点,相当于高度包裹的意思,必须设置为true,不然有默认奇妙的最小高度
border: OutlineInputBorder(borderSide: BorderSide.none),
contentPadding: EdgeInsets.zero,
),
keyboardType: TextInputType.text,
textInputAction: TextInputAction.done,
onChanged: (value) {
// setState(() {});
// _searchSellerLocation();
// customerProvider.searchData(value);
},
onEditingComplete: () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
// contantShowModel.searchData(
// contantShowModel.controller.text);
// _searchSellerLocation();
// _focusNode.unfocus();
},
),
),
]));
}
///弹框text
_textWidget(String title, Color textColor, FontWeight fontWeight, int size) {
return Text(title,
style: TextStyle(
color: textColor,
decoration: TextDecoration.none,
fontWeight: fontWeight,
fontSize: ScreenUtil().setSp(size)));
}
@override
Widget build(BuildContext context) {
_baseIndoProvider = Provider.of<BaseIndoProvider>(context, listen: true);
... ... @@ -308,6 +419,8 @@ class _BookInfoPageState extends State<BookInfoPage> {
Provider.of<MarketingCenterProvider>(context, listen: true);
_storeBaseIndoProvider =
Provider.of<StoreBaseIndoProvider>(context, listen: false);
_uploadImageProvider =
Provider.of<UploadImageProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
... ... @@ -331,7 +444,189 @@ class _BookInfoPageState extends State<BookInfoPage> {
Expanded(
child: SingleChildScrollView(
child: Column(children: [
_item('展示餐厅前台电话号码', select: addPhone, onTap: () {
VEmptyView(24),
_textFeildWidget(welcomeC, '餐厅欢迎语', '点击输入欢迎语'),
VEmptyView(24),
_textFeildWidget(sloganC, '餐厅广告语', '点击输入广告语'),
_item('附加餐厅首图', select: addFirstImage, onTap: () {
setState(() {
addFirstImage = !addFirstImage;
});
}),
VEmptyView(24),
_uploadImageProvider.firstImage.file != null ||
(_uploadImageProvider.firstImage.qiniuUrl != null &&
_uploadImageProvider.firstImage.qiniuUrl != '')
? InkWell(
onTap: () {
double process;
String qiniuUrl;
List<String> tempList = [];
// if (title == '头像') {
process = _uploadImageProvider.firstImage.process;
qiniuUrl =
_uploadImageProvider.firstImage.qiniuUrl;
// } else {
// process = _uploadImageProvider.erweima.process;
// qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
// }
if (qiniuUrl != null && qiniuUrl != '') {
// tempList.add(qiniuUrl);
// ///没有上传完成的不可以点击
// _showPhotoView(context, 0, tempList);
// _uploadImageProvider.firstImage.qiniuUrl = null;
// _uploadImageProvider.firstImage.process = 0;
// setState(() {});
_openModalBottomSheet(context,
_uploadImageProvider.firstImage, 4);
// Utils.getPickPermission(context, () {
// _getFromPictureOrCamera(
// _uploadImageProvider.firstImage,
// ImageSource.gallery);
// },
// Platform.isAndroid
// ? Permission.storage
// : Permission.photos);
}
},
child: Stack(
alignment: Alignment.bottomCenter,
children: [
Stack(clipBehavior: Clip.none, children: [
_uploadImageProvider.firstImage.qiniuUrl !=
null &&
_uploadImageProvider
.firstImage.qiniuUrl !=
''
? Image.network(
_uploadImageProvider
.firstImage.qiniuUrl,
fit: BoxFit.cover,
width: double.infinity,
// width: ScreenUtil()
// .setWidth(imgSize * 2),
height: ScreenUtil().setWidth(
_uploadImageProvider
.imgSizefirstImage *
2),
)
: Image.file(
_uploadImageProvider
.firstImage.file,
fit: BoxFit.cover,
width: double.infinity,
// width: ScreenUtil()
// .setWidth(imgSize * 2),
height: ScreenUtil().setWidth(
_uploadImageProvider
.imgSizefirstImage *
2),
),
Positioned(
left: 0,
top: 0,
child: (_uploadImageProvider
.firstImage.file !=
null) &&
_uploadImageProvider
.firstImage.process !=
1 &&
_uploadImageProvider
.firstImage.process !=
0.01
? Container(
width: ScreenUtil().screenWidth,
height: w(_uploadImageProvider
.imgSizefirstImage),
color: MyColours.color_4D000000,
child: Center(
child: Text('上传中',
style: TextStyle(
color: MyColours
.color_F8F9FD)),
),
)
: Container()),
]),
_uploadImageProvider.firstImage.process == 1
? Container(
width: w(150),
height: w(30),
color: MyColours.color_4D000000,
alignment: Alignment.center,
child: Text(
'点击图片可以更换',
style: TextStyle(
color: MyColours.color_F8F9FD,
fontSize: font(14),
fontWeight: FontWeight.bold),
))
: SizedBox(),
]))
: InkWell(
onTap: () {
// double process;
// String qiniuUrl;
// List<String> tempList = [];
// if (title == '头像') {
// process = _uploadImageProvider.touxiang.process;
// qiniuUrl = _uploadImageProvider.touxiang.qiniuUrl;
// } else {
// process = _uploadImageProvider.erweima.process;
// qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
// }
// if (qiniuUrl != null && qiniuUrl != '') {
// tempList.add(qiniuUrl);
// ///没有上传完成的不可以点击
// _showPhotoView(context, 0, tempList);
// } else {
// Utils.getPickPermission(context, () {
// _getFromPictureOrCamera(
// _uploadImageProvider.firstImage,
// ImageSource.gallery);
// },
// Platform.isAndroid
// ? Permission.storage
// : Permission.photos);
_openModalBottomSheet(
context, _uploadImageProvider.firstImage, 4);
},
child: Container(
color: MyColours.color_d9d9d9,
width: double.infinity,
height: w(_uploadImageProvider.imgSizefirstImage),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// VEmptyView(80),
Image.asset(
Utils.getImgPath('add_img'),
width: w(63),
),
VEmptyView(28),
Container(
width: w(139),
height: w(60),
child: Text(
'点击上传照片\n为了更好的效果\n建议上传16:9照片',
textAlign: TextAlign.center,
style: TextStyle(
height: 1.4,
color: MyColours.color_ffffff,
fontSize: font(14),
fontWeight: FontWeight.bold),
))
],
),
)),
VEmptyView(24),
_item('附加餐厅前台电话号码', select: addPhone, onTap: () {
setState(() {
addPhone = !addPhone;
});
... ... @@ -405,202 +700,178 @@ class _BookInfoPageState extends State<BookInfoPage> {
))
: SizedBox(),
VEmptyView(24),
_item('预订安排通知中附加餐厅Logo图片', select: addLogo, onTap: () {
setState(() {
addLogo = !addLogo;
});
}),
Container(
alignment: Alignment.centerLeft,
padding: EdgeInsets.only(
left: w(16), top: w(12), bottom: w(12), right: w(16)),
child: Text(
'效果预览',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setWidth(32)),
),
),
VEmptyView(24),
Container(
width: double.infinity,
margin: EdgeInsets.symmetric(horizontal: w(10)),
padding: EdgeInsets.symmetric(horizontal: w(8)),
decoration: BoxDecoration(
border: Border(
left: BorderSide(
width: w(2), color: MyColours.color_EEAE74))),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'尊敬的贵宾,您好!',
style: TextStyle(
color: MyColours.color_000000,
fontSize: font(14)),
),
VEmptyView(10),
Text('非常感谢您选择【${sellername}】!',
style: TextStyle(
color: MyColours.color_000000,
fontSize: font(14))),
VEmptyView(30),
_itemTitleAndSubTtile('日期', '${date}'),
VEmptyView(10),
_itemTitleAndSubTtile('餐段', '${dsolt}'),
VEmptyView(10),
marketingCenterProvider.tableOuterList.length > 0 &&
marketingCenterProvider
.tableOuterList[0].list.length >
0
? _itemTitleAndSubTtile('包间',
'${marketingCenterProvider.tableOuterList[0].name}${marketingCenterProvider.tableOuterList[0].list[0].name}')
: SizedBox(),
VEmptyView(10),
marketingCenterProvider.tableOuterList.length > 0 &&
marketingCenterProvider
.tableOuterList[0].list.length >
0
? _itemTitleAndSubTtile('人数',
'${marketingCenterProvider.tableOuterList[0].list[0].tableNum}')
: SizedBox(),
VEmptyView(10),
// _itemTitleAndSubTtile('地址', '${address}'),
// VEmptyView(10),
addParking
? _itemTitleAndSubTtile(
'停车', '${parkingIncoC.text}')
: SizedBox(),
addParking ? VEmptyView(10) : SizedBox(),
if (addPhone)
_itemTitleAndSubTtile('联系', '${sellerphone}'),
VEmptyView(20),
addManager
? Row(
height: w(210),
child: _uploadImageProvider.logo.file != null ||
(_uploadImageProvider.logo.qiniuUrl != null &&
_uploadImageProvider.logo.qiniuUrl != '')
? InkWell(
onTap: () {
double process;
String qiniuUrl;
List<String> tempList = [];
// if (title == '头像') {
process = _uploadImageProvider.logo.process;
qiniuUrl = _uploadImageProvider.logo.qiniuUrl;
// } else {
// process = _uploadImageProvider.erweima.process;
// qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
// }
if (qiniuUrl != null && qiniuUrl != '') {
// tempList.add(qiniuUrl);
// ///没有上传完成的不可以点击
// _showPhotoView(context, 0, tempList);
// _uploadImageProvider.firstImage.qiniuUrl = null;
// _uploadImageProvider.firstImage.process = 0;
// setState(() {});
_openModalBottomSheet(
context, _uploadImageProvider.logo, 9);
// Utils.getPickPermission(context, () {
// _getFromPictureOrCamera(
// _uploadImageProvider.firstImage,
// ImageSource.gallery);
// },
// Platform.isAndroid
// ? Permission.storage
// : Permission.photos);
}
},
child: Stack(
alignment: Alignment.bottomCenter,
children: [
HEmptyView(20),
ClipRRect(
borderRadius:
BorderRadius.circular(r(35)),
child: Image.network(
_baseIndoProvider.baseInfoSunModel ==
null ||
_baseIndoProvider
.baseInfoSunModel
.photo ==
null ||
_baseIndoProvider
.baseInfoSunModel
.photo ==
''
? 'http://nosqn.colorcun.com/yd_person.png'
: _baseIndoProvider
.baseInfoSunModel.photo,
fit: BoxFit.cover,
width: w(70),
height: w(70),
),
Stack(clipBehavior: Clip.none, children: [
_uploadImageProvider.logo.qiniuUrl !=
null &&
_uploadImageProvider
.logo.qiniuUrl !=
''
? Image.network(
_uploadImageProvider
.logo.qiniuUrl,
fit: BoxFit.cover,
width: double.infinity,
// width: ScreenUtil()
// .setWidth(imgSize * 2),
height: w(210),
)
: Image.file(
_uploadImageProvider.logo.file,
fit: BoxFit.cover,
width: double.infinity,
// width: ScreenUtil()
// .setWidth(imgSize * 2),
height: w(210),
),
Positioned(
left: 0,
top: 0,
right: 0,
child: (_uploadImageProvider
.logo.file !=
null) &&
_uploadImageProvider
.logo.process !=
1 &&
_uploadImageProvider
.logo.process !=
0.01
? Container(
width:
ScreenUtil().screenWidth,
height: w(210),
color:
MyColours.color_4D000000,
child: Center(
child: Text('上传中',
style: TextStyle(
color: MyColours
.color_F8F9FD)),
),
)
: Container()),
]),
_uploadImageProvider.logo.process == 1
? Container(
width: w(150),
height: w(30),
color: MyColours.color_4D000000,
alignment: Alignment.center,
child: Text(
'点击图片可以更换',
style: TextStyle(
color: MyColours.color_F8F9FD,
fontSize: font(14),
fontWeight: FontWeight.bold),
))
: SizedBox(),
]))
: InkWell(
onTap: () {
// double process;
// String qiniuUrl;
// List<String> tempList = [];
// if (title == '头像') {
// process = _uploadImageProvider.touxiang.process;
// qiniuUrl = _uploadImageProvider.touxiang.qiniuUrl;
// } else {
// process = _uploadImageProvider.erweima.process;
// qiniuUrl = _uploadImageProvider.erweima.qiniuUrl;
// }
// if (qiniuUrl != null && qiniuUrl != '') {
// tempList.add(qiniuUrl);
// ///没有上传完成的不可以点击
// _showPhotoView(context, 0, tempList);
// } else {
// Utils.getPickPermission(context, () {
// _getFromPictureOrCamera(
// _uploadImageProvider.firstImage,
// ImageSource.gallery);
// },
// Platform.isAndroid
// ? Permission.storage
// : Permission.photos);
_openModalBottomSheet(
context, _uploadImageProvider.logo, 9);
},
child: Container(
// color: MyColours.color_d9d9d9,
width: double.infinity,
height: w(180),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Utils.getImgPath('add_img_grey'),
width: w(63),
),
HEmptyView(20),
// Spacer(),
Expanded(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'专属服务:${_baseIndoProvider.baseInfoSunModel == null || _baseIndoProvider.baseInfoSunModel.name == null ? Provider.of<UserModel>(context, listen: false).user.nickName : _baseIndoProvider.baseInfoSunModel.name}',
style: TextStyle(
color: MyColours.color_999999,
fontWeight: FontWeight.bold,
fontSize: font(12)),
),
VEmptyView(16),
Text(
'服务电话:${_baseIndoProvider.baseInfoSunModel == null || _baseIndoProvider.baseInfoSunModel.phone == null ? Provider.of<UserModel>(context, listen: false).user.userphone : _baseIndoProvider.baseInfoSunModel.phone}',
style: TextStyle(
color: MyColours.color_999999,
fontWeight: FontWeight.bold,
fontSize: font(12)),
),
],
)),
HEmptyView(10),
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
RoundButton(
width: w(72),
height: w(22),
text: '拨打电话',
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_0143A3,
textColor: MyColours.color_0143A3,
radius: r(11),
fontSize: 24,
isBold: true,
onPressed: () {},
),
VEmptyView(16),
RoundButton(
width: w(72),
height: w(22),
text: '复制微信号',
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_0143A3,
textColor: MyColours.color_0143A3,
radius: r(11),
fontSize: 24,
isBold: true,
onPressed: () {},
),
],
VEmptyView(28),
Padding(
padding: EdgeInsets.symmetric(
vertical: w(10),
),
child: Text(
'点击上传餐厅logo',
style: TextStyle(
color: MyColours.color_999999,
fontSize: font(14),
fontWeight: FontWeight.bold),
),
)
],
)
: SizedBox(),
addManager ? VEmptyView(10) : SizedBox(),
Text('欢迎垂询,恭候光临!',
style: TextStyle(
color: MyColours.color_000000,
fontSize: font(14))),
],
),
),
VEmptyView(20),
Container(
width: double.infinity,
margin: EdgeInsets.symmetric(horizontal: w(20)),
padding: EdgeInsets.symmetric(
horizontal: w(15), vertical: w(12)),
decoration: BoxDecoration(
color: MyColours.color_d9d9d9,
borderRadius: BorderRadius.circular(r(5))),
child: Row(
children: [
Image.asset(
Utils.getImgPath('location_blue'),
width: w(16),
),
HEmptyView(28),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('${sellername}',
style: TextStyle(
color: MyColours.color_000000,
fontWeight: FontWeight.bold,
fontSize: font(14))),
VEmptyView(10),
Text('${address ?? ''}',
style: TextStyle(
height: 1.3,
color: MyColours.color_000000,
fontSize: font(14))),
],
))
],
),
),
)),
),
VEmptyView(16)
]),
)),
... ... @@ -620,11 +891,36 @@ class _BookInfoPageState extends State<BookInfoPage> {
onPressed: () async {
FocusScope.of(context)
.requestFocus(FocusNode()); //点击空白处隐藏键盘
// if (sloganC.text.trim().length == 0) {
// Utils.showToast('请输入店铺slogan!');
// return false;
// }
if (addParking && parkingIncoC.text.trim().length == 0) {
Utils.showToast('请输入停车信息!');
return false;
}
if (addFirstImage &&
_uploadImageProvider.firstImage.qiniuUrl == null) {
Utils.showToast('请上传餐厅首图!');
return false;
}
if (_uploadImageProvider.firstImage.process < 1 &&
_uploadImageProvider.firstImage.process > 0) {
Utils.showToast('正在上传餐厅首图!,请稍等');
return false;
}
if (addLogo &&
_uploadImageProvider.logo.qiniuUrl == null) {
Utils.showToast('请上传餐厅logo!');
return false;
}
if (_uploadImageProvider.logo.process < 1) {
Utils.showToast('正在上传餐厅logo!,请稍等');
return false;
}
//接口
Map reserveData = {
... ... @@ -632,46 +928,63 @@ class _BookInfoPageState extends State<BookInfoPage> {
'swich_manager': addManager ? '1' : '0',
'swich_park': addParking ? '1' : '0',
'park_info': parkingIncoC.text,
'seller_name': sellername,
'date': dateValue,
'dsolt': dsolt,
'room': marketingCenterProvider.tableOuterList.length >
0 &&
marketingCenterProvider
.tableOuterList[0].list.length >
0
? '${marketingCenterProvider.tableOuterList[0].name}${marketingCenterProvider.tableOuterList[0].list[0].name}'
: '',
'pnum': marketingCenterProvider.tableOuterList.length >
0 &&
marketingCenterProvider
.tableOuterList[0].list.length >
0
? '${marketingCenterProvider.tableOuterList[0].list[0].tableNum}'
: '',
'address': '${address}',
'seller_phone': '${sellerphone}',
'manager_image':
_baseIndoProvider.baseInfoSunModel.photo == null ||
_baseIndoProvider.baseInfoSunModel.photo ==
''
? 'http://nosqn.colorcun.com/yd_person.png'
: _baseIndoProvider.baseInfoSunModel.photo,
'manager_name':
'${_baseIndoProvider.baseInfoSunModel.name}',
'manager_phone':
'${_baseIndoProvider.baseInfoSunModel.phone}',
'manager_wechat':
'${_baseIndoProvider.baseInfoSunModel.wechat}',
'long': long,
'lat': lat
// 'seller_name': sellername,
// 'date': dateValue,
// 'dsolt': dsolt,
// 'room': marketingCenterProvider.tableOuterList.length >
// 0 &&
// marketingCenterProvider
// .tableOuterList[0].list.length >
// 0
// ? '${marketingCenterProvider.tableOuterList[0].name}${marketingCenterProvider.tableOuterList[0].list[0].name}'
// : '',
// 'pnum': marketingCenterProvider.tableOuterList.length >
// 0 &&
// marketingCenterProvider
// .tableOuterList[0].list.length >
// 0
// ? '${marketingCenterProvider.tableOuterList[0].list[0].tableNum}'
// : '',
// 'address': '${address}',
// 'seller_phone': '${sellerphone}',
// 'manager_image':
// _baseIndoProvider.baseInfoSunModel.photo == null ||
// _baseIndoProvider.baseInfoSunModel.photo ==
// ''
// ? 'http://nosqn.colorcun.com/yd_person.png'
// : _baseIndoProvider.baseInfoSunModel.photo,
// 'manager_name':
// '${_baseIndoProvider.baseInfoSunModel.name}',
// 'manager_phone':
// '${_baseIndoProvider.baseInfoSunModel.phone}',
// 'manager_wechat':
// '${_baseIndoProvider.baseInfoSunModel.wechat}',
// 'long': long,
// 'lat': lat
};
Map marketing = marketingCenterProvider
.markDataModel.marketing
.toJson();
print(marketing);
marketing['is_logo'] = addLogo ? '1' : '0';
marketing['logo'] = _uploadImageProvider.logo.qiniuUrl;
marketing['wecomle'] = welcomeC.text ?? '';
Map home =
marketingCenterProvider.markDataModel.home.toJson();
print(home);
home['slogan'] = sloganC.text;
home['id_first_image'] = addFirstImage ? '1' : '0';
home['image'] = _uploadImageProvider.firstImage.qiniuUrl;
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'reserve': json.encode(reserveData)
'reserve': json.encode(reserveData),
'marketing': json.encode(marketing),
'home': json.encode(home)
};
bool success = await marketingCenterProvider
... ...
... ... @@ -397,9 +397,9 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> {
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(double.infinity, w(0.5),
color: MyColours.color_E7E7E7)),
// _item('首图形象展示', onTap: () {
// NavigatorUtil.goFirstImagePage(context);
// }),
_item('首图形象展示', onTap: () {
NavigatorUtil.goFirstImagePage(context);
}),
_item('预订信息模块设置', onTap: () {
NavigatorUtil.goBookInfoPage(context);
}),
... ...
... ... @@ -20,6 +20,7 @@ class UploadImageProvider extends ChangeNotifier {
UploadImgModel mentou = UploadImgModel(); //店铺信息----门头照片
UploadImgModel dish = UploadImgModel(); //菜品
UploadImgModel firstImage = UploadImgModel(); //预订安排首图
UploadImgModel logo = UploadImgModel(); //预订安排logo
double imgSizefirstImage = 282;
double imgSizeTouxiang = 76;
... ...
... ... @@ -329,6 +329,9 @@ class UploadImageUtil {
} else if (index == 8) {
//4 预订安排首图
uploadImageProvider.storeImage4.process = percent;
} else if (index == 9) {
//9 预订安排logo
uploadImageProvider.logo.process = percent;
} else {
//1 二维码
uploadImageProvider.erweima.process = percent;
... ... @@ -413,6 +416,11 @@ class UploadImageUtil {
uploadImageProvider.storeImage4.qiniuUrl = imgUrl;
uploadImageProvider.storeImage4.file = null;
uploadImageProvider.notifyListeners();
} else if (index == 9) {
uploadImageProvider.logo.process = 1;
uploadImageProvider.logo.qiniuUrl = imgUrl;
uploadImageProvider.logo.file = null;
uploadImageProvider.notifyListeners();
}
})
..catchError((dynamic error) {
... ... @@ -461,6 +469,11 @@ class UploadImageUtil {
uploadImageProvider.storeImage4.qiniuUrl = null;
uploadImageProvider.storeImage4.file = null;
uploadImageProvider.notifyListeners();
} else if (index == 9) {
uploadImageProvider.logo.process = 0;
uploadImageProvider.logo.qiniuUrl = null;
uploadImageProvider.logo.file = null;
uploadImageProvider.notifyListeners();
}
// 取消当前任务
putController.cancel();
... ...