Commit 09cbd6bb509df473a79c03f0893a4ec7eb261335

Authored by wdn127929
1 parent 349c731e

店铺手机发送短信

... ... @@ -97,6 +97,9 @@ class CouponSunModel extends Object {
@JsonKey(name: 'grant_num')
String grantNum;
@JsonKey(name: 'urllink')
String urllink;
bool isCheck = false;
bool showText = false;
bool isMarking = false;
... ... @@ -123,7 +126,8 @@ class CouponSunModel extends Object {
this.use,
this.expDate,
this.nickNameShow,
this.grantNum);
this.grantNum,
this.urllink);
factory CouponSunModel.fromJson(Map<String, dynamic> srcJson) =>
_$CouponSunModelFromJson(srcJson);
... ...
... ... @@ -60,6 +60,7 @@ CouponSunModel _$CouponSunModelFromJson(Map<String, dynamic> json) {
: null,
json['nick_name'] as String,
json['grant_num'] as String,
json['urllink'] as String,
);
}
... ... @@ -86,7 +87,8 @@ Map<String, dynamic> _$CouponSunModelToJson(CouponSunModel instance) =>
'use': instance.use,
'exp_date': instance.expDate,
'nick_name': instance.nickNameShow,
'grant_num': instance.grantNum
'grant_num': instance.grantNum,
'urllink':instance.urllink,
};
CouponUse _$CouponUseFromJson(Map<String, dynamic> json) {
... ...
class MarketingSmsTemplateModel {
int ret;
List<MarketingSmsTemplateSunModel> data;
String msg;
MarketingSmsTemplateModel({this.ret, this.data, this.msg});
MarketingSmsTemplateModel.fromJson(Map<String, dynamic> json) {
ret = json['ret'];
if (json['data'] != null) {
data = <MarketingSmsTemplateSunModel>[];
json['data'].forEach((v) {
data.add(new MarketingSmsTemplateSunModel.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 MarketingSmsTemplateSunModel {
String title;
String content;
MarketingSmsTemplateSunModel({this.title, this.content});
MarketingSmsTemplateSunModel.fromJson(Map<String, dynamic> json) {
title = json['title'];
content = json['content'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['title'] = this.title;
data['content'] = this.content;
return data;
}
}
... ...
... ... @@ -487,4 +487,7 @@ class HttpUrl {
static const String create_activity_url_link =
"?service=App.Wechat.CreateActivityUrlLink"; // 创建商家优惠券小程序URL
static const String get_marketing_sms_template =
"?service=App.SendSMS.GetMarketingSmsTemplate"; // 获取营销短信模板列表
}
... ...
... ... @@ -278,22 +278,14 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
bool isSuccess =
await couponProvider.createCustomerActivity(context, params);
if (isSuccess) {
//创建券的二维码
Map<String, String> param = {
"sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
"id": couponProvider.couponId,
};
bool success = await couponProvider.createActivityUrlLink(context, param);
if (success) {
//成功之后跳回前一个页面
// bus.emit('refresh_coupon_list');
EventBus().emit('refresh_coupon_invitation');
bus.emit('refresh_coupon_list_f');
// bus.emit('refresh_marketting_page');
//成功之后跳回前一个页面
// bus.emit('refresh_coupon_list');
EventBus().emit('refresh_coupon_invitation');
bus.emit('refresh_coupon_list_f');
// bus.emit('refresh_marketting_page');
bus.emit('refresh_table_m_coupon');
Navigator.pop(context, true);
}
bus.emit('refresh_table_m_coupon');
Navigator.pop(context, true);
}
}
... ...
... ... @@ -496,7 +496,7 @@ class _MyContactListPageState extends State<MyContactListPage> {
}
NavigatorUtil.goMyCustomerDetailPage(
context, model, widget.fromPage,widget.uid);
context, model, widget.fromPage, widget.uid);
}
},
child: Container(
... ... @@ -565,7 +565,7 @@ class _MyContactListPageState extends State<MyContactListPage> {
Container(
width: w(70),
child: Text(
widget.sellerPreserve??true
widget.sellerPreserve ?? true
? model.phone
: Utils.starPhone('${model.phone}'),
overflow: TextOverflow.ellipsis,
... ... @@ -629,7 +629,7 @@ class _MyContactListPageState extends State<MyContactListPage> {
if (model.isMember == '1' || model.isMember == '0')
flatBtn(model.isMember == '1' ? '会员' : '非会员',
MyColours.color_438E93),
'${model.storeDay}' != '0'
'${model.storeDay}' != '0' && model.storeDay != null
? flatBtn('存酒${model.storeDay}天',
MyColours.color_438E93)
: SizedBox()
... ...
... ... @@ -59,28 +59,28 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
String andriodPhone = '';
List<String> iosPhone = [];
List<TemplateModel> data = [];
// List<TemplateModel> data = [];
@override
void initState() {
super.initState();
UserModel userModel = Provider.of<UserModel>(context, listen: false);
data = [
TemplateModel('新菜上市',
'尊敬的贵宾,本店最近有新菜上市,欢迎您来品尝,活动期间一律7折,提前预订热线${userModel.user.sellerphone},${userModel.user.sellername}全体员工恭候您的大驾光临!'),
TemplateModel('生日营销1',
'尊敬的贵宾,${userModel.user.sellername}全体员工提前祝您生日快乐!凡是生日当天在本店享有7折的优惠,并且为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。'),
TemplateModel('生日营销2',
'尊敬的贵宾,提前祝您生日快乐!${userModel.user.sellername}从来也没忘记在这样特别的日子里祝您:生日快乐,生活幸福。生日当天在本店消费享有6折优惠!'),
TemplateModel('节日',
'尊敬的贵宾:值xx节日将至,在x月x日至x日,到我店消费即可免费领取价值98节日礼包一份,大礼不断,优惠不断!详情请点击{礼品领取链接}。'),
TemplateModel('存酒超期',
'尊敬的贵宾:您在我店存放的酒水已经等待您30天了!已开启酒水长期存放将影响口感,${userModel.user.sellername}全体员工期待您早日到店享用完毕,静候您的光临!'),
TemplateModel('沉睡唤醒',
'尊敬的贵宾:对不起!很冒昧的给您发这条短信,我是${userModel.user.sellername}的${userModel.user.nickName ?? ''}.您都有很长一段时间没来我们这里了,我们非常想念您。或许是我们的服务还没有让您满意,或许是给您搭配的餐品还没有满足您的需求,总之,都是我们做的不够好!我们正在不断的改进,希望可以变得更完美,请您原谅以往我们的不足,有空回來看看我们!为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。')
];
// UserModel userModel = Provider.of<UserModel>(context, listen: false);
// data = [
// TemplateModel('新菜上市',
// '尊敬的贵宾,本店最近有新菜上市,欢迎您来品尝,活动期间一律7折,提前预订热线${userModel.user.sellerphone},${userModel.user.sellername}全体员工恭候您的大驾光临!'),
// TemplateModel('生日营销1',
// '尊敬的贵宾,${userModel.user.sellername}全体员工提前祝您生日快乐!凡是生日当天在本店享有7折的优惠,并且为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。'),
// TemplateModel('生日营销2',
// '尊敬的贵宾,提前祝您生日快乐!${userModel.user.sellername}从来也没忘记在这样特别的日子里祝您:生日快乐,生活幸福。生日当天在本店消费享有6折优惠!'),
// TemplateModel('节日',
// '尊敬的贵宾:值xx节日将至,在x月x日至x日,到我店消费即可免费领取价值98节日礼包一份,大礼不断,优惠不断!详情请点击{礼品领取链接}。'),
// TemplateModel('存酒超期',
// '尊敬的贵宾:您在我店存放的酒水已经等待您30天了!已开启酒水长期存放将影响口感,${userModel.user.sellername}全体员工期待您早日到店享用完毕,静候您的光临!'),
// TemplateModel('沉睡唤醒',
// '尊敬的贵宾:对不起!很冒昧的给您发这条短信,我是${userModel.user.sellername}的${userModel.user.nickName ?? ''}.您都有很长一段时间没来我们这里了,我们非常想念您。或许是我们的服务还没有让您满意,或许是给您搭配的餐品还没有满足您的需求,总之,都是我们做的不够好!我们正在不断的改进,希望可以变得更完美,请您原谅以往我们的不足,有空回來看看我们!为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。')
// ];
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
... ... @@ -95,6 +95,7 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
}
});
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getMarketingSmsTemplate();
_couponNetworkData(isShowLoading: false);
if (widget.fromPage == FromPage.FromPageMakeRecordDetail) {
_getGuestByGid(widget.selfList.gid);
... ... @@ -106,6 +107,11 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
});
}
_getMarketingSmsTemplate({bool isShowLoading = true}) async {
await customerProvider.getMarketingSmsTemplate(context,
isShowLoading: isShowLoading);
}
_getPhoneAndGid() {
andriodPhone = '';
iosPhone = [];
... ... @@ -290,12 +296,21 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
List<Widget> _templateUI() {
List<Widget> templates = [];
data.forEach((element) {
customerProvider.marketingSmsData.forEach((element) {
templates.add(InkWell(
onTap: () {
//选择模版.默认数据
customerMakingProvider.controller.text = element.content;
String newStr = '';
UserModel userModel =
Provider.of<UserModel>(context, listen: false);
newStr =
element.content.replaceAll('{店铺名称}', userModel.user.sellername);
newStr = newStr.replaceAll('{店铺电话号码}', userModel.user.sellerphone);
newStr = newStr.replaceAll('{经理名称}', userModel.user.nickName ?? '');
newStr = newStr.replaceAll('{礼品领取链接}', '');
customerMakingProvider.controller.text = newStr;
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: w(10), vertical: w(5)),
... ... @@ -315,6 +330,28 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
return templates;
}
_insertUrllink(String link) {
// *************开始直接插入会报错***********还没有改
var cursorPos =
customerMakingProvider.controller.selection.base.offset; //获取到光标的在字符串的位置
if (cursorPos < 0) {
customerMakingProvider.controller.text += link;
} else {
String textAfterCursor = customerMakingProvider.controller.text
.substring(cursorPos); //把字符串从光标的位置截取,光标后面的
String textBeforeCursor = customerMakingProvider.controller.text
.substring(0, cursorPos); //光标前面的字符串
customerMakingProvider.controller.text =
textBeforeCursor + link + textAfterCursor; //把想要的插入的内容拼接在光标位置处
customerMakingProvider.controller.selection = TextSelection.collapsed(
offset: customerMakingProvider.controller.text.length);
}
}
///短信内容编辑UI
Widget _contentWidget(String hintText) {
return Container(
... ... @@ -379,38 +416,38 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
},
),
VEmptyView(20),
// Container(
// padding: EdgeInsets.only(left: w(10), right: w(10), bottom: w(10)),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(r(5)),
// border: Border.all(width: w(1), color: MyColours.color_F8F7F3)),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Container(
// height: w(34),
// alignment: Alignment.centerLeft,
// child: Text(
// '常用模版',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: font(12),
// ),
// ),
// ),
// VEmptyView(10),
// Padding(
// padding: EdgeInsets.only(left: w(10)),
// child: Wrap(
// spacing: w(10),
// runSpacing: w(5),
// children: _templateUI(),
// ),
// )
// ],
// ),
// ),
// VEmptyView(50),
Container(
padding: EdgeInsets.only(left: w(10), right: w(10), bottom: w(10)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(5)),
border: Border.all(width: w(1), color: MyColours.color_F8F7F3)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: w(34),
alignment: Alignment.centerLeft,
child: Text(
'常用模版',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(12),
),
),
),
VEmptyView(10),
Padding(
padding: EdgeInsets.only(left: w(10)),
child: Wrap(
spacing: w(10),
runSpacing: w(5),
children: _templateUI(),
),
)
],
),
),
VEmptyView(50),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
... ... @@ -448,7 +485,7 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
width: ScreenUtil().setWidth(44)),
HEmptyView(15),
Text(
'营销加入优惠', //'在当前位置插入优惠',
'在当前位置插入优惠',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
... ... @@ -473,36 +510,42 @@ class _MyMakeMarkingPageState extends State<MyMakeMarkingPage> {
return;
}
DialogUtil.showSelectCusmanDialog(context, couponList,
(value) {
(value) async {
if (value != null) {
setState(() {
customerMakingProvider.couponSelectIndex =
value.first;
customerMakingProvider.youhui = couponList[
customerMakingProvider.couponSelectIndex];
});
// *************开始直接插入会报错***********还没有改
// var cursorPos = customerMakingProvider
// .controller.selection.base.offset; //获取到光标的在字符串的位置
// String textAfterCursor = customerMakingProvider
// .controller.text
// .substring(cursorPos); //把字符串从光标的位置截取,光标后面的
// String textBeforeCursor = customerMakingProvider
// .controller.text
// .substring(0, cursorPos); //光标前面的字符串
// customerMakingProvider.controller.text =
// textBeforeCursor +
// "http://www.baidu.com" +
// textAfterCursor; //把想要的插入的内容拼接在光标位置处
// customerMakingProvider.controller.selection =
// TextSelection.collapsed(
// offset: customerMakingProvider
// .controller.text.length);
if (customerProvider
.couponListSelect[value.first].urllink ==
null) {
//创建链接
//创建券的二维码
Map<String, String> param = {
"sid":
Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": customerProvider
.couponListSelect[value.first].id,
};
dynamic object = await customerProvider
.createActivityUrlLink(context, param);
if (object is bool) {
//
} else {
//成功
_insertUrllink(object);
}
} else {
// 直接使用
setState(() {
customerMakingProvider.couponSelectIndex =
value.first;
customerMakingProvider.youhui = couponList[
customerMakingProvider.couponSelectIndex];
});
_insertUrllink(customerProvider
.couponListSelect[value.first].urllink);
}
}
},
selecteds: customerMakingProvider
... ...
... ... @@ -57,27 +57,26 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
bool needClear = true;
String gid = '';
List<TemplateModel> data = [];
// List<TemplateModel> data = [];
@override
void initState() {
super.initState();
UserModel userModel = Provider.of<UserModel>(context, listen: false);
data = [
TemplateModel('新菜上市',
'尊敬的贵宾,本店最近有新菜上市,欢迎您来品尝,活动期间一律7折,提前预订热线${userModel.user.sellerphone},${userModel.user.sellername}全体员工恭候您的大驾光临!'),
TemplateModel('生日营销1',
'尊敬的贵宾,${userModel.user.sellername}全体员工提前祝您生日快乐!凡是生日当天在本店享有7折的优惠,并且为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。'),
TemplateModel('生日营销2',
'尊敬的贵宾,提前祝您生日快乐!${userModel.user.sellername}从来也没忘记在这样特别的日子里祝您:生日快乐,生活幸福。生日当天在本店消费享有6折优惠!'),
TemplateModel('节日',
'尊敬的贵宾:值xx节日将至,在x月x日至x日,到我店消费即可免费领取价值98节日礼包一份,大礼不断,优惠不断!详情请点击{礼品领取链接}。'),
TemplateModel('存酒超期',
'尊敬的贵宾:您在我店存放的酒水已经等待您30天了!已开启酒水长期存放将影响口感,${userModel.user.sellername}全体员工期待您早日到店享用完毕,静候您的光临!'),
TemplateModel('沉睡唤醒',
'尊敬的贵宾:对不起!很冒昧的给您发这条短信,我是${userModel.user.sellername}的${userModel.user.nickName ?? ''}.您都有很长一段时间没来我们这里了,我们非常想念您。或许是我们的服务还没有让您满意,或许是给您搭配的餐品还没有满足您的需求,总之,都是我们做的不够好!我们正在不断的改进,希望可以变得更完美,请您原谅以往我们的不足,有空回來看看我们!为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。')
];
// data = [
// TemplateModel('新菜上市',
// '尊敬的贵宾,本店最近有新菜上市,欢迎您来品尝,活动期间一律7折,提前预订热线${userModel.user.sellerphone},${userModel.user.sellername}全体员工恭候您的大驾光临!'),
// TemplateModel('生日营销1',
// '尊敬的贵宾,${userModel.user.sellername}全体员工提前祝您生日快乐!凡是生日当天在本店享有7折的优惠,并且为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。'),
// TemplateModel('生日营销2',
// '尊敬的贵宾,提前祝您生日快乐!${userModel.user.sellername}从来也没忘记在这样特别的日子里祝您:生日快乐,生活幸福。生日当天在本店消费享有6折优惠!'),
// TemplateModel('节日',
// '尊敬的贵宾:值xx节日将至,在x月x日至x日,到我店消费即可免费领取价值98节日礼包一份,大礼不断,优惠不断!详情请点击{礼品领取链接}。'),
// TemplateModel('存酒超期',
// '尊敬的贵宾:您在我店存放的酒水已经等待您30天了!已开启酒水长期存放将影响口感,${userModel.user.sellername}全体员工期待您早日到店享用完毕,静候您的光临!'),
// TemplateModel('沉睡唤醒',
// '尊敬的贵宾:对不起!很冒昧的给您发这条短信,我是${userModel.user.sellername}的${userModel.user.nickName ?? ''}.您都有很长一段时间没来我们这里了,我们非常想念您。或许是我们的服务还没有让您满意,或许是给您搭配的餐品还没有满足您的需求,总之,都是我们做的不够好!我们正在不断的改进,希望可以变得更完美,请您原谅以往我们的不足,有空回來看看我们!为您准备了一份精美小礼品,快快来领取吧!详情请点击{礼品领取链接}。')
// ];
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
... ... @@ -92,6 +91,7 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
}
});
WidgetsBinding.instance.addPostFrameCallback((_) async {
_getMarketingSmsTemplate();
_couponNetworkData(isShowLoading: false);
if (widget.fromPage == FromPage.FromPageMakeRecordDetail) {
_getGuestByGid();
... ... @@ -161,6 +161,11 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
setState(() {});
}
_getMarketingSmsTemplate({bool isShowLoading = true}) async {
await customerProvider.getMarketingSmsTemplate(context,
isShowLoading: isShowLoading);
}
///消费券
_couponNetworkData({bool isShowLoading = true}) async {
// customerMakingProvider.couponSelectIndex = 0;
... ... @@ -271,12 +276,21 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
List<Widget> _templateUI() {
List<Widget> templates = [];
data.forEach((element) {
customerProvider.marketingSmsData.forEach((element) {
templates.add(InkWell(
onTap: () {
//选择模版.默认数据
customerMakingProvider.controller.text = element.content;
String newStr = '';
UserModel userModel =
Provider.of<UserModel>(context, listen: false);
newStr =
element.content.replaceAll('{店铺名称}', userModel.user.sellername);
newStr = newStr.replaceAll('{店铺电话号码}', userModel.user.sellerphone);
newStr = newStr.replaceAll('{经理名称}', userModel.user.nickName ?? '');
newStr = newStr.replaceAll('{礼品领取链接}', '');
customerMakingProvider.controller.text = newStr;
},
child: Container(
padding: EdgeInsets.symmetric(horizontal: w(10), vertical: w(5)),
... ... @@ -296,6 +310,28 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
return templates;
}
_insertUrllink(String link) {
// *************开始直接插入会报错***********还没有改
var cursorPos =
customerMakingProvider.controller.selection.base.offset; //获取到光标的在字符串的位置
if (cursorPos < 0) {
customerMakingProvider.controller.text += link;
} else {
String textAfterCursor = customerMakingProvider.controller.text
.substring(cursorPos); //把字符串从光标的位置截取,光标后面的
String textBeforeCursor = customerMakingProvider.controller.text
.substring(0, cursorPos); //光标前面的字符串
customerMakingProvider.controller.text =
textBeforeCursor + link + textAfterCursor; //把想要的插入的内容拼接在光标位置处
customerMakingProvider.controller.selection = TextSelection.collapsed(
offset: customerMakingProvider.controller.text.length);
}
}
///短信内容编辑UI
Widget _contentWidget(String hintText) {
return Container(
... ... @@ -360,38 +396,38 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
},
),
VEmptyView(20),
// Container(
// padding: EdgeInsets.only(left: w(10), right: w(10), bottom: w(10)),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(r(5)),
// border: Border.all(width: w(1), color: MyColours.color_F8F7F3)),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Container(
// height: w(34),
// alignment: Alignment.centerLeft,
// child: Text(
// '常用模版',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: font(12),
// ),
// ),
// ),
// VEmptyView(10),
// Padding(
// padding: EdgeInsets.only(left: w(10)),
// child: Wrap(
// spacing: w(10),
// runSpacing: w(5),
// children: _templateUI(),
// ),
// )
// ],
// ),
// ),
// VEmptyView(50),
Container(
padding: EdgeInsets.only(left: w(10), right: w(10), bottom: w(10)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(5)),
border: Border.all(width: w(1), color: MyColours.color_F8F7F3)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: w(34),
alignment: Alignment.centerLeft,
child: Text(
'常用模版',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(12),
),
),
),
VEmptyView(10),
Padding(
padding: EdgeInsets.only(left: w(10)),
child: Wrap(
spacing: w(10),
runSpacing: w(5),
children: _templateUI(),
),
)
],
),
),
VEmptyView(50),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
... ... @@ -429,7 +465,7 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
width: ScreenUtil().setWidth(44)),
HEmptyView(15),
Text(
'营销加入优惠', //'在当前位置插入优惠',
'在当前位置插入优惠',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
... ... @@ -454,36 +490,49 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> {
return;
}
DialogUtil.showSelectCusmanDialog(context, couponList,
(value) {
(value) async {
if (value != null) {
setState(() {
customerMakingProvider.couponSelectIndex =
value.first;
customerMakingProvider.youhui = couponList[
customerMakingProvider.couponSelectIndex];
});
// *************开始直接插入会报错***********还没有改
// var cursorPos = customerMakingProvider
// .controller.selection.base.offset; //获取到光标的在字符串的位置
// String textAfterCursor = customerMakingProvider
// .controller.text
// .substring(cursorPos); //把字符串从光标的位置截取,光标后面的
// String textBeforeCursor = customerMakingProvider
// .controller.text
// .substring(0, cursorPos); //光标前面的字符串
// customerMakingProvider.controller.text =
// textBeforeCursor +
// "http://www.baidu.com" +
// textAfterCursor; //把想要的插入的内容拼接在光标位置处
// customerMakingProvider.controller.selection =
// TextSelection.collapsed(
// offset: customerMakingProvider
// .controller.text.length);
if (customerProvider
.couponListSelect[value.first].urllink ==
null) {
//创建链接
//创建券的二维码
Map<String, String> param = {
"sid":
Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
"id": customerProvider
.couponListSelect[value.first].id,
};
dynamic object = await customerProvider
.createActivityUrlLink(context, param);
if (object is bool || object == null) {
//
} else {
//成功
setState(() {
customerMakingProvider.couponSelectIndex =
value.first;
customerMakingProvider.youhui = couponList[
customerMakingProvider.couponSelectIndex];
});
_insertUrllink(object);
}
} else {
// 直接使用
setState(() {
customerMakingProvider.couponSelectIndex =
value.first;
customerMakingProvider.youhui = couponList[
customerMakingProvider.couponSelectIndex];
});
_insertUrllink(customerProvider
.couponListSelect[value.first].urllink);
}
}
},
selecteds: customerMakingProvider
... ...
... ... @@ -167,53 +167,7 @@ class CouponProvider with ChangeNotifier {
}
}
///CreateActivityUrlLink
Future<dynamic> createActivityUrlLink(
BuildContext context, Map<String, String> params,
{isShowLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.create_activity_url_link,
data: params, showLoading: isShowLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {
// switch (error.type) {
// case 1:
// pageState = PageState.ConnectivityError;
// break;
// case 2:
// pageState = PageState.ConnectivityTimeOut;
// break;
// default:
// pageState = PageState.ConnectivityError;
// break;
// }
}
// notifyListeners();
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.data.isEmpty) {
// pageState = PageState.ConnectivityError;
return false;
} else {
if( '${baseResp.data['errcode']}' == '0'){
return true;
}
// pageState = PageState.Success;
return false;
}
// notifyListeners();
// return NotebookDetail.fromJson(baseResp.data);
} else {
// pageState = PageState.ConnectivityError;
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
return false;
}
}
//
... ...
... ... @@ -30,6 +30,7 @@ import 'package:one_key/widgets/loading.dart';
import 'package:provider/provider.dart';
import '../models/day_statics_model.dart';
import '../models/marketing_sms_template_model.dart';
import '../models/month_statics_model.dart';
import '../models/seller_counts_list.dart';
import '../pages/my/customer_type/store_customer/bar_chart_page.dart';
... ... @@ -122,6 +123,8 @@ class CustomerProvider extends ChangeNotifier {
bool isrepair = false;
bool isselfphone = false;
List<MarketingSmsTemplateSunModel> marketingSmsData = [];
/// 获取全店日订单统计数据
Future<DayStaticsSunModel> getSellerCountsListByDay(
BuildContext context, Map<String, String> params,
... ... @@ -382,6 +385,82 @@ class CustomerProvider extends ChangeNotifier {
return null;
}
///获取营销短信模板列表
Future<List<MarketingSmsTemplateSunModel>> getMarketingSmsTemplate(
BuildContext context,
{isShowLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(
context, Method.get, HttpUrl.get_marketing_sms_template,
showLoading: false)
.catchError((error) {
print(error.toString());
if (error is MyError) {
switch (error.type) {
}
}
});
if (baseResp == null) return [];
if (baseResp.code == Constant.status_success) {
marketingSmsData =
MarketingSmsTemplateModel.fromJson(baseResp.responseData).data;
notifyListeners();
} else {
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
}
return marketingSmsData;
}
///CreateActivityUrlLink
Future<dynamic> createActivityUrlLink(
BuildContext context, Map<String, String> params,
{isShowLoading = true}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.create_activity_url_link,
data: params, showLoading: isShowLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {
// switch (error.type) {
// case 1:
// pageState = PageState.ConnectivityError;
// break;
// case 2:
// pageState = PageState.ConnectivityTimeOut;
// break;
// default:
// pageState = PageState.ConnectivityError;
// break;
// }
}
// notifyListeners();
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.data.isEmpty) {
// pageState = PageState.ConnectivityError;
return false;
} else {
if ('${baseResp.data['errcode']}' == '0') {
return baseResp.data['url_link'];
}
// pageState = PageState.Success;
return false;
}
// notifyListeners();
// return NotebookDetail.fromJson(baseResp.data);
} else {
// pageState = PageState.ConnectivityError;
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
return false;
}
}
///客户经理获取所创建活动列表(选择优惠券)
Future<List<CouponSunModel>> getCustomerSelectActivityNew(
BuildContext context, Map<String, String> params,
... ...