|
...
|
...
|
@@ -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
|
...
|
...
|
|