Commit a1c1303ee224d243d0a1f935c766ee477da80784

Authored by wdn127929
1 parent c92d78e7

固定模版OK

... ... @@ -51,6 +51,8 @@ class GetDzSellerConfSunModel {
String isNotice;
String isMarketing;
String saiyouyun;
GetDzSellerConfSunModel(
{this.id,
this.sid,
... ... @@ -72,7 +74,8 @@ class GetDzSellerConfSunModel {
this.isShowPrice,
this.isOpenCancel,
this.isNotice,
this.isMarketing});
this.isMarketing,
this.saiyouyun});
GetDzSellerConfSunModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
... ... @@ -98,6 +101,7 @@ class GetDzSellerConfSunModel {
isOpenCancel = json['is_open_cancel_temp'];
isNotice = json['is_seller_notice'];
isMarketing = json['is_seller_marketing'];
saiyouyun = json['saiyouyun'];
}
Map<String, dynamic> toJson() {
... ... @@ -123,6 +127,7 @@ class GetDzSellerConfSunModel {
data['is_open_cancel_temp'] = this.isOpenCancel;
data['is_seller_notice'] = this.isNotice;
data['is_seller_marketing'] = this.isMarketing;
data['saiyouyun'] = this.saiyouyun;
return data;
}
... ...
class SaiYouYunModel {
int ret;
List<SaiYouYunSunModel> data;
String msg;
SaiYouYunModel({this.ret, this.data, this.msg});
SaiYouYunModel.fromJson(Map<String, dynamic> json) {
ret = json['ret'];
if (json['data'] != null) {
data = new List<SaiYouYunSunModel>();
json['data'].forEach((v) {
data.add(new SaiYouYunSunModel.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 SaiYouYunSunModel {
String temp;
String content;
bool select = false;
SaiYouYunSunModel({this.temp, this.content});
SaiYouYunSunModel.fromJson(Map<String, dynamic> json) {
temp = json['temp'];
content = json['content'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['temp'] = this.temp;
data['content'] = this.content;
return data;
}
}
... ...
... ... @@ -213,6 +213,7 @@ class DioUtil {
: response.data[_codeKey];
_msg = response.data[_msgKey];
_data = response.data[_dataKey];
_responseData = response.data;
} else {
Map<String, dynamic> _dataMap = _decodeData(response);
... ...
... ... @@ -501,4 +501,7 @@ class HttpUrl {
static const String set_reserve_deposit =
"?service=App.Reserve.SetReserveDeposit"; // 取消订单设置定金走向
static const String get_sai_you_yun_list =
"?service=App.SaiYouYun.GetSaiYouYunList"; // 获取赛邮云短信模板列表
}
... ...
... ... @@ -53,12 +53,16 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> {
setState(() {});
});
bus.on("getDzSellerConf", (arg) {
getDzSellerConf();
});
});
}
@override
void dispose() {
bus.off('theme_color_type_name');
bus.off('getDzSellerConf');
super.dispose();
}
... ... @@ -79,6 +83,8 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> {
marketingCenterProvider.dzSellerConfModel.isMarketing == '1'
? true
: false;
smsTemplate = marketingCenterProvider.dzSellerConfModel.saiyouyun ?? '';
marketingCenterProvider.pageStateSetting = PageState.Success;
} else {
marketingCenterProvider.pageStateSetting = PageState.ConnectivityError;
... ... @@ -440,13 +446,14 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> {
VEmptyView(28),
InkWell(
onTap: () {
NavigatorUtil.goSmsTemplateSettingPage(context);
NavigatorUtil.goSmsTemplateSettingPage(
context, smsTemplate);
},
child: Padding(
padding: EdgeInsets.only(
left: w(16),
top: w(14),
bottom: w(3),
bottom: w(10),
right: w(12)),
child: Row(
mainAxisAlignment:
... ...
... ... @@ -3,11 +3,15 @@ import 'package:flutter_screenutil/flutter_screenutil.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/utils.dart';
import 'package:one_key/widgets/h_empty_view.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 '../../../models/sai_you_yun_model.dart';
import '../../../provider/marketing_center_provider.dart';
import '../../../utils/event_bus.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/round_button.dart';
... ... @@ -16,7 +20,8 @@ import '../../../widgets/round_button.dart';
*/
class SmsTemplateSettingPage extends StatefulWidget {
SmsTemplateSettingPage({Key key}) : super(key: key);
final String smsTemplate;
SmsTemplateSettingPage({Key key, this.smsTemplate}) : super(key: key);
@override
_SmsTemplateSettingPageState createState() => _SmsTemplateSettingPageState();
... ... @@ -27,45 +32,91 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
TextEditingController controller = TextEditingController();
bool canChange = true; //选择了可变模版
List<String> fixedData = ['SXIRf', 'Gld4X4', 'JzDjq2'];
List<String> changeableData = ['tqNH3', 'J72Nk', '6uZMW4'];
bool canChange = false; //选择了可变模版
List<String> btnData = ['店名', '仅包间名字', '小程序预订卡片'];
MarketingCenterProvider marketingCenterProvider;
String smsSelectValue = '';
@override
void initState() {
// TODO: implement initState
super.initState();
smsSelectValue = widget.smsTemplate;
WidgetsBinding.instance.addPostFrameCallback((_) {
contentChangeStart =
'尊敬的贵宾,您好!\n诚挚感谢您选择${Provider.of<UserModel>(context, listen: false).user.sellername}用餐!\n';
_getSaiYouYunList();
});
}
List<Widget> templateWidgets(String title, List<String> temData) {
_getSaiYouYunList() async {
await marketingCenterProvider.getSaiYouYunList(context);
if (widget.smsTemplate != null && widget.smsTemplate.length > 0) {
//默认选中
marketingCenterProvider.saiYouYunFixedData.forEach((element) {
if (element.temp == widget.smsTemplate) {
element.select = true;
controller.text = element.content;
}
});
}
marketingCenterProvider.notifyListeners();
}
///设置店铺短信固定模版
Future<bool> _setTempleteSMS({bool isShowLoading = true}) async {
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
'key': 'saiyouyun',
'value': smsSelectValue,
};
bool success = await marketingCenterProvider.setConfing(context, params,
needToast: false);
if (success) {
bus.emit('getDzSellerConf');
Utils.showToast('保存成功');
Navigator.pop(context);
return true;
} else {
return false;
}
}
List<Widget> templateWidgets(String title, List<SaiYouYunSunModel> temData) {
List<Widget> data = [];
for (var i = 0; i < temData.length; i++) {
data.add(btnItem(temData[i], onTap: () {
data.add(btnItem(temData[i].temp, temData[i].select, onTap: () {
if (title == '固定模版') {
canChange = false;
fixedData.forEach((element) {
// element.select = false;
marketingCenterProvider.saiYouYunFixedData.forEach((element) {
element.select = false;
});
// i 的select = true;
changeableData.forEach((element) {
// element.select = false;
temData[i].select = true;
smsSelectValue = temData[i].temp;
controller.text = temData[i].content;
marketingCenterProvider.saiYouYunchangedData.forEach((element) {
element.select = false;
});
} else {
canChange = true;
changeableData.forEach((element) {
// element.select = false;
marketingCenterProvider.saiYouYunchangedData.forEach((element) {
element.select = false;
});
// i 的select = true;
fixedData.forEach((element) {
// element.select = false;
temData[i].select = true;
smsSelectValue = temData[i].temp;
controller.text = temData[i].content;
marketingCenterProvider.saiYouYunFixedData.forEach((element) {
element.select = false;
});
}
setState(() {});
... ... @@ -77,7 +128,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
List<Widget> btnWidgets(List<String> temData) {
List<Widget> data = [];
for (var i = 0; i < temData.length; i++) {
data.add(btnItem(temData[i], onTap: () {
data.add(btnItem(temData[i], true, onTap: () {
// setState(() {
// contentChangeStart += temData[i] + '\n';
// });
... ... @@ -88,17 +139,18 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
return data;
}
Widget btnItem(String title, {GestureTapCallback onTap}) {
Widget btnItem(String title, bool select, {GestureTapCallback onTap}) {
return InkWell(
onTap: onTap,
child: Container(
padding: EdgeInsets.all(w(3)),
decoration: BoxDecoration(
color: select ? MyColours.color_438E93 : MyColours.color_ffffff,
borderRadius: BorderRadius.circular(r(5)),
border: Border.all(width: w(1), color: MyColours.color_438E93)),
child: Text(title,
style: TextStyle(
color: MyColours.color_438E93,
color: select ? MyColours.color_ffffff : MyColours.color_438E93,
fontSize: font(12),
fontWeight: FontWeight.bold)),
),
... ... @@ -123,7 +175,10 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
spacing: w(5),
runSpacing: w(5),
children: templateWidgets(
title, title == '固定模版' ? fixedData : changeableData),
title,
title == '固定模版'
? marketingCenterProvider.saiYouYunFixedData
: marketingCenterProvider.saiYouYunchangedData),
))
],
),
... ... @@ -132,6 +187,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
@override
Widget build(BuildContext context) {
marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('预订通知短信模板选择'),
... ... @@ -143,7 +200,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_templeteWidget('固定模版'),
_templeteWidget('可变模版'),
// _templeteWidget('可变模版'),
VEmptyView(10),
Container(
width: double.infinity,
... ... @@ -156,13 +213,14 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
contentChangeStart,
style: TextStyle(
height: 1.5,
color: MyColours.color_66000000,
fontSize: font(14)),
),
if (canChange)
Text(
contentChangeStart,
style: TextStyle(
height: 1.5,
color: MyColours.color_66000000,
fontSize: font(14)),
),
TextField(
enabled: canChange,
controller: controller,
... ... @@ -189,7 +247,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
decoration: InputDecoration(
border:
OutlineInputBorder(borderSide: BorderSide.none),
hintText: '以上内容为固定不可编辑,点击这里开始编辑短信内容',
hintText:
canChange ? '以上内容为固定不可编辑,点击这里开始编辑短信内容' : '请选择模版',
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28),
... ... @@ -207,14 +266,15 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
),
),
VEmptyView(10),
Container(
padding: EdgeInsets.symmetric(horizontal: w(21)),
child: Wrap(
crossAxisAlignment: WrapCrossAlignment.start,
spacing: w(10),
runSpacing: w(10),
children: btnWidgets(btnData),
))
if (canChange)
Container(
padding: EdgeInsets.symmetric(horizontal: w(21)),
child: Wrap(
crossAxisAlignment: WrapCrossAlignment.start,
spacing: w(10),
runSpacing: w(10),
children: btnWidgets(btnData),
))
],
),
)),
... ... @@ -256,6 +316,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
fontSize: 32,
onPressed: () {
DialogUtil.cupertinoAlertDialog(context,
textAlign: TextAlign.left,
showlTitle: false,
content: canChange
? contentChangeStart + controller.text
: controller.text);
... ... @@ -269,7 +331,13 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
radius: ScreenUtil().setWidth(14),
isBold: true,
fontSize: 32,
onPressed: () async {},
onPressed: () async {
if (smsSelectValue.length == 0) {
Utils.showToast('请选择模版类型');
return;
}
_setTempleteSMS();
},
),
)
],
... ...
... ... @@ -40,6 +40,7 @@ import 'package:one_key/models/table_list.dart' as table;
import '../../../provider/table_manager_model.dart';
import 'package:flutter_draggable_gridview/flutter_draggable_gridview.dart';
import 'package:one_key/models/table.dart' as t;
const scrollDuration = Duration(microseconds: 500);
... ... @@ -68,6 +69,8 @@ class MyTableManagerHomePageState extends State<MyTableManagerHomePage> {
ScrollController controller = ScrollController();
Table tableNow;
@override
void initState() {
// TODO: implement initState
... ... @@ -581,6 +584,26 @@ class MyTableManagerHomePageState extends State<MyTableManagerHomePage> {
void onDragAccept(
List<DraggableGridItem> list, int beforeIndex, int afterIndex) {
print('onDragAccept: $beforeIndex -> $afterIndex');
print(list);
_setTableByIdOrder(beforeIndex, afterIndex);
}
//
Future<bool> _setTableByIdOrder(int beforeIndex, int afterIndex) async {
t.Table move = tableManagerModel
.tableOuterList[tableManagerModel.selectNumber].list[beforeIndex];
t.Table after = tableManagerModel
.tableOuterList[tableManagerModel.selectNumber].list[afterIndex];
Map<String, String> params = {'id': move.id, 'order': after.order_o};
bool success = await tableManagerModel.setTableById(context, params);
if (success) {
return true;
} else {
return false;
}
}
@override
... ...
... ... @@ -9,6 +9,7 @@ import '../constant/error.dart';
import '../models/GetDzSellerConfModel.dart';
import '../models/mark_data_model.dart';
import '../models/recharge_notice_model.dart';
import '../models/sai_you_yun_model.dart';
import '../models/seller_template_color_list_model.dart';
import '../models/tableOuter.dart';
import '../net/base_resp.dart';
... ... @@ -42,6 +43,37 @@ class MarketingCenterProvider extends ChangeNotifier {
GetDzSellerConfSunModel dzSellerConfModel;
List<SellerTemplateColorListSunModel> templeteDatas = []; //后台配置的模版数据
List<SaiYouYunSunModel> saiYouYunFixedData = []; //塞邮云固定模版数据
List<SaiYouYunSunModel> saiYouYunchangedData = []; //塞邮云固定模版数据
// 获取赛邮云短信模板列表 (固定模版)
Future<bool> getSaiYouYunList(BuildContext context,
{bool showLoading = true}) async {
Map<String, String> params = {
'sid': Provider.of<UserModel>(context, listen: false).user.sellerid
};
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.get_sai_you_yun_list,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
Utils.showToast('请求失败,请重试');
return false;
});
if (baseResp.code == Constant.status_success) {
saiYouYunFixedData = SaiYouYunModel.fromJson(baseResp.responseData).data;
// if (saiYouYunFixedData.length > 0) {
// saiYouYunFixedData[0].select = true;
// }
// notifyListeners();
return true;
} else {
Utils.showToast(baseResp.msg ?? '请求失败,请重试');
}
return false;
}
//获取桌位列表
getTableList(context, {needLoading = true}) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
... ...
... ... @@ -123,6 +123,11 @@ class MyTableManageHomeModel with ChangeNotifier {
tableOuter.list = enableList.map((table) {
return t.Table.fromJson(table as Map<String, dynamic>);
}).toList();
tableOuter.list.sort(((a, b) =>
int.parse(a.order_o).compareTo(int.parse(b.order_o)))); //排序
print(tableOuter.list);
// tableOuter.list = tableOuter.list.reversed.toList();
// print(tableOuter.list);
return tableOuter;
}).toList();
}
... ... @@ -369,6 +374,8 @@ class MyTableManageHomeModel with ChangeNotifier {
return areaSunModelList;
} else if (baseResp.data.length > 0) {
areaSunModelList = AreaModel.fromJson(baseResp.responseData).data;
areaSunModelList.sort(((a, b) =>
int.parse(a.orderO).compareTo(int.parse(b.orderO)))); //排序
}
}
return areaSunModelList;
... ...
... ... @@ -1895,10 +1895,10 @@ class NavigatorUtil {
///预订通知短信模板选择
static Future<dynamic> goSmsTemplateSettingPage(
BuildContext context, {
BuildContext context, String smsTemplate,{
replace = false,
}) {
return _navigateTo(context, "${Routes.sms_template_setting_page}",
return _navigateTo(context, "${Routes.sms_template_setting_page}?smsTemplate=${Uri.encodeComponent(smsTemplate)}",
replace: replace);
}
}
... ...
... ... @@ -3231,8 +3231,8 @@ var exportBookDataPageHandle = new Handler(
var smsTemplateSettingPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// String rid = params["rid"].first;
// String name = params["name"].first;
String smsTemplate = params["smsTemplate"].first;
return ChangeNotifierProvider<MarketingCenterProvider>(
create: (_) => MarketingCenterProvider(),
child: SmsTemplateSettingPage());
child: SmsTemplateSettingPage(smsTemplate:smsTemplate));
});
... ...
... ... @@ -8323,6 +8323,7 @@ class DialogUtil {
Color rColor = MyColours.color_438E93,
bool isBold = false,
bool isBoldContent = false,
bool showlTitle = true,
Color contentColor = MyColours.color_99000000,
VoidCallback lCallback,
TextAlign textAlign = TextAlign.center,
... ... @@ -8346,18 +8347,19 @@ class DialogUtil {
fontSize: ScreenUtil().setSp(32),
color: contentColor)),
actions: [
CupertinoDialogAction(
child: Text(lTitle,
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_E6000000)),
onPressed: () {
Navigator.of(context).pop();
if (lCallback != null) {
lCallback();
}
},
),
if (showlTitle)
CupertinoDialogAction(
child: Text(lTitle,
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_E6000000)),
onPressed: () {
Navigator.of(context).pop();
if (lCallback != null) {
lCallback();
}
},
),
CupertinoDialogAction(
child: Text(rTitle,
style: TextStyle(
... ... @@ -8366,7 +8368,10 @@ class DialogUtil {
color: rColor)),
onPressed: () {
Navigator.of(context).pop();
rCallback();
if (rCallback != null) {
rCallback();
}
},
),
],
... ...