|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
import 'package:common_utils/common_utils.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_screenutil/screenutil.dart';
|
|
|
|
import 'package:flutter_sms/flutter_sms.dart';
|
|
|
|
import 'package:one_key/constant/state.dart';
|
|
|
|
import 'package:one_key/models/customer_list_model.dart';
|
|
|
|
import 'package:one_key/pages/coupon/coupon_page.dart';
|
|
|
|
import 'package:one_key/provider/customer_making_provider.dart';
|
|
|
|
import 'package:one_key/provider/customer_provider.dart';
|
|
...
|
...
|
@@ -15,12 +19,12 @@ 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';
|
|
|
|
|
|
|
|
typedef ClickCallback = void Function(dynamic value);
|
|
|
|
|
|
|
|
class MakeMarkingPage extends StatefulWidget {
|
|
|
|
final String gid;
|
|
|
|
MakeMarkingPage({Key key, this.gid}) : super(key: key);
|
|
|
|
MakeMarkingPage({Key key}) : super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_MakeMarkingPageState createState() => _MakeMarkingPageState();
|
|
...
|
...
|
@@ -32,13 +36,18 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
|
|
|
|
FocusNode _focusNode = FocusNode();
|
|
|
|
bool showDateSelWidget = false;
|
|
|
|
String limitDate = '';
|
|
|
|
|
|
|
|
CustomerProvider customerProvider;
|
|
|
|
CustomerMakingProvider customerMakingProvider;
|
|
|
|
bool needClear = true;
|
|
|
|
String gid = '';
|
|
|
|
String andriodPhone = '';
|
|
|
|
List<String> iosPhone = [];
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
|
|
|
|
_focusNode.addListener(() {
|
|
|
|
if (_focusNode.hasFocus) {
|
|
|
|
//有焦点
|
|
...
|
...
|
@@ -52,6 +61,20 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
}
|
|
|
|
});
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
|
|
for (CustomerListSunModel item in customerMakingProvider.selectCustomer) {
|
|
|
|
gid += '${item.id},';
|
|
|
|
if (Platform.isIOS) {
|
|
|
|
iosPhone.add(item.phone);
|
|
|
|
} else {
|
|
|
|
andriodPhone += "${item.phone};";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (gid.endsWith(',')) {
|
|
|
|
gid = gid.substring(0, gid.length - 1);
|
|
|
|
}
|
|
|
|
if (!Platform.isIOS && andriodPhone.endsWith(';')) {
|
|
|
|
andriodPhone = andriodPhone.substring(0, andriodPhone.length - 1);
|
|
|
|
}
|
|
|
|
_couponNetworkData(isShowLoading: false);
|
|
|
|
});
|
|
|
|
}
|
|
...
|
...
|
@@ -59,7 +82,10 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
super.dispose();
|
|
|
|
customerMakingProvider.clearData();
|
|
|
|
if (needClear) {
|
|
|
|
customerMakingProvider.clearData();
|
|
|
|
}
|
|
|
|
//
|
|
|
|
}
|
|
|
|
|
|
|
|
///消费券
|
|
...
|
...
|
@@ -91,7 +117,7 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
}
|
|
|
|
Map<String, String> params = {
|
|
|
|
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
|
|
|
|
"gid": widget.gid,
|
|
|
|
"gid": gid,
|
|
|
|
"content": customerMakingProvider.controller.text
|
|
|
|
};
|
|
|
|
if (customerMakingProvider.youhui != '选择优惠' &&
|
|
...
|
...
|
@@ -99,7 +125,74 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
params['aid'] =
|
|
|
|
'${customerProvider.couponListSelect[customerMakingProvider.couponSelectIndex].id}';
|
|
|
|
}
|
|
|
|
await customerProvider.createMarketing(context, params);
|
|
|
|
await customerProvider.createMarketing(context, params, showLoading: true);
|
|
|
|
_goSms();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// 商家创建营销
|
|
|
|
_createMarketingBySeller() async {
|
|
|
|
if (customerMakingProvider.controller.text.trim().length == 0) {
|
|
|
|
Utils.showToast('请输入营销内容');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
Map<String, String> params = {
|
|
|
|
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
|
|
|
|
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
|
|
|
|
"gid": gid,
|
|
|
|
"content": customerMakingProvider.controller.text,
|
|
|
|
'is_update': customerMakingProvider.isUpdate ? '0' : '1'
|
|
|
|
};
|
|
|
|
|
|
|
|
if (customerMakingProvider.youhui != '选择优惠' &&
|
|
|
|
customerMakingProvider.isUse) {
|
|
|
|
params['aid'] =
|
|
|
|
'${customerProvider.couponListSelect[customerMakingProvider.couponSelectIndex].id}';
|
|
|
|
}
|
|
|
|
if (customerMakingProvider.isDate) {
|
|
|
|
if (customerMakingProvider.edate == '' ||
|
|
|
|
customerMakingProvider.edate == null) {
|
|
|
|
Utils.showToast('请选择最晚完成期限');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
params['edate'] = customerMakingProvider.edate;
|
|
|
|
}
|
|
|
|
|
|
|
|
await customerProvider.createMarketingBySeller(context, params,
|
|
|
|
showLoading: true);
|
|
|
|
_goSms();
|
|
|
|
}
|
|
|
|
|
|
|
|
_goSms() async {
|
|
|
|
// DialogUtil.cupertinoAlertDialog(context,
|
|
|
|
// title: '确认发送', content: '是否确定为当前所选顾客发送该优惠券', lCallback: () {
|
|
|
|
// print('取消发送');
|
|
|
|
// }, rCallback: () async {
|
|
|
|
if (Platform.isIOS) {
|
|
|
|
// List<String> phoneNumber = ['18161963378', '18729572142', '18765432345'];
|
|
|
|
String message = "test";
|
|
|
|
try {
|
|
|
|
String _result = await sendSMS(message: message, recipients: iosPhone);
|
|
|
|
print(_result);
|
|
|
|
} catch (error) {
|
|
|
|
print(error.toString());
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
print('确定发送');
|
|
|
|
// String phoneNumber = "18161963378;18729572142";
|
|
|
|
String message = "test";
|
|
|
|
|
|
|
|
// await Sendsms.onGetPermission();
|
|
|
|
|
|
|
|
// if (await Sendsms.hasPermission()) {
|
|
|
|
await Sendsms.onSendSMS(andriodPhone, message);
|
|
|
|
}
|
|
|
|
|
|
|
|
// }
|
|
|
|
// SmsModel smsModel = new SmsModel();
|
|
|
|
// // String sms = await smsModel.getSmsContent(context, params);
|
|
|
|
// String phoneNumber = "";
|
|
|
|
// await Sendsms.onSendSMS(phoneNumber, '短信内容');
|
|
|
|
// });
|
|
|
|
}
|
|
|
|
|
|
|
|
_buttonChoose(String title, ClickCallback callback) {
|
|
...
|
...
|
@@ -313,25 +406,39 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
: Column(
|
|
|
|
children: [
|
|
|
|
VEmptyView(30),
|
|
|
|
Row(children: [
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath(
|
|
|
|
true ? 'c_mul_select' : 'c_mul_select_un'),
|
|
|
|
width: ScreenUtil().setWidth(30)),
|
|
|
|
HEmptyView(15),
|
|
|
|
Text(
|
|
|
|
'客户经理不可修改短信内容',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(26),
|
|
|
|
color: MyColours.color_333333),
|
|
|
|
),
|
|
|
|
]),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
customerMakingProvider.isUpdate =
|
|
|
|
!customerMakingProvider.isUpdate;
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
child: Row(children: [
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath(customerMakingProvider.isUpdate
|
|
|
|
? 'c_mul_select'
|
|
|
|
: 'c_mul_select_un'),
|
|
|
|
width: ScreenUtil().setWidth(30)),
|
|
|
|
HEmptyView(15),
|
|
|
|
Text(
|
|
|
|
'客户经理不可修改短信内容',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(26),
|
|
|
|
color: MyColours.color_333333),
|
|
|
|
),
|
|
|
|
])),
|
|
|
|
VEmptyView(30),
|
|
|
|
Row(children: [
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath(
|
|
|
|
true ? 'c_mul_select' : 'c_mul_select_un'),
|
|
|
|
width: ScreenUtil().setWidth(30)),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
customerMakingProvider.isDate =
|
|
|
|
!customerMakingProvider.isDate;
|
|
|
|
setState(() {});
|
|
|
|
},
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath(customerMakingProvider.isDate
|
|
|
|
? 'c_mul_select'
|
|
|
|
: 'c_mul_select_un'),
|
|
|
|
width: ScreenUtil().setWidth(30))),
|
|
|
|
HEmptyView(15),
|
|
|
|
Text(
|
|
|
|
'最晚完成期限',
|
|
...
|
...
|
@@ -355,13 +462,15 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
if (value != null) {
|
|
|
|
setState(() {
|
|
|
|
print(value);
|
|
|
|
limitDate = DateUtil.formatDateStr(value,
|
|
|
|
format: DateFormats.full);
|
|
|
|
customerMakingProvider.edate =
|
|
|
|
DateUtil.formatDateStr(value,
|
|
|
|
format: DateFormats.full);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
showDateSelWidget = false;
|
|
|
|
},
|
|
|
|
dateTime: DateUtil.getDateTime(limitDate),
|
|
|
|
dateTime: DateUtil.getDateTime(
|
|
|
|
customerMakingProvider.edate),
|
|
|
|
onCancel: () {
|
|
|
|
showDateSelWidget = false;
|
|
|
|
});
|
|
...
|
...
|
@@ -380,12 +489,12 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
color: Color.fromRGBO(
|
|
|
|
175, 176, 177, 1),
|
|
|
|
width: ScreenUtil().setWidth(2)))),
|
|
|
|
child: Text(
|
|
|
|
limitDate,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(26),
|
|
|
|
color: MyColours.color_333333),
|
|
|
|
)),
|
|
|
|
child: Text(customerMakingProvider.edate,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(26),
|
|
|
|
color: customerMakingProvider.isDate
|
|
|
|
? MyColours.color_333333
|
|
|
|
: MyColours.color_999999))),
|
|
|
|
Image.asset(
|
|
|
|
Utils.getImgPath('c_arrow_down'),
|
|
|
|
width: ScreenUtil().setWidth(30),
|
|
...
|
...
|
@@ -442,6 +551,7 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
HEmptyView(10),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
needClear = false;
|
|
|
|
Navigator.pop(context);
|
|
|
|
// NavigatorUtil.goMarketingRecordsDetailPage(context);
|
|
|
|
},
|
|
...
|
...
|
@@ -483,6 +593,9 @@ class _MakeMarkingPageState extends State<MakeMarkingPage> { |
|
|
|
FromPage.FromPageMyCustomer) {
|
|
|
|
//群发短信
|
|
|
|
_createMarketing();
|
|
|
|
} else {
|
|
|
|
//确认下发任务
|
|
|
|
_createMarketingBySeller();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
),
|
...
|
...
|
|