Commit 23ffcc2cf5658364a3b87a98f359c42bd38787dc

Authored by wdn127929
1 parent b4a0c01a

优惠活动

import 'dart:convert' as convert;
import 'package:one_key/models/recharge_list_model.dart';
import 'coupon_model.dart';
class MarkDataModel extends Object {
String id;
... ... @@ -305,6 +309,11 @@ class MarkMarketingModel {
String isLink; //
String wecomle; //
String logo; //
String isCoupon;
String isRecharge;
RechargeListSunModel rechargeData;
CouponSunModel couponData;
MarkMarketingModel(
{this.isArrival,
... ... @@ -313,7 +322,9 @@ class MarkMarketingModel {
this.isOrder,
this.isTranspond,
this.logo,
this.wecomle});
this.wecomle,
this.isCoupon,
this.isRecharge});
MarkMarketingModel.fromJson(Map<String, dynamic> json) {
isTranspond = json['is_transpond'];
... ... @@ -323,6 +334,16 @@ class MarkMarketingModel {
isLink = json['is_link'];
wecomle = json['wecomle'];
logo = json['logo'];
isCoupon = json['is_coupon'];
isRecharge = json['is_recharge'];
rechargeData = json['recharge_data'] != null
? new RechargeListSunModel.fromJson(
json['recharge_data'])
: null;
couponData = json['coupon_data'] != null
? new CouponSunModel.fromJson(json['coupon_data'])
: null;
}
Map<String, dynamic> toJson() {
... ... @@ -334,6 +355,11 @@ class MarkMarketingModel {
data['is_link'] = this.isLink;
data['wecomle'] = this.wecomle;
data['logo'] = this.logo;
data['is_coupon'] = this.isCoupon;
data['is_recharge'] = this.isRecharge;
data['recharge_data'] = this.rechargeData;
data['coupon_data'] = this.couponData;
return data;
}
}
... ...
import 'dart:convert' as convert;
import 'package:common_utils/common_utils.dart';
import 'package:one_key/models/filter_btn_model.dart';
import 'coupon_model.dart';
class RechargeListModel {
int ret;
List<RechargeListSunModel> data;
String msg;
RechargeListModel({this.ret, this.data, this.msg});
RechargeListModel.fromJson(Map<String, dynamic> json) {
ret = json['ret'];
if (json['data'] != null) {
data = [];
json['data'].forEach((v) {
if (v['status'] != '1') {
data.add(new RechargeListSunModel.fromJson(v));
}
});
}
msg = json['msg'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ret'] = this.ret;
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
data['msg'] = this.msg;
return data;
}
}
class RechargeListSunModel {
String id;
String uid;
String sellerid;
String rname;
String rechargeMoney;
RechargeListDataModel rechargeList;
RechargeDateModel expDate;
String explain;
String isOpen;
String status;
// Null qrcode;
String isExamine;
String cdate;
bool isCheck = false;
String get cdateStr {
if (cdate.toString() == '0') {
return '';
}
DateTime dateTime =
DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString()) * 1000);
return DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
}
RechargeListSunModel(
{this.id,
this.uid,
this.sellerid,
this.rname,
this.rechargeMoney,
this.rechargeList,
this.expDate,
this.explain,
this.isOpen,
this.status,
// this.qrcode,
this.isExamine,
this.cdate});
RechargeListSunModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
uid = json['uid'];
sellerid = json['sellerid'];
rname = json['rname'];
rechargeMoney = json['recharge_money'];
rechargeList = json['recharge_list'] == null
? null
: json['recharge_list'] is Map
? RechargeListDataModel.fromJson(json['recharge_list'])
: RechargeListDataModel.fromJson(convert
.jsonDecode(json['recharge_list']) as Map<String, dynamic>);
expDate = json['exp_date'] == null
? null
: json['exp_date'] is Map
? RechargeDateModel.fromJson(json['exp_date'])
: RechargeDateModel.fromJson(
convert.jsonDecode(json['exp_date']) as Map<String, dynamic>);
explain = json['explain'];
isOpen = json['is_open'];
status = json['status'];
// qrcode = json['qrcode'];
isExamine = json['is_examine'];
cdate = json['cdate'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['uid'] = this.uid;
data['sellerid'] = this.sellerid;
data['rname'] = this.rname;
data['recharge_money'] = this.rechargeMoney;
data['recharge_list'] = this.rechargeList;
data['exp_date'] = this.expDate;
data['explain'] = this.explain;
data['is_open'] = this.isOpen;
data['status'] = this.status;
// data['qrcode'] = this.qrcode;
data['is_examine'] = this.isExamine;
data['cdate'] = this.cdate;
return data;
}
}
class RechargeListDataModel {
String isPrice;
String isScore;
String isCoupons;
String price;
String score;
List<CouponSunModel> coupons;
List<dynamic> couponsIds;
List<dynamic> couponsNames;
RechargeListDataModel({
this.isPrice,
this.isCoupons,
this.isScore,
this.price,
this.score,
this.coupons,
this.couponsIds,
this.couponsNames,
});
RechargeListDataModel.fromJson(Map<String, dynamic> json) {
isPrice = json['is_price'];
isScore = json['is_score'];
isCoupons = json['is_coupons'];
price = json['price'];
score = json['score'];
coupons = <CouponSunModel>[];
if (json['coupons'] != null) {
json['coupons'].forEach((v) {
coupons.add(new CouponSunModel.fromJson(v));
});
}
couponsIds = json['coupons_ids'];
couponsNames = json['coupons_names'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['is_price'] = this.isPrice;
data['is_score'] = this.isScore;
data['is_coupons'] = this.isCoupons;
data['price'] = this.price;
data['score'] = this.score;
data['coupons'] = this.coupons;
data['coupons_ids'] = this.couponsIds;
data['coupons_names'] = this.couponsNames;
return data;
}
}
class RechargeDateModel {
String isFix;
String isWeek;
String isBirthday;
String fixSdate;
String fixEdate;
String weekDateShow;
List<FilterBtnModel> weekDateData;
RechargeDateModel({
this.isFix,
this.isWeek,
this.isBirthday,
this.fixSdate,
this.fixEdate,
this.weekDateShow,
this.weekDateData,
});
RechargeDateModel.fromJson(Map<String, dynamic> json) {
isFix = json['is_fix'];
isWeek = json['is_week'];
isBirthday = json['is_birthday'];
fixSdate = json['fix_sdate'];
fixEdate = json['fix_edate'];
weekDateShow = json['week_date_show'];
weekDateData = <FilterBtnModel>[];
if (json['week_date_data'] != null && json['week_date_data'] != '') {
json['week_date_data'].forEach((v) {
weekDateData.add(new FilterBtnModel.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['is_fix'] = this.isFix;
data['is_week'] = this.isWeek;
data['is_birthday'] = this.isBirthday;
data['fix_sdate'] = this.fixSdate;
data['fix_edate'] = this.fixEdate;
data['week_date_show'] = this.weekDateShow;
data['week_date_data'] = this.weekDateData;
return data;
}
}
... ...
... ... @@ -400,4 +400,18 @@ class HttpUrl {
static const String ins_guest =
"?service=App.GuestManage.InsGuest"; // 新增客户
static const String create_new_recharge =
"?service=App.Activity.CreateNewRecharge"; // 创建/修改新充值活动
static const String get_new_recharge_list =
"?service=App.Activity.GetNewRechargeList"; // 获取新充值活动列表
static const String get_new_recharge_detail =
"?service=App.Activity.GetNewRecharge"; // 获取新充值活动详情
static const String get_activity_by_id =
"?service=App.Activity.GetActivityById"; // 客户经理优惠券信息
}
... ...
... ... @@ -37,6 +37,10 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
@override
void initState() {
super.initState();
if(widget.couponSunModel == null){
}
}
///时间选择
... ...
... ... @@ -23,11 +23,14 @@ import 'package:sendsms/sendsms.dart';
// import 'package:sendsms/sendsms.dart';
import 'package:flutter_sms/flutter_sms.dart';
import '../../../../models/coupon_model.dart';
/**
* 优惠券单选页面
*/
class MarkingCouponSelectPage extends StatefulWidget {
MarkingCouponSelectPage({Key key}) : super(key: key);
final String selectid;
MarkingCouponSelectPage({Key key, this.selectid}) : super(key: key);
@override
_MarkingCouponSelectPageState createState() =>
... ... @@ -38,6 +41,8 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
EasyRefreshController _controller = EasyRefreshController();
CouponProvider couponProvider;
CouponSunModel selectData;
///获取优惠券列表数据(status == 1)
_couponNetworkData({bool isShowLoading = true}) async {
... ... @@ -48,6 +53,16 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
await couponProvider.getCustomerSelectActivityMarking(context, params,
isShowLoading: isShowLoading);
outerloop:
for (var i = 0; i < couponProvider.couponListSelect.length; i++) {
if (couponProvider.couponListSelect[i].id == widget.selectid) {
couponProvider.couponListSelect[i].isCheck = true;
selectData = couponProvider.couponListSelect[i];
break outerloop;
}
}
setState(() {});
}
@override
... ... @@ -121,6 +136,9 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
couponProvider.couponListSelect[index].isCheck =
true;
selectData =
couponProvider.couponListSelect[index];
},
// child: Row(
// children: [
... ... @@ -156,6 +174,9 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
couponProvider
.couponListSelect[index].isCheck = true;
selectData =
couponProvider.couponListSelect[index];
// couponProvider
// .couponListSelect[index].isCheck = !old;
setState(() {});
... ... @@ -182,7 +203,10 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
child: RoundButton(
onPressed: () async {
Navigator.pop(context);
Map temp = {
'coupon': selectData,
};
Navigator.pop(context, temp);
},
text: '确定',
fontSize: 34,
... ...
... ... @@ -11,6 +11,8 @@ import 'package:one_key/widgets/v_empty_view.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import '../../../../models/coupon_model.dart';
import '../../../../models/recharge_list_model.dart';
import '../../../../models/upload_img_model.dart';
import '../../../../provider/coupon_provider.dart';
import '../../../../provider/marketing_center_provider.dart';
... ... @@ -43,18 +45,26 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
UploadImageProvider _uploadImageProvider;
MarketingCenterProvider marketingCenterProvider;
bool is_transpond = false; //转发邀请函
bool is_arrival = false; //确认到店
bool is_online_book = false; //在线预订
bool is_order = false; //提前点餐
bool is_link = false; //充值优惠活动链接
bool isTranspond = false; //转发邀请函
bool isArrival = false; //确认到店
bool isOnlineBook = false; //在线预订
bool isOrder = false; //提前点餐
bool isLink = false; //充值优惠活动链接
bool isCoupon = false; // 代金券
bool isRecharge = false; //充值券
RechargeListSunModel rechargeData;
String rechargeContent = '';
CouponSunModel couponData;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
// _couponNetworkData();
await getSellerTemplateConf();
_couponNetworkData();
_getNewRechargeList();
getSellerTemplateConf();
});
}
... ... @@ -64,29 +74,69 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
super.dispose();
}
_getNewRechargeList() async {
await marketingCenterProvider.getNewRechargeList(context);
if (rechargeData == null &&
marketingCenterProvider.rechargeList != null &&
marketingCenterProvider.rechargeList.length > 0) {
rechargeData = marketingCenterProvider.rechargeList[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)}。';
}
}
getSellerTemplateConf() async {
bool success = await marketingCenterProvider.getSellerTemplateConf(context);
if (success && marketingCenterProvider.markDataModel.marketing != null) {
is_transpond =
isTranspond =
marketingCenterProvider.markDataModel.marketing.isTranspond == '1'
? true
: false;
is_arrival =
isArrival =
marketingCenterProvider.markDataModel.marketing.isArrival == '1'
? true
: false;
is_online_book =
isOnlineBook =
marketingCenterProvider.markDataModel.marketing.isOnlineBook == '1'
? true
: false;
is_order = marketingCenterProvider.markDataModel.marketing.isOrder == '1'
isOrder = marketingCenterProvider.markDataModel.marketing.isOrder == '1'
? true
: false;
is_link = marketingCenterProvider.markDataModel.marketing.isLink == '1'
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;
couponData = marketingCenterProvider.markDataModel.marketing.couponData;
_uploadImageProvider.firstImage.qiniuUrl =
marketingCenterProvider.markDataModel.marketing.logo ?? null;
... ... @@ -112,6 +162,14 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
await couponProvider.getCustomerSelectActivityMarking(context, params,
isShowLoading: isShowLoading);
if (couponData == null) {
if (couponProvider.couponListSelect != null &&
couponProvider.couponListSelect.length > 0) {
couponData = couponProvider.couponListSelect[0];
setState(() {});
}
}
}
///客户互动及店铺推广
... ... @@ -161,7 +219,7 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
///#相机拍照,单图选择
Future _getFromPictureOrCamera(UploadImgModel imgModel, imageSource) async {
final pickedFile = await picker.pickImage(source: imageSource);
File compressedFile = await FlutterNativeImage.compressImage(
File compressedFile = await FlutterNativeImage.compressImage(
pickedFile.path,
quality: 50,
percentage: 50);
... ... @@ -181,13 +239,13 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
// _uploadImageProvider.imgSizeErweima = 76;
_uploadImageProvider.firstImage.qiniuUrl = null;
// }
bool need = await Utils.sizeNeed(File(pickedFile.path));
bool need = await Utils.sizeNeed(File(pickedFile.path));
File file = File(pickedFile.path);
if (need) {
file = File(compressedFile.absolute.path);
}
UploadImageUtil().startUploadOnly(
context, file, 4, true, _uploadImageProvider);
UploadImageUtil()
.startUploadOnly(context, file, 4, true, _uploadImageProvider);
}
}
... ... @@ -323,27 +381,36 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
}
///营销推广
Widget _markingItem(String selectTitle, String title, String content,
String subtile, String discount,
{VoidCallback onPressed, bool select = false}) {
Widget _markingItem(
String selectTitle,
String title,
String content,
String subtile,
String discount, {
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(left: w(21), top: w(12), right: w(21)),
child: Column(
children: [
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),
)
],
),
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)),
... ... @@ -399,6 +466,7 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
Text(
content,
style: TextStyle(
height: 1.2,
fontSize: font(10),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
... ... @@ -435,13 +503,13 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
// InkWell(
// onTap: () {
// setState(() {
// is_link = !is_link;
// isLink = !isLink;
// });
// },
// child: Row(
// children: [
// Image.asset(
// Utils.getImgPath(is_link ? 'f_select' : 'f_select_not'),
// Utils.getImgPath(isLink ? 'f_select' : 'f_select_not'),
// width: w(20),
// ),
// HEmptyView(20),
... ... @@ -709,47 +777,71 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
// '同行客人可以从电子邀请函了解预订信息、一键导航到店,快速联系餐厅服务人员。还可以了解更多餐厅介绍、各种活动。',
// onTap: () {
// setState(() {
// is_transpond = !is_transpond;
// isTranspond = !isTranspond;
// });
// }, select: is_transpond),
// }, select: isTranspond),
_storeItemWidget('向被邀请客人开放“确认到店”功能。',
'被邀客人点击确认到店后,方便请客人了解被邀客人是否确认,同时,被邀客人的信息会加入到餐厅客户池中,方便餐厅维护客户。',
onTap: () {
setState(() {
is_arrival = !is_arrival;
isArrival = !isArrival;
});
}, select: is_arrival),
}, select: isArrival),
_storeItemWidget('向客人开放“在线预订”功能。',
'客人和被邀客人可以通过邀请函,直接点击在线预订,向商家提交预订需求,无需通过电话,经理可以详细了解客户需求并安排预订。',
onTap: () {
setState(() {
is_online_book = !is_online_book;
isOnlineBook = !isOnlineBook;
});
}, select: is_online_book),
}, select: isOnlineBook),
_storeItemWidget('向被邀请客人开放“提前点餐”功能。',
'请客人从预定安排直接预先选菜,到店后确认下单,无需服务员花费时间给客户点餐,可以为餐厅节源提效。',
onTap: () {
setState(() {
is_order = !is_order;
isOrder = !isOrder;
});
}, select: is_order),
}, select: isOrder),
VEmptyView(24),
_headItem('预订安排中附带的营销推广'),
VEmptyView(24),
// _headItem('预订安排中附带的营销推广'),
// VEmptyView(24),
// couponProvider.couponListSelect.length > 0
// ? _markingItem('推荐店内代金券优惠', couponProvider.couponListSelect[0].aname,
// couponProvider.couponListSelect[0].desc, '100', '5折', onPressed: () {
// NavigatorUtil.goMarkingCouponSelectPage(
// context,
// );
// })
// : SizedBox(),
// _markingItem(
// '推荐店内充值单一优惠活动',
// '充1000赠300',
// '会员充值满1000元赠余额200元;\n会员充值满1000元赠余额200元;\n会员充值满1000元赠余额200元;',
// '',
// ''),
couponData != null
? _markingItem('推荐店内代金券优惠', couponData.aname,
couponData.desc, '100', '5折', select: isCoupon,
onPressedSelect: () {
setState(() {
isCoupon = !isCoupon;
});
}, onPressed: () async {
//切换活动
Map temp =
await NavigatorUtil.goMarkingCouponSelectPage(
context, couponData.id);
if (temp['coupon'] != null) {
couponData = temp['coupon'];
setState(() {});
}
})
: 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['recharge'] != null) {
rechargeData = temp['recharge'];
_getRechargeContent();
setState(() {});
}
})
: SizedBox(),
_markingOtherItem()
],
),
... ... @@ -785,17 +877,19 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
//接口
Map marketingData = {
// 'is_transpond': is_transpond ? '1' : '0', //转发同行客人
// 'isTranspond': isTranspond ? '1' : '0', //转发同行客人
'is_transpond': '1', //转发同行客人
'is_arrival': is_arrival ? '1' : '0', //确认到店
'is_online_book': is_online_book ? '1' : '0', //在线预订
'is_order': is_order ? '1' : '0', //去点餐
'is_coupon': '0', //代金券暂时
'is_recharge': '0', //充值券暂时
// 'is_link': is_link ? '1' : '0',
'is_link': '0',
'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',
// 'is_link': '0',
'wecomle': welcomeTextC.text ?? '',
'logo': _uploadImageProvider.firstImage.qiniuUrl,
'recharge_data': rechargeData,
'coupon_data': couponData
};
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false)
... ...
... ... @@ -7,6 +7,7 @@ import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../../constant/state.dart';
import '../../../../models/recharge_list_model.dart';
import '../../../../models/theme_color_model.dart';
import '../../../../provider/marketing_center_provider.dart';
import '../../../../provider/upload_img_provider.dart';
... ... @@ -44,6 +45,8 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
UploadImageProvider _uploadImageProvider;
String rechargeContent;
@override
void initState() {
super.initState();
... ... @@ -59,6 +62,22 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
super.dispose();
}
_getRechargeContent(RechargeListSunModel rechargeData) {
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)}。';
}
}
///初始化主题颜色
_initThemeColor() {
// int colorValue = App.sp.get("themeColor");
... ... @@ -195,6 +214,13 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
homeSlogan = _marketingCenterProvider.markDataModel.home.slogan;
homeImage = _marketingCenterProvider.markDataModel.home.image ?? null;
}
if (_marketingCenterProvider.markDataModel.marketing != null) {
if (_marketingCenterProvider.markDataModel.marketing.isRecharge ==
'1') {
_getRechargeContent(
_marketingCenterProvider.markDataModel.marketing.rechargeData);
}
}
setState(() {});
}
}
... ... @@ -1114,6 +1140,184 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
);
}
///营销推广
Widget _markingItem(
String selectTitle,
String title,
String content,
String subtile,
String discount,
String btnTtile, {
VoidCallback onPressed,
bool select = false,
VoidCallback onPressedSelect,
}) {
return Container(
margin: EdgeInsets.only(bottom: w(12)),
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: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
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(),
],
),
VEmptyView(20),
Text(
content,
style: TextStyle(
height: 1.2,
fontSize: font(10),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
)
],
),
Container(
width: w(72),
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.topLeft,
end: Alignment.bottomRight)),
child: Text(
btnTtile,
style: TextStyle(
fontSize: font(12),
color: MyColours.color_F8F9FD,
fontWeight: FontWeight.bold),
)),
],
),
)
],
),
);
}
_rechargeWiddget() {
return Container(
padding: EdgeInsets.symmetric(horizontal: w(20), vertical: w(8)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'特别优惠',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(18),
fontWeight: FontWeight.bold),
),
VEmptyView(20),
_marketingCenterProvider.markDataModel.marketing.isCoupon == '1'
? _markingItem(
'推荐店内代金券优惠',
_marketingCenterProvider
.markDataModel.marketing.couponData.aname,
_marketingCenterProvider
.markDataModel.marketing.couponData.desc,
'100',
'5折',
'去抢购'
)
: SizedBox(),
_marketingCenterProvider.markDataModel.marketing.isRecharge == '1'
? _markingItem(
'推荐店内充值单一优惠活动',
_marketingCenterProvider
.markDataModel.marketing.rechargeData.rname,
rechargeContent,
'',
'',
'去充值'
)
: SizedBox(),
VEmptyView(20),
// MyDivider(
// double.infinity,
// w(0.5),
// color: MyColours.color_DBDBDB,
// ),
// VEmptyView(16),
],
),
);
}
///logo + 优惠政策链接
///
Widget _logoWidget() {
... ... @@ -1264,6 +1468,15 @@ class _MarkingPreviewPageState extends State<MarkingPreviewPage> {
'1'
? _orderWidget()
: SizedBox(),
_marketingCenterProvider.markDataModel.marketing != null &&
(_marketingCenterProvider
.markDataModel.marketing.isRecharge ==
'1' ||
_marketingCenterProvider
.markDataModel.marketing.isCoupon ==
'1')
? _rechargeWiddget()
: SizedBox(),
_marketingCenterProvider.markDataModel.marketing != null
? _logoWidget()
: SizedBox()
... ...
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/coupon/coupon_item.dart';
import 'package:one_key/pages/my/marketing_center/recharge/recharge_item.dart';
import 'package:one_key/provider/SmsModel.dart';
import 'package:one_key/provider/coupon_provider.dart';
import 'package:one_key/provider/marketing_center_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.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:sendsms/sendsms.dart';
// import 'package:sendsms/sendsms.dart';
import 'package:flutter_sms/flutter_sms.dart';
import '../../../../models/recharge_list_model.dart';
/**
* 优惠券单选页面
*/
class MarkingRechargeSelectPage extends StatefulWidget {
final String selectid;
MarkingRechargeSelectPage({Key key, this.selectid}) : super(key: key);
@override
_MarkingRechargeSelectPageState createState() =>
_MarkingRechargeSelectPageState();
}
class _MarkingRechargeSelectPageState extends State<MarkingRechargeSelectPage> {
EasyRefreshController _controller = EasyRefreshController();
MarketingCenterProvider marketingCenterProvider;
RechargeListSunModel selectData;
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
// if (!couponProvider.hasModify) {
_getNewRechargeList();
// } else {
// couponProvider.pageStateSelect = PageState.Success;
// // couponProvider.notifyListeners();
// }
});
}
@override
void dispose() {
super.dispose();
}
///获取优惠券列表数据
///
_getNewRechargeList() async {
await marketingCenterProvider.getNewRechargeList(context);
outerloop:
for (var i = 0; i < marketingCenterProvider.rechargeList.length; i++) {
if (marketingCenterProvider.rechargeList[i].id == widget.selectid) {
marketingCenterProvider.rechargeList[i].isCheck = true;
selectData = marketingCenterProvider.rechargeList[i];
break outerloop;
}
}
setState(() {});
}
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'优惠券',
onTap: () {
Navigator.pop(context);
},
),
body: WillPopScope(
child: Column(
children: [
Expanded(child: Consumer<MarketingCenterProvider>(
builder: (context, model, _) {
if (model.pageStateRechargeHome != PageState.Success) {
return ExceptionPage(
pageState: model.pageStateRechargeHome,
callback: () {
_getNewRechargeList();
// offset = 0;
// getMessage(showLoading: true);
},
emptyMsg: "暂时没有列表信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return EasyRefresh.custom(
controller: _controller,
shrinkWrap: true,
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return VEmptyView(40);
}, childCount: 1),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return InkWell(
onTap: () {
//改这里 ******8
marketingCenterProvider.rechargeList
.forEach((element) {
element.isCheck = false;
});
marketingCenterProvider
.rechargeList[index].isCheck = true;
selectData =
marketingCenterProvider.rechargeList[index];
},
// child: Row(
// children: [
// HEmptyView(30),
// !widget.hasModify
// ? Checkbox(
// value: couponProvider
// .couponListSelect[index].isCheck,
// checkColor: MyColours.color_ffffff,
// activeColor: MyColours.app_main,
// onChanged: (bool value) {},
// )
// : Container(),
// Image.asset(
// couponProvider.listData[index]['checked']
// ? 'assets/select.png'
// : 'assets/unselect.png',
// width: ScreenUtil().setWidth(44)),
child: RechargeItem(
from: 'select',
showCheck: true,
rechargeListSunModel: marketingCenterProvider
.rechargeList[index],
onPressed: () {
// bool old = couponProvider
// .couponListSelect[index].isCheck;
//改这里 ******8
marketingCenterProvider.rechargeList
.forEach((element) {
element.isCheck = false;
});
marketingCenterProvider
.rechargeList[index].isCheck = true;
selectData = marketingCenterProvider
.rechargeList[index];
// couponProvider
// .couponListSelect[index].isCheck = !old;
setState(() {});
}));
},
childCount:
marketingCenterProvider.rechargeList.length),
)
],
// onRefresh: () async {
// // offset = 0;
// // getMessage(showLoading: false);
// },
// onLoad: () async {
// // offset++;
// // getMessage(showLoading: false);
// },
);
}
},
)),
VEmptyView(20),
marketingCenterProvider.pageStateRechargeHome == PageState.Success
? Padding(
padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
child: RoundButton(
onPressed: () async {
Map temp = {
'recharge': selectData,
};
Navigator.pop(context, temp);
},
text: '确定',
fontSize: 34,
isBold: false,
height: ScreenUtil().setWidth(80),
width: double.infinity,
radius: ScreenUtil().setWidth(10),
))
: Container()
],
),
onWillPop: () async {
Utils.changeStatusColor(color: Colors.transparent);
Navigator.of(context).pop();
return true;
},
),
);
}
}
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_picker/Picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/coupon_model.dart';
import 'package:one_key/models/filter_btn_model.dart';
import 'package:one_key/provider/marketing_center_provider.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../../constant/state.dart';
import '../../../../res/colors.dart';
import '../../../../utils/dialog_util.dart';
import '../../../../utils/screen_util.dart';
import '../../../../utils/utils.dart';
import '../../../../widgets/h_empty_view.dart';
import '../../../../widgets/round_button.dart';
import '../../../../widgets/page_exception.dart';
import '../../../../widgets/v_empty_view.dart';
/**
... ... @@ -22,124 +25,30 @@ import '../../../../widgets/v_empty_view.dart';
*/
class RechargeDetailPage extends StatefulWidget {
RechargeDetailPage({Key key}) : super(key: key);
final String idstr;
RechargeDetailPage({Key key, this.idstr}) : super(key: key);
@override
_RechargeDetailPageState createState() => _RechargeDetailPageState();
}
class _RechargeDetailPageState extends State<RechargeDetailPage> {
TextEditingController nameC = TextEditingController();
TextEditingController priceminC = TextEditingController();
TextEditingController givePriceC = TextEditingController(); //赠送金额
TextEditingController giveScoreC = TextEditingController(); //积分
TextEditingController remarkC = TextEditingController(); //备注
FocusNode nameF = FocusNode();
FocusNode priceminF = FocusNode();
FocusNode givePricF = FocusNode();
FocusNode giveScoreF = FocusNode();
FocusNode remarkF = FocusNode();
bool fixdate = true;
bool weekly = false;
bool birthday = false;
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
bool showDateSelWidget = false;
String fromDate = '点击设置开始日期'; //有效期开始时间
String endDate = '点击设置结束日期'; //有效期结束时间
List<FilterBtnModel> weekData = [];
String weekShow = '点击设置可用日期';
bool canUse = false;
List<String> coupons = [];
List<String> selectIDs = [];
bool givePriceSwich = false;
bool giveScoreSwich = false;
bool giveCouponsSwich = false;
MarketingCenterProvider marketingCenterProvider;
@override
void initState() {
super.initState();
_initWeekData();
nameF.addListener(() {
if (nameF.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
}
});
priceminF.addListener(() {
if (priceminF.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
}
});
givePricF.addListener(() {
if (givePricF.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
}
});
giveScoreF.addListener(() {
if (giveScoreF.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
}
});
remarkF.addListener(() {
if (remarkF.hasFocus) {
//有焦点
if (showDateSelWidget) {
Navigator.pop(context);
showDateSelWidget = false;
}
} else {
//失去焦点
// _editingController.text = '';
WidgetsBinding.instance.addPostFrameCallback((_) {
if (widget.idstr != null && widget.idstr != 'null') {
_getNewRechargeDetail();
}
});
}
_initWeekData() {
FilterBtnModel filterBtnModel = FilterBtnModel();
filterBtnModel.select = false;
filterBtnModel.title = '周日';
weekData.add(filterBtnModel);
for (int i = 1; i < 7; i++) {
FilterBtnModel filterBtnModel = FilterBtnModel();
filterBtnModel.select = false;
filterBtnModel.title = '周${Utils.formatWeekDayNum(i)}';
weekData.add(filterBtnModel);
}
_getNewRechargeDetail() async {
bool success = await marketingCenterProvider.getNewRechargeDetail(
context, widget.idstr);
}
///输入框
... ... @@ -173,55 +82,12 @@ class _RechargeDetailPageState extends State<RechargeDetailPage> {
);
}
///时间选择
Widget _select(String title, String hintText, GestureTapCallback onTap) {
return InkWell(
onTap: onTap,
child: Container(
padding: EdgeInsets.only(left: ScreenUtil().setWidth(32)),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
// height: ScreenUtil().setWidth(40),
// color: Colors.red,
child: Text(
title,
style: TextStyle(
color: title == '点击设置可用日期'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
),
HEmptyView(20),
Spacer(),
Text(hintText,
style: TextStyle(
color: hintText == '点击设置开始日期' || hintText == '点击设置结束日期'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32),
)),
HEmptyView(20),
Image.asset(
Utils.getImgPath('arrow_right_new'),
width: ScreenUtil().setWidth(18),
),
HEmptyView(32),
],
),
),
);
}
///券说明
Widget _explain(String title, String hintText,
TextEditingController controller, FocusNode node) {
Widget _explain(
String title,
String hintText,
) {
return Container(
// height: ScreenUtil().setWidth(380),
// padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(28)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
... ... @@ -235,14 +101,10 @@ class _RechargeDetailPageState extends State<RechargeDetailPage> {
fontSize: ScreenUtil().setSp(32)),
)),
VEmptyView(26),
// Container(
// height: ScreenUtil().setWidth(2),
// color: MyColours.color_E7E7E7,
// ),
Padding(
padding: EdgeInsets.only(left: w(20)),
child: Text(
'beihaisehfisehfasfhaise',
marketingCenterProvider.rechargeDetail.explain,
// maxLengthEnforced: true,
style: TextStyle(
... ... @@ -254,263 +116,287 @@ class _RechargeDetailPageState extends State<RechargeDetailPage> {
);
}
_itemRadioWidget(bool select, String title, {GestureTapCallback onTap}) {
return InkWell(
onTap: onTap,
child: Row(children: [
Image.asset(
Utils.getImgPath(
select ? 'plan_dish_select' : 'plan_dish_unselect'),
width: w(20),
),
HEmptyView(6),
Text(
title,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
]));
}
///是否立即启用
Widget _canUse(String title, bool swich, GestureTapCallback onTap) {
return InkWell(
onTap: onTap,
child: Container(
// padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(24)),
// margin: EdgeInsets.only(right: ScreenUtil().setWidth(32)),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
// height: ScreenUtil().setWidth(40),
// color: Colors.red,
child: Text(
'是否启用',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
),
Spacer(),
Container(
// height: ScreenUtil().setWidth(40),
// color: Colors.red,
child: Text(
'启用/禁用',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
),
Widget _canUse() {
return Container(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
child: Text(
'立即启用',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
HEmptyView(20)
// Image.asset(
// swich
// ? Utils.getImgPath('swich_on')
// : Utils.getImgPath('swich_off'),
// width: ScreenUtil().setWidth(44 * 2),
// )
],
),
),
Spacer(),
Image.asset(
marketingCenterProvider.rechargeDetail.isOpen == '1'
? Utils.getImgPath('swich_on')
: Utils.getImgPath('swich_off'),
width: ScreenUtil().setWidth(44 * 2),
),
HEmptyView(16)
],
),
);
}
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
return Scaffold(
key: scaffoldKey,
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('充值优惠详情'),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.only(left: w(32)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
VEmptyView(24),
_text(
'活动名称',
'活动名称',
),
VEmptyView(24),
MyDivider(
double.infinity,
w(1),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_text(
'充值满',
'充值金额门槛',
),
VEmptyView(24),
MyDivider(
double.infinity,
w(1),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
Container(
alignment: Alignment.centerLeft,
child: Text(
'优惠活动',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
),
VEmptyView(26),
Padding(
padding: EdgeInsets.only(left: w(20)),
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('充值优惠详情'),
body: Consumer<MarketingCenterProvider>(builder: (context, model, _) {
if (model.pageStateDetail != PageState.Success) {
return ExceptionPage(
pageState: model.pageStateDetail,
callback: () {
// offset = 0;
// getMessage(showLoading: true);
if (model.pageStateDetail == PageState.Empty) {
// NavigatorUtil.goCouponHistoryPage(context);
} else {
// _couponNetworkData(widget.index);
}
_getNewRechargeDetail();
},
emptyMsg: "暂时没有详情数据哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
// showText: '查看过期优惠券',
);
} else {
return Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.only(left: w(16)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
'赠送1000元余额',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
VEmptyView(56),
_text(
'活动名称',
marketingCenterProvider.rechargeDetail.rname,
),
VEmptyView(24),
MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
),
VEmptyView(48),
_text(
'充值满',
marketingCenterProvider
.rechargeDetail.rechargeMoney,
),
VEmptyView(20),
Text(
'赠送1000积分',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
VEmptyView(24),
MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
),
VEmptyView(20),
Text(
'赠送优惠券',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
VEmptyView(48),
Container(
alignment: Alignment.centerLeft,
child: Text(
'优惠活动',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
),
VEmptyView(28),
Padding(
padding: EdgeInsets.only(
left: w(45),
right: w(8),
padding: EdgeInsets.only(left: w(16)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.start,
children: [
if (marketingCenterProvider
.rechargeDetail.rechargeList.isPrice ==
'1')
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'赠送',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
Spacer(),
Text(
'${marketingCenterProvider.rechargeDetail.rechargeList.price}元余额',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
),
HEmptyView(32)
],
),
if (marketingCenterProvider
.rechargeDetail.rechargeList.isPrice ==
'1')
VEmptyView(26),
if (marketingCenterProvider
.rechargeDetail.rechargeList.isScore ==
'1')
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'赠送',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
Spacer(),
Text(
'${marketingCenterProvider.rechargeDetail.rechargeList.score}积分',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
),
HEmptyView(32)
],
),
if (marketingCenterProvider
.rechargeDetail.rechargeList.isScore ==
'1')
VEmptyView(26),
if (marketingCenterProvider.rechargeDetail
.rechargeList.isCoupons ==
'1')
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'赠送',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
Spacer(),
Text(
'优惠券',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
),
HEmptyView(32)
],
),
if (marketingCenterProvider.rechargeDetail
.rechargeList.isCoupons ==
'1')
VEmptyView(26),
if (marketingCenterProvider.rechargeDetail
.rechargeList.isCoupons ==
'1')
Wrap(
spacing: w(9),
runSpacing: w(9),
alignment: WrapAlignment.start,
runAlignment: WrapAlignment.start,
children: marketingCenterProvider
.rechargeDetail.rechargeList.coupons
.map((e) {
return InkWell(
onTap: () {
// NavigatorUtil.goCouponDetailPage(
// conetxt);
},
child: Text(
e.aname,
style: TextStyle(
color: MyColours.color_438E93,
fontSize:
ScreenUtil().setSp(32)),
));
}).toList()),
VEmptyView(26),
],
),
),
MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
),
VEmptyView(48),
Row(
children: [
Text(
'充值日期限制:',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
Spacer(),
Text(
marketingCenterProvider
.rechargeDetail.expDate.isFix ==
'1'
? '${marketingCenterProvider.rechargeDetail.expDate.fixSdate}至${marketingCenterProvider.rechargeDetail.expDate.fixEdate}'
: marketingCenterProvider.rechargeDetail
.expDate.isWeek ==
'1'
? '每周指定日期可用'
: '会员生日当天',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
),
child: Wrap(
spacing: w(9),
runSpacing: w(9),
alignment: WrapAlignment.start,
runAlignment: WrapAlignment.start,
children: coupons.map((e) {
return Text(
e,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
);
}).toList())),
VEmptyView(20),
HEmptyView(32)
],
),
if (marketingCenterProvider
.rechargeDetail.expDate.isWeek ==
'1')
VEmptyView(26),
if (marketingCenterProvider
.rechargeDetail.expDate.isWeek ==
'1')
Align(
alignment: Alignment.centerRight,
child: Text(
marketingCenterProvider
.rechargeDetail.expDate.weekDateShow,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
)),
VEmptyView(24),
MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
),
VEmptyView(48),
_explain(
'备注',
'请输入备注信息',
),
VEmptyView(48),
_canUse()
],
),
),
MyDivider(
double.infinity,
w(1),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
Container(
alignment: Alignment.centerLeft,
child: Text(
'有效期',
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
),
VEmptyView(24),
Padding(
padding: EdgeInsets.only(left: w(20)),
child: Text(
'2021.2.2-2022.3.4/周日、周一、周二/会员生日当天',
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32)),
)),
VEmptyView(24),
MyDivider(
double.infinity,
w(1),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_explain('备注', '请输入备注信息', remarkC, remarkF),
VEmptyView(24),
_canUse('立即启用', canUse, () {
setState(() {
canUse = !canUse;
});
})
],
)),
)),
)),
// 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),
// ),
// decoration: BoxDecoration(
// color: MyColours.color_ffffff,
// boxShadow: [
// BoxShadow(
// spreadRadius: ScreenUtil().setWidth(2),
// color: Color.fromRGBO(0, 0, 0, 0.1),
// 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 {
// // "stime": fromDate == '点击选择'
// // ? ""
// // : '${DateUtil.getDateMsByTimeStr(fromDate) / 1000}',
// // "etime": endDate == '点击选择'
// // ? ''
// // : '${DateUtil.getDateMsByTimeStr(endDate) / 1000}',
// // UserModel userModel =
// // Provider.of<UserModel>(context, listen: false);
// // if (userModel.user.role_name == '管理员' ||
// // userModel.user.role_name == '店长') {
// // NavigatorUtil.goRechargeDetailPage(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);
// // }
// // }
// },
// ),
// )
],
),
);
],
);
}
}));
}
}
... ...
... ... @@ -6,12 +6,16 @@ import 'package:flutter_picker/Picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/coupon_model.dart';
import 'package:one_key/models/filter_btn_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../../provider/marketing_center_provider.dart';
import '../../../../res/colors.dart';
import '../../../../utils/dialog_util.dart';
import '../../../../utils/event_bus.dart';
import '../../../../utils/screen_util.dart';
import '../../../../utils/utils.dart';
import '../../../../widgets/h_empty_view.dart';
... ... @@ -24,7 +28,8 @@ import '../../../../widgets/v_empty_view.dart';
*/
class RechargeEditPage extends StatefulWidget {
RechargeEditPage({Key key}) : super(key: key);
final String idstr;
RechargeEditPage({Key key, this.idstr}) : super(key: key);
@override
_RechargeEditPageState createState() => _RechargeEditPageState();
... ... @@ -55,9 +60,9 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
String weekShow = '点击设置可用日期';
bool canUse = false;
List<String> coupons = [];
List<dynamic> coupons = [];
List<String> selectIDs = [];
List<dynamic> selectIDs = [];
bool givePriceSwich = false;
bool giveScoreSwich = false;
... ... @@ -65,6 +70,8 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
List<CouponSunModel> couponsData = [];
MarketingCenterProvider marketingCenterProvider;
@override
void initState() {
super.initState();
... ... @@ -131,6 +138,75 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
// _editingController.text = '';
}
});
WidgetsBinding.instance.addPostFrameCallback((_) {
if (widget.idstr != null && widget.idstr != 'null') {
_getNewRechargeDetail();
}
});
}
_getNewRechargeDetail() async {
bool success = await marketingCenterProvider.getNewRechargeDetail(
context, widget.idstr);
if (success) {
//请求成功
nameC.text = marketingCenterProvider.rechargeDetail.rname;
priceminC.text = marketingCenterProvider.rechargeDetail.rechargeMoney;
givePriceSwich =
marketingCenterProvider.rechargeDetail.rechargeList.isPrice == '1'
? true
: false;
givePriceC.text =
marketingCenterProvider.rechargeDetail.rechargeList.price;
giveScoreSwich =
marketingCenterProvider.rechargeDetail.rechargeList.isScore == '1'
? true
: false;
giveScoreC.text =
marketingCenterProvider.rechargeDetail.rechargeList.score;
giveCouponsSwich =
marketingCenterProvider.rechargeDetail.rechargeList.isCoupons == '1'
? true
: false;
selectIDs =
marketingCenterProvider.rechargeDetail.rechargeList.couponsIds;
couponsData = marketingCenterProvider.rechargeDetail.rechargeList.coupons;
coupons =
marketingCenterProvider.rechargeDetail.rechargeList.couponsNames;
fixdate = marketingCenterProvider.rechargeDetail.expDate.isFix == '1'
? true
: false;
if (marketingCenterProvider.rechargeDetail.expDate.fixSdate != '') {
fromDate = marketingCenterProvider.rechargeDetail.expDate.fixSdate;
}
if (marketingCenterProvider.rechargeDetail.expDate.fixEdate != '') {
endDate = marketingCenterProvider.rechargeDetail.expDate.fixEdate;
}
weekly = marketingCenterProvider.rechargeDetail.expDate.isWeek == '1'
? true
: false;
if (marketingCenterProvider.rechargeDetail.expDate.weekDateShow != '') {
weekShow = marketingCenterProvider.rechargeDetail.expDate.weekDateShow;
}
if (marketingCenterProvider.rechargeDetail.expDate.weekDateData.length >
0) {
weekData = marketingCenterProvider.rechargeDetail.expDate.weekDateData;
}
birthday =
marketingCenterProvider.rechargeDetail.expDate.isBirthday == '1'
? true
: false;
remarkC.text = marketingCenterProvider.rechargeDetail.explain;
canUse =
marketingCenterProvider.rechargeDetail.isOpen == '1' ? true : false;
setState(() {});
}
}
_initWeekData() {
... ... @@ -385,6 +461,8 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
return Scaffold(
key: scaffoldKey,
backgroundColor: MyColours.color_ffffff,
... ... @@ -878,7 +956,19 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
isBold: false,
fontSize: 28,
onPressed: () async {
if (nameC.text.trim().length == 0) {
Utils.showToast('请输入活动名称!');
return;
}
if (priceminC.text.trim().length == 0) {
Utils.showToast('请输入充值金额门槛!');
return;
}
//优惠活动
if (!giveScoreSwich && !givePriceSwich && !giveCouponsSwich) {
Utils.showToast('请选择优惠活动!');
return;
}
if (givePriceSwich && givePriceC.text.trim().length == 0) {
Utils.showToast('请输入赠送金额!');
return;
... ... @@ -893,6 +983,10 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
}
//有效期
if (!fixdate && !weekly && !birthday) {
Utils.showToast('请选择有效期!');
return;
}
if (fixdate) {
//固定时间段
... ... @@ -945,6 +1039,33 @@ class _RechargeEditPageState extends State<RechargeEditPage> {
String dateStr = json.encode(date);
print(dateStr);
Map<String, String> pramas = {
'sellerid': Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'uid': Provider.of<UserModel>(context, listen: false)
.user
.openid,
'rname': nameC.text,
'recharge_money': priceminC.text,
'recharge_list': discountsStr,
'exp_date': dateStr,
'explain': remarkC.text,
'is_open': canUse ? '1' : '0'
};
if (widget.idstr != null && widget.idstr != 'null') {
pramas['id'] = widget.idstr;
}
bool success = await marketingCenterProvider.createNewRecharge(
context, pramas);
if (success) {
//成功后返回前面列表
Navigator.pop(context);
//刷新列表
bus.emit('refresh_recharge_home');
}
// "stime": fromDate == '点击选择'
// ? ""
... ...
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
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';
... ... @@ -11,6 +12,8 @@ import '../../../../constant/state.dart';
import '../../../../provider/marketing_center_provider.dart';
import '../../../../provider/user_model.dart';
import '../../../../route/navigator_util.dart';
import '../../../../utils/dialog_util.dart';
import '../../../../utils/event_bus.dart';
import '../../../../utils/screen_util.dart';
import '../../../../widgets/page_exception.dart';
import '../../../../widgets/round_button.dart';
... ... @@ -31,6 +34,46 @@ class RechargeHomePage extends StatefulWidget {
class _RechargeHomePageState extends State<RechargeHomePage> {
MarketingCenterProvider marketingCenterProvider;
EasyRefreshController _controller = EasyRefreshController();
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_getNewRechargeList();
});
bus.on("refresh_recharge_home", (arg) {
_getNewRechargeList();
});
}
@override
void dispose() {
super.dispose();
bus.off('refresh_recharge_home');
}
_getNewRechargeList() async {
await marketingCenterProvider.getNewRechargeList(context);
}
_openOrClose(RechargeListSunModel rechargeListSunModel, String isOpen) async {
Map<String, String> pramas = {
'id': rechargeListSunModel.id,
// 'status': remarkC.text,
'is_open': isOpen
};
bool success =
await marketingCenterProvider.createNewRecharge(context, pramas);
if (success) {
setState(() {
rechargeListSunModel.isOpen = isOpen;
});
}
}
@override
Widget build(BuildContext context) {
marketingCenterProvider =
... ... @@ -63,8 +106,9 @@ class _RechargeHomePageState extends State<RechargeHomePage> {
} else {
// _couponNetworkData(widget.index);
}
_getNewRechargeList();
},
emptyMsg: "暂时没有列表信息哦,",
emptyMsg: "暂时没有列表信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
// showText: '查看过期优惠券',
... ... @@ -77,57 +121,92 @@ class _RechargeHomePageState extends State<RechargeHomePage> {
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
RechargeListSunModel rechargeListSunModel =
marketingCenterProvider.rechargeList[index];
return RechargeItem(
from: 'quan',
// couponSonModel: couponProvider.couponList[index],
rechargeListSunModel: rechargeListSunModel,
showBtn: showBtn,
onPressedDel: () {
// couponProvider.couponList[index].isOpenBool =
// !couponProvider.couponList[index].isOpenBool;
// _setCustomerActivity(index);
//弹框确认是否删除
DialogUtil.cupertinoAlertDialog(context,
title: "",
content: "确定要将该优惠删除吗?",
rTitle: "确定", rCallback: () async {
Map<String, String> pramas = {
'id': rechargeListSunModel.id,
'status': '1',
};
bool success = await marketingCenterProvider
.createNewRecharge(context, pramas);
if (success) {
setState(() {
marketingCenterProvider.rechargeList
.removeAt(index);
});
}
});
},
onPressedUse: () async {
if (rechargeListSunModel.isOpen == '1') {
//开启的,去禁用
_openOrClose(rechargeListSunModel, '0');
} else {
_openOrClose(rechargeListSunModel, '1');
}
},
onPressedUse: () {},
onPressed: () {
if (showBtn) {
//跳进编辑页
NavigatorUtil.goRechargeEditPage(context);
if (showBtn ||
rechargeListSunModel.uid ==
Provider.of<UserModel>(context,
listen: false)
.user
.openid) {
//跳进编辑页,权限:管理员、店长、自己创建的券
NavigatorUtil.goRechargeEditPage(context,
idstr: rechargeListSunModel.id);
} else {
//查看页
NavigatorUtil.goRechargeDetailPage(context);
NavigatorUtil.goRechargeDetailPage(
context, rechargeListSunModel.id);
}
},
);
}, childCount: 100),
},
childCount:
marketingCenterProvider.rechargeList.length),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return Column(
children: [
InkWell(
onTap: () {
// NavigatorUtil.goCouponHistoryPage(context);
},
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
),
children: [
TextSpan(
text: '没有更多了,',
style: TextStyle(
color: MyColours.color_000000)),
TextSpan(
text: '查看过期优惠券',
style: TextStyle(
color: MyColours.color_438E93)),
]))),
VEmptyView(80)
],
);
}, childCount: 1),
)
// SliverList(
// delegate: SliverChildBuilderDelegate(
// (BuildContext context, int index) {
// return Column(
// children: [
// InkWell(
// onTap: () {
// // NavigatorUtil.goCouponHistoryPage(context);
// },
// child: RichText(
// text: TextSpan(
// style: TextStyle(
// fontSize: ScreenUtil().setSp(28),
// ),
// children: [
// TextSpan(
// text: '没有更多了,',
// style: TextStyle(
// color: MyColours.color_000000)),
// TextSpan(
// text: '查看过期优惠券',
// style: TextStyle(
// color: MyColours.color_438E93)),
// ]))),
// VEmptyView(80)
// ],
// );
// }, childCount: 1),
// )
],
// onRefresh: () async {
// // offset = 0;
... ...
... ... @@ -10,6 +10,7 @@ import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import '../../../../models/recharge_list_model.dart';
import '../../../../provider/user_model.dart';
import '../../../../utils/screen_util.dart';
... ... @@ -18,7 +19,7 @@ class RechargeItem extends StatefulWidget {
final VoidCallback onPressed;
final VoidCallback onPressedDel;
final VoidCallback onPressedUse;
final CouponSunModel couponSonModel;
final RechargeListSunModel rechargeListSunModel;
final bool showBtn;
final bool showCheck;
RechargeItem({
... ... @@ -27,7 +28,7 @@ class RechargeItem extends StatefulWidget {
this.onPressed,
this.onPressedDel,
this.onPressedUse,
this.couponSonModel,
this.rechargeListSunModel,
this.showBtn = false,
this.showCheck = false,
}) : super(key: key);
... ... @@ -62,168 +63,206 @@ class _RechargeItemState extends State<RechargeItem> {
// }
return InkWell(
onTap: widget.onPressed,
child: Container(
// width: ScreenUtil().setWidth(610),
margin: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(30),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(0)),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
boxShadow: [
BoxShadow(
spreadRadius: ScreenUtil().setWidth(2),
color: Color.fromRGBO(0, 0, 0, 0.25),
offset: Offset(0, ScreenUtil().setWidth(8)),
blurRadius: ScreenUtil().setWidth(8))
],
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(16)),
),
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
child: Stack(
clipBehavior: Clip.none,
alignment: Alignment.centerLeft,
children: [
Container(
height: ScreenUtil().setWidth(60),
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)),
decoration: BoxDecoration(
color: widget.from == 'history'
? MyColours.color_BFC4D4
: notSelect
? true
? MyColours.color_438E93
: MyColours.color_ED7B2F
: MyColours.color_999999,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(16)),
topRight: Radius.circular(ScreenUtil().setWidth(16)))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'充500赠100',
style: TextStyle(
color: MyColours.color_ffffff,
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(32)),
InkWell(
onTap: widget.onPressed,
child: Container(
// width: ScreenUtil().setWidth(610),
margin: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(30),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(0)),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
boxShadow: [
BoxShadow(
spreadRadius: ScreenUtil().setWidth(2),
color: Color.fromRGBO(0, 0, 0, 0.25),
offset: Offset(0, ScreenUtil().setWidth(8)),
blurRadius: ScreenUtil().setWidth(8))
],
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(16)),
),
),
Text('更新时间:2022-12-18',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20))),
],
),
),
Container(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(20 * 2),
ScreenUtil().setWidth(26),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(26)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
// height: ScreenUtil().setWidth(14 * 2),
// width: ScreenUtil().setWidth(232 * 2),
child: Text('会员充值满1000元赠余额200元;',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(20),
)),
),
VEmptyView(10),
Container(
// height: ScreenUtil().setWidth(14 * 2),
// width: ScreenUtil().setWidth(232 * 2),
child: Text('会员充值满1000元赠送50元代金券;',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(20),
)),
),
VEmptyView(10),
Container(
// height: ScreenUtil().setWidth(14 * 2),
// width: ScreenUtil().setWidth(232 * 2),
child: Text('会员充值满1000元赠送50元菜品券。',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(20),
)),
),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: ScreenUtil().setWidth(60),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40)),
decoration: BoxDecoration(
color: widget.from == 'history'
? MyColours.color_BFC4D4
: notSelect
? widget.rechargeListSunModel.isOpen ==
'1'
? MyColours.color_438E93
: MyColours.color_999999
: MyColours.color_999999,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(
ScreenUtil().setWidth(16)),
topRight: Radius.circular(
ScreenUtil().setWidth(16)))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
widget.rechargeListSunModel.rname,
style: TextStyle(
color: MyColours.color_ffffff,
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(32)),
),
Text(
'更新时间:${widget.rechargeListSunModel.cdateStr}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20))),
],
),
),
Container(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(20 * 2),
ScreenUtil().setWidth(26),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(26)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (widget.rechargeListSunModel.rechargeList
.isPrice ==
'1')
Container(
// height: ScreenUtil().setWidth(14 * 2),
// width: ScreenUtil().setWidth(232 * 2),
margin: EdgeInsets.only(bottom: w(5)),
child: Text(
'会员充值满${widget.rechargeListSunModel.rechargeMoney}元赠余额${widget.rechargeListSunModel.rechargeList.price}元;',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(20),
)),
),
if (widget.rechargeListSunModel.rechargeList
.isScore ==
'1')
Container(
// height: ScreenUtil().setWidth(14 * 2),
// width: ScreenUtil().setWidth(232 * 2),
margin: EdgeInsets.only(bottom: w(5)),
child: Text(
'会员充值满${widget.rechargeListSunModel.rechargeMoney}元赠送${widget.rechargeListSunModel.rechargeList.score}积分;',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(20),
)),
),
if (widget.rechargeListSunModel.rechargeList
.isCoupons ==
'1')
Container(
// height: ScreenUtil().setWidth(14 * 2),
// width: ScreenUtil().setWidth(232 * 2),
child: Text(
'会员充值满${widget.rechargeListSunModel.rechargeMoney}元赠送${Utils.listToStringEnglish3(widget.rechargeListSunModel.rechargeList.couponsNames)}。',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(20),
)),
),
],
),
// widget.from == 'select'
// ? widget.showCheck
// ? Positioned(
// right: 0,
// top: ScreenUtil().setWidth(20),
// child: Image.asset(
// Utils.getImgPath(widget.couponSonModel.isCheck
// ? 'check_r'
// : 'check_un'),
// width: ScreenUtil().setWidth(40),
// height: ScreenUtil().setWidth(40),
// ))
// : Container()
// :
),
if (widget.showBtn)
MySeparator(width: w(4), color: MyColours.color_BFC4D4),
if (widget.showBtn) VEmptyView(15),
if (widget.showBtn)
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
RoundButton(
width: widget.from == 'history'
? ScreenUtil().setWidth(50 * 2)
: ScreenUtil().setWidth(50 * 2),
height: ScreenUtil().setWidth(20 * 2),
radius: ScreenUtil().setWidth(10),
text: '删除',
fontSize: 24,
textColor: MyColours.color_E34D59,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_E34D59,
onPressed: widget.onPressedDel,
),
HEmptyView(34),
RoundButton(
width: ScreenUtil().setWidth(50 * 2),
height: ScreenUtil().setWidth(20 * 2),
radius: ScreenUtil().setWidth(10),
text: '禁用',
// widget.from == 'select'
// ? widget.showCheck
// ? Positioned(
// right: 0,
// top: ScreenUtil().setWidth(20),
// child: Image.asset(
// Utils.getImgPath(widget.couponSonModel.isCheck
// ? 'check_r'
// : 'check_un'),
// width: ScreenUtil().setWidth(40),
// height: ScreenUtil().setWidth(40),
// ))
// : Container()
// :
),
if (widget.showBtn)
MySeparator(
width: w(4), color: MyColours.color_BFC4D4),
if (widget.showBtn) VEmptyView(15),
if (widget.showBtn)
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
RoundButton(
width: widget.from == 'history'
? ScreenUtil().setWidth(50 * 2)
: ScreenUtil().setWidth(50 * 2),
height: ScreenUtil().setWidth(20 * 2),
radius: ScreenUtil().setWidth(10),
text: '删除',
fontSize: 24,
textColor: MyColours.color_E34D59,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_E34D59,
onPressed: widget.onPressedDel,
),
HEmptyView(34),
RoundButton(
width: ScreenUtil().setWidth(50 * 2),
height: ScreenUtil().setWidth(20 * 2),
radius: ScreenUtil().setWidth(10),
text: widget.rechargeListSunModel.isOpen == '1'
? '禁用'
: '启用',
///启用
fontSize: 24,
textColor: MyColours.color_438E93,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
onPressed: widget.onPressedUse,
///启用
fontSize: 24,
textColor: MyColours.color_438E93,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
borderColor: MyColours.color_438E93,
onPressed: widget.onPressedUse,
),
HEmptyView(38),
],
),
if (widget.showBtn) VEmptyView(15)
],
),
HEmptyView(38),
],
),
if (widget.showBtn) VEmptyView(15)
],
),
));
)),
widget.showCheck
? Positioned(
left: w(10),
top: ScreenUtil().setWidth(115),
child: Image.asset(
Utils.getImgPath(widget.rechargeListSunModel.isCheck
? 'select_f'
: 'show_select_f'),
width: ScreenUtil().setWidth(50),
height: ScreenUtil().setWidth(50),
))
: SizedBox()
]));
}
}
... ...
... ... @@ -164,11 +164,17 @@ class TableManagerPageState extends State<TableManagerPage> {
_getSmsInfo(context) async {
smsInfoData = await myModel.getSmsInfo(context);
if (myModel.smsInfo == '0') {
if (!mounted) {
return;
}
setState(() {
smsErro = '短信余额不足,请充值短信条数';
showErro = smsErro;
});
} else {
if (!mounted) {
return;
}
setState(() {
smsErro = '';
showErro = '';
... ...
import 'package:flutter/material.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/recharge_list_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';
... ... @@ -17,7 +18,12 @@ class MarketingCenterProvider extends ChangeNotifier {
MarkDataModel markDataModel;
PageState pageState = PageState.Loading;
PageState pageStateRechargeHome = PageState.Success;
PageState pageStateRechargeHome = PageState.Loading;
List<RechargeListSunModel> rechargeList = [];
RechargeListSunModel rechargeDetail; //充值优惠详情
PageState pageStateDetail = PageState.Loading;
//获取桌位列表
getTableList(context, {needLoading = true}) async {
... ... @@ -108,4 +114,105 @@ class MarketingCenterProvider extends ChangeNotifier {
notifyListeners();
return false;
}
// 商家设置预订安排模板页面
Future<bool> createNewRecharge(
BuildContext context, Map<String, String> params,
{bool showLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.create_new_recharge,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
if (params['id'] == null) {
Utils.showToast('创建新充值活动失败,请重试');
} else {
Utils.showToast('修改新充值活动失败,请重试');
}
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.data is Map || baseResp.data == 1) {
return true;
} else {
if (params['id'] == null) {
Utils.showToast('创建新充值活动失败,请重试');
} else {
Utils.showToast('修改新充值活动失败,请重试');
}
}
} else {
if (params['id'] == null) {
Utils.showToast(baseResp.msg ?? '创建新充值活动失败,请重试');
} else {
Utils.showToast(baseResp.msg ?? '修改新充值活动失败,请重试');
}
}
return false;
}
// 获取新充值活动列表
Future<bool> getNewRechargeList(BuildContext context,
{bool showLoading = true}) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, String> params = {
"sellerid": userModel.user.sellerid,
// 'uid': userModel.user.openid
};
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.get_new_recharge_list,
data: params, showLoading: showLoading)
.catchError((error) {
pageStateRechargeHome = PageState.ConnectivityError;
print(error.toString());
Utils.showToast('获取新充值活动列表失败,请重试');
notifyListeners();
return false;
});
if (baseResp.code == Constant.status_success) {
rechargeList = RechargeListModel.fromJson(baseResp.responseData).data;
if (rechargeList.length == 0) {
pageStateRechargeHome = PageState.Empty;
} else {
pageStateRechargeHome = PageState.Success;
}
notifyListeners();
return true;
} else {
Utils.showToast(baseResp.msg);
pageStateRechargeHome = PageState.ConnectivityError;
}
notifyListeners();
return false;
}
// 获取新充值活动详情
Future<bool> getNewRechargeDetail(BuildContext context, String id,
{bool showLoading = true}) async {
Map<String, String> params = {
"id": id,
};
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.get_new_recharge_detail,
data: params, showLoading: showLoading)
.catchError((error) {
pageStateDetail = PageState.ConnectivityError;
print(error.toString());
Utils.showToast('获取新充值活动详情失败,请重试');
notifyListeners();
return false;
});
if (baseResp.code == Constant.status_success) {
rechargeDetail = RechargeListSunModel.fromJson(baseResp.data);
pageStateDetail = PageState.Success;
notifyListeners();
return true;
} else {
Utils.showToast(baseResp.msg);
pageStateDetail = PageState.ConnectivityError;
}
notifyListeners();
return false;
}
}
... ...
... ... @@ -1450,10 +1450,10 @@ class NavigatorUtil {
///预订安排通知定制------优惠券选择
static Future<dynamic> goMarkingCouponSelectPage(
BuildContext context, {
BuildContext context,String idstr, {
replace = false,
}) {
return _navigateTo(context, "${Routes.marking_coupon_select_page}",
return _navigateTo(context, "${Routes.marking_coupon_select_page}?idstr=$idstr",
replace: replace);
}
... ... @@ -1555,9 +1555,10 @@ class NavigatorUtil {
///充值优惠详情编辑页
static Future<dynamic> goRechargeEditPage(
BuildContext context, {
String idstr,
replace = false,
}) {
return _navigateTo(context, "${Routes.recharge_edit_page}",
return _navigateTo(context, "${Routes.recharge_edit_page}?idstr=$idstr",
replace: replace);
}
... ... @@ -1574,14 +1575,15 @@ class NavigatorUtil {
///充值优惠详情页
static Future<dynamic> goRechargeDetailPage(
BuildContext context, {
BuildContext context,
String idstr, {
replace = false,
}) {
return _navigateTo(context, "${Routes.recharge_detail_page}",
return _navigateTo(context, "${Routes.recharge_detail_page}?idstr=$idstr",
replace: replace);
}
///核销使用
///核销使用
static Future<dynamic> goVerificationCouponPage(
BuildContext context, {
replace = false,
... ... @@ -1590,5 +1592,14 @@ class NavigatorUtil {
replace: replace);
}
///预订安排通知定制------充值优惠选择
static Future<dynamic> goMarkingRechargeSelectPage(
BuildContext context,
String idstr, {
replace = false,
}) {
return _navigateTo(
context, "${Routes.marking_recharge_select_page}?idstr=$idstr",
replace: replace);
}
}
... ...
... ... @@ -188,6 +188,7 @@ import '../pages/my/marketing_center/book_notification/dish_show_page.dart';
import '../pages/my/marketing_center/book_notification/first_image_page.dart';
import '../pages/my/marketing_center/book_notification/marking_coupon_select_page.dart';
import '../pages/my/marketing_center/book_notification/marking_preview_page.dart';
import '../pages/my/marketing_center/book_notification/marking_recharge_select_page.dart';
import '../pages/my/marketing_center/book_notification/store_introduce_page.dart';
import '../pages/my/marketing_center/marketing_center_home_page.dart';
import '../pages/my/marketing_center/recharge/recharge_detail_page.dart';
... ... @@ -2392,12 +2393,12 @@ var markingInteractionPageHandle = new Handler(
//我的----营销中心-优惠券选择
var markingCouponSelectPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
String idstr = params["idstr"].first;
// NotebookDetail detailEntity = NotebookDetail.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: MarkingCouponSelectPage());
child: MarkingCouponSelectPage(selectid:idstr));
});
//我的----营销中心-预订安排预览页
... ... @@ -2518,9 +2519,11 @@ var rechargeEditPageHandle = new Handler(
// OutWineRecordSunModel outWineRecordSunModel = OutWineRecordSunModel.fromJson(
// json.decode(
// FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
String idstr = params["idstr"].first;
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(), child: RechargeEditPage());
create: (_) => MarketingCenterProvider(),
child: RechargeEditPage(idstr: idstr));
});
///充值优惠选择店铺可核销优惠券
... ... @@ -2553,9 +2556,13 @@ var rechargeDetailPageHandle = new Handler(
// List<String> selectList = [];
// if (selectIDs.length > 0) {
// selectList = selectIDs.split(',');
// }
String idstr = params["idstr"].first;
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(), child: RechargeDetailPage());
create: (_) => MarketingCenterProvider(),
child: RechargeDetailPage(idstr: idstr));
});
///核销使用
... ... @@ -2573,3 +2580,14 @@ var verificationCouponPageHandle = new Handler(
return ChangeNotifierProvider<CouponProvider>(
create: (_) => CouponProvider(), child: VerificationCouponPage());
});
///充值优惠选择
var markingRechargeSelectPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
String idstr = params["idstr"].first;
// NotebookDetail detailEntity = NotebookDetail.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: MarkingRechargeSelectPage(selectid: idstr));
});
... ...
... ... @@ -235,6 +235,10 @@ static String recharge_detail_page =
static String verification_coupon_page =
"/verification_coupon_page"; //核销使用
static String marking_recharge_select_page =
"/marking_recharge_select_page"; //充值优惠单选择页面
... ... @@ -456,6 +460,10 @@ router.define(recharge_detail_page,
handler: rechargeDetailPageHandle);
router.define(verification_coupon_page,
handler: verificationCouponPageHandle);
router.define(marking_recharge_select_page,
handler: markingRechargeSelectPageHandle);
... ...
... ... @@ -1630,6 +1630,21 @@ class Utils {
return result.toString();
}
static String listToStringEnglish3(List<dynamic> list) {
if (list == null) {
return null;
}
String result;
list.forEach((string) {
if (result == null) {
result = string;
} else {
result = '$result、$string';
}
});
return result.toString();
}
static String listToStringEnglish(List<String> list) {
if (list == null) {
return null;
... ...