Commit 327989c43ccc78b8f3b8cb2475a849a50a083937

Authored by wdn127929
1 parent dd826b69

客户通知设置---删除图片功能

... ... @@ -12,6 +12,7 @@ class Constant {
// static const Map<String, List<String>> paidVersionsConfig = {
// '经理排菜': ['查看详情', '删除', '复用', '创建排菜'],
// };
static const Map<String, List<String>> authorityConfig = {
... ...
... ... @@ -23,6 +23,7 @@ import '../../../../provider/store_base_info_provider.dart';
import '../../../../provider/upload_img_provider.dart';
import '../../../../provider/user_model.dart';
import '../../../../res/colors.dart';
import '../../../../utils/dialog_util.dart';
import '../../../../utils/screen_util.dart';
import '../../../../utils/upload_image_util.dart';
import '../../../../widgets/page_exception.dart';
... ... @@ -150,33 +151,33 @@ class _BookInfoPageState extends State<BookInfoPage> {
Widget _item(String title, {bool select, GestureTapCallback onTap}) {
return InkWell(
onTap: onTap,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: MyColours.color_E7E7E7, width: w(0.5)))),
margin: EdgeInsets.only(left: w(16)),
padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
child: Row(
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setWidth(32)),
onTap: onTap,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: MyColours.color_E7E7E7, width: w(0.5)))),
margin: EdgeInsets.only(left: w(16)),
padding: EdgeInsets.only(top: w(12), bottom: w(12), right: w(16)),
child: Row(
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setWidth(32)),
),
Spacer(),
Container(
padding: EdgeInsets.symmetric(horizontal: w(7), vertical: w(4)),
child: Image.asset(
Utils.getImgPath(select ? 'swich_on' : 'swich_off'),
width: w(44),
),
Spacer(),
Container(
padding:
EdgeInsets.symmetric(horizontal: w(7), vertical: w(4)),
child: Image.asset(
Utils.getImgPath(select ? 'swich_on' : 'swich_off'),
width: w(44),
),
)
],
)));
)
],
)),
);
}
_itemTitleAndSubTtile(String title, String subtitle) {
... ... @@ -449,11 +450,15 @@ class _BookInfoPageState extends State<BookInfoPage> {
VEmptyView(24),
_textFeildWidget(sloganC, '餐厅广告语', '点击输入广告语'),
_item('附加餐厅首图', select: addFirstImage, onTap: () {
setState(() {
addFirstImage = !addFirstImage;
});
}),
_item(
'附加餐厅首图',
select: addFirstImage,
onTap: () {
setState(() {
addFirstImage = !addFirstImage;
});
},
),
VEmptyView(24),
_uploadImageProvider.firstImage.file != null ||
(_uploadImageProvider.firstImage.qiniuUrl != null &&
... ... @@ -551,6 +556,40 @@ class _BookInfoPageState extends State<BookInfoPage> {
),
)
: Container()),
if (_uploadImageProvider
.firstImage.process ==
1)
Positioned(
top: 0,
right: 0,
child: GestureDetector(
child: Image.asset(
Utils.getImgPath("delete"),
width: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(40),
),
onTap: () {
//已经传到服务器,弹提醒窗口,是否删除
//修改之前有内容,则弹框
DialogUtil.cupertinoAlertDialog(
context,
title: "",
content: "是否确定删除该照片?",
lCallback: () {
print("取消");
}, rCallback: () {
_uploadImageProvider
.firstImage.qiniuUrl = null;
_uploadImageProvider
.firstImage.file = null;
_uploadImageProvider.firstImage
.isUpload = false;
_uploadImageProvider
.firstImage.process = 0;
setState(() {});
});
},
)),
]),
_uploadImageProvider.firstImage.process == 1
? Container(
... ... @@ -793,6 +832,41 @@ class _BookInfoPageState extends State<BookInfoPage> {
),
)
: Container()),
if (_uploadImageProvider.logo.process ==
1)
Positioned(
top: 0,
right: 0,
child: GestureDetector(
child: Image.asset(
Utils.getImgPath("delete"),
width:
ScreenUtil().setWidth(40),
height:
ScreenUtil().setWidth(40),
),
onTap: () {
//已经传到服务器,弹提醒窗口,是否删除
//修改之前有内容,则弹框
DialogUtil.cupertinoAlertDialog(
context,
title: "",
content: "是否确定删除该照片?",
lCallback: () {
print("取消");
}, rCallback: () {
_uploadImageProvider
.logo.qiniuUrl = null;
_uploadImageProvider
.logo.file = null;
_uploadImageProvider
.logo.isUpload = false;
_uploadImageProvider
.logo.process = 0.01;
setState(() {});
});
},
)),
]),
_uploadImageProvider.logo.process == 1
? Container(
... ... @@ -840,29 +914,30 @@ class _BookInfoPageState extends State<BookInfoPage> {
context, _uploadImageProvider.logo, 9);
},
child: Container(
// color: MyColours.color_d9d9d9,
color: MyColours.color_d9d9d9,
width: double.infinity,
height: w(180),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// VEmptyView(80),
Image.asset(
Utils.getImgPath('add_img_grey'),
Utils.getImgPath('add_img'),
width: w(63),
),
VEmptyView(28),
Padding(
padding: EdgeInsets.symmetric(
vertical: w(10),
),
child: Text(
'点击上传餐厅logo',
style: TextStyle(
color: MyColours.color_999999,
fontSize: font(14),
fontWeight: FontWeight.bold),
),
)
Container(
width: w(139),
height: w(60),
child: Text(
'点击上传照片',
textAlign: TextAlign.center,
style: TextStyle(
height: 1.4,
color: MyColours.color_ffffff,
fontSize: font(14),
fontWeight: FontWeight.bold),
))
],
),
)),
... ... @@ -902,7 +977,8 @@ class _BookInfoPageState extends State<BookInfoPage> {
return false;
}
if (_uploadImageProvider.firstImage.process < 1 &&
if (addFirstImage &&
_uploadImageProvider.firstImage.process < 1 &&
_uploadImageProvider.firstImage.process > 0) {
Utils.showToast('正在上传餐厅首图!,请稍等');
return false;
... ... @@ -913,7 +989,7 @@ class _BookInfoPageState extends State<BookInfoPage> {
return false;
}
if (_uploadImageProvider.logo.process < 1) {
if (addLogo && _uploadImageProvider.logo.process < 1) {
Utils.showToast('正在上传餐厅logo!,请稍等');
return false;
}
... ... @@ -959,16 +1035,25 @@ class _BookInfoPageState extends State<BookInfoPage> {
// 'lat': lat
};
Map marketing = marketingCenterProvider
.markDataModel.marketing
.toJson();
Map marketing = {};
if (marketingCenterProvider.markDataModel != null &&
marketingCenterProvider.markDataModel.marketing !=
null) {
marketing = marketingCenterProvider
.markDataModel.marketing
.toJson();
}
print(marketing);
marketing['is_logo'] = addLogo ? '1' : '0';
marketing['logo'] = _uploadImageProvider.logo.qiniuUrl;
marketing['wecomle'] = welcomeC.text ?? '';
Map home =
marketingCenterProvider.markDataModel.home.toJson();
Map home = {};
if (marketingCenterProvider.markDataModel != null &&
marketingCenterProvider.markDataModel.home != null) {
home =
marketingCenterProvider.markDataModel.home.toJson();
}
print(home);
home['slogan'] = sloganC.text;
home['id_first_image'] = addFirstImage ? '1' : '0';
... ...
... ... @@ -16,6 +16,7 @@ import '../../../../provider/marketing_center_provider.dart';
import '../../../../provider/upload_img_provider.dart';
import '../../../../provider/user_model.dart';
import '../../../../res/colors.dart';
import '../../../../utils/dialog_util.dart';
import '../../../../utils/screen_util.dart';
import '../../../../utils/upload_image_util.dart';
import '../../../../utils/utils.dart';
... ... @@ -337,6 +338,31 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
),
)
: Container()),
if (_uploadImageProvider.firstImage.process == 1)
Positioned(
top: 0,
right: 0,
child: GestureDetector(
child: Image.asset(
Utils.getImgPath("delete"),
width: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(40),
),
onTap: () {
//已经传到服务器,弹提醒窗口,是否删除
//修改之前有内容,则弹框
DialogUtil.cupertinoAlertDialog(context,
title: "", content: "是否确定删除该照片?", lCallback: () {
print("取消");
}, rCallback: () {
_uploadImageProvider.firstImage.qiniuUrl = null;
_uploadImageProvider.firstImage.file = null;
_uploadImageProvider.firstImage.isUpload = false;
_uploadImageProvider.firstImage.process = 0.01;
setState(() {});
});
},
))
]),
_uploadImageProvider.firstImage.process == 1
? Container(
... ... @@ -422,7 +448,6 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
// );
}
///图文分开
Widget _separateWidget() {
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
... ... @@ -602,12 +627,14 @@ class _ChefIntroducePageState extends State<ChefIntroducePage> {
Utils.showToast('请输入主厨介绍文字!');
return false;
}
if (_uploadImageProvider.firstImage.qiniuUrl == null) {
if (addChefImge &&
_uploadImageProvider.firstImage.qiniuUrl == null) {
Utils.showToast('请上传图片!');
return false;
}
if (_uploadImageProvider.firstImage.process < 1) {
if (addChefImge &&
_uploadImageProvider.firstImage.process < 1) {
Utils.showToast('正在上传图片,请稍等');
return false;
}
... ...
... ... @@ -246,19 +246,40 @@ class _DishShowPageState extends State<DishShowPage> {
scrollController: controller,
model: _uploadImageProvider,
index: 5,
imageModel: _uploadImageProvider.storeImage1),
imageModel: _uploadImageProvider.storeImage1,
deleteCallback: () {
_uploadImageProvider.storeImage1.qiniuUrl = null;
_uploadImageProvider.storeImage1.file = null;
_uploadImageProvider.storeImage1.isUpload = false;
_uploadImageProvider.storeImage1.process = 0.01;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
model: _uploadImageProvider,
index: 6,
imageModel: _uploadImageProvider.storeImage2),
imageModel: _uploadImageProvider.storeImage2,
deleteCallback: () {
_uploadImageProvider.storeImage2.qiniuUrl = null;
_uploadImageProvider.storeImage2.file = null;
_uploadImageProvider.storeImage2.isUpload = false;
_uploadImageProvider.storeImage2.process = 0.01;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
model: _uploadImageProvider,
index: 7,
imageModel: _uploadImageProvider.storeImage3),
imageModel: _uploadImageProvider.storeImage3,
deleteCallback: () {
_uploadImageProvider.storeImage3.qiniuUrl = null;
_uploadImageProvider.storeImage3.file = null;
_uploadImageProvider.storeImage3.isUpload = false;
_uploadImageProvider.storeImage3.process = 0.01;
setState(() {});
}),
VEmptyView(18),
],
)
... ...
... ... @@ -34,7 +34,7 @@ import 'package:flutter_native_image/flutter_native_image.dart';
typedef void OnPickImageCallback(
double maxWidth, double maxHeight, int quality);
typedef void DeleteCallback(int index);
typedef void DeleteCallback();
class ImgPickerInvitationWidget extends StatefulWidget {
final ScrollController scrollController;
... ... @@ -513,52 +513,38 @@ class _ImgPickerInvitationWidgetState
),
)
: Container()),
// Offstage(
// offstage: imageModel.process < 1,
// child: Align(
// alignment: Alignment.topRight,
// child: GestureDetector(
// child: Image.asset(
// Utils.getImgPath("f_delete"),
// width: ScreenUtil().setWidth(40),
// height: ScreenUtil().setWidth(40),
// ),
// onTap: () {
// // if (widget.uploadType ==
// // UploadType.TableManagerType) {
// // if (imageModel.isUpload) {
// // //已经传到服务器,弹提醒窗口,是否删除
// // //修改之前有内容,则弹框
// // DialogUtil.cupertinoAlertDialog(context,
// // title: "确认删除",
// // content: "是否确定删除该照片,删除操作不可逆转,请谨慎操作",
// // lCallback: () {
// // print("取消");
// // }, rCallback: () {
// // print("确定");
// // widget.deleteCallback(index);
// // });
// // } else {
// // //直接删除
// // setState(() {
// // temp.removeWhere((element) =>
// // element == imageModel);
// // });
// // }
// // } else {
// // //点击删除按钮
// // setState(() {
// // temp.removeWhere((element) =>
// // element == imageModel);
// // widget.model.storeImageList.removeWhere(
// // (element) =>
// // element ==
// // widget.model.storeImageList[index]);
// // });
// // }
// },
// )),
// ),
Offstage(
offstage: imageModel.process < 1,
child: Align(
alignment: Alignment.topRight,
child: GestureDetector(
child: Image.asset(
Utils.getImgPath("delete"),
width: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(40),
),
onTap: () {
// if (widget.uploadType ==
// UploadType.TableManagerType) {
// if (imageModel.isUpload) {
//已经传到服务器,弹提醒窗口,是否删除
//修改之前有内容,则弹框
DialogUtil.cupertinoAlertDialog(context,
title: "",
content: "是否确定删除该照片?", lCallback: () {
print("取消");
}, rCallback: () {
print("确定");
widget.deleteCallback();
});
// } else {
// //直接删除
// setState(() {
// temp.removeWhere((element) =>
// element == imageModel);
// });
})),
),
]),
imageModel.process == 1
? Container(
... ...
... ... @@ -1122,9 +1122,13 @@ class _MarkingInteractionPageState extends State<MarkingInteractionPage> {
// Utils.showToast('请输入输入餐厅欢迎语!');
// return false;
// }
Map marketing = {};
if (marketingCenterProvider.markDataModel != null &&
marketingCenterProvider.markDataModel.marketing != null) {
marketing = marketingCenterProvider.markDataModel.marketing
.toJson();
}
Map marketing =
marketingCenterProvider.markDataModel.marketing.toJson();
print(marketing);
marketing['is_transpond'] = isTranspond ? '1' : '0'; //转发同行客人
marketing['is_online_book'] = isOnlineBook ? '1' : '0'; //在线预订
... ...
... ... @@ -316,104 +316,130 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 5,
imageModel: _uploadImageProvider.storeImage1),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 6,
imageModel: _uploadImageProvider.storeImage2,
),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 7,
imageModel: _uploadImageProvider.storeImage3),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
model: _uploadImageProvider,
index: 8,
uploadType: UploadType.InvitationStoreType,
imageModel: _uploadImageProvider.storeImage4,
),
],
);
}
///图文合并
Widget _mergingWidget() {
Color themColor = MyColours.color_0C0F0E;
int colorValue = null;
if (marketingCenterProvider.markDataModel.home != null &&
marketingCenterProvider.markDataModel.home.themeColor != null) {
colorValue =
int.parse(marketingCenterProvider.markDataModel.home.themeColor);
}
if (colorValue != null) {
themColor = Color(colorValue);
}
return Column(
children: [
Stack(
children: [
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 5,
padding: EdgeInsets.only(left: w(160)),
imageModel: _uploadImageProvider.storeImage1),
Positioned(
child: _introduceWidget(
EdgeInsets.only(
left: w(15), top: w(23), right: w(7), bottom: w(42)),
textColor: MyColours.color_ffffff,
hintColor: MyColours.color_ffffff,
boxDecoration: BoxDecoration(
gradient: LinearGradient(
stops: [0, 1],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
themColor,
MyColours.color_4D0C0F0E,
],
),
)),
width: w(160),
),
],
),
imageModel: _uploadImageProvider.storeImage1,
deleteCallback: () {
_uploadImageProvider.storeImage1.qiniuUrl = null;
_uploadImageProvider.storeImage1.file = null;
_uploadImageProvider.storeImage1.isUpload = false;
_uploadImageProvider.storeImage1.process = 0;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 6,
imageModel: _uploadImageProvider.storeImage2),
imageModel: _uploadImageProvider.storeImage2,
deleteCallback: () {
_uploadImageProvider.storeImage2.qiniuUrl = null;
_uploadImageProvider.storeImage2.file = null;
_uploadImageProvider.storeImage2.isUpload = false;
_uploadImageProvider.storeImage2.process = 0;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 7,
imageModel: _uploadImageProvider.storeImage3),
imageModel: _uploadImageProvider.storeImage3,
deleteCallback: () {
_uploadImageProvider.storeImage3.qiniuUrl = null;
_uploadImageProvider.storeImage3.file = null;
_uploadImageProvider.storeImage3.isUpload = false;
_uploadImageProvider.storeImage3.process = 0;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 8,
imageModel: _uploadImageProvider.storeImage4),
uploadType: UploadType.InvitationStoreType,
imageModel: _uploadImageProvider.storeImage4,
deleteCallback: () {
_uploadImageProvider.storeImage4.qiniuUrl = null;
_uploadImageProvider.storeImage4.file = null;
_uploadImageProvider.storeImage4.isUpload = false;
_uploadImageProvider.storeImage4.process = 0;
setState(() {});
}),
],
);
}
///图文合并
// Widget _mergingWidget() {
// Color themColor = MyColours.color_0C0F0E;
// int colorValue = null;
// if (marketingCenterProvider.markDataModel.home != null &&
// marketingCenterProvider.markDataModel.home.themeColor != null) {
// colorValue =
// int.parse(marketingCenterProvider.markDataModel.home.themeColor);
// }
// if (colorValue != null) {
// themColor = Color(colorValue);
// }
// return Column(
// children: [
// Stack(
// children: [
// ImgPickerInvitationWidget(
// scrollController: controller,
// uploadType: UploadType.InvitationStoreType,
// model: _uploadImageProvider,
// index: 5,
// padding: EdgeInsets.only(left: w(160)),
// imageModel: _uploadImageProvider.storeImage1),
// Positioned(
// child: _introduceWidget(
// EdgeInsets.only(
// left: w(15), top: w(23), right: w(7), bottom: w(42)),
// textColor: MyColours.color_ffffff,
// hintColor: MyColours.color_ffffff,
// boxDecoration: BoxDecoration(
// gradient: LinearGradient(
// stops: [0, 1],
// begin: Alignment.topCenter,
// end: Alignment.bottomCenter,
// colors: [
// themColor,
// MyColours.color_4D0C0F0E,
// ],
// ),
// )),
// width: w(160),
// ),
// ],
// ),
// VEmptyView(18),
// ImgPickerInvitationWidget(
// scrollController: controller,
// uploadType: UploadType.InvitationStoreType,
// model: _uploadImageProvider,
// index: 6,
// imageModel: _uploadImageProvider.storeImage2),
// VEmptyView(18),
// ImgPickerInvitationWidget(
// scrollController: controller,
// uploadType: UploadType.InvitationStoreType,
// model: _uploadImageProvider,
// index: 7,
// imageModel: _uploadImageProvider.storeImage3),
// VEmptyView(18),
// ImgPickerInvitationWidget(
// scrollController: controller,
// uploadType: UploadType.InvitationStoreType,
// model: _uploadImageProvider,
// index: 8,
// imageModel: _uploadImageProvider.storeImage4),
// ],
// );
// }
///图文分开
Widget _separateWidget() {
return Column(
... ... @@ -427,28 +453,56 @@ class _StoreIntroducePageState extends State<StoreIntroducePage> {
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 5,
imageModel: _uploadImageProvider.storeImage1),
imageModel: _uploadImageProvider.storeImage1,
deleteCallback: () {
_uploadImageProvider.storeImage1.qiniuUrl = null;
_uploadImageProvider.storeImage1.file = null;
_uploadImageProvider.storeImage1.isUpload = false;
_uploadImageProvider.storeImage1.process = 0.01;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 6,
imageModel: _uploadImageProvider.storeImage2),
imageModel: _uploadImageProvider.storeImage2,
deleteCallback: () {
_uploadImageProvider.storeImage2.qiniuUrl = null;
_uploadImageProvider.storeImage2.file = null;
_uploadImageProvider.storeImage2.isUpload = false;
_uploadImageProvider.storeImage2.process = 0.01;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 7,
imageModel: _uploadImageProvider.storeImage3),
imageModel: _uploadImageProvider.storeImage3,
deleteCallback: () {
_uploadImageProvider.storeImage3.qiniuUrl = null;
_uploadImageProvider.storeImage3.file = null;
_uploadImageProvider.storeImage3.isUpload = false;
_uploadImageProvider.storeImage3.process = 0.01;
setState(() {});
}),
VEmptyView(18),
ImgPickerInvitationWidget(
scrollController: controller,
uploadType: UploadType.InvitationStoreType,
model: _uploadImageProvider,
index: 8,
imageModel: _uploadImageProvider.storeImage4),
imageModel: _uploadImageProvider.storeImage4,
deleteCallback: () {
_uploadImageProvider.storeImage4.qiniuUrl = null;
_uploadImageProvider.storeImage4.file = null;
_uploadImageProvider.storeImage4.isUpload = false;
_uploadImageProvider.storeImage4.process = 0.01;
setState(() {});
}),
],
);
}
... ...
... ... @@ -397,9 +397,9 @@ class _CustomerNoticeSettingPageState extends State<CustomerNoticeSettingPage> {
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(double.infinity, w(0.5),
color: MyColours.color_E7E7E7)),
_item('首图形象展示', onTap: () {
NavigatorUtil.goFirstImagePage(context);
}),
// _item('首图形象展示', onTap: () {
// NavigatorUtil.goFirstImagePage(context);
// }),
_item('预订信息模块设置', onTap: () {
NavigatorUtil.goBookInfoPage(context);
}),
... ...