Commit ad6f38c0ee9731aa365963962d9995ed2e77c948

Authored by wdn127929
1 parent 69d499f7

在线订单

... ... @@ -155,9 +155,9 @@ class ReserveDetailSunModel extends Object {
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(
int.parse(ddate.toString()) * 1000);
ymd = dateTime.year.toString() +
"/" +
"-" +
Utils.addZeroNumber(dateTime.month) +
"/" +
"-" +
Utils.addZeroNumber(dateTime.day);
} else {
ymd = ddate.substring(0, 10);
... ... @@ -179,9 +179,9 @@ class ReserveDetailSunModel extends Object {
DateTime dateTime =
DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString()) * 1000);
return dateTime.year.toString() +
"/" +
"-" +
Utils.addZeroNumber(dateTime.month) +
"/" +
"-" +
Utils.addZeroNumber(dateTime.day) +
" " +
Utils.addZeroNumber(dateTime.hour) +
... ...
... ... @@ -51,6 +51,9 @@ class TableClassSunModel extends Object {
@JsonKey(name: 'status')
String status;
@JsonKey(name: 'surplus')
String surplus;
@JsonKey(name: 'cdate')
String cdate;
... ... @@ -63,6 +66,7 @@ class TableClassSunModel extends Object {
this.low,
this.standard,
this.status,
this.surplus,
this.cdate,
);
... ...
... ... @@ -33,6 +33,7 @@ TableClassSunModel _$TableClassSunModelFromJson(Map<String, dynamic> json) {
json['low'] as String,
json['standard'] as String,
json['status'] as String,
json['surplus'] as String,
json['cdate'] as String,
);
}
... ... @@ -47,5 +48,6 @@ Map<String, dynamic> _$TableClassSunModelToJson(TableClassSunModel instance) =>
'low': instance.low,
'standard': instance.standard,
'status': instance.status,
'surplus':instance.surplus,
'cdate': instance.cdate,
};
... ...
... ... @@ -234,5 +234,7 @@ class HttpUrl {
"?service=App.Tables.DelTableRegion"; // 删除区域同时删除区域下面的桌位
static const String batch_set_table =
"?service=App.Tables.BatchSetTable"; // 批量修改桌位信息
static const String push_msg_set_message_status =
"?service=App.PushMsg.SetMessage"; //设置消息状态
}
... ...
... ... @@ -345,22 +345,43 @@ class MessageItemF extends StatelessWidget {
fontSize: ScreenUtil().setSp(28)),
),
VEmptyView(8),
message.room_demand == ''
? SizedBox()
: Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: bgcolor,
borderRadius: BorderRadius.circular(8)),
child: Text(
'${message.room_demand}',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20)),
),
),
message.message_type == "1"
? message.room_info == ''
? SizedBox()
: Container(
padding: EdgeInsets.symmetric(
horizontal:
ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: bgcolor,
borderRadius:
BorderRadius.circular(8)),
child: Text(
'${message.room_info == ''}',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20)),
),
)
: message.room_demand == ''
? SizedBox()
: Container(
padding: EdgeInsets.symmetric(
horizontal:
ScreenUtil().setWidth(16),
vertical: ScreenUtil().setWidth(6)),
decoration: BoxDecoration(
color: bgcolor,
borderRadius:
BorderRadius.circular(8)),
child: Text(
'${message.room_demand}',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(20)),
),
),
message.message_type == "1"
? SizedBox()
: Text(
... ...
... ... @@ -36,19 +36,23 @@ class MessagePageState extends State<MessagePage>
MessageModel messageModel;
UserModel userModel;
MessageDialogModel messageDialogModel;
// int selectIndex = 0;
@override
void initState() {
super.initState();
tabController = TabController(length: 2, vsync: this);
tabController.addListener(() {
//点击tab时或滑动tab回调一次
if (tabController.index.toDouble() == tabController.animation.value) {
getMessage(index: tabController.index);
}
// if (tabController.index.toDouble() == tabController.animation.value) {
// getMessage(index: tabController.index);
// selectIndex = tabController.index;
setState(() {});
// }
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
getMessage(index: 0);
// getMessage(index: 0);
});
//刷新未读数
bus.on("refresh_untreated_num", (arg) {
... ... @@ -70,24 +74,33 @@ class MessagePageState extends State<MessagePage>
}
//获取在线预订消息status 0未处理 1已处理
getMessage({bool showLoading = true, int index}) async {
String typeId = '';
if (index == 0) {
typeId = '10';
} else if (index == 1) {
typeId = '1';
} else if (index == 2) {
typeId = '12';
}
Map<String, String> params = {
"sid": userModel.user.sellerid,
"type_id": typeId, //1提前点餐2内部预订10在线预订
"status": '0',
"offset": '0',
"limit": "20",
};
await messageModel.getMessages(context, params, showLoading: showLoading);
_getUnMsgNum();
// getMessage({bool showLoading = true, int index}) async {
// String typeId = '';
// if (index == 0) {
// typeId = '10';
// } else if (index == 1) {
// typeId = '1';
// } else if (index == 2) {
// typeId = '12';
// }
// Map<String, String> params = {
// "sid": userModel.user.sellerid,
// "type_id": typeId, //1提前点餐2内部预订10在线预订
// "status": '0',
// "offset": '0',
// "limit": "20",
// };
// await messageModel.getMessages(context, params, showLoading: showLoading);
// _getUnMsgNum();
// }
@override
void dispose() {
super.dispose();
messageModel.pageStateUn = PageState.Loading;
messageModel.pageState = PageState.Loading;
messageModel.notifyListeners();
bus.off("refresh_untreated_num");
bus.off("remove_untreated_message");
}
@override
... ... @@ -256,12 +269,4 @@ class MessagePageState extends State<MessagePage>
),
);
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
bus.off("refresh_untreated_num");
bus.off("remove_untreated_message");
}
}
... ...
... ... @@ -40,7 +40,7 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
UserModel userModel;
MessageDialogModel messageDialogModel;
List<MessageMenuModel> menuTitle = [];
String typeid = ''; //默认全部
@override
void initState() {
// TODO: implement initState
... ... @@ -54,12 +54,9 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
_controller = EasyRefreshController();
// messageModel.pageState = PageState.Loading;
WidgetsBinding.instance.addPostFrameCallback((_) {
getMessage();
setState(() {
messageModel.pageState = PageState.Loading;
});
messageModel.pageState = PageState.Loading;
messageModel.notifyListeners();
getMessage(typeid);
});
}
... ... @@ -79,13 +76,8 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
MessageMenuModel model5 = MessageMenuModel();
model5.title = '在线买单';
model5.select = false;
MessageMenuModel model6 = MessageMenuModel();
model6.title = '完成买单';
model6.select = false;
MessageMenuModel model7 = MessageMenuModel();
model7.title = '申请发票';
model7.select = false;
menuTitle = [model1, model2, model3, model4, model5, model6, model7];
menuTitle = [model1, model2, model3, model4, model5];
}
@override
... ... @@ -102,10 +94,10 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
}
//获取在线预订消息status 0未处理 1已处理
getMessage({bool showLoading = true}) async {
getMessage(String typeid, {bool showLoading = true}) async {
Map<String, String> params = {
"sid": userModel.user.sellerid,
"type_id": "10", //1提前点餐2内部预订10在线预订
"type_id": typeid, //1提前点餐2内部预订10在线预订店/内消息传15
"status": '1',
"offset": offset.toString(),
"limit": "20",
... ... @@ -150,7 +142,23 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
menuTitle[index].select = true;
setState(() {});
offset = 0;
getMessage(showLoading: true);
// 1提前点餐/2内部预订/10在线预订/15店内消息传/12在线买单
if (index == 0) {
} else if (index == 1) {
//店内消息
typeid = '15';
} else if (index == 2) {
//在线预订
typeid = '10';
} else if (index == 3) {
//提前点餐
typeid = '1';
} else if (index == 4) {
//在线买单
typeid = '12';
}
getMessage(typeid, showLoading: true);
},
child: Container(
// width: ScreenUtil().setWidth(104 * 2),
... ... @@ -198,7 +206,7 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
pageState: model.pageState,
callback: () {
offset = 0;
getMessage(showLoading: true);
getMessage(typeid, showLoading: true);
},
emptyMsg: "暂时没有已处理的消息哦",
emptyImg: "empty_search",
... ... @@ -219,11 +227,11 @@ class MessageTreatedPageState extends State<MessageTreatedPage> {
],
onRefresh: () async {
offset = 0;
getMessage(showLoading: false);
getMessage(typeid, showLoading: false);
},
onLoad: () async {
offset++;
getMessage(showLoading: false);
getMessage(typeid, showLoading: false);
},
)))
]);
... ...
... ... @@ -50,12 +50,12 @@ class MessageUntreatedPageState extends State<MessageUntreatedPage> {
_controller = EasyRefreshController();
// messageModel.pageState = PageState.Loading;
WidgetsBinding.instance.addPostFrameCallback((_) {
// getMessage();
// setState(() {
// messageModel.pageState = PageState.Loading;
// });
messageModel.pageStateUn = PageState.Loading;
messageModel.notifyListeners();
getMessage();
});
}
... ... @@ -83,9 +83,40 @@ class MessageUntreatedPageState extends State<MessageUntreatedPage> {
};
await messageModel.getMessages(context, params, showLoading: showLoading);
_cancelMessage();
_getUnMsgNum();
}
_cancelMessage() async {
String messageids = ''; //超过24小时
for (Message item in messageModel.messages) {
if (item.message_type == '11') {
DateTime cdate = DateTime.fromMillisecondsSinceEpoch(
int.parse(item.cdate.toString()) * 1000);
DateTime nowdate = DateTime.fromMillisecondsSinceEpoch(
int.parse(item.cdate.toString()) * 1000);
int hours = nowdate.difference(cdate).inHours;
if (hours > 24) {
messageids += '${item.id},';
}
}
}
if (messageids.endsWith(',')) {
messageids = messageids.substring(0, messageids.length - 1);
setMessageStatus(messageids);
}
}
//设置消息状态
setMessageStatus(String messageids) async {
Map<String, String> params = {
"id": messageids,
};
await messageModel.setMessageStatus(context, params);
getMessage(showLoading: false);
}
@override
Widget build(BuildContext context) {
messageModel = Provider.of<MessageModel>(context, listen: true);
... ...
... ... @@ -67,10 +67,16 @@ class _RoomTypeCreatePageState extends State<RoomTypeCreatePage> {
_norNumController.text = sunModel.standard;
_maxNumController.text = sunModel.max;
_minMoneyController.text = sunModel.low;
setState(() {
sunModel.status == '1' ? swichState = true : swichState = false;
tableListSel = sunModel.tableid != null ? sunModel.tableid : '';
});
sunModel.status == '1' ? swichState = true : swichState = false;
tableListSel = sunModel.tableid != null ? sunModel.tableid : '';
selectNum = sunModel.surplus;
List<String> numList = [];
for (int i = 0; i < tableListSel.split(',').length; i++) {
numList.add('$i');
}
selectIndex = numList.indexOf(selectNum);
setState(() {});
}
}
... ... @@ -96,6 +102,10 @@ class _RoomTypeCreatePageState extends State<RoomTypeCreatePage> {
if (widget.tableClassId != 'null') {
params['id'] = widget.tableClassId;
}
if (tableListSel.split(',').length > 0) {
params['surplus'] = selectNum;
}
bool success =
await detailModel.setTableClass(context, params, showLoading: true);
if (success) {
... ... @@ -400,9 +410,11 @@ class _RoomTypeCreatePageState extends State<RoomTypeCreatePage> {
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(40),
),
child: _select('关联包间',
tableListSel.length == 0 ? '选择包间' : '查看包间',
ontap: () async {
child: _select(
'关联包间',
tableListSel.split(',').length == 0
? '选择包间'
: '查看包间', ontap: () async {
Map temp = await NavigatorUtil
.goRoomTypeSelectTablePage(
context,
... ... @@ -432,7 +444,7 @@ class _RoomTypeCreatePageState extends State<RoomTypeCreatePage> {
right: ScreenUtil().setWidth(40)),
),
VEmptyView(10),
tableListSel.length == 0
tableListSel.split(',').length == 0
? SizedBox()
: Padding(
padding: EdgeInsets.symmetric(
... ... @@ -453,6 +465,7 @@ class _RoomTypeCreatePageState extends State<RoomTypeCreatePage> {
if (value != null) {
selectIndex = value.first;
selectNum = numList[value.first];
setState(() {});
// bool sucess =
// await detailModel.upReserveInfo(
... ... @@ -473,7 +486,7 @@ class _RoomTypeCreatePageState extends State<RoomTypeCreatePage> {
: [selectIndex])
.then((value) {});
})),
tableListSel.length == 0
tableListSel.split(',').length == 0
? SizedBox()
: Padding(
padding: EdgeInsets.symmetric(
... ...
import 'dart:convert';
import 'dart:io';
import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/upload_img_model.dart';
import 'package:one_key/pages/online_check/photo_view_wiget.dart';
import 'package:one_key/pages/online_check/progress.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
import 'package:one_key/provider/upload_img_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/misc.dart';
import 'package:one_key/utils/upload_image_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:photo/photo.dart';
import 'package:provider/provider.dart';
import 'package:image_picker/image_picker.dart';
import 'package:qiniu_flutter_sdk/qiniu_flutter_sdk.dart';
import './dispose.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
typedef void OnPickImageCallback(
double maxWidth, double maxHeight, int quality);
typedef void DeleteCallback(int index);
class ImgPickerFWidget extends StatefulWidget {
final ScrollController scrollController;
final Color borderColor;
final VoidCallback callback;
final int maxImageNumber;
final UploadImageProvider model;
final UploadType uploadType;
final DeleteCallback deleteCallback;
ImgPickerFWidget(
{Key key,
this.scrollController,
this.borderColor = Colors.blue,
this.callback,
this.maxImageNumber = 5,
this.model,
this.uploadType,
this.deleteCallback})
: super(key: key);
@override
_ImgPickerFWidgetState createState() => _ImgPickerFWidgetState();
}
class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
final picker = ImagePicker();
// OnlineCheckEditProvider _onlineCheckEditProvider;
// UploadImageProvider _uploadImageProvider;
// 用户输入的文件名
String key;
// 用户输入的 partSize
int partSize = 4;
// 用户输入的 token
String token;
/// storage 实例
final Storage storage = Storage();
// 控制器,可以用于取消任务、获取上述的状态,进度等信息
// PutController putController = PutController();
// 当前的任务状态
@override
void initState() {
// storage = Storage();
// putController = PutController();
super.initState();
}
@override
void dispose() {
super.dispose();
}
///#相机拍照,单图选择
Future _getFromPictureOrCamera(imageSource) async {
final pickedFile = await picker.getImage(source: imageSource);
File compressedFile = await FlutterNativeImage.compressImage(
pickedFile.path,
quality: 50,
percentage: 50);
setState(() {
if (pickedFile != null) {
UploadImgModel imgModel = UploadImgModel();
imgModel.file = compressedFile;
imgModel.process = 0.01;
if (widget.uploadType == UploadType.ConsumptionUploadType) {
widget.model.imageList.add(imgModel);
} else if (widget.uploadType == UploadType.StoreFrontUploadType) {
widget.model.imageListFront.add(imgModel);
} else if (widget.uploadType == UploadType.EnvironmentUploadType) {
widget.model.imageListDenvironment.add(imgModel);
} else if (widget.uploadType == UploadType.TableManagerType) {
widget.model.tableImageList.add(imgModel);
}
} else {
print('No image selected.');
}
});
if (pickedFile != null) {
List<UploadImgModel> temp = [];
if (widget.uploadType == UploadType.ConsumptionUploadType) {
temp = widget.model.imageList;
} else if (widget.uploadType == UploadType.StoreFrontUploadType) {
temp = widget.model.imageListFront;
} else if (widget.uploadType == UploadType.EnvironmentUploadType) {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
}
UploadImageUtil().startUpload(context, File(pickedFile.path),
temp.length - 1, true, widget.model, widget.uploadType,
callback: widget.callback, countAll: 1);
}
}
///多图片选择
void pickAsset(PickType type, {List<AssetPathEntity> pathList}) async {
List<UploadImgModel> temp = [];
if (widget.uploadType == UploadType.ConsumptionUploadType) {
temp = widget.model.imageList;
} else if (widget.uploadType == UploadType.StoreFrontUploadType) {
temp = widget.model.imageListFront;
} else if (widget.uploadType == UploadType.EnvironmentUploadType) {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
}
/// context is required, other params is optional.
List<AssetEntity> imgList = await PhotoPicker.pickAsset(
// BuildContext required
context: context,
/// The following are optional parameters.
themeColor: MyColours.color_199095,
// the title color and bottom color
textColor: Colors.white,
// text color
padding: 1.0,
// item padding
dividerColor: Colors.grey,
// divider color
disableColor: Colors.grey.shade300,
// the check box disable color
itemRadio: 0.88,
// the content item radio
maxSelected: widget.maxImageNumber - temp.length,
// max picker image count
// provider: I18nProvider.english,
provider: I18nProvider.chinese,
// i18n provider ,default is chinese. , you can custom I18nProvider or use ENProvider()
rowCount: 3,
// item row count
thumbSize: 150,
// preview thumb size , default is 64
sortDelegate: SortDelegate.common,
// default is common ,or you make custom delegate to sort your gallery
checkBoxBuilderDelegate: DefaultCheckBoxBuilderDelegate(
activeColor: MyColours.color_353535,
unselectedColor: Colors.white,
checkColor: MyColours.color_199095,
),
// default is DefaultCheckBoxBuilderDelegate ,or you make custom delegate to create checkbox
// loadingDelegate: this,
// if you want to build custom loading widget,extends LoadingDelegate, [see example/lib/main.dart]
badgeDelegate: const DurationBadgeDelegate(),
// badgeDelegate to show badge widget
pickType: type,
photoPathList: pathList,
);
if (imgList == null || imgList.isEmpty) {
print("No pick item.");
return;
} else {
for (int i = 0; i < imgList.length; i++) {
var file = await imgList[i].file;
File compressedFile = await FlutterNativeImage.compressImage(
file.absolute.path,
quality: 50,
percentage: 50);
setState(() {
UploadImgModel imgModel = UploadImgModel();
imgModel.file = compressedFile;
imgModel.process = 0.01;
temp.add(imgModel);
});
UploadImageUtil().startUpload(context, File(file.absolute.path),
temp.length - 1, false, widget.model, widget.uploadType,
countAll: imgList.length, callback: widget.callback);
// startUpload(File(file.absolute.path),
// _uploadImageProvider.imageList.length - 1, false);
}
}
}
// ///上传到七牛云
// void startUpload(File selectedFile, int index, bool needInit) async {
// final PutController putController = PutController();
// print(index);
// // 添加状态监听
// putController.addStatusListener((StorageStatus status) {
// print('状态变化: 当前任务状态:${status.toString()}');
// });
// // 添加整体进度监听
// putController.addProgressListener((percent) {
// print('${index}任务进度变化:进度:${percent.toStringAsFixed(4)}');
// _uploadImageProvider.imageList[index].process = percent;
// _uploadImageProvider.notifyListeners();
// });
// // 添加实际发送进度订阅
// putController.addSendProgressListener((percent) {
// // _onlineCheckEditProvider.imageList[index].process = percent;
// // setState(() {});
// print('${index}实际发送变化:进度:${percent.toStringAsFixed(4)}');
// });
// if (token == null || token == '') {
// await _uploadImageProvider.getQiniuInfo(context, {});
// }
// var usedToken = _uploadImageProvider.qiniuInfoSunModel.token;
// if (usedToken == null || usedToken == '') {
// print('token 不能为空');
// return;
// }
// print('开始上传文件');
// storage.putFile(
// selectedFile,
// usedToken,
// options: PutOptions(
// key: key,
// partSize: partSize,
// controller: putController,
// ),
// )
// ..then((PutResponse response) {
// print('${index}上传已完成: 原始响应数据: ${jsonEncode(response.rawData)}');
// print('------------------------');
// String imgUrl = _uploadImageProvider.qiniuInfoSunModel.domain +
// '/' +
// response.rawData['key'];
// _uploadImageProvider.imageList[index].process = 1;
// _uploadImageProvider.imageList[index].qiniuUrl = imgUrl;
// // 取消当前任务
// putController.cancel();
// // _image
// _uploadImageProvider.notifyListeners();
// })
// ..catchError((dynamic error) {
// if (error is StorageError) {
// switch (error.type) {
// case StorageErrorType.CONNECT_TIMEOUT:
// print('发生错误: 连接超时');
// break;
// case StorageErrorType.SEND_TIMEOUT:
// print('发生错误: 发送数据超时');
// break;
// case StorageErrorType.RECEIVE_TIMEOUT:
// print('发生错误: 响应数据超时');
// break;
// case StorageErrorType.RESPONSE:
// print('发生错误: ${error.message}');
// break;
// case StorageErrorType.CANCEL:
// print('发生错误: 请求取消');
// break;
// case StorageErrorType.UNKNOWN:
// print('发生错误: 未知错误');
// break;
// case StorageErrorType.NO_AVAILABLE_HOST:
// print('发生错误: 无可用 Host');
// break;
// case StorageErrorType.IN_PROGRESS:
// print('发生错误: 已在队列中');
// break;
// }
// } else {
// print('发生错误: ${error.toString()}');
// }
// print('------------------------');
// });
// }
///添加图片UI弹出
Future _openModalBottomSheet(context) async {
final option = await showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
isDismissible: false,
builder: (BuildContext context) {
return Container(
// height: ScreenUtil().setWidth(180 * 2),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(24)),
topRight: Radius.circular(ScreenUtil().setWidth(24)))),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
InkWell(
onTap: () {
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(ImageSource.camera);
Navigator.pop(context);
}, Permission.camera);
},
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(58 * 2),
child: Center(
child: Text(
'拍摄',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)),
),
MyDivider(
double.infinity,
ScreenUtil().setWidth(2),
color: MyColours.color_EEEEEE,
),
InkWell(
onTap: () {
Utils.getPickPermission(context, () {
pickAsset(PickType.onlyImage);
// _getFromPictureOrCamera(ImageSource.gallery);
Navigator.pop(context);
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
},
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(58 * 2),
child: Center(
child: Text(
'从相册选择',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)),
),
MyDivider(
double.infinity,
ScreenUtil().setWidth(10),
color: MyColours.color_EEEEEE,
),
InkWell(
onTap: () {
Navigator.pop(context, '取消');
},
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(58 * 2),
child: Center(
child: Text(
'取消',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)))
],
),
);
});
}
//查看大图
_showPhotoView(BuildContext context, int index, List<String> imgs,
{isShow = false, List dashName}) async {
// if (imgs.length == 1 &&
// imgs[0] ==
// 'http://nosqn.colorcun.com/custom/lite-online/image/def-banner.png') {
// imgs[0] = 'http://nosqn.colorcun.com/app/seller-hj-empty.png';
// }
Utils.setBarStatus(false, color: Colors.black);
dynamic result = await showGeneralDialog(
context: context,
barrierDismissible: false,
// barrierColor: Colors.red,
barrierLabel:
MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 150),
pageBuilder: (BuildContext context, Animation animation,
Animation secondaryAnimation) {
Widget child = Stack(
children: <Widget>[
PhotoPreview(
initialIndex: index,
photoList: imgs,
isShow: isShow,
dashName: dashName)
],
);
return child;
});
Utils.setBarStatus(true, color: Colors.white);
}
@override
Widget build(BuildContext context) {
// _uploadImageProvider =
// Provider.of<UploadImageProvider>(context, listen: true);
List<UploadImgModel> temp = [];
if (widget.uploadType == UploadType.ConsumptionUploadType) {
temp = widget.model.imageList;
} else if (widget.uploadType == UploadType.StoreFrontUploadType) {
temp = widget.model.imageListFront;
} else if (widget.uploadType == UploadType.EnvironmentUploadType) {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
}
return _getGridImg(
temp.length < widget.maxImageNumber ? temp.length + 1 : temp.length,
context,
temp.length == widget.maxImageNumber ? true : false,
temp);
}
/// 九宫格
Widget _getGridImg(count, context, isLinjie, List<UploadImgModel> temp) {
return GridView.builder(
controller: widget.scrollController,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: count,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
//Widget Function(BuildContext context, int index)
var linjie = widget.maxImageNumber;
if (isLinjie) {
linjie = widget.maxImageNumber - 1;
}
if (index == count - 1 && index < linjie) {
return InkWell(
onTap: () {
// 触摸收起键盘
FocusScope.of(context).requestFocus(FocusNode());
_openModalBottomSheet(context);
},
child: Container(
width: ScreenUtil().setWidth(80 * 2),
height: ScreenUtil().setWidth(80 * 2),
decoration: BoxDecoration(
color: MyColours.color_f3f3f3,
// border: Border.all(
// color: MyColours.color_E0E0E0,
// width: ScreenUtil().setWidth(2)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// VEmptyView(46),
Image.asset(
Utils.getImgPath('add_store'),
width: ScreenUtil().setWidth(28),
height: ScreenUtil().setWidth(28),
),
// VEmptyView(10),
// Text(
// '上传照片',
// style: TextStyle(
// fontSize: ScreenUtil().setSp(24),
// color: MyColours.color_999999),
// )
],
)),
);
}
return temp.length < 1
? Text('')
: InkWell(
onTap: () {
if (temp[index].process == 1) {
widget.model.imageQiniuUrlList = [];
if (temp[index].qiniuUrl != null) {
for (int i = 0; i < temp.length; i++) {
widget.model.imageQiniuUrlList.add(temp[i].qiniuUrl);
}
///没有上传完成的不可以点击
_showPhotoView(
context, index, widget.model.imageQiniuUrlList);
}
}
},
child: Stack(
children: [
Stack(
// alignment: Alignment.topRight,
children: [
temp[index].file != null
? Container(
child: Image.file(
temp[index].file,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
),
)
: CachedNetworkImage(
imageUrl: temp[index].qiniuUrl,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
),
Offstage(
offstage: temp[index].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 (temp[index].isUpload) {
//已经传到服务器,弹提醒窗口,是否删除
//修改之前有内容,则弹框
DialogUtil.cupertinoAlertDialog(context,
title: "确认删除",
content: "是否确定删除该照片,删除操作不可逆转,请谨慎操作",
lCallback: () {
print("取消");
}, rCallback: () {
print("确定");
widget.deleteCallback(index);
});
} else {
//直接删除
setState(() {
temp.removeWhere((element) =>
element == temp[index]);
});
}
} else {
//点击删除按钮
setState(() {
temp.removeWhere((element) =>
element == temp[index]);
widget.model.imageQiniuUrlList
.removeWhere((element) =>
element ==
widget.model
.imageQiniuUrlList[index]);
});
}
},
)),
),
],
),
Offstage(
offstage: temp[index].process == 1,
child: Progress(temp[index].process),
)
],
));
});
}
}
... ...
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/pages/online_check/img_picker_widget_f.dart';
import 'package:one_key/pages/online_check/photo_view_wiget.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
... ... @@ -91,22 +93,23 @@ class _OnlineCheckDetailPageState extends State<OnlineCheckDetailPage> {
///顾客信息
Widget _customInfoItemWidget(String title, String subTitle,
{Color textColor = MyColours.color_707070, bool isBold = false}) {
{double fontsize = 28}) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
title,
style: TextStyle(
fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
fontSize: ScreenUtil().setSp(28),
color: textColor),
fontSize: ScreenUtil().setSp(24), color: MyColours.color_515151),
),
Text(
subTitle,
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: textColor,
decoration: fontsize == 20
? TextDecoration.underline
: TextDecoration.none,
fontSize: ScreenUtil().setSp(fontsize),
color: MyColours.color_515151,
fontWeight: FontWeight.bold),
)
],
... ... @@ -263,6 +266,164 @@ class _OnlineCheckDetailPageState extends State<OnlineCheckDetailPage> {
);
}
///桌位信息
Widget _getTabInfoWidget() {
bool showArrow = false;
//1散座 2包间 3卡座
List<String> tableNameSunList1 = []; //单个类型包含的所有桌子名称
List<String> tableNameSunList2 = []; //单个类型包含的所有桌子名称
List<String> tableNameSunList3 = []; //单个类型包含的所有桌子名称
if (_orderFoodProvider.reserveDetailSunModel != null) {
tableNameSunList1 =
_orderFoodProvider.reserveDetailSunModel.tableNameList[0]['散座'];
tableNameSunList2 =
_orderFoodProvider.reserveDetailSunModel.tableNameList[1]['包间'];
tableNameSunList3 =
_orderFoodProvider.reserveDetailSunModel.tableNameList[2]['卡座'];
if (tableNameSunList2.length > 0) {
if (arrowStatus) {
_orderFoodProvider.showTable = '【包间】${tableNameSunList2[0]}';
} else {
_orderFoodProvider.showTable = '';
}
} else if (tableNameSunList3.length > 0) {
if (arrowStatus) {
_orderFoodProvider.showTable = '【卡座】${tableNameSunList3[0]}';
} else {
_orderFoodProvider.showTable = '';
}
} else if (tableNameSunList1.length > 0) {
if (arrowStatus) {
_orderFoodProvider.showTable = '【散座】${tableNameSunList1[0]}';
} else {
_orderFoodProvider.showTable = '';
}
}
if (tableNameSunList1.length > 1 ||
tableNameSunList2.length > 1 ||
tableNameSunList3.length > 1) {
showArrow = true;
} else {
showArrow = false;
}
}
return Container(
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Column(
children: [
InkWell(
onTap: () {
if (showArrow) {
//有arrow
arrowStatus = !arrowStatus;
_orderFoodProvider.notifyListeners();
}
},
child: Container(
// padding: EdgeInsets.symmetric(
// horizontal: ScreenUtil().setWidth(40),
// vertical: ScreenUtil().setWidth(36)),
child: Row(
children: [
Text(
'桌位信息',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_515151),
),
Spacer(),
Text(
_orderFoodProvider.reserveDetailSunModel != null
? _orderFoodProvider.showTable
: '',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
Offstage(
offstage: !showArrow,
child: Row(
children: [
HEmptyView(20),
Image.asset(
arrowStatus
? Utils.getImgPath('down')
: Utils.getImgPath('up'),
width: ScreenUtil().setWidth(24),
height: ScreenUtil().setWidth(12))
],
),
)
],
),
),
),
Offstage(
offstage: arrowStatus,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
tableNameSunList2.length > 0
? Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(60),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(60),
ScreenUtil().setWidth(10)),
child: Text(
'【包间】${Utils.listToString(tableNameSunList2)}',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
)
: Container(),
tableNameSunList3.length > 0
? Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(60),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(60),
ScreenUtil().setWidth(10)),
child: Text(
'【卡座】${Utils.listToString(tableNameSunList3)}',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
)
: Container(),
tableNameSunList1.length > 0
? Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(60),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(60),
ScreenUtil().setWidth(10)),
child: Text(
'【散座】${Utils.listToString(tableNameSunList1)}',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
)
: Container(),
VEmptyView(36),
],
),
),
],
),
);
}
///顾客信息
Widget _customerInfoWidget() {
bool showArrow = false;
... ... @@ -497,68 +658,296 @@ class _OnlineCheckDetailPageState extends State<OnlineCheckDetailPage> {
);
}
///买单信息
Widget _orderInfoWidget() {
// ///买单信息
// Widget _orderInfoWidget() {
// return Container(
// width: double.infinity,
// decoration: BoxDecoration(
// color: Colors.white, borderRadius: BorderRadius.circular(10)),
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: <Widget>[
// Container(
// height: ScreenUtil().setWidth(58 * 2),
// width: double.infinity,
// padding: EdgeInsets.fromLTRB(
// ScreenUtil().setWidth(20),
// ScreenUtil().setWidth(36),
// ScreenUtil().setWidth(20),
// ScreenUtil().setWidth(26)),
// decoration: BoxDecoration(
// color: MyColours.color_FAFAFA,
// borderRadius: BorderRadius.only(
// topLeft: Radius.circular(10),
// topRight: Radius.circular(10)),
// ),
// child: Text(
// '买单信息',
// style: TextStyle(
// fontSize: ScreenUtil().setSp(32),
// color: MyColours.color_353535,
// fontWeight: FontWeight.bold),
// )),
// Padding(
// padding: EdgeInsets.fromLTRB(
// ScreenUtil().setWidth(40),
// ScreenUtil().setWidth(24),
// ScreenUtil().setWidth(40),
// ScreenUtil().setWidth(36)),
// child: Column(children: [
// _customInfoItemWidget(
// '应收金额',
// _onlineCheckEditProvider.orderInfoSunModel != null
// ? '¥ ${_onlineCheckEditProvider.orderInfoSunModel.shouldPrice}'
// : ''),
// VEmptyView(24),
// _customInfoItemWidget(
// '实收金额',
// _onlineCheckEditProvider.orderInfoSunModel != null
// ? '¥ ${_onlineCheckEditProvider.orderInfoSunModel.price}'
// : '',
// textColor: MyColours.color_353535,
// isBold: true),
// VEmptyView(24),
// _customInfoItemWidget('支付方式', '微信支付'),
// VEmptyView(24),
// _customInfoItemWidget(
// '买单时间',
// _onlineCheckEditProvider.orderInfoSunModel != null
// ? _onlineCheckEditProvider
// .orderInfoSunModel?.payTimeStr
// : ''),
// VEmptyView(24),
// ]))
// ]));
// }
Widget _customInfoWidget() {
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
color: Colors.white,
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(64),
ScreenUtil().setWidth(26),
ScreenUtil().setWidth(64),
ScreenUtil().setWidth(26)),
child: Column(
children: [
_customInfoItemWidget(
'顾客',
_orderFoodProvider.reserveDetailSunModel != null
? _orderFoodProvider.reserveDetailSunModel.rnameStr
: ''),
VEmptyView(24),
// _customInfoItemWidget(
// '顾客电话',
// _orderFoodProvider.reserveDetailSunModel != null
// ? _orderFoodProvider.reserveDetailSunModel.phone
// : ''),
_getTabInfoWidget(),
VEmptyView(24),
_customInfoItemWidget(
'到店时间',
_orderFoodProvider.reserveDetailSunModel != null
? _orderFoodProvider.reserveDetailSunModel.ddateStr
: ''),
VEmptyView(24),
_customInfoItemWidget(
'申请时间',
_orderFoodProvider.reserveDetailSunModel != null
? _orderFoodProvider.reserveDetailSunModel.cdateStr
: '')
],
),
)
// _getGridImg(1, context)
],
),
);
}
///发票信息
Widget _invoiceInfoWidget() {
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
height: ScreenUtil().setWidth(58 * 2),
width: double.infinity,
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(36),
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(26)),
decoration: BoxDecoration(
color: MyColours.color_FAFAFA,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10),
topRight: Radius.circular(10)),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: <
Widget>[
// Container(
// height: ScreenUtil().setWidth(53 * 2),
// width: double.infinity,
// decoration: BoxDecoration(
// color: MyColours.color_FAFAFA,
// borderRadius: BorderRadius.only(
// topLeft: Radius.circular(10),
// topRight: Radius.circular(10)),
// ),
// child: Padding(
// padding: EdgeInsets.fromLTRB(
// ScreenUtil().setWidth(20),
// ScreenUtil().setWidth(36),
// ScreenUtil().setWidth(20),
// ScreenUtil().setWidth(26)),
// child: Text(
// '发票信息',
// style: TextStyle(
// fontSize: ScreenUtil().setSp(32),
// color: MyColours.color_353535,
// fontWeight: FontWeight.bold),
// ),
// )),
Container(
color: Colors.white,
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(24),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(36)),
child: Column(children: [
_customInfoItemWidget(
'发票抬头',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.title
: '',
fontsize: 20),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.taxnumber ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'税号',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.taxnumber
: '',
fontsize: 20),
),
child: Text(
'买单信息',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
)),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(24),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(36)),
child: Column(children: [
_customInfoItemWidget(
'应收金额',
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.companyaddress ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'地址',
_onlineCheckEditProvider.orderInfoSunModel != null
? '¥ ${_onlineCheckEditProvider.orderInfoSunModel.shouldPrice}'
: ''),
VEmptyView(24),
_customInfoItemWidget(
'实收金额',
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.companyaddress
: '',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.telephone ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'电话',
_onlineCheckEditProvider.orderInfoSunModel != null
? '¥ ${_onlineCheckEditProvider.orderInfoSunModel.price}'
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.telephone
: '',
textColor: MyColours.color_353535,
isBold: true),
VEmptyView(24),
_customInfoItemWidget('支付方式', '微信支付'),
VEmptyView(24),
_customInfoItemWidget(
'买单时间',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankname ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'开户行',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel?.payTimeStr
: ''),
VEmptyView(24),
]))
]));
.orderInfoSunModel.invoice.bankname
: '',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankaccount ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'账号',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankaccount
: '',
fontsize: 20),
),
)
]))
]));
}
///应收金额
Widget _getMoneyInfoWidget() {
return Container(
color: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(64),
vertical: ScreenUtil().setWidth(14)),
child: Row(
children: [
Text(
'消费金额',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_515151),
),
Spacer(),
// HEmptyView(40),
Container(
width: ScreenUtil().setWidth(110),
height: ScreenUtil().setWidth(40),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: MyColours.color_515151))),
alignment: Alignment.center,
child: Text(
_onlineCheckEditProvider.orderInfoSunModel != null
? '¥ ${_onlineCheckEditProvider.orderInfoSunModel.price}'
: '',
maxLines: 1,
// textAlign: TextAlign.center,
//输入文本的样式
style: TextStyle(
// decoration: TextDecoration.underline,
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_515151),
))
],
),
);
}
@override
... ... @@ -571,7 +960,7 @@ class _OnlineCheckDetailPageState extends State<OnlineCheckDetailPage> {
return Scaffold(
backgroundColor: MyColours.color_f5f5f5,
appBar: SystemAppBar(
'买单申请详情',
'在线买单',
onTap: () {
if (widget.fromNotify) {
NavigatorUtil.goHomePage(context, initialIndex: 0);
... ... @@ -582,26 +971,184 @@ class _OnlineCheckDetailPageState extends State<OnlineCheckDetailPage> {
),
body: WillPopScope(
child: SingleChildScrollView(
child: Padding(
padding: EdgeInsets.all(ScreenUtil().setWidth(20)),
child: Column(
children: [
_consumptionInfoWidget(),
VEmptyView(20),
_customerInfoWidget(),
VEmptyView(20),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel !=
null
? _onlineCheckEditProvider.orderInfoSunModel.status ==
'2'
: true,
child: _orderInfoWidget(),
)
],
),
),
),
child: Padding(
padding: EdgeInsets.all(ScreenUtil().setWidth(20)),
child: Column(children: [
// _consumptionInfoWidget(),
// VEmptyView(20),
// _customerInfoWidget(),
VEmptyView(30),
_customInfoWidget(),
VEmptyView(72),
Stack(
alignment: Alignment.center,
children: [
_getMoneyInfoWidget(),
//2待支付 wait_pay 3已买单 has_pay
_onlineCheckEditProvider.orderInfoSunModel != null
? Align(
child: Image.asset(
Utils.getImgPath(_onlineCheckEditProvider
.orderInfoSunModel.status ==
'2'
? 'wait_pay'
: 'has_pay'),
width: ScreenUtil().setWidth(56 * 2),
height: ScreenUtil().setWidth(28 * 2),
),
)
: Container(),
],
),
// 备注信息
Offstage(
offstage:
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.orderRemark ==
''
: true,
child: Container(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(20),
right: ScreenUtil().setWidth(20),
left: ScreenUtil().setWidth(20)),
child: Text(
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.orderRemark
: '',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_FD5656),
),
),
),
VEmptyView(20),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
// borderRadius:
// BorderRadius.circular(10)
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
_onlineCheckEditProvider
.orderInfoSunModel.billList.length >
0
? Container(
height: ScreenUtil().setWidth(53 * 2),
width: double.infinity,
decoration: BoxDecoration(
color: MyColours.color_ffffff,
// borderRadius:
// BorderRadius.only(
// topLeft:
// Radius.circular(
// 10),
// topRight:
// Radius.circular(
// 10)),
),
child: Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(24),
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(24)),
child: Text(
'上传图片',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_000000,
fontWeight: FontWeight.bold),
),
))
: SizedBox(),
_onlineCheckEditProvider.orderInfoSunModel != null
? Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(24)),
child: Consumer<UploadImageProvider>(
builder: (context, model, _) {
List<String> temp = [];
for (int i = 0;
i <
_onlineCheckEditProvider
.orderInfoSunModel
.billList
.length;
i++) {
temp.add(_onlineCheckEditProvider
.orderInfoSunModel.billList[i]);
}
return temp.length > 0
? GridView.builder(
// controller: widget.scrollController,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: temp.length,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing:
ScreenUtil()
.setWidth(40),
//横轴间距
crossAxisSpacing:
ScreenUtil()
.setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder:
(BuildContext context,
int index) {
return InkWell(
onTap: () {
_showPhotoView(
context,
0,
temp,
);
},
child: CachedNetworkImage(
imageUrl: temp[index],
fit: BoxFit.cover,
width: ScreenUtil()
.setWidth(80 * 2),
height: ScreenUtil()
.setWidth(80 * 2),
));
})
: SizedBox();
}))
: SizedBox(),
VEmptyView(36),
_invoiceInfoWidget(),
VEmptyView(36),
// Offstage(
// offstage: _onlineCheckEditProvider.orderInfoSunModel !=
// null
// ? _onlineCheckEditProvider.orderInfoSunModel.status ==
// '2'
// : true,
// child: _orderInfoWidget(),
// )
],
),
)
]))),
onWillPop: () async {
if (widget.fromNotify) {
NavigatorUtil.goHomePage(context, initialIndex: 0);
... ...
... ... @@ -3,6 +3,7 @@ import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/pages/online_check/img_picker_widget.dart';
import 'package:one_key/pages/online_check/img_picker_widget_f.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
... ... @@ -177,8 +178,8 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
);
}
///桌位信息、应收金额
Widget _getTabAndMoneyInfoWidget() {
///桌位信息
Widget _getTabInfoWidget() {
bool showArrow = false;
//1散座 2包间 3卡座
List<String> tableNameSunList1 = []; //单个类型包含的所有桌子名称
... ... @@ -220,9 +221,9 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
}
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Column(
children: [
InkWell(
... ... @@ -234,16 +235,16 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
}
},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(36)),
// padding: EdgeInsets.symmetric(
// horizontal: ScreenUtil().setWidth(40),
// vertical: ScreenUtil().setWidth(36)),
child: Row(
children: [
Text(
'桌位信息',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_707070),
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_515151),
),
Spacer(),
Text(
... ... @@ -252,7 +253,8 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
: '',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
Offstage(
offstage: !showArrow,
... ... @@ -287,8 +289,9 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
child: Text(
'【包间】${Utils.listToString(tableNameSunList2)}',
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_353535),
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
)
: Container(),
... ... @@ -302,8 +305,9 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
child: Text(
'【卡座】${Utils.listToString(tableNameSunList3)}',
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_353535),
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
)
: Container(),
... ... @@ -317,8 +321,9 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
child: Text(
'【散座】${Utils.listToString(tableNameSunList1)}',
style: TextStyle(
fontSize: ScreenUtil().setSp(30),
color: MyColours.color_353535),
fontSize: ScreenUtil().setSp(32),
fontWeight: FontWeight.bold,
color: MyColours.color_515151),
),
)
: Container(),
... ... @@ -326,77 +331,78 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
],
),
),
Padding(
padding:
EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20)),
child: MyDivider(
double.infinity,
ScreenUtil().setWidth(2),
color: MyColours.color_EEEEEE,
),
],
),
);
}
///应收金额
Widget _getMoneyInfoWidget() {
return Container(
color: Colors.white,
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(64),
vertical: ScreenUtil().setWidth(14)),
child: Row(
children: [
Text(
'消费金额',
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_515151),
),
Spacer(),
// HEmptyView(40),
Container(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(36)),
child: Row(
children: [
Text(
'应收金额',
width: ScreenUtil().setWidth(110),
height: ScreenUtil().setWidth(40),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: MyColours.color_515151))),
alignment: Alignment.center,
child: TextField(
maxLines: 1,
// textAlign: TextAlign.center,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_707070),
),
// Spacer(),
HEmptyView(40),
Expanded(
flex: 1,
child: TextField(
maxLines: 1,
textAlign: TextAlign.end,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(34),
color: MyColours.color_353535),
controller: _editingController,
focusNode: _focusNode,
keyboardType:
TextInputType.numberWithOptions(decimal: true),
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: "点击填写金额",
hintStyle: TextStyle(
color: MyColours.color_9C9C9C,
fontSize: ScreenUtil().setSp(32),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
contentPadding: EdgeInsets.zero,
border:
OutlineInputBorder(borderSide: BorderSide.none),
),
onChanged: (value) {
print(value);
// currentRemark = value;
// print();
setState(() {
if (value != '¥' && value.trim().length > 0) {
btnState = 1;
} else {
btnState = -1;
}
});
},
onEditingComplete: () {
print('fff');
_focusNode.unfocus();
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_515151),
controller: _editingController,
focusNode: _focusNode,
keyboardType: TextInputType.numberWithOptions(decimal: true),
// textAlignVertical: TextAlignVertical.bottom,
decoration: InputDecoration(
hintText: "点击填写",
hintStyle: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
contentPadding: EdgeInsets.zero,
border: OutlineInputBorder(borderSide: BorderSide.none),
),
onChanged: (value) {
print(value);
// currentRemark = value;
// print();
setState(() {
if (value != '¥' && value.trim().length > 0) {
btnState = 1;
} else {
btnState = -1;
}
});
},
onEditingComplete: () {
print('fff');
_focusNode.unfocus();
// _editingController.text = '';
// _needNode.unfocus();
}))
],
),
),
// _editingController.text = '';
// _needNode.unfocus();
}))
],
),
);
... ... @@ -405,20 +411,24 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
///
///顾客信息
Widget _customInfoItemWidget(String title, String subTitle) {
Widget _customInfoItemWidget(String title, String subTitle,
{double fontsize = 28}) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
title,
style: TextStyle(
fontSize: ScreenUtil().setSp(28), color: MyColours.color_707070),
fontSize: ScreenUtil().setSp(24), color: MyColours.color_515151),
),
Text(
subTitle,
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_707070,
decoration: fontsize == 20
? TextDecoration.underline
: TextDecoration.none,
fontSize: ScreenUtil().setSp(fontsize),
color: MyColours.color_515151,
fontWeight: FontWeight.bold),
)
],
... ... @@ -434,48 +444,26 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
height: ScreenUtil().setWidth(53 * 2),
width: double.infinity,
decoration: BoxDecoration(
color: MyColours.color_FAFAFA,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10),
topRight: Radius.circular(10)),
),
child: Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(36),
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(26)),
child: Text(
'顾客信息',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_353535,
fontWeight: FontWeight.bold),
),
)),
Container(
color: Colors.white,
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(24),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(36)),
ScreenUtil().setWidth(64),
ScreenUtil().setWidth(26),
ScreenUtil().setWidth(64),
ScreenUtil().setWidth(26)),
child: Column(
children: [
_customInfoItemWidget(
'买单顾客',
'顾客',
_orderFoodProvider.reserveDetailSunModel != null
? _orderFoodProvider.reserveDetailSunModel.rnameStr
: ''),
VEmptyView(24),
_customInfoItemWidget(
'顾客电话',
_orderFoodProvider.reserveDetailSunModel != null
? _orderFoodProvider.reserveDetailSunModel.phone
: ''),
// _customInfoItemWidget(
// '顾客电话',
// _orderFoodProvider.reserveDetailSunModel != null
// ? _orderFoodProvider.reserveDetailSunModel.phone
// : ''),
_getTabInfoWidget(),
VEmptyView(24),
_customInfoItemWidget(
'到店时间',
... ... @@ -497,6 +485,141 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
);
}
///发票信息
Widget _invoiceInfoWidget() {
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(10)),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: <
Widget>[
// Container(
// height: ScreenUtil().setWidth(53 * 2),
// width: double.infinity,
// decoration: BoxDecoration(
// color: MyColours.color_FAFAFA,
// borderRadius: BorderRadius.only(
// topLeft: Radius.circular(10),
// topRight: Radius.circular(10)),
// ),
// child: Padding(
// padding: EdgeInsets.fromLTRB(
// ScreenUtil().setWidth(20),
// ScreenUtil().setWidth(36),
// ScreenUtil().setWidth(20),
// ScreenUtil().setWidth(26)),
// child: Text(
// '发票信息',
// style: TextStyle(
// fontSize: ScreenUtil().setSp(32),
// color: MyColours.color_353535,
// fontWeight: FontWeight.bold),
// ),
// )),
Container(
color: Colors.white,
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(24),
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(36)),
child: Column(children: [
_customInfoItemWidget(
'发票抬头',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.title
: '',
fontsize: 20),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.taxnumber ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'税号',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.taxnumber
: '',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.companyaddress ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'地址',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.companyaddress
: '',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.telephone ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'电话',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.telephone
: '',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankname ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'开户行',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankname
: '',
fontsize: 20),
),
),
Offstage(
offstage: _onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankaccount ==
''
: true,
child: Padding(
padding: EdgeInsets.only(top: ScreenUtil().setWidth(24)),
child: _customInfoItemWidget(
'账号',
_onlineCheckEditProvider.orderInfoSunModel != null
? _onlineCheckEditProvider
.orderInfoSunModel.invoice.bankaccount
: '',
fontsize: 20),
),
)
]))
]));
}
@override
Widget build(BuildContext context) {
detailModel = Provider.of<NotebookDetailModel>(context, listen: true);
... ... @@ -506,9 +629,9 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
_uploadImageProvider =
Provider.of<UploadImageProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_f5f5f5,
backgroundColor: MyColours.color_F7F7F7,
appBar: SystemAppBar(
'提前买单',
'在线买单',
onTap: () {
if (widget.fromNotify) {
NavigatorUtil.goHomePage(context, initialIndex: 0);
... ... @@ -525,143 +648,163 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> {
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(20)),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: _scrollController,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
VEmptyView(40),
//图标
_getLogoWidget(),
VEmptyView(40),
_getTabAndMoneyInfoWidget(),
VEmptyView(10),
// 备注信息
Offstage(
offstage: _onlineCheckEditProvider
.orderInfoSunModel !=
null
? _onlineCheckEditProvider
.orderInfoSunModel
.orderRemark ==
''
: true,
child: Container(
padding: EdgeInsets.symmetric(
horizontal:
ScreenUtil().setWidth(20)),
child: Text(
_onlineCheckEditProvider
child: Container(
color: MyColours.color_F7F7F7,
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: _scrollController,
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
VEmptyView(30),
_customInfoWidget(),
// //图标
// _getLogoWidget(),
// VEmptyView(40),
VEmptyView(72),
_getMoneyInfoWidget(),
// 备注信息
Offstage(
offstage: _onlineCheckEditProvider
.orderInfoSunModel !=
null
? _onlineCheckEditProvider
.orderInfoSunModel.orderRemark
: '',
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_FD5656),
.orderInfoSunModel
.orderRemark ==
''
: true,
child: Container(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(20),
right: ScreenUtil().setWidth(20),
left: ScreenUtil().setWidth(20)),
child: Text(
_onlineCheckEditProvider
.orderInfoSunModel !=
null
? _onlineCheckEditProvider
.orderInfoSunModel
.orderRemark
: '',
style: TextStyle(
fontSize:
ScreenUtil().setSp(24),
color: MyColours.color_FD5656),
),
),
),
),
),
VEmptyView(20),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius:
BorderRadius.circular(10)),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
height:
ScreenUtil().setWidth(53 * 2),
width: double.infinity,
decoration: BoxDecoration(
color: MyColours.color_FAFAFA,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10),
topRight:
Radius.circular(10)),
),
child: Padding(
VEmptyView(20),
Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
// borderRadius:
// BorderRadius.circular(10)
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Container(
height: ScreenUtil()
.setWidth(53 * 2),
width: double.infinity,
decoration: BoxDecoration(
color: MyColours.color_ffffff,
// borderRadius:
// BorderRadius.only(
// topLeft:
// Radius.circular(
// 10),
// topRight:
// Radius.circular(
// 10)),
),
child: Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(24),
ScreenUtil().setWidth(20),
ScreenUtil()
.setWidth(24)),
child: Text(
'上传小票',
style: TextStyle(
fontSize: ScreenUtil()
.setSp(32),
color: MyColours
.color_000000,
fontWeight:
FontWeight.bold),
),
)),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(36),
ScreenUtil().setWidth(20),
ScreenUtil().setWidth(26)),
child: Text(
'消费清单(选填)',
style: TextStyle(
fontSize:
ScreenUtil().setSp(32),
color:
MyColours.color_353535,
fontWeight:
FontWeight.bold),
),
)),
Padding(
padding: EdgeInsets.all(
ScreenUtil().setWidth(40)),
child: Consumer<UploadImageProvider>(
builder: (context, model, _) {
return ImgPickerWidget(
model: model,
scrollController:
_scrollController,
uploadType: UploadType
.ConsumptionUploadType,
);
}),
)
// _getGridImg(1, context)
],
),
),
VEmptyView(20),
_customInfoWidget()
],
))),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(16),
0,
ScreenUtil().setWidth(16),
ScreenUtil().setWidth(40)),
child: CommonButton(
width: double.infinity,
height: 84,
fontSize: 34,
content: '发送给顾客',
state: btnState,
onPress: () async {
if (btnState == 1) {
_focusNode.unfocus();
if (_editingController.text.startsWith('¥') &&
_editingController.text.length == 1) {
Utils.showToast('请输入金额');
setState(() {
btnState = -1;
});
return;
}
DialogUtil.confirmDialog(
context, _editingController.text, 438,
onTap: () {
Navigator.pop(context);
_updateOrderInfo();
});
}
},
))
],
)),
ScreenUtil().setWidth(24)),
child:
Consumer<UploadImageProvider>(
builder:
(context, model, _) {
return ImgPickerFWidget(
model: model,
scrollController:
_scrollController,
uploadType: UploadType
.ConsumptionUploadType,
);
}),
)
// _getGridImg(1, context)
],
),
),
VEmptyView(36),
_invoiceInfoWidget(),
VEmptyView(36),
],
))),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(180),
0,
ScreenUtil().setWidth(180),
ScreenUtil().setWidth(40)),
child: CommonButton(
width: double.infinity,
height: 84,
fontSize: 32,
content: '发送给顾客',
state: btnState,
onPress: () async {
if (btnState == 1) {
_focusNode.unfocus();
if (_editingController.text
.startsWith('¥') &&
_editingController.text.length == 1) {
Utils.showToast('请输入金额');
setState(() {
btnState = -1;
});
return;
}
DialogUtil.confirmDialog(
context, _editingController.text, 438,
onTap: () {
Navigator.pop(context);
_updateOrderInfo();
});
}
},
))
],
))),
),
onWillPop: () async {
if (widget.fromNotify) {
... ...
... ... @@ -6,6 +6,7 @@ import 'package:one_key/models/message.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/utils/utils.dart';
class MessageModel extends ChangeNotifier {
List<Message> messages = []; //消息
... ... @@ -125,6 +126,21 @@ class MessageModel extends ChangeNotifier {
}
}
//设置消息状态
setMessageStatus(BuildContext context, Map<String, String> params) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(
context, Method.get, HttpUrl.push_msg_set_message_status,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
});
if (baseResp.code == Constant.status_success) {
} else {
Utils.showToast(baseResp.msg);
}
}
//根据消息id移除消息
removeUntreatedMessageByMid(String mid) {
messages.removeWhere((element) => element.id == mid);
... ...