Commit 22eded6035e556672fc419c08f0ceab874b309e8

Authored by wdn127929
1 parent 80257a6b

营销中心-----优惠券-----新建优惠----提前点餐

... ... @@ -99,6 +99,11 @@ class Constant {
'店长',
'前台',
],
'请客人点菜': [
'管理员',
'店长',
'前台',
],
'通知客户': [
'管理员',
'店长',
... ... @@ -170,5 +175,13 @@ class Constant {
'店长',
],
'个人-月订单量': ['客户经理', '收银员', '服务员', '前台'],
'线上券-设置': [
'管理员',
'店长',
],
'充值优惠-设置': [
'管理员',
'店长',
],
};
}
... ...
... ... @@ -91,12 +91,12 @@ class CouponSunModel extends Object {
@JsonKey(name: 'nick_name')
String nickNameShow;
@JsonKey(name: 'grant_num')
@JsonKey(name: 'grant_num')
String grantNum;
bool isCheck = false;
bool showText = false;
bool isMarking = false;
CouponSunModel(
this.id,
... ... @@ -119,7 +119,8 @@ class CouponSunModel extends Object {
this.price,
this.use,
this.expDate,
this.nickNameShow,this.grantNum);
this.nickNameShow,
this.grantNum);
factory CouponSunModel.fromJson(Map<String, dynamic> srcJson) =>
_$CouponSunModelFromJson(srcJson);
... ...
... ... @@ -53,6 +53,7 @@ class RechargeListSunModel {
bool isCheck = false;
String stime;
String etime;
bool isMarking = false;
String get cdateStr {
if (cdate.toString() == '0') {
... ...
... ... @@ -255,7 +255,7 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
// bus.emit('refresh_coupon_list');
EventBus().emit('refresh_coupon_invitation');
bus.emit('refresh_coupon_list_f');
bus.emit('refresh_marketting_page');
// bus.emit('refresh_marketting_page');
bus.emit('refresh_table_m_coupon');
Navigator.pop(context, true);
... ...
... ... @@ -99,7 +99,9 @@ class _CouponItemFState extends State<CouponItemF> {
? MyColours.color_BFC4D4
: notSelect
? sunModel.isType == '1'
? MyColours.color_438E93
? sunModel.isMarking
? MyColours.color_00A870
: MyColours.color_438E93
: MyColours.color_ED7B2F
: MyColours.color_999999,
borderRadius: BorderRadius.only(
... ...
... ... @@ -10,14 +10,17 @@ import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/widgets/h_empty_view.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';
import 'package:barcode_scan2/barcode_scan2.dart';
import '../../provider/marketing_center_provider.dart';
import '../../utils/dialog_util.dart';
import '../../utils/misc.dart';
import '../../utils/screen_util.dart';
import '../../utils/utils.dart';
import 'coupon_has_verification_page.dart';
... ... @@ -165,13 +168,17 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
couponProvider = Provider.of<CouponProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_f3f3f3,
appBar: SystemAppBar(
'线上券',
rightImgName: 'scan.png',
onTapRight: () {
_scan();
},
),
appBar: Utils.getAuthority(context, '线上券-设置')
? SystemAppBar(
'线上券',
rightImgName: 'set_g.png',
onTapRight: () {
NavigatorUtil.goCouponSettingPage(context);
},
)
: SystemAppBar(
'线上券',
),
body: Column(
children: <Widget>[
Container(
... ... @@ -202,7 +209,7 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
unselectedLabelColor: MyColours.color_999999,
labelStyle: TextStyle(
color: MyColours.color_438E93,
fontSize: ScreenUtil().setSp(28),
fontSize: ScreenUtil().setSp(25),
fontWeight: FontWeight.bold),
unselectedLabelStyle: TextStyle(
color: MyColours.color_999999,
... ... @@ -216,23 +223,27 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
children: [
ChangeNotifierProvider<PersonnelProvider>(
create: (_) => PersonnelProvider(),
child: CouponSunPage(index: 0)),
child: ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: CouponSunPage(index: 0))),
ChangeNotifierProvider<PersonnelProvider>(
create: (_) => PersonnelProvider(),
child: CouponSunPage(index: 1)),
child: ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: CouponSunPage(index: 1))),
ChangeNotifierProvider<PersonnelProvider>(
create: (_) => PersonnelProvider(),
child: CouponSunPage(index: 2)),
child: ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: CouponSunPage(index: 2))),
ChangeNotifierProvider<PersonnelProvider>(
create: (_) => PersonnelProvider(),
child: CouponHasVerificationPage()),
],
),
),
if (tabController.index != 3)
Container(
Container(
height: ScreenUtil().setWidth(91 * 2),
width: double.infinity,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
bottom: ScreenUtil().setWidth(35 * 2),
... ... @@ -248,40 +259,83 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
offset: Offset(0, ScreenUtil().setWidth(-2)),
blurRadius: ScreenUtil().setWidth(8))
],
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(16)),
),
),
child: RoundButton(
text: '创建新的优惠券',
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
isBold: false,
fontSize: 28,
onPressed: () async {
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
if (Utils.getAuthority(context, '创建新的优惠券')) {
NavigatorUtil.goCouponCreateSelectTypePage(context);
}
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
// NavigatorUtil.goCouponCreateSelectTypePage(context);
// }
else {
bool needRefresh =
await NavigatorUtil.goCouponEditPage(context);
print(needRefresh);
if (needRefresh != null && needRefresh) {
bus.emit('refresh_coupon_list_f');
//刷新页面数据
// _controller.callRefresh();
// _couponNetworkData(tabController.index);
}
}
},
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(16)),
topRight: Radius.circular(ScreenUtil().setWidth(16))),
),
)
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
tabController.index == 3
? Expanded(
child: RoundButton(
text: '扫码核销',
width: tabController.index == 3
? double.infinity
: w(100),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
isBold: true,
fontSize: 28,
onPressed: () async {
_scan();
},
),
)
: RoundButton(
text: '扫码核销',
width: w(100),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
isBold: true,
fontSize: 28,
onPressed: () async {
_scan();
},
),
if (tabController.index != 3) HEmptyView(30),
if (tabController.index != 3)
Expanded(
child: RoundButton(
text: '创建新的优惠券',
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
isBold: false,
fontSize: 28,
onPressed: () async {
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
if (Utils.getAuthority(context, '创建新的优惠券')) {
NavigatorUtil.goCouponCreateSelectTypePage(context);
}
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
// NavigatorUtil.goCouponCreateSelectTypePage(context);
// }
else {
bool needRefresh =
await NavigatorUtil.goCouponEditPage(context);
print(needRefresh);
if (needRefresh != null && needRefresh) {
bus.emit('refresh_coupon_list_f');
//刷新页面数据
// _controller.callRefresh();
// _couponNetworkData(tabController.index);
}
}
},
),
)
],
))
],
),
// child: Column(
... ...
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../models/coupon_model.dart';
import '../../models/recharge_list_model.dart';
import '../../provider/coupon_provider.dart';
import '../../provider/marketing_center_provider.dart';
import '../../provider/user_model.dart';
import '../../res/colors.dart';
import '../../route/navigator_util.dart';
import '../../utils/event_bus.dart';
import '../../utils/screen_util.dart';
import '../../utils/utils.dart';
import '../../widgets/h_empty_view.dart';
import '../../widgets/round_button.dart';
import '../../widgets/v_empty_view.dart';
/**
* 优惠券设置页面
* */
class CouponSettingPage extends StatefulWidget {
CouponSettingPage({Key key}) : super(key: key);
@override
_CouponSettingPageState createState() => _CouponSettingPageState();
}
class _CouponSettingPageState extends State<CouponSettingPage> {
ScrollController controller = ScrollController();
CouponProvider couponProvider;
MarketingCenterProvider marketingCenterProvider;
bool isTranspond = false; //转发邀请函
bool isArrival = false; //确认到店
bool isOnlineBook = false; //在线预订
bool isOrder = false; //提前点餐
bool isLink = false; //充值优惠活动链接
bool isCoupon = false; // 代金券
bool isRecharge = false; //充值券
String welcome = '';
String qiniuUrl = '';
RechargeListSunModel rechargeData;
String rechargeContent = '';
List<CouponSunModel> couponDataList = [];
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_couponNetworkData();
getSellerTemplateConf();
});
}
getSellerTemplateConf() async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.marketing != null) {
isTranspond =
marketingCenterProvider.markDataModel.marketing.isTranspond == '1'
? true
: false;
isArrival =
marketingCenterProvider.markDataModel.marketing.isArrival == '1'
? true
: false;
isOnlineBook =
marketingCenterProvider.markDataModel.marketing.isOnlineBook == '1'
? true
: false;
isOrder = marketingCenterProvider.markDataModel.marketing.isOrder == '1'
? true
: false;
isLink = marketingCenterProvider.markDataModel.marketing.isLink == '1'
? true
: false;
isCoupon = marketingCenterProvider.markDataModel.marketing.isCoupon == '1'
? true
: false;
isRecharge =
marketingCenterProvider.markDataModel.marketing.isRecharge == '1'
? true
: false;
rechargeData =
marketingCenterProvider.markDataModel.marketing.rechargeData;
couponDataList =
marketingCenterProvider.markDataModel.marketing.couponDataList ?? [];
qiniuUrl = marketingCenterProvider.markDataModel.marketing.logo ?? null;
welcome = marketingCenterProvider.markDataModel.marketing.wecomle;
setState(() {});
}
}
///优惠券设置
_setCouponShow() async {
//接口
Map marketingData = {
// 'isTranspond': isTranspond ? '1' : '0', //转发同行客人
'is_transpond': '1', //转发同行客人
'is_arrival': isArrival ? '1' : '0', //确认到店
'is_online_book': isOnlineBook ? '1' : '0', //在线预订
'is_order': isOrder ? '1' : '0', //去点餐
'is_coupon': isCoupon ? '1' : '0', //代金券暂时
'is_recharge': isRecharge ? '1' : '0', //充值券暂时
'is_link': isLink ? '1' : '0',
'wecomle': welcome ?? '',
'logo': qiniuUrl,
'recharge_data': rechargeData,
'coupon_data': json.encode(couponDataList)
};
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
'marketing': json.encode(marketingData)
};
bool success = await marketingCenterProvider
.setSellerTemplateConf(context, params, showLoading: true);
if (success) {
bus.emit('refresh_coupon_list_f');
Utils.showToast('保存成功');
Navigator.pop(context);
}
}
///获取优惠券列表数据(status == 1)
_couponNetworkData({bool isShowLoading = true}) async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
};
params['status'] = '1';
await couponProvider.getCustomerSelectActivityMarking(context, params,
isShowLoading: isShowLoading);
if (couponDataList == null || couponDataList.length == 0) {
if (couponProvider.couponListSelect != null &&
couponProvider.couponListSelect.length > 0) {
couponDataList.add(couponProvider.couponListSelect[0]);
}
}
setState(() {});
}
///标题
Widget _headItem(String title) {
return Container(
width: double.infinity,
alignment: Alignment.centerLeft,
decoration: BoxDecoration(
border: Border(
bottom:
BorderSide(color: MyColours.color_E7E7E7, width: w(0.5)))),
margin: EdgeInsets.only(left: w(16)),
padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
child: Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: ScreenUtil().setWidth(32)),
),
);
}
///优惠券
Widget _markingCupon({
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Column(
children: [
InkWell(
onTap: onPressedSelect,
child: Row(
children: [
Image.asset(
Utils.getImgPath(select ? 'f_select' : 'f_select_not'),
width: w(20),
),
HEmptyView(20),
Text(
'推荐店内优惠券活动',
style: TextStyle(
fontSize: font(14), color: MyColours.color_515151),
),
Spacer(),
RoundButton(
text: '选择活动',
width: w(72),
height: w(22),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
radius: r(11),
fontSize: 24,
isBold: true,
onPressed: onPressed,
)
],
)),
VEmptyView(20),
ListView.builder(
shrinkWrap: true,
controller: controller,
itemCount: couponDataList.length,
itemBuilder: (BuildContext context, int index) {
CouponSunModel couponData = couponDataList[index];
return _markingCuponItem(
couponData.aname,
_getCouponsDesc(couponData),
couponData.price ?? '',
couponData.use != null && couponData.use.isCash
? '${(double.parse(couponData.price) / double.parse(couponData.use.cash)) * 10}折'
: '',
'切换活动',
select: isCoupon, onPressedSelect: () {
setState(() {
isCoupon = !isCoupon;
});
});
})
],
),
);
}
String _getCouponsDesc(couponData) {
String couponsDesc = '';
if (couponData != null) {
if (couponData.expDate == null) {
couponsDesc = couponData.desc;
} else {
if (couponData.expDate.isNone) {
couponsDesc = '无限制,' + couponData.desc ?? '';
} else if (couponData.expDate.isBirthday) {
couponsDesc = '会员生日当天可用,' + couponData.desc ?? '';
} else if (couponData.expDate.isWeek) {
couponsDesc =
'${couponData.expDate.weekShow},' + couponData.desc ?? '';
}
}
}
return couponsDesc;
}
///优惠券
Widget _markingCuponItem(
String title,
String content,
String subtile,
String discount,
String btnTitle, {
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Container(
padding: EdgeInsets.all(w(12)),
decoration: BoxDecoration(
borderRadius: BorderRadiusDirectional.circular(r(8)),
border: Border.all(width: w(1), color: MyColours.color_DBDBDB)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
constraints: BoxConstraints(maxWidth: w(150)),
child: Text(
title,
style: TextStyle(
fontSize: font(14),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)),
HEmptyView(20),
subtile != ''
? Text(
'¥${subtile}',
style: TextStyle(
fontSize: font(7),
fontWeight: FontWeight.bold,
color: MyColours.color_E34D59),
)
: SizedBox(),
HEmptyView(10),
discount != ''
? Container(
padding: EdgeInsets.symmetric(
horizontal: w(3), vertical: w(2)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(3)),
border: Border.all(
width: w(0.5),
color: MyColours.color_E34D59)),
child: Text(
discount,
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: font(7)),
),
)
: SizedBox(),
],
),
if (content != '') VEmptyView(20),
if (content != '')
Text(
content,
style: TextStyle(
height: 1.2,
fontSize: font(10),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)
],
)),
],
),
),
);
}
///营销推广
Widget _markingItem(
String selectTitle,
String title, {
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(18), top: w(12), right: w(18)),
child: Column(
children: [
InkWell(
onTap: onPressedSelect,
child: Row(
children: [
Image.asset(
Utils.getImgPath(select ? 'f_select' : 'f_select_not'),
width: w(20),
),
HEmptyView(20),
Text(
selectTitle,
style: TextStyle(
fontSize: font(14), color: MyColours.color_515151),
)
],
)),
VEmptyView(20),
Container(
height: w(76),
padding: EdgeInsets.all(w(12)),
decoration: BoxDecoration(
borderRadius: BorderRadiusDirectional.circular(r(8)),
border:
Border.all(width: w(1), color: MyColours.color_DBDBDB)),
child: Text(
title,
maxLines: 2,
style: TextStyle(
fontSize: font(14),
// fontWeight: FontWeight.bold,
color: MyColours.color_515151),
))
],
),
);
}
@override
Widget build(BuildContext context) {
couponProvider = Provider.of<CouponProvider>(context, listen: false);
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: false);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('优惠券设置'),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: controller,
child: Column(
children: [
_headItem('预订安排中附带的营销推广'),
VEmptyView(24),
couponProvider.couponListSelect != null &&
couponProvider.couponListSelect.length > 0
? _markingCupon(
select: isCoupon,
onPressedSelect: () {
setState(() {
isCoupon = !isCoupon;
});
},
onPressed: () async {
//切换活动
Map temp =
await NavigatorUtil.goMarkingCouponSelectPage(
context, {'object': couponDataList});
if (temp['coupon'] != null) {
couponDataList = temp['coupon'];
setState(() {});
}
})
: (couponProvider.couponListSelect == null ||
couponProvider.couponListSelect.length == 0)
? _markingItem(
'推荐店内优惠券活动',
'当前没有可用优惠券,请创建优惠券后再来尝试。',
select: false,
)
: SizedBox(),
],
),
),
),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.only(
left: w(45), right: w(45), top: w(12), bottom: w(25)),
child: RoundButton(
text: '保存',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
radius: r(5),
fontSize: 34,
height: w(40),
isBold: true,
onPressed: () async {
_setCouponShow();
},
),
)
],
));
}
}
... ...
... ... @@ -14,6 +14,9 @@ import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../models/coupon_model.dart';
import '../../provider/marketing_center_provider.dart';
class CouponSunPage extends StatefulWidget {
final int index;
CouponSunPage({Key key, this.index}) : super(key: key);
... ... @@ -23,10 +26,12 @@ class CouponSunPage extends StatefulWidget {
}
class _CouponSunPageState extends State<CouponSunPage> {
MarketingCenterProvider marketingCenterProvider;
CouponProvider couponProvider;
EasyRefreshController _controller = EasyRefreshController();
PersonnelProvider personnelProvider;
List<PersonnelManageSunModel> authUserLists = [];
List<CouponSunModel> couponDataList = [];
@override
void initState() {
... ... @@ -42,10 +47,12 @@ class _CouponSunPageState extends State<CouponSunPage> {
couponProvider.pageStateMine = PageState.Loading;
}
couponProvider.notifyListeners();
_couponNetworkData(widget.index, isShowLoading: false);
// _couponNetworkData(widget.index, isShowLoading: false);
_getCouponData();
bus.on("refresh_coupon_list_f", (arg) {
_couponNetworkData(widget.index);
// _couponNetworkData(widget.index);
_getCouponData();
});
});
}
... ... @@ -56,14 +63,67 @@ class _CouponSunPageState extends State<CouponSunPage> {
}
///获取优惠券列表数据
_couponNetworkData(int index, {bool isShowLoading = true}) async {
Future<bool> _couponNetworkData(int index,
{bool isShowLoading = true}) async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
// 'is_time': '0'
"is_type": index.toString()
};
await couponProvider.getCustomerActivity(context, params, index,
List<CouponSunModel> couponList = await couponProvider.getCustomerActivity(
context, params, index,
isShowLoading: isShowLoading);
if (couponList != null && couponList.length > 0) {
return true;
} else {
return false;
}
// if (widget.index == 0 || widget.index == 1) {
// //营销中心设置的券是可核销的店铺券
// }
}
_getCouponData() async {
Future.wait<bool>([
_couponNetworkData(widget.index, isShowLoading: false),
getSellerTemplateConf(context)
]).then((results) async {
print(results[0]);
if (results[0] && results[1]) {
//成功
couponProvider.couponList.forEach((element) {
couponDataList.forEach((marking) {
if (element.id == marking.id) {
element.isMarking = true;
}
});
});
print(couponProvider.couponList);
setState(() {});
} else {
// if (!results[0]) {
// //没有优惠券
// } else {}
// if (!results[1]) {
// //没有营销中心数据
// } else {}
setState(() {});
}
}).catchError((e) {
print(e);
});
}
Future<bool> getSellerTemplateConf(BuildContext context) async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.marketing != null) {
couponDataList =
marketingCenterProvider.markDataModel.marketing.couponDataList ?? [];
return true;
} else {
return false;
}
}
///修改活动信息
... ... @@ -76,7 +136,7 @@ class _CouponSunPageState extends State<CouponSunPage> {
bool isSuccess = await couponProvider.setCustomerActivity(context, params,
isShowLoading: false);
print(isSuccess);
bus.emit('refresh_marketting_page');
// bus.emit('refresh_marketting_page');
_couponNetworkData(widget.index, isShowLoading: false);
// if (isSuccess) {
// couponProvider.notifyListeners();
... ... @@ -89,6 +149,8 @@ class _CouponSunPageState extends State<CouponSunPage> {
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
couponProvider = Provider.of<CouponProvider>(context, listen: true);
personnelProvider = Provider.of<PersonnelProvider>(context, listen: true);
PageState pageState;
... ...
... ... @@ -2710,6 +2710,80 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
// .length ==
// 0
// ?
if (detailEntity
.order.cookbooklist.length ==
0)
Expanded(
flex: 1,
child: InkWell(
onTap: () {
if (Utils.getAuthority(
context, '请客人点菜') ||
widget.uid ==
userModel
.user.openid) {
Utils.goShareOrderPageToWeChat(
context,
title:
'${Provider.of<UserModel>(context, listen: false).user.nickName ?? Provider.of<UserModel>(context, listen: false).user.sellername}经理邀请您点餐了',
img:
'http://nosqn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148571.jpg',
rid: widget.rid,
// oid: oid,
sid: Provider.of<
UserModel>(
context,
listen: false)
.user
.sellerid);
}
},
child: Container(
margin: EdgeInsets.only(
right: ScreenUtil()
.setWidth(20)),
decoration: BoxDecoration(
color: MyColours
.color_ffffff,
border: Border.all(
width: w(1),
color: !(Utils.getAuthority(
context,
'请客人点菜') ||
widget.uid ==
userModel
.user
.openid)
? MyColours
.color_999999
: MyColours
.color_438E93),
borderRadius: BorderRadius
.circular(ScreenUtil()
.setWidth(10)),
),
child: Align(
alignment:
Alignment.center,
child: Text('请客人点菜',
style: TextStyle(
color: !(Utils.getAuthority(context,
'请客人点菜') ||
widget.uid ==
userModel
.user
.openid)
? MyColours
.color_999999
: MyColours
.color_438E93,
fontSize:
ScreenUtil()
.setSp(
34))),
),
),
)),
Expanded(
flex: 1,
child: InkWell(
... ... @@ -2754,7 +2828,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
),
child: Align(
alignment: Alignment.center,
child: Text('预点菜',
child: Text('经理预排菜',
style: TextStyle(
color: !(Utils.getAuthority(
context,
... ... @@ -2776,7 +2850,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
)),
// : SizedBox(),
Expanded(
flex: 2,
flex: 1,
child: InkWell(
onTap: () {
// String _nameStr = '';
... ...
... ... @@ -611,7 +611,7 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
//初始化信鸽推送
initPlatformState() {
/// 开启DEBUG
XgFlutterPlugin().setEnableDebug(true);
XgFlutterPlugin().setEnableDebug(false);
/// 添加回调事件
XgFlutterPlugin().addEventHandler(
... ...
... ... @@ -65,12 +65,12 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_couponNetworkData();
// _couponNetworkData();
_getNewRechargeList();
getSellerTemplateConf();
bus.on('refresh_marketting_page', (arg) {
_couponNetworkData();
});
// bus.on('refresh_marketting_page', (arg) {
// _couponNetworkData();
// });
bus.on('refresh_marketting_page_recharge', (arg) {
_getNewRechargeList();
});
... ... @@ -80,7 +80,7 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
@override
void dispose() {
_uploadImageProvider.firstImage = UploadImgModel();
bus.off('refresh_marketting_page');
// bus.off('refresh_marketting_page');
bus.off('refresh_marketting_page_recharge');
super.dispose();
... ... @@ -178,25 +178,25 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
}
}
///获取优惠券列表数据(status == 1)
// ///获取优惠券列表数据(status == 1)
_couponNetworkData({bool isShowLoading = true}) async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
};
params['status'] = '1';
// _couponNetworkData({bool isShowLoading = true}) async {
// Map<String, String> params = {
// "uid": Provider.of<UserModel>(context, listen: false).user.openid,
// };
// params['status'] = '1';
await couponProvider.getCustomerSelectActivityMarking(context, params,
isShowLoading: isShowLoading);
if (couponDataList == null || couponDataList.length == 0) {
if (couponProvider.couponListSelect != null &&
couponProvider.couponListSelect.length > 0) {
couponDataList.add(couponProvider.couponListSelect[0]);
// await couponProvider.getCustomerSelectActivityMarking(context, params,
// isShowLoading: isShowLoading);
// if (couponDataList == null || couponDataList.length == 0) {
// if (couponProvider.couponListSelect != null &&
// couponProvider.couponListSelect.length > 0) {
// couponDataList.add(couponProvider.couponListSelect[0]);
setState(() {});
}
}
}
// setState(() {});
// }
// }
// }
///客户互动及店铺推广
Widget _storeItemWidget(String title, String content,
... ... @@ -406,155 +406,155 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
);
}
///优惠券
Widget _markingCupon({
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Column(
children: [
InkWell(
onTap: onPressedSelect,
child: Row(
children: [
Image.asset(
Utils.getImgPath(select ? 'f_select' : 'f_select_not'),
width: w(20),
),
HEmptyView(20),
Text(
'推荐店内代金券优惠',
style: TextStyle(
fontSize: font(14), color: MyColours.color_515151),
),
Spacer(),
RoundButton(
text: '选择活动',
width: w(72),
height: w(22),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
radius: r(11),
fontSize: 24,
isBold: true,
onPressed: onPressed,
)
],
)),
VEmptyView(20),
ListView.builder(
shrinkWrap: true,
controller: controller,
itemCount: couponDataList.length,
itemBuilder: (BuildContext context, int index) {
CouponSunModel couponData = couponDataList[index];
return _markingCuponItem(
couponData.aname,
_getCouponsDesc(couponData),
couponData.price ?? '',
couponData.use != null && couponData.use.isCash
? '${(double.parse(couponData.price) / double.parse(couponData.use.cash)) * 10}折'
: '',
'切换活动',
select: isCoupon, onPressedSelect: () {
setState(() {
isCoupon = !isCoupon;
});
});
})
],
),
);
}
// ///优惠券
// Widget _markingCupon({
// VoidCallback onPressed,
// bool select = false,
// VoidCallback onPressedSelect,
// }) {
// return Container(
// margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
// child: Column(
// children: [
// InkWell(
// onTap: onPressedSelect,
// child: Row(
// children: [
// Image.asset(
// Utils.getImgPath(select ? 'f_select' : 'f_select_not'),
// width: w(20),
// ),
// HEmptyView(20),
// Text(
// '推荐店内代金券优惠',
// style: TextStyle(
// fontSize: font(14), color: MyColours.color_515151),
// ),
// Spacer(),
// RoundButton(
// text: '选择活动',
// width: w(72),
// height: w(22),
// gradientStart: MyColours.color_ffffff,
// gradientEnd: MyColours.color_ffffff,
// borderColor: MyColours.color_438E93,
// textColor: MyColours.color_438E93,
// radius: r(11),
// fontSize: 24,
// isBold: true,
// onPressed: onPressed,
// )
// ],
// )),
// VEmptyView(20),
// ListView.builder(
// shrinkWrap: true,
// controller: controller,
// itemCount: couponDataList.length,
// itemBuilder: (BuildContext context, int index) {
// CouponSunModel couponData = couponDataList[index];
// return _markingCuponItem(
// couponData.aname,
// _getCouponsDesc(couponData),
// couponData.price ?? '',
// couponData.use != null && couponData.use.isCash
// ? '${(double.parse(couponData.price) / double.parse(couponData.use.cash)) * 10}折'
// : '',
// '切换活动',
// select: isCoupon, onPressedSelect: () {
// setState(() {
// isCoupon = !isCoupon;
// });
// });
// })
// ],
// ),
// );
// }
///优惠券
Widget _markingCuponItem(
String title,
String content,
String subtile,
String discount,
String btnTitle, {
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Container(
padding: EdgeInsets.all(w(12)),
decoration: BoxDecoration(
borderRadius: BorderRadiusDirectional.circular(r(8)),
border: Border.all(width: w(1), color: MyColours.color_DBDBDB)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
constraints: BoxConstraints(maxWidth: w(150)),
child: Text(
title,
style: TextStyle(
fontSize: font(14),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)),
HEmptyView(20),
subtile != ''
? Text(
'¥${subtile}',
style: TextStyle(
fontSize: font(7),
fontWeight: FontWeight.bold,
color: MyColours.color_E34D59),
)
: SizedBox(),
HEmptyView(10),
discount != ''
? Container(
padding: EdgeInsets.symmetric(
horizontal: w(3), vertical: w(2)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(3)),
border: Border.all(
width: w(0.5),
color: MyColours.color_E34D59)),
child: Text(
discount,
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: font(7)),
),
)
: SizedBox(),
],
),
if (content != '') VEmptyView(20),
if (content != '')
Text(
content,
style: TextStyle(
height: 1.2,
fontSize: font(10),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)
],
)),
],
),
),
);
}
// ///优惠券
// Widget _markingCuponItem(
// String title,
// String content,
// String subtile,
// String discount,
// String btnTitle, {
// VoidCallback onPressed,
// bool select = false,
// VoidCallback onPressedSelect,
// }) {
// return Container(
// margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
// child: Container(
// padding: EdgeInsets.all(w(12)),
// decoration: BoxDecoration(
// borderRadius: BorderRadiusDirectional.circular(r(8)),
// border: Border.all(width: w(1), color: MyColours.color_DBDBDB)),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Row(
// children: [
// Container(
// constraints: BoxConstraints(maxWidth: w(150)),
// child: Text(
// title,
// style: TextStyle(
// fontSize: font(14),
// fontWeight: FontWeight.bold,
// color: MyColours.color_515151),
// )),
// HEmptyView(20),
// subtile != ''
// ? Text(
// '¥${subtile}',
// style: TextStyle(
// fontSize: font(7),
// fontWeight: FontWeight.bold,
// color: MyColours.color_E34D59),
// )
// : SizedBox(),
// HEmptyView(10),
// discount != ''
// ? Container(
// padding: EdgeInsets.symmetric(
// horizontal: w(3), vertical: w(2)),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(r(3)),
// border: Border.all(
// width: w(0.5),
// color: MyColours.color_E34D59)),
// child: Text(
// discount,
// style: TextStyle(
// color: MyColours.color_E34D59,
// fontSize: font(7)),
// ),
// )
// : SizedBox(),
// ],
// ),
// if (content != '') VEmptyView(20),
// if (content != '')
// Text(
// content,
// style: TextStyle(
// height: 1.2,
// fontSize: font(10),
// fontWeight: FontWeight.bold,
// color: MyColours.color_515151),
// )
// ],
// )),
// ],
// ),
// ),
// );
// }
///营销推广
Widget _markingItem(
... ... @@ -682,27 +682,27 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
color: MyColours.color_ffffff,
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Column(children: [
InkWell(
onTap: () {
setState(() {
isLink = !isLink;
});
},
child: Row(
children: [
Image.asset(
Utils.getImgPath(isLink ? 'f_select' : 'f_select_not'),
width: w(20),
),
HEmptyView(20),
Text(
'推荐店内充值优惠活动链接',
style: TextStyle(
fontSize: font(14), color: MyColours.color_515151),
)
],
)),
VEmptyView(24),
// InkWell(
// onTap: () {
// setState(() {
// isLink = !isLink;
// });
// },
// child: Row(
// children: [
// Image.asset(
// Utils.getImgPath(isLink ? 'f_select' : 'f_select_not'),
// width: w(20),
// ),
// HEmptyView(20),
// Text(
// '推荐店内充值优惠活动链接',
// style: TextStyle(
// fontSize: font(14), color: MyColours.color_515151),
// )
// ],
// )),
// VEmptyView(24),
Container(
height: w(180),
child: _uploadImageProvider.firstImage.file != null ||
... ... @@ -888,37 +888,37 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
}),
),
VEmptyView(40),
Container(
width: w(188),
height: w(22),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(11)),
gradient: LinearGradient(stops: [
-0.57,
0.55,
1.48
], colors: [
MyColours.color_4C8DAD,
MyColours.color_0143A3,
MyColours.color_42A5FF
], begin: Alignment.centerLeft, end: Alignment.centerRight)),
child: RoundButton(
width: w(186),
height: w(20),
text: '点击了解更多会员优惠政策',
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: Colors.transparent,
// borderColor: MyColours.color_999999,
textColor: MyColours.color_999999,
radius: r(11),
fontSize: 24,
// Container(
// width: w(188),
// height: w(22),
// alignment: Alignment.center,
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(r(11)),
// gradient: LinearGradient(stops: [
// -0.57,
// 0.55,
// 1.48
// ], colors: [
// MyColours.color_4C8DAD,
// MyColours.color_0143A3,
// MyColours.color_42A5FF
// ], begin: Alignment.centerLeft, end: Alignment.centerRight)),
// child: RoundButton(
// width: w(186),
// height: w(20),
// text: '点击了解更多会员优惠政策',
// gradientStart: MyColours.color_ffffff,
// gradientEnd: MyColours.color_ffffff,
// borderColor: Colors.transparent,
// // borderColor: MyColours.color_999999,
// textColor: MyColours.color_999999,
// radius: r(11),
// fontSize: 24,
isBold: true,
onPressed: () {},
)),
VEmptyView(18),
// isBold: true,
// onPressed: () {},
// )),
// VEmptyView(18),
// Container(
// height: w(28),
// alignment: Alignment.center,
... ... @@ -932,24 +932,24 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
]));
}
String _getCouponsDesc(couponData) {
String couponsDesc = '';
if (couponData != null) {
if (couponData.expDate == null) {
couponsDesc = couponData.desc;
} else {
if (couponData.expDate.isNone) {
couponsDesc = '无限制,' + couponData.desc ?? '';
} else if (couponData.expDate.isBirthday) {
couponsDesc = '会员生日当天可用,' + couponData.desc ?? '';
} else if (couponData.expDate.isWeek) {
couponsDesc =
'${couponData.expDate.weekShow},' + couponData.desc ?? '';
}
}
}
return couponsDesc;
}
// String _getCouponsDesc(couponData) {
// String couponsDesc = '';
// if (couponData != null) {
// if (couponData.expDate == null) {
// couponsDesc = couponData.desc;
// } else {
// if (couponData.expDate.isNone) {
// couponsDesc = '无限制,' + couponData.desc ?? '';
// } else if (couponData.expDate.isBirthday) {
// couponsDesc = '会员生日当天可用,' + couponData.desc ?? '';
// } else if (couponData.expDate.isWeek) {
// couponsDesc =
// '${couponData.expDate.weekShow},' + couponData.desc ?? '';
// }
// }
// }
// return couponsDesc;
// }
@override
Widget build(BuildContext context) {
... ... @@ -962,7 +962,7 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'营销及客户互动',
'客户互动',
onTap: () {
Navigator.pop(context);
},
... ... @@ -996,85 +996,85 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
isOnlineBook = !isOnlineBook;
});
}, select: isOnlineBook),
_storeItemWidget('向被邀请客人开放“提前点餐”功能。',
'请客人从预定安排直接预先选菜,到店后确认下单,无需服务员花费时间给客户点餐,可以为餐厅节源提效。',
onTap: () {
setState(() {
isOrder = !isOrder;
});
}, select: isOrder),
VEmptyView(24),
_headItem('预订安排中附带的营销推广'),
// _storeItemWidget('向客人开放“提前点餐”功能。',
// '请客人从预订安排直接预先选菜,到店后确认下单,无需服务员花费时间给客户点餐,可以为餐厅节源提效。',
// onTap: () {
// setState(() {
// isOrder = !isOrder;
// });
// }, select: isOrder),
// VEmptyView(24),
_headItem('预订安排底部附带的餐厅logo及欢迎语'),
VEmptyView(24),
couponProvider.couponListSelect != null &&
couponProvider.couponListSelect.length > 0
? _markingCupon(
select: isCoupon,
onPressedSelect: () {
setState(() {
isCoupon = !isCoupon;
});
},
onPressed: () async {
//切换活动
Map temp =
await NavigatorUtil.goMarkingCouponSelectPage(
context, {'object': couponDataList});
if (temp['coupon'] != null) {
couponDataList = temp['coupon'];
// couponProvider.couponListSelect != null &&
// couponProvider.couponListSelect.length > 0
// ? _markingCupon(
// select: isCoupon,
// onPressedSelect: () {
// setState(() {
// isCoupon = !isCoupon;
// });
// },
// onPressed: () async {
// //切换活动
// Map temp =
// await NavigatorUtil.goMarkingCouponSelectPage(
// context, {'object': couponDataList});
// if (temp['coupon'] != null) {
// couponDataList = temp['coupon'];
setState(() {});
}
})
: (couponProvider.couponListSelect == null ||
couponProvider.couponListSelect.length ==
0) &&
Utils.getAuthority(context, '创建新的优惠券')
? _markingItem(
'推荐店内代金券优惠',
'当前没有代金券',
'注:代金券附加在预订安排中,可以随着预订人给被请客客人发送邀请函自动传播,吸引顾客到店。',
'',
'',
'创建优惠',
select: false, onPressed: () {
//创建优惠
NavigatorUtil.goCouponPage(context);
})
: SizedBox(),
rechargeData != null
? _markingItem('推荐店内充值单一优惠活动', rechargeData.rname,
rechargeContent, '', '', '切换活动', select: isRecharge,
onPressedSelect: () {
setState(() {
isRecharge = !isRecharge;
});
}, onPressed: () async {
//切换活动
Map temp =
await NavigatorUtil.goMarkingRechargeSelectPage(
context, rechargeData.id);
if (temp != null && temp['recharge'] != null) {
rechargeData = temp['recharge'];
_getRechargeContent();
setState(() {});
}
})
: (rechargeListCanUse == null ||
rechargeListCanUse.length == 0) &&
Utils.getAuthority(context, '新建优惠')
? _markingItem(
'推荐店内充值单一优惠活动',
'当前没有创建充值优惠活动',
'注:充值优惠活动附加在预订安排中,可以随着预订人给被请客客人发送邀请函自动传播。',
'',
'',
'创建优惠',
select: false, onPressed: () {
//创建新优惠
NavigatorUtil.goRechargeHomePage(context);
})
: SizedBox(),
// setState(() {});
// }
// })
// : (couponProvider.couponListSelect == null ||
// couponProvider.couponListSelect.length ==
// 0) &&
// Utils.getAuthority(context, '创建新的优惠券')
// ? _markingItem(
// '推荐店内代金券优惠',
// '当前没有代金券',
// '注:代金券附加在预订安排中,可以随着预订人给被请客客人发送邀请函自动传播,吸引顾客到店。',
// '',
// '',
// '创建优惠',
// select: false, onPressed: () {
// //创建优惠
// NavigatorUtil.goCouponPage(context);
// })
// : SizedBox(),
// rechargeData != null
// ? _markingItem('推荐店内充值单一优惠活动', rechargeData.rname,
// rechargeContent, '', '', '切换活动', select: isRecharge,
// onPressedSelect: () {
// setState(() {
// isRecharge = !isRecharge;
// });
// }, onPressed: () async {
// //切换活动
// Map temp =
// await NavigatorUtil.goMarkingRechargeSelectPage(
// context, rechargeData.id);
// if (temp != null && temp['recharge'] != null) {
// rechargeData = temp['recharge'];
// _getRechargeContent();
// setState(() {});
// }
// })
// : (rechargeListCanUse == null ||
// rechargeListCanUse.length == 0) &&
// Utils.getAuthority(context, '新建优惠')
// ? _markingItem(
// '推荐店内充值单一优惠活动',
// '当前没有创建充值优惠活动',
// '注:充值优惠活动附加在预订安排中,可以随着预订人给被请客客人发送邀请函自动传播。',
// '',
// '',
// '创建优惠',
// select: false, onPressed: () {
// //创建新优惠
// NavigatorUtil.goRechargeHomePage(context);
// })
// : SizedBox(),
_markingOtherItem()
],
),
... ...
... ... @@ -472,7 +472,7 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
VEmptyView(10),
Padding(
padding: EdgeInsets.only(left: w(8)),
child: Text('${reserveModel.address??''}',
child: Text('${reserveModel.address ?? ''}',
style: TextStyle(
height: 1.3,
color: MyColours.color_000000,
... ... @@ -1379,16 +1379,18 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
Widget _logoWidget() {
return Column(
children: [
Container(
height: w(180),
child: CachedNetworkImage(
imageUrl: _marketingCenterProvider.markDataModel.marketing.logo,
fit: BoxFit.cover,
width: double.infinity,
// width: ScreenUtil()
// .setWidth(imgSize * 2),
if (_marketingCenterProvider.markDataModel.marketing.logo != '' &&
_marketingCenterProvider.markDataModel.marketing.logo != null)
Container(
height: w(180),
)),
child: CachedNetworkImage(
imageUrl: _marketingCenterProvider.markDataModel.marketing.logo,
fit: BoxFit.cover,
width: double.infinity,
// width: ScreenUtil()
// .setWidth(imgSize * 2),
height: w(180),
)),
if (_marketingCenterProvider.markDataModel.marketing.wecomle != null &&
_marketingCenterProvider.markDataModel.marketing.wecomle != '')
VEmptyView(40),
... ...
... ... @@ -264,7 +264,7 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> {
_item('招牌菜展示', onTap: () {
NavigatorUtil.goDishShowPage(context);
}),
_item('营销及客户互动功能', onTap: () {
_item('客户互动', onTap: () {
NavigatorUtil.goMarkingInteractionPage(context);
}),
],
... ...
... ... @@ -234,6 +234,41 @@ class _MarketingCenterHomePageState extends State<MarketingCenterHomePage> {
VEmptyView(24),
InkWell(
onTap: () {
NavigatorUtil.goOrderSettingManagerPage(context);
},
child: Padding(
padding: EdgeInsets.only(
left: w(16),
top: w(12),
bottom: w(12),
right: w(12)),
child: Row(
children: [
Text(
'经理预排菜设置',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setWidth(32)),
),
Spacer(),
Container(
padding: EdgeInsets.symmetric(
horizontal: w(7), vertical: w(4)),
child: Image.asset(
"assets/arrow_right_new.png",
width: ScreenUtil().setWidth(18),
height: ScreenUtil().setWidth(32),
),
)
],
))),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(double.infinity, w(0.5),
color: MyColours.color_E7E7E7)),
VEmptyView(24),
InkWell(
onTap: () {
NavigatorUtil.goCustomerNoticeSettingPage(context);
},
child: Padding(
... ...
import 'package:flutter/material.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../provider/marketing_center_provider.dart';
import '../../../provider/user_model.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/v_empty_view.dart';
/**
* 经理排菜配置页面
*/
class OrderSettingManagerPage extends StatefulWidget {
OrderSettingManagerPage({Key key}) : super(key: key);
@override
_OrderSettingManagerPageState createState() =>
_OrderSettingManagerPageState();
}
class _OrderSettingManagerPageState extends State<OrderSettingManagerPage> {
MarketingCenterProvider marketingCenterProvider;
bool selectShowPrice = true; //分享排菜单给客户时展示菜品价格
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
getDzSellerConf();
});
}
getDzSellerConf() async {
bool success = await marketingCenterProvider.getDzSellerConf(context);
if (success && marketingCenterProvider.dzSellerConfModel != null) {
selectShowPrice =
marketingCenterProvider.dzSellerConfModel.isShowPrice == '1'
? true
: false;
setState(() {});
}
}
///分享排菜单给客户时展示菜品价格
_setPriceShow() async {
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
'key': 'is_show_price',
'value': selectShowPrice ? '1' : '0'
};
bool success = await marketingCenterProvider.setConfing(context, params,
needToast: true);
if (success) {
Navigator.pop(context);
// Utils.showToast('设置成功');
// return true;
// } else {
// Utils.showToast('设置失败,请重试');
// return false;
}
}
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('经理预排菜'),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
InkWell(
onTap: () {
setState(() {
selectShowPrice = !selectShowPrice;
});
},
child: Padding(
padding: EdgeInsets.only(
left: w(16),
top: w(12),
bottom: w(12),
right: w(12)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'分享排菜单给客户时展示菜品价格',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
),
Spacer(),
Container(
padding: EdgeInsets.symmetric(
horizontal: w(7), vertical: w(4)),
child: Image.asset(
Utils.getImgPath(selectShowPrice
? 'swich_on'
: 'swich_off'),
width: w(44),
),
)
// RoundButton(
// text: '预览',
// gradientStart: MyColours.color_ffffff,
// gradientEnd: MyColours.color_ffffff,
// borderColor: MyColours.color_438E93,
// textColor: MyColours.color_438E93,
// radius: ScreenUtil().setWidth(22),
// fontSize: 24,
// width: w(72),
// height: ScreenUtil().setWidth(44),
// isBold: true,
// onPressed: () {
// NavigatorUtil.goMarkingPreviewPage(context);
// },
// ),
]))),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(double.infinity, w(0.5),
color: MyColours.color_E7E7E7)),
VEmptyView(20),
],
),
)),
RoundButton(
text: '保存',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
margin:
EdgeInsets.symmetric(horizontal: w(40), vertical: w(25)),
// borderColor: MyColours.color_999999,
radius: r(5),
fontSize: 32,
height: w(40),
isBold: true,
onPressed: () async {
//调用接口
_setPriceShow();
})
],
));
}
}
... ...
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../models/coupon_model.dart';
import '../../../models/recharge_list_model.dart';
import '../../../provider/marketing_center_provider.dart';
import '../../../provider/user_model.dart';
import '../../../res/colors.dart';
... ... @@ -23,46 +27,107 @@ class OrderSettingPage extends StatefulWidget {
class _OrderSettingPageState extends State<OrderSettingPage> {
MarketingCenterProvider marketingCenterProvider;
bool selectShowPrice = true; //分享排菜单给客户时展示菜品价格
bool isTranspond = false; //转发邀请函
bool isArrival = false; //确认到店
bool isOnlineBook = false; //在线预订
bool isOrder = true; //提前点餐
bool isLink = false; //充值优惠活动链接
bool isCoupon = false; // 代金券
bool isRecharge = false; //充值券
RechargeListSunModel rechargeData;
String rechargeContent = '';
String qiniuUrl = '';
String welcome = '';
List<CouponSunModel> couponDataList = [];
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
getDzSellerConf();
getSellerTemplateConf();
});
}
getDzSellerConf() async {
bool success = await marketingCenterProvider.getDzSellerConf(context);
if (success && marketingCenterProvider.dzSellerConfModel != null) {
selectShowPrice =
marketingCenterProvider.dzSellerConfModel.isShowPrice == '1'
getSellerTemplateConf() async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.marketing != null) {
isTranspond =
marketingCenterProvider.markDataModel.marketing.isTranspond == '1'
? true
: false;
isArrival =
marketingCenterProvider.markDataModel.marketing.isArrival == '1'
? true
: false;
isOnlineBook =
marketingCenterProvider.markDataModel.marketing.isOnlineBook == '1'
? true
: false;
isOrder = marketingCenterProvider.markDataModel.marketing.isOrder == '1'
? true
: false;
isLink = marketingCenterProvider.markDataModel.marketing.isLink == '1'
? true
: false;
isCoupon = marketingCenterProvider.markDataModel.marketing.isCoupon == '1'
? true
: false;
isRecharge =
marketingCenterProvider.markDataModel.marketing.isRecharge == '1'
? true
: false;
rechargeData =
marketingCenterProvider.markDataModel.marketing.rechargeData;
couponDataList =
marketingCenterProvider.markDataModel.marketing.couponDataList ?? [];
qiniuUrl = marketingCenterProvider.markDataModel.marketing.logo ?? null;
welcome = marketingCenterProvider.markDataModel.marketing.wecomle;
setState(() {});
}
}
///分享排菜单给客户时展示菜品价格
///向客人开放提前点餐功能
_setPriceShow() async {
_setOrderBtnShow() async {
//接口
Map marketingData = {
// 'isTranspond': isTranspond ? '1' : '0', //转发同行客人
'is_transpond': '1', //转发同行客人
'is_arrival': isArrival ? '1' : '0', //确认到店
'is_online_book': isOnlineBook ? '1' : '0', //在线预订
'is_order': isOrder ? '1' : '0', //去点餐
'is_coupon': isCoupon ? '1' : '0', //代金券暂时
'is_recharge': isRecharge ? '1' : '0', //充值券暂时
'is_link': isLink ? '1' : '0',
'wecomle': welcome ?? '',
'logo': qiniuUrl,
'recharge_data': rechargeData,
'coupon_data': json.encode(couponDataList)
};
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
'key': 'is_show_price',
'value': selectShowPrice ? '1' : '0'
'marketing': json.encode(marketingData)
};
await marketingCenterProvider.setConfing(context, params, needToast: true);
// if (success) {
// Utils.showToast('设置成功');
// return true;
// } else {
// Utils.showToast('设置失败,请重试');
// return false;
// }
bool success = await marketingCenterProvider
.setSellerTemplateConf(context, params, showLoading: true);
if (success) {
Utils.showToast('保存成功');
Navigator.pop(context);
}
}
@override
... ... @@ -81,7 +146,7 @@ class _OrderSettingPageState extends State<OrderSettingPage> {
InkWell(
onTap: () {
setState(() {
selectShowPrice = !selectShowPrice;
isOrder = !isOrder;
});
},
child: Padding(
... ... @@ -94,7 +159,7 @@ class _OrderSettingPageState extends State<OrderSettingPage> {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'分享排菜单给客户时展示菜品价格',
'向客人开放提前点餐功能',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
... ... @@ -104,7 +169,7 @@ class _OrderSettingPageState extends State<OrderSettingPage> {
padding: EdgeInsets.symmetric(
horizontal: w(7), vertical: w(4)),
child: Image.asset(
Utils.getImgPath(selectShowPrice
Utils.getImgPath(isOrder
? 'swich_on'
: 'swich_off'),
width: w(44),
... ... @@ -147,7 +212,7 @@ class _OrderSettingPageState extends State<OrderSettingPage> {
isBold: true,
onPressed: () async {
//调用接口
_setPriceShow();
_setOrderBtnShow();
})
],
));
... ...
... ... @@ -5,6 +5,7 @@ import 'package:one_key/models/recharge_list_model.dart';
import 'package:one_key/pages/my/marketing_center/recharge/recharge_item.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
... ... @@ -34,17 +35,18 @@ class RechargeHomePage extends StatefulWidget {
class _RechargeHomePageState extends State<RechargeHomePage> {
MarketingCenterProvider marketingCenterProvider;
EasyRefreshController _controller = EasyRefreshController();
RechargeListSunModel rechargeData;
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_getNewRechargeList();
_getNewRechargeData();
});
bus.on("refresh_recharge_home", (arg) {
_getNewRechargeList();
_getNewRechargeData();
});
}
... ... @@ -54,13 +56,59 @@ class _RechargeHomePageState extends State<RechargeHomePage> {
bus.off('refresh_recharge_home');
}
_getNewRechargeList() async {
Future<bool> _getNewRechargeList() async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, String> params = {
"sellerid": userModel.user.sellerid,
// 'uid': userModel.user.openid
};
await marketingCenterProvider.getNewRechargeList(context, params);
bool success =
await marketingCenterProvider.getNewRechargeList(context, params);
if (success) {
return true;
} else {
return false;
}
}
_getNewRechargeData() async {
Future.wait<bool>([_getNewRechargeList(), getSellerTemplateConf(context)])
.then((results) async {
print(results[0]);
if (results[0] && results[1]) {
//成功
if (rechargeData != null) {
marketingCenterProvider.rechargeList.forEach((element) {
if (element.id == rechargeData.id) {
element.isMarking = true;
}
});
}
setState(() {});
} else {
// if (!results[0]) {
// //没有优惠券
// } else {}
// if (!results[1]) {
// //没有营销中心数据
// } else {}
setState(() {});
}
}).catchError((e) {
print(e);
});
}
Future<bool> getSellerTemplateConf(BuildContext context) async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.marketing != null) {
rechargeData =
marketingCenterProvider.markDataModel.marketing.rechargeData;
return true;
} else {
return false;
}
}
_openOrClose(RechargeListSunModel rechargeListSunModel, String isOpen) async {
... ... @@ -92,13 +140,17 @@ class _RechargeHomePageState extends State<RechargeHomePage> {
bool showBtn = Utils.getAuthority(context, '编辑优惠');
return Scaffold(
backgroundColor: MyColours.color_f3f3f3,
appBar: SystemAppBar(
'充值优惠',
rightImgName: 'share.png',
onTapRight: () {
Utils.goShareRechargeListToWeChat(context);
},
),
appBar: Utils.getAuthority(context, '充值优惠-设置')
? SystemAppBar(
'充值优惠',
rightImgName: 'set_g.png',
onTapRight: () {
NavigatorUtil.goRechargeSettingPage(context);
},
)
: SystemAppBar(
'充值优惠',
),
body: Container(
child: Column(
children: [
... ... @@ -244,15 +296,15 @@ class _RechargeHomePageState extends State<RechargeHomePage> {
// '管理员' ||
// Provider.of<UserModel>(context, listen: false).user.role_name ==
// '店长')
if (Utils.getAuthority(context, '新建优惠'))
Container(
Container(
height: ScreenUtil().setWidth(91 * 2),
width: double.infinity,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
bottom: ScreenUtil().setWidth(35 * 2),
left: ScreenUtil().setWidth(45 * 2),
right: ScreenUtil().setWidth(45 * 2),
left: ScreenUtil().setWidth(23 * 2),
right: ScreenUtil().setWidth(23 * 2),
),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
... ... @@ -267,33 +319,73 @@ class _RechargeHomePageState extends State<RechargeHomePage> {
Radius.circular(ScreenUtil().setWidth(16)),
),
),
child: RoundButton(
text: '新建优惠',
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
isBold: false,
fontSize: 28,
onPressed: () async {
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goRechargeEditPage(context);
// } else {
// Utils.showToast('您还没有相关权限');
// // bool needRefresh =
// // await NavigatorUtil.goCouponEditPage(context);
// // print(needRefresh);
// // if (needRefresh != null && needRefresh) {
// // bus.emit('refresh_coupon_list_f');
// // //刷新页面数据
// // // _controller.callRefresh();
// // // _couponNetworkData(tabController.index);
// // }
// }
},
),
)
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Utils.getAuthority(context, '新建优惠')
? RoundButton(
text: '分享给客户',
width: w(100),
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
isBold: true,
fontSize: 28,
onPressed: () {
Utils.goShareRechargeListToWeChat(context);
},
)
: Expanded(
child: RoundButton(
text: '分享给客户',
width: w(100),
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
isBold: true,
fontSize: 28,
onPressed: () {
Utils.goShareRechargeListToWeChat(context);
},
)),
if (Utils.getAuthority(context, '新建优惠')) HEmptyView(30),
if (Utils.getAuthority(context, '新建优惠'))
Expanded(
child: RoundButton(
text: '新建充值优惠',
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(14),
isBold: false,
fontSize: 28,
onPressed: () async {
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goRechargeEditPage(context);
// } else {
// Utils.showToast('您还没有相关权限');
// // bool needRefresh =
// // await NavigatorUtil.goCouponEditPage(context);
// // print(needRefresh);
// // if (needRefresh != null && needRefresh) {
// // bus.emit('refresh_coupon_list_f');
// // //刷新页面数据
// // // _controller.callRefresh();
// // // _couponNetworkData(tabController.index);
// // }
// }
},
),
)
],
)),
],
),
),
... ...
... ... @@ -71,9 +71,11 @@ class _RechargeItemState extends State<RechargeItem> {
color: widget.from == 'history'
? MyColours.color_BFC4D4
: notSelect
? widget.rechargeListSunModel.isOpen == '1'
? MyColours.color_438E93
: MyColours.color_999999
? widget.rechargeListSunModel.isMarking
? MyColours.color_00A870
: widget.rechargeListSunModel.isOpen == '1'
? MyColours.color_438E93
: MyColours.color_999999
: MyColours.color_999999,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(16)),
... ...
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../../models/coupon_model.dart';
import '../../../../models/recharge_list_model.dart';
import '../../../../provider/marketing_center_provider.dart';
import '../../../../provider/user_model.dart';
import '../../../../route/navigator_util.dart';
import '../../../../utils/event_bus.dart';
import '../../../../utils/screen_util.dart';
import '../../../../utils/utils.dart';
import '../../../../widgets/h_empty_view.dart';
import '../../../../widgets/round_button.dart';
import '../../../../widgets/v_empty_view.dart';
/**
* 充值优惠设置页面
* */
class RechargeSettingPage extends StatefulWidget {
RechargeSettingPage({Key key}) : super(key: key);
@override
_RechargeSettingPageState createState() => _RechargeSettingPageState();
}
class _RechargeSettingPageState extends State<RechargeSettingPage> {
ScrollController controller = ScrollController();
MarketingCenterProvider marketingCenterProvider;
bool isTranspond = false; //转发邀请函
bool isArrival = false; //确认到店
bool isOnlineBook = false; //在线预订
bool isOrder = false; //提前点餐
bool isLink = false; //充值优惠活动链接
bool isCoupon = false; // 代金券
bool isRecharge = false; //充值券
String welcome = '';
String qiniuUrl = '';
RechargeListSunModel rechargeData;
String rechargeContent = '';
List<CouponSunModel> couponDataList = [];
List<RechargeListSunModel> rechargeListCanUse = [];
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getNewRechargeList();
getSellerTemplateConf();
});
}
getSellerTemplateConf() async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.marketing != null) {
isTranspond =
marketingCenterProvider.markDataModel.marketing.isTranspond == '1'
? true
: false;
isArrival =
marketingCenterProvider.markDataModel.marketing.isArrival == '1'
? true
: false;
isOnlineBook =
marketingCenterProvider.markDataModel.marketing.isOnlineBook == '1'
? true
: false;
isOrder = marketingCenterProvider.markDataModel.marketing.isOrder == '1'
? true
: false;
isLink = marketingCenterProvider.markDataModel.marketing.isLink == '1'
? true
: false;
isCoupon = marketingCenterProvider.markDataModel.marketing.isCoupon == '1'
? true
: false;
isRecharge =
marketingCenterProvider.markDataModel.marketing.isRecharge == '1'
? true
: false;
rechargeData =
marketingCenterProvider.markDataModel.marketing.rechargeData;
couponDataList =
marketingCenterProvider.markDataModel.marketing.couponDataList ?? [];
qiniuUrl = marketingCenterProvider.markDataModel.marketing.logo ?? null;
welcome = marketingCenterProvider.markDataModel.marketing.wecomle;
setState(() {});
}
}
///优惠券设置
_setCouponShow() async {
//接口
Map marketingData = {
// 'isTranspond': isTranspond ? '1' : '0', //转发同行客人
'is_transpond': '1', //转发同行客人
'is_arrival': isArrival ? '1' : '0', //确认到店
'is_online_book': isOnlineBook ? '1' : '0', //在线预订
'is_order': isOrder ? '1' : '0', //去点餐
'is_coupon': isCoupon ? '1' : '0', //代金券暂时
'is_recharge': isRecharge ? '1' : '0', //充值券暂时
'is_link': isLink ? '1' : '0',
'wecomle': welcome ?? '',
'logo': qiniuUrl,
'recharge_data': rechargeData,
'coupon_data': json.encode(couponDataList)
};
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
'marketing': json.encode(marketingData)
};
bool success = await marketingCenterProvider
.setSellerTemplateConf(context, params, showLoading: true);
if (success) {
bus.emit('refresh_recharge_home');
Utils.showToast('保存成功');
Navigator.pop(context);
}
}
_getNewRechargeList() async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, String> params = {
"sellerid": userModel.user.sellerid,
// 'uid': userModel.user.openid
};
await marketingCenterProvider.getNewRechargeList(context, params);
rechargeListCanUse = [];
if (marketingCenterProvider.rechargeList.length > 0) {
marketingCenterProvider.rechargeList.forEach((element) {
if (element.isOpen == '1') {
//启用状态
rechargeListCanUse.add(element);
}
});
}
if (rechargeData == null && rechargeListCanUse.length > 0) {
rechargeData = rechargeListCanUse[0];
_getRechargeContent();
setState(() {});
}
}
_getRechargeContent() {
rechargeContent = '';
if (rechargeData.rechargeList.isPrice == '1') {
rechargeContent +=
'会员充值满${rechargeData.rechargeMoney}元赠余额${rechargeData.rechargeList.price}元;';
}
if (rechargeData.rechargeList.isScore == '1') {
rechargeContent +=
'\n会员充值满${rechargeData.rechargeMoney}元赠${rechargeData.rechargeList.score}积分;';
}
if (rechargeData.rechargeList.isCoupons == '1') {
rechargeContent +=
'\n会员充值满${rechargeData.rechargeMoney}元赠${Utils.listToStringEnglish3(rechargeData.rechargeList.couponsNames)}。';
}
}
///标题
Widget _headItem(String title) {
return Container(
width: double.infinity,
alignment: Alignment.centerLeft,
decoration: BoxDecoration(
border: Border(
bottom:
BorderSide(color: MyColours.color_E7E7E7, width: w(0.5)))),
margin: EdgeInsets.only(left: w(16)),
padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
child: Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: ScreenUtil().setWidth(32)),
),
);
}
///优惠券
Widget _markingCuponItem(
String title,
String content,
String subtile,
String discount,
String btnTitle, {
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Container(
padding: EdgeInsets.all(w(12)),
decoration: BoxDecoration(
borderRadius: BorderRadiusDirectional.circular(r(8)),
border: Border.all(width: w(1), color: MyColours.color_DBDBDB)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
constraints: BoxConstraints(maxWidth: w(150)),
child: Text(
title,
style: TextStyle(
fontSize: font(14),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)),
HEmptyView(20),
subtile != ''
? Text(
'¥${subtile}',
style: TextStyle(
fontSize: font(7),
fontWeight: FontWeight.bold,
color: MyColours.color_E34D59),
)
: SizedBox(),
HEmptyView(10),
discount != ''
? Container(
padding: EdgeInsets.symmetric(
horizontal: w(3), vertical: w(2)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(3)),
border: Border.all(
width: w(0.5),
color: MyColours.color_E34D59)),
child: Text(
discount,
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: font(7)),
),
)
: SizedBox(),
],
),
if (content != '') VEmptyView(20),
if (content != '')
Text(
content,
style: TextStyle(
height: 1.2,
fontSize: font(10),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)
],
)),
],
),
),
);
}
///营销推广
Widget _markingItem(
String selectTitle,
String title, {
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(18), top: w(12), right: w(18)),
child: Column(
children: [
InkWell(
onTap: onPressedSelect,
child: Row(
children: [
Image.asset(
Utils.getImgPath(select ? 'f_select' : 'f_select_not'),
width: w(20),
),
HEmptyView(20),
Text(
selectTitle,
style: TextStyle(
fontSize: font(14), color: MyColours.color_515151),
)
],
)),
VEmptyView(20),
Container(
height: w(76),
padding: EdgeInsets.all(w(12)),
decoration: BoxDecoration(
borderRadius: BorderRadiusDirectional.circular(r(8)),
border:
Border.all(width: w(1), color: MyColours.color_DBDBDB)),
child: Text(
title,
maxLines: 2,
style: TextStyle(
fontSize: font(14),
// fontWeight: FontWeight.bold,
color: MyColours.color_515151),
))
],
),
);
}
///营销推广
Widget _markingItemRecharge(
String selectTitle,
String title,
String content,
String subtile,
String discount,
String btnTitle, {
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Column(
children: [
InkWell(
onTap: onPressedSelect,
child: Row(
children: [
Image.asset(
Utils.getImgPath(select ? 'f_select' : 'f_select_not'),
width: w(20),
),
HEmptyView(20),
Text(
selectTitle,
style: TextStyle(
fontSize: font(14), color: MyColours.color_515151),
)
],
)),
VEmptyView(20),
Container(
padding: EdgeInsets.all(w(12)),
decoration: BoxDecoration(
borderRadius: BorderRadiusDirectional.circular(r(8)),
border: Border.all(width: w(1), color: MyColours.color_DBDBDB)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
constraints: BoxConstraints(maxWidth: w(150)),
child: Text(
title,
style: TextStyle(
fontSize: font(14),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)),
HEmptyView(20),
subtile != ''
? Text(
'¥${subtile}',
style: TextStyle(
fontSize: font(7),
fontWeight: FontWeight.bold,
color: MyColours.color_E34D59),
)
: SizedBox(),
HEmptyView(10),
discount != ''
? Container(
padding: EdgeInsets.symmetric(
horizontal: w(3), vertical: w(2)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(3)),
border: Border.all(
width: w(0.5),
color: MyColours.color_E34D59)),
child: Text(
discount,
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: font(7)),
),
)
: SizedBox(),
],
),
if (content != '') VEmptyView(20),
if (content != '')
Text(
content,
style: TextStyle(
height: 1.2,
fontSize: font(10),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)
],
)),
HEmptyView(20),
RoundButton(
text: btnTitle,
width: w(72),
height: w(22),
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_438E93,
radius: r(11),
fontSize: 24,
isBold: true,
onPressed: onPressed,
)
],
),
)
],
),
);
}
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: false);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('充值优惠设置'),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: controller,
child: Column(
children: [
_headItem('预订安排中附带的营销推广'),
VEmptyView(24),
rechargeData != null
? _markingItemRecharge('推荐店内充值单一优惠活动',
rechargeData.rname, rechargeContent, '', '', '切换活动',
select: isRecharge, onPressedSelect: () {
setState(() {
isRecharge = !isRecharge;
});
}, onPressed: () async {
//切换活动
Map temp =
await NavigatorUtil.goMarkingRechargeSelectPage(
context, rechargeData.id);
if (temp != null && temp['recharge'] != null) {
rechargeData = temp['recharge'];
_getRechargeContent();
setState(() {});
}
})
: (rechargeListCanUse == null ||
rechargeListCanUse.length == 0) &&
Utils.getAuthority(context, '新建优惠')
? _markingItem(
'推荐店内充值单一优惠活动',
'当前没有创建充值优惠活动,请创建优惠活动后再来尝试。',
select: false,
)
: SizedBox(),
],
),
),
),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.only(
left: w(45), right: w(45), top: w(12), bottom: w(25)),
child: RoundButton(
text: '保存',
gradientStart: MyColours.color_199095,
gradientEnd: MyColours.color_199095,
// borderColor: MyColours.color_999999,
radius: r(5),
fontSize: 34,
height: w(40),
isBold: true,
onPressed: () async {
_setCouponShow();
},
),
)
],
));
}
}
... ...
... ... @@ -800,112 +800,112 @@ class _OrderAdvanceHomePageState extends State<OrderAdvanceHomePage> {
horizontal: ScreenUtil().setHeight(40)),
child: Row(
children: [
Expanded(
flex: 1,
child: InkWell(
onTap: () async {
FocusScope.of(context)
.requestFocus(FocusNode()); //点击空白处隐藏键盘
if (widget.detailEntity.gid != null) {
await _setGuestInfo();
}
//调用排菜信息提交接口
Map<String, String> params = {
'sellerid':
Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'uid':
Provider.of<UserModel>(context, listen: false)
.user
.openid,
'rid': widget.rid,
};
if (_planDishProvider.planId != null &&
_planDishProvider.planId != '') {
//已经存在id,则修改
params['id'] = _planDishProvider.planId;
}
if (isTotal &&
totalController.text.trim().length > 0) {
//预计总价
params['total_price'] = totalController.text;
params['per_price'] = '0';
}
if (!isTotal &&
perController.text.trim().length > 0) {
//预计人均
params['per_price'] = perController.text;
params['total_price'] = '0';
}
if (likeController.text.trim().length > 0) {
//喜好
params['like'] = likeController.text;
}
if (noFoodController.text.trim().length > 0) {
//忌口
params['taboos'] = noFoodController.text;
}
if (serviceController.text.trim().length > 0) {
//服务
params['serve'] = serviceController.text;
}
if (pnumController.text.trim().length > 0) {
params['pnum'] = pnumController.text;
}
params['plan_name'] = name ?? '';
// cooklist 字符串 可选 单点菜品列表
// package_list 字符串 可选 选中套餐数据,[{"id":1,"num":2},{"id":2,"num":1}]
// often_list 字符串 可选 选中店内常点数据,[{"id":1,"num":2},{"id":2,"num":1}]
// temporary_list 字符串 可选 临时加菜,[{"cook_name":"炒土豆丝","price":20,"num",1,"unit":"份","practice":"香辣"},{"cook_name":"麻婆豆腐","price":18,"num",1,"unit":"份","practice":"香辣"}]
// plan_list 字符串 可选 选中排菜数据,[{"id":1,"num":2},{"id":2,"num":1}]
// menu_price 浮点型 可选 菜单总价
// member_price 浮点型 可选 会员总价
// plan_price 浮点型 可选 排菜总价
// remark
bool success = await _planDishProvider
.setPlanCookByReserve(context, params);
if (success) {
// bus.emit("refresh_detail");
//获取成功
Utils.goShareOrderPageToWeChat(context,
title:
'${Provider.of<UserModel>(context, listen: false).user.nickName ?? Provider.of<UserModel>(context, listen: false).user.sellername}经理邀请您点餐了',
img:
'http://nosqn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148571.jpg',
rid: widget.rid,
// oid: oid,
sid: Provider.of<UserModel>(context,
listen: false)
.user
.sellerid);
} else {
Utils.showToast('信息提交失败,请重试');
}
},
child: Container(
margin:
EdgeInsets.only(right: ScreenUtil().setWidth(20)),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
border: Border.all(
width: w(1), color: MyColours.color_438E93),
borderRadius: BorderRadius.circular(
ScreenUtil().setWidth(10)),
),
child: Align(
alignment: Alignment.center,
child: Text('请客户点菜',
style: TextStyle(
color: MyColours.color_438E93,
fontSize: ScreenUtil().setSp(32))),
),
),
)),
// Expanded(
// flex: 1,
// child: InkWell(
// onTap: () async {
// FocusScope.of(context)
// .requestFocus(FocusNode()); //点击空白处隐藏键盘
// if (widget.detailEntity.gid != null) {
// await _setGuestInfo();
// }
// //调用排菜信息提交接口
// Map<String, String> params = {
// 'sellerid':
// Provider.of<UserModel>(context, listen: false)
// .user
// .sellerid,
// 'uid':
// Provider.of<UserModel>(context, listen: false)
// .user
// .openid,
// 'rid': widget.rid,
// };
// if (_planDishProvider.planId != null &&
// _planDishProvider.planId != '') {
// //已经存在id,则修改
// params['id'] = _planDishProvider.planId;
// }
// if (isTotal &&
// totalController.text.trim().length > 0) {
// //预计总价
// params['total_price'] = totalController.text;
// params['per_price'] = '0';
// }
// if (!isTotal &&
// perController.text.trim().length > 0) {
// //预计人均
// params['per_price'] = perController.text;
// params['total_price'] = '0';
// }
// if (likeController.text.trim().length > 0) {
// //喜好
// params['like'] = likeController.text;
// }
// if (noFoodController.text.trim().length > 0) {
// //忌口
// params['taboos'] = noFoodController.text;
// }
// if (serviceController.text.trim().length > 0) {
// //服务
// params['serve'] = serviceController.text;
// }
// if (pnumController.text.trim().length > 0) {
// params['pnum'] = pnumController.text;
// }
// params['plan_name'] = name ?? '';
// // cooklist 字符串 可选 单点菜品列表
// // package_list 字符串 可选 选中套餐数据,[{"id":1,"num":2},{"id":2,"num":1}]
// // often_list 字符串 可选 选中店内常点数据,[{"id":1,"num":2},{"id":2,"num":1}]
// // temporary_list 字符串 可选 临时加菜,[{"cook_name":"炒土豆丝","price":20,"num",1,"unit":"份","practice":"香辣"},{"cook_name":"麻婆豆腐","price":18,"num",1,"unit":"份","practice":"香辣"}]
// // plan_list 字符串 可选 选中排菜数据,[{"id":1,"num":2},{"id":2,"num":1}]
// // menu_price 浮点型 可选 菜单总价
// // member_price 浮点型 可选 会员总价
// // plan_price 浮点型 可选 排菜总价
// // remark
// bool success = await _planDishProvider
// .setPlanCookByReserve(context, params);
// if (success) {
// // bus.emit("refresh_detail");
// //获取成功
// Utils.goShareOrderPageToWeChat(context,
// title:
// '${Provider.of<UserModel>(context, listen: false).user.nickName ?? Provider.of<UserModel>(context, listen: false).user.sellername}经理邀请您点餐了',
// img:
// 'http://nosqn.colorcun.com/reserve/images/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_201911151148571.jpg',
// rid: widget.rid,
// // oid: oid,
// sid: Provider.of<UserModel>(context,
// listen: false)
// .user
// .sellerid);
// } else {
// Utils.showToast('信息提交失败,请重试');
// }
// },
// child: Container(
// margin:
// EdgeInsets.only(right: ScreenUtil().setWidth(20)),
// decoration: BoxDecoration(
// color: MyColours.color_ffffff,
// border: Border.all(
// width: w(1), color: MyColours.color_438E93),
// borderRadius: BorderRadius.circular(
// ScreenUtil().setWidth(10)),
// ),
// child: Align(
// alignment: Alignment.center,
// child: Text('请客户点菜',
// style: TextStyle(
// color: MyColours.color_438E93,
// fontSize: ScreenUtil().setSp(32))),
// ),
// ),
// )),
Expanded(
flex: 2,
child: InkWell(
... ...
... ... @@ -1765,6 +1765,15 @@ class NavigatorUtil {
replace: replace);
}
/// 经理排菜配置页
static Future<dynamic> goOrderSettingManagerPage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.order_setting_manager_page}",
replace: replace);
}
/// 客户通知配置页
static Future<dynamic> goCustomerNoticeSettingPage(
BuildContext context, {
... ... @@ -1773,4 +1782,22 @@ class NavigatorUtil {
return _navigateTo(context, "${Routes.customer_notice_setting_page}",
replace: replace);
}
/// 客户通知配置页----优惠券配置
static Future<dynamic> goCouponSettingPage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.coupon_setting_page}",
replace: replace);
}
/// 客户通知配置页----充值优惠配置
static Future<dynamic> goRechargeSettingPage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.recharge_setting_page}",
replace: replace);
}
}
... ...
... ... @@ -164,6 +164,7 @@ import '../models/set_xuan_tai_model.dart';
import '../models/setmeal_by_id_model.dart';
import '../models/setmeal_model.dart';
import '../models/wine_manage_model.dart';
import '../pages/coupon/coupon_setting_page.dart';
import '../pages/coupon/coupon_verification_detail_page.dart';
import '../pages/coupon/verification_coupon_page.dart';
import '../pages/feast/feast_board.dart';
... ... @@ -206,12 +207,14 @@ import '../pages/my/marketing_center/book_notification/marking_recharge_select_p
import '../pages/my/marketing_center/book_notification/store_introduce_page.dart';
import '../pages/my/marketing_center/customer_notice_setting_page.dart';
import '../pages/my/marketing_center/marketing_center_home_page.dart';
import '../pages/my/marketing_center/order_setting_manager_page.dart';
import '../pages/my/marketing_center/order_setting_page.dart';
import '../pages/my/marketing_center/recharge/recharge_detail_page.dart';
import '../pages/my/marketing_center/recharge/recharge_edit_page.dart';
import '../pages/my/marketing_center/recharge/recharge_history_page.dart';
import '../pages/my/marketing_center/recharge/recharge_home_page.dart';
import '../pages/my/marketing_center/recharge/recharge_select_store_coupon_page.dart';
import '../pages/my/marketing_center/recharge/recharge_setting_page.dart';
import '../pages/my/menu_type/menu_add_dishes_page.dart';
// import '../pages/my/menu_type/menu_add_dishes_page_new.dart';
import '../pages/my/menu_type/menu_dish_method_page.dart';
... ... @@ -2931,6 +2934,22 @@ var orderSettingPageHandle = new Handler(
create: (_) => MarketingCenterProvider(), child: OrderSettingPage());
});
//经理排菜配置页
var orderSettingManagerPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// String year = params["year"].first;
// String month = params["month"].first;
// String day = params["day"].first;
// String uid = params["uid"].first;
// DayList daylist = DayList.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["daylist"].first)));
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: OrderSettingManagerPage());
});
//客户通知配置页
var customerNoticeSettingPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
... ... @@ -2946,3 +2965,35 @@ var customerNoticeSettingPageHandle = new Handler(
create: (_) => MarketingCenterProvider(),
child: CustomerNoticeSettingPage());
});
//客户通知----优惠券配置页
var couponSettingPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// String year = params["year"].first;
// String month = params["month"].first;
// String day = params["day"].first;
// String uid = params["uid"].first;
// DayList daylist = DayList.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["daylist"].first)));
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: ChangeNotifierProvider<CouponProvider>(
create: (_) => CouponProvider(), child: CouponSettingPage()));
});
//客户通知----充值优惠配置页
var rechargeSettingPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// String year = params["year"].first;
// String month = params["month"].first;
// String day = params["day"].first;
// String uid = params["uid"].first;
// DayList daylist = DayList.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["daylist"].first)));
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(), child: RechargeSettingPage());
});
... ...
... ... @@ -282,6 +282,12 @@ class Routes {
static String customer_notice_setting_page =
"/customer_notice_setting_page"; // 客户通知配置页
static String order_setting_manager_page =
"/order_setting_manager_page"; // 经理排菜配置页
static String coupon_setting_page = "/coupon_setting_page"; // 优惠券设置页
static String recharge_setting_page = "/recharge_setting_page"; // 充值优惠设置页
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
... ... @@ -520,7 +526,14 @@ class Routes {
router.define(month_order_page, handler: monthOrderPageHandle);
router.define(day_order_page, handler: dayOrderPageHandle);
router.define(order_setting_page, handler: orderSettingPageHandle);
router.define(customer_notice_setting_page, handler: customerNoticeSettingPageHandle);
router.define(customer_notice_setting_page,
handler: customerNoticeSettingPageHandle);
router.define(order_setting_manager_page,
handler: orderSettingManagerPageHandle);
router.define(coupon_setting_page, handler: couponSettingPageHandle);
router.define(recharge_setting_page, handler: rechargeSettingPageHandle);
}
}
... ...
... ... @@ -85,7 +85,9 @@ class SystemAppBar extends StatelessWidget implements PreferredSizeWidget {
? InkWell(
onTap: onTapRight,
child: Padding(
padding: EdgeInsets.only(right: ScreenUtil().setWidth(40)),
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(40),
right: ScreenUtil().setWidth(40)),
child: rightImgName.endsWith('png')
? Image.asset(
Utils.getImgPath(
... ...