Commit 0e2fc0ab7980fea183dfc78414978aa5a3508b17

Authored by wdn127929
1 parent d887e3bc

首图+预订信息 接口提交

... ... @@ -361,4 +361,10 @@ class HttpUrl {
static const String set_clear_Message =
"?service=App.PushMsg.SetClearMessage"; // App设置消息处理状态、清理过期消息
static const String set_seller_template_conf =
"?service=App.Seller.SetSellerTemplateConf"; // 商家设置预订安排模板页面
static const String get_seller_template_conf =
"?service=App.Seller.GetSellerTemplateConf"; // 获取商家设置预订安排模板页面
}
... ...
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/utils/utils.dart';
... ... @@ -8,6 +10,7 @@ import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../../../models/get_seller_info_model.dart';
import '../../../../provider/base_info_provider.dart';
import '../../../../provider/marketing_center_provider.dart';
import '../../../../provider/store_base_info_provider.dart';
import '../../../../provider/user_model.dart';
... ... @@ -43,10 +46,15 @@ class _BookInfoPageState extends State<BookInfoPage> {
MarketingCenterProvider marketingCenterProvider;
String tableInfo; //包间信息
StoreBaseIndoProvider _baseIndoProvider;
StoreBaseIndoProvider _storeBaseIndoProvider;
bool addManager = false;
bool addParking = false;
double dateValue;
BaseIndoProvider _baseIndoProvider;
String lat;
String long;
@override
void initState() {
super.initState();
... ... @@ -56,9 +64,43 @@ class _BookInfoPageState extends State<BookInfoPage> {
await marketingCenterProvider.getTableList(context);
await _getStoreBaseinfo();
await _getCustomerActivityBaseinfo();
});
}
_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);
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();
}
}
Widget _item(String title, {bool select, GestureTapCallback onTap}) {
return InkWell(
onTap: onTap,
... ... @@ -101,6 +143,8 @@ class _BookInfoPageState extends State<BookInfoPage> {
DateTime dateTime = DateTime.now();
dateValue = (dateTime.millisecondsSinceEpoch) / 1000;
date = Utils.returnYMDandLunarCalendar(DateTime.now(), context);
String morning =
... ... @@ -160,6 +204,9 @@ class _BookInfoPageState extends State<BookInfoPage> {
//日期增加一天
date = Utils.returnYMDandLunarCalendar(
dateTime.add(Duration(days: 1)), context);
dateValue =
(dateTime.add(Duration(days: 1)).millisecondsSinceEpoch) / 1000;
} else {
//过了晚市
dsolt = '早餐';
... ... @@ -173,8 +220,10 @@ class _BookInfoPageState extends State<BookInfoPage> {
///获取店铺信息
_getStoreBaseinfo() async {
GetSellerInfoSunModel itemModel =
await _baseIndoProvider.getSellerById(context);
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;
... ... @@ -224,9 +273,10 @@ class _BookInfoPageState extends State<BookInfoPage> {
@override
Widget build(BuildContext context) {
_baseIndoProvider = Provider.of<BaseIndoProvider>(context, listen: true);
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
_baseIndoProvider =
_storeBaseIndoProvider =
Provider.of<StoreBaseIndoProvider>(context, listen: false);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
... ... @@ -377,7 +427,14 @@ class _BookInfoPageState extends State<BookInfoPage> {
ClipRRect(
borderRadius: BorderRadius.circular(r(35)),
child: Image.network(
'https://www.ssfiction.com/wp-content/uploads/2020/08/20200805_5f2b1669e9a24.jpg',
_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),
... ... @@ -388,7 +445,7 @@ class _BookInfoPageState extends State<BookInfoPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'专属服务:${username}',
'专属服务:${_baseIndoProvider.baseInfoSunModel.name}',
style: TextStyle(
color: MyColours.color_999999,
fontWeight: FontWeight.bold,
... ... @@ -396,7 +453,7 @@ class _BookInfoPageState extends State<BookInfoPage> {
),
VEmptyView(16),
Text(
'专属服务:${userphone}',
'服务电话:${_baseIndoProvider.baseInfoSunModel.phone}',
style: TextStyle(
color: MyColours.color_999999,
fontWeight: FontWeight.bold,
... ... @@ -499,7 +556,60 @@ class _BookInfoPageState extends State<BookInfoPage> {
fontSize: 34,
height: w(40),
isBold: true,
onPressed: () {},
onPressed: () async {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
if (addParking && parkingIncoC.text.trim().length == 0) {
Utils.showToast('请输入停车信息!');
return false;
}
//接口
Map reserveData = {
'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[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<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'reserve': json.encode(reserveData)
};
bool success = await marketingCenterProvider
.setSellerTemplateConf(context, params, showLoading: true);
if (success) {
Utils.showToast('保存成功');
Navigator.pop(context);
}
},
),
)
],
... ...
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:image_picker/image_picker.dart';
import 'package:one_key/provider/marketing_center_provider.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.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 '../../../../app.dart';
import '../../../../models/theme_color_model.dart';
import '../../../../models/upload_img_model.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/round_button.dart';
import '../../../online_check/photo_view_wiget.dart';
/**
* 首图形象展示
... ... @@ -32,6 +44,12 @@ class _FirstImagePageState extends State<FirstImagePage> {
TextEditingController sloganC = TextEditingController();
FocusNode sloganNode = FocusNode();
final picker = ImagePicker();
UploadImageProvider _uploadImageProvider;
MarketingCenterProvider _marketingCenterProvider;
@override
void initState() {
super.initState();
... ... @@ -179,9 +197,71 @@ class _FirstImagePageState extends State<FirstImagePage> {
)));
}
//查看大图
_showPhotoView(BuildContext context, int index, List imgs,
{isShow = false, List dashName}) async {
// if (imgs.length == 1 &&
// imgs[0] ==
// 'http://nosqn.colorcun.com/custom/lite-online/image/def-banner.png') {
// imgs[0] = 'http://nosqn.colorcun.com/app/seller-hj-empty.png';
// }
Utils.setBarStatus(false, color: Colors.black);
dynamic result = await showGeneralDialog(
context: context,
barrierDismissible: false,
// barrierColor: Colors.red,
barrierLabel:
MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 150),
pageBuilder: (BuildContext context, Animation animation,
Animation secondaryAnimation) {
Widget child = Stack(
children: <Widget>[
PhotoPreview(
initialIndex: index,
photoList: imgs,
isShow: isShow,
dashName: dashName)
],
);
return child;
});
Utils.setBarStatus(true, color: Colors.white);
}
///#相机拍照,单图选择
Future _getFromPictureOrCamera(UploadImgModel imgModel, imageSource) async {
final pickedFile = await picker.getImage(source: imageSource);
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;
// }
UploadImageUtil().startUploadOnly(
context, File(pickedFile.path), 4, true, _uploadImageProvider);
}
}
@override
Widget build(BuildContext context) {
ThemeColorModel themeColerModel = themeColorData[themeColorIndex];
_uploadImageProvider =
Provider.of<UploadImageProvider>(context, listen: true);
_marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
... ... @@ -203,8 +283,6 @@ class _FirstImagePageState extends State<FirstImagePage> {
setState(() {
themeColorIndex = object;
});
App.sp.setInt("themeColor",
themeColorData[themeColorIndex].color.value);
});
}),
VEmptyView(24),
... ... @@ -239,8 +317,9 @@ class _FirstImagePageState extends State<FirstImagePage> {
height: w(39),
child: TextField(
maxLines: 1,
controller: sloganC,
focusNode: sloganNode,
controller: titleC,
focusNode: titleNode,
cursorColor: MyColours.color_F8F9FD,
// autofocuzs: true,
... ... @@ -292,11 +371,11 @@ class _FirstImagePageState extends State<FirstImagePage> {
height: w(39),
child: TextField(
maxLines: 1,
controller: titleC,
focusNode: titleNode,
// autofocus: true,
cursorColor: MyColours.color_F8F9FD,
controller: sloganC,
focusNode: sloganNode,
style: TextStyle(
fontSize: font(20),
foreground: Paint()
... ... @@ -340,37 +419,139 @@ class _FirstImagePageState extends State<FirstImagePage> {
],
),
),
InkWell(
onTap: () {},
child: true
? InkWell(
onTap: () {
print('object');
_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(() {});
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);
},
child: Stack(
alignment: Alignment.bottomCenter,
children: [
Image.network(
'https://www.ssfiction.com/wp-content/uploads/2020/08/20200805_5f2b1669e9a24.jpg',
fit: BoxFit.cover,
),
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),
)),
]))
: Container(
Platform.isAndroid
? Permission.storage
: Permission.photos);
},
child: Container(
color: MyColours.color_d9d9d9,
width: double.infinity,
height: w(210),
height: w(_uploadImageProvider.imgSizefirstImage),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
... ... @@ -394,8 +575,7 @@ class _FirstImagePageState extends State<FirstImagePage> {
))
],
),
),
)
)),
],
),
)),
... ... @@ -412,7 +592,49 @@ class _FirstImagePageState extends State<FirstImagePage> {
fontSize: 34,
height: w(40),
isBold: true,
onPressed: () {},
onPressed: () async {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
if (titleC.text.trim().length == 0) {
Utils.showToast('请输入标题!');
return false;
}
if (titleC.text.trim().length == 0) {
Utils.showToast('请输入店铺slogan!');
return false;
}
if (_uploadImageProvider.firstImage.qiniuUrl == null) {
Utils.showToast('请上传图片!');
return false;
}
if (_uploadImageProvider.firstImage.process < 1) {
Utils.showToast('正在上传图片,请稍等');
return false;
}
App.sp.setInt(
"themeColor", themeColorData[themeColorIndex].color.value);
//接口
Map homeData = {
'theme_color': themeColorData[themeColorIndex].color.value,
'title': titleC.text,
'slogan': sloganC.text,
'image': _uploadImageProvider.firstImage.qiniuUrl
};
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'home': json.encode(homeData)
};
bool success = await _marketingCenterProvider
.setSellerTemplateConf(context, params, showLoading: true);
if (success) {
Utils.showToast('保存成功');
Navigator.pop(context);
}
},
),
)
],
... ...
... ... @@ -2,7 +2,12 @@ import 'package:flutter/material.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';
import '../constant/constant.dart';
import '../models/tableOuter.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
import '../utils/utils.dart';
import 'choose_table_model.dart';
class MarketingCenterProvider extends ChangeNotifier {
... ... @@ -16,4 +21,52 @@ class MarketingCenterProvider extends ChangeNotifier {
needLoading: needLoading);
notifyListeners();
}
// 商家设置预订安排模板页面
Future<bool> setSellerTemplateConf(
BuildContext context, Map<String, String> params,
{bool showLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.set_seller_template_conf,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
Utils.showToast('商家设置预订安排模板页面失败,请重试');
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.data == 0 || baseResp.data == 1) {
return true;
} else {
Utils.showToast('商家设置预订安排模板页面失败,请重试');
}
} else {
Utils.showToast(baseResp.msg);
}
return false;
}
// 获取商家设置预订安排模板页面
Future<bool> getSellerTemplateConf(
BuildContext context, Map<String, String> params,
{bool showLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.get_seller_template_conf,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
Utils.showToast('获取商家设置预订安排模板页面失败,请重试');
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.data == 0 || baseResp.data == 1) {
return true;
} else {
Utils.showToast('获取商家设置预订安排模板页面失败,请重试');
}
} else {
Utils.showToast(baseResp.msg);
}
return false;
}
}
... ...
... ... @@ -19,6 +19,8 @@ class UploadImageProvider extends ChangeNotifier {
UploadImgModel erweima = UploadImgModel(); //二维码
UploadImgModel mentou = UploadImgModel(); //店铺信息----门头照片
UploadImgModel dish = UploadImgModel(); //菜品
UploadImgModel firstImage = UploadImgModel(); //预订安排首图
double imgSizefirstImage = 282;
double imgSizeTouxiang = 76;
double imgSizeErweima = 22;
double imgSizeMenTou = 64;
... ...
... ... @@ -234,6 +234,9 @@ class UploadImageUtil {
} else if (index == 3) {
//3 菜品
uploadImageProvider.dish.process = percent;
} else if (index == 4) {
//4 预订安排首图
uploadImageProvider.firstImage.process = percent;
} else {
//1 二维码
uploadImageProvider.erweima.process = percent;
... ... @@ -293,6 +296,11 @@ class UploadImageUtil {
uploadImageProvider.dish.qiniuUrl = imgUrl;
uploadImageProvider.dish.file = null;
uploadImageProvider.notifyListeners();
}else if (index == 4) {
uploadImageProvider.firstImage.process = 1;
uploadImageProvider.firstImage.qiniuUrl = imgUrl;
uploadImageProvider.firstImage.file = null;
uploadImageProvider.notifyListeners();
}
})
..catchError((dynamic error) {
... ...