|
|
|
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/provider/online_check_edit_provider.dart';
|
|
|
|
import 'package:one_key/provider/order_food_provider.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/navigator_util.dart';
|
|
|
|
import 'package:one_key/utils/utils.dart';
|
|
|
|
import 'package:one_key/widgets/MyDivider.dart';
|
|
|
|
import 'package:one_key/widgets/common_button.dart';
|
|
|
|
import 'package:one_key/widgets/h_empty_view.dart';
|
|
|
|
import 'package:one_key/widgets/my_item.dart';
|
|
|
|
import 'package:one_key/widgets/system_app_bar.dart';
|
|
...
|
...
|
@@ -14,7 +20,9 @@ import 'package:provider/provider.dart'; |
|
|
|
|
|
|
|
class OnlineCheckEditPage extends StatefulWidget {
|
|
|
|
final bool fromNotify;
|
|
|
|
OnlineCheckEditPage({Key key, this.fromNotify = false}) : super(key: key);
|
|
|
|
final String rid;
|
|
|
|
OnlineCheckEditPage({Key key, this.fromNotify = false, this.rid})
|
|
|
|
: super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_OnlineCheckEditPageState createState() => _OnlineCheckEditPageState();
|
|
...
|
...
|
@@ -25,12 +33,17 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
TextEditingController _editingController = TextEditingController();
|
|
|
|
FocusNode _focusNode = FocusNode();
|
|
|
|
OnlineCheckEditProvider _onlineCheckEditProvider;
|
|
|
|
OrderFoodProvider _orderFoodProvider;
|
|
|
|
int btnState = -1;
|
|
|
|
bool arrowStatus = true; // true合住 false展开
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
|
_getQiniuInfo();
|
|
|
|
_getTableInfoData();
|
|
|
|
_getOrderInfo();
|
|
|
|
});
|
|
|
|
_focusNode.addListener(() {
|
|
|
|
if (_focusNode.hasFocus) {
|
|
...
|
...
|
@@ -38,15 +51,56 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
_editingController.text = '¥';
|
|
|
|
} else {
|
|
|
|
//失去焦点
|
|
|
|
_editingController.text = '';
|
|
|
|
// _editingController.text = '';
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void dispose() {
|
|
|
|
_focusNode.unfocus();
|
|
|
|
_onlineCheckEditProvider.imageList = [];
|
|
|
|
_onlineCheckEditProvider.imageQiniuUrlList = [];
|
|
|
|
super.dispose();
|
|
|
|
// _onlineCheckEditProvider
|
|
|
|
}
|
|
|
|
|
|
|
|
///接口获取桌位信息
|
|
|
|
_getTableInfoData() async {
|
|
|
|
UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
|
|
Map<String, String> params = {
|
|
|
|
"openid": userModel.user.openid,
|
|
|
|
"rid": widget.rid
|
|
|
|
};
|
|
|
|
//明天完成 桌位名称信息
|
|
|
|
await _orderFoodProvider.getTableInfoData(context, params);
|
|
|
|
}
|
|
|
|
|
|
|
|
_getOrderInfo() async {
|
|
|
|
UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
|
|
Map<String, String> params = {"rid": widget.rid};
|
|
|
|
//remark信息获取
|
|
|
|
await _onlineCheckEditProvider.getOrderInfo(context, params);
|
|
|
|
}
|
|
|
|
|
|
|
|
///商家确认账单操作
|
|
|
|
_updateOrderInfo() async {
|
|
|
|
for (int i = 0; i < _onlineCheckEditProvider.imageList.length; i++) {
|
|
|
|
_onlineCheckEditProvider.imageQiniuUrlList
|
|
|
|
.add(_onlineCheckEditProvider.imageList[i].qiniuUrl);
|
|
|
|
}
|
|
|
|
UserModel userModel = Provider.of<UserModel>(context, listen: false);
|
|
|
|
Map<String, String> params = {
|
|
|
|
"price": _editingController.text,
|
|
|
|
"rid": widget.rid,
|
|
|
|
'bill_list': json.encode(_onlineCheckEditProvider.imageQiniuUrlList)
|
|
|
|
};
|
|
|
|
print(pragma);
|
|
|
|
//明天完成 桌位名称信息
|
|
|
|
bool result =
|
|
|
|
await _onlineCheckEditProvider.updateOrderInfo(context, params);
|
|
|
|
if (result) {
|
|
|
|
//跳转至在线买单处理完的详情页面
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///获取七牛云token
|
|
...
|
...
|
@@ -82,31 +136,135 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
|
|
|
|
///桌位信息、应收金额
|
|
|
|
Widget _getTabAndMoneyInfoWidget() {
|
|
|
|
String showTable = '';
|
|
|
|
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) {
|
|
|
|
showTable = '【包间】${tableNameSunList2[0]}';
|
|
|
|
showArrow = true;
|
|
|
|
} else if (tableNameSunList3.length > 0) {
|
|
|
|
showTable = '【卡座】${tableNameSunList3[0]}';
|
|
|
|
showArrow = true;
|
|
|
|
} else if (tableNameSunList1.length > 0) {
|
|
|
|
showTable = '【散座】${tableNameSunList1[0]}';
|
|
|
|
showArrow = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return Container(
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(40),
|
|
|
|
vertical: ScreenUtil().setWidth(36)),
|
|
|
|
child: Row(
|
|
|
|
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(32),
|
|
|
|
color: MyColours.color_707070),
|
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
Text(
|
|
|
|
_orderFoodProvider.reserveDetailSunModel != null
|
|
|
|
? showTable
|
|
|
|
: '',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
color: MyColours.color_353535),
|
|
|
|
),
|
|
|
|
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: [
|
|
|
|
Text(
|
|
|
|
'桌位信息',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
color: MyColours.color_707070),
|
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
Text(
|
|
|
|
'[包间]秦皇岛',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
color: MyColours.color_353535),
|
|
|
|
)
|
|
|
|
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),
|
|
|
|
color: MyColours.color_353535),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
: 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),
|
|
|
|
color: MyColours.color_353535),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
: 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),
|
|
|
|
color: MyColours.color_353535),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
: Container(),
|
|
|
|
VEmptyView(36),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
...
|
...
|
@@ -159,13 +317,21 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
print(value);
|
|
|
|
// currentRemark = value;
|
|
|
|
// print();
|
|
|
|
setState(() {
|
|
|
|
if (value != '¥' && value.trim().length > 0) {
|
|
|
|
btnState = 1;
|
|
|
|
} else {
|
|
|
|
btnState = -1;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
onEditingComplete: () {
|
|
|
|
print('fff');
|
|
|
|
_editingController.text = '';
|
|
|
|
_focusNode.unfocus();
|
|
|
|
// _editingController.text = '';
|
|
|
|
// _needNode.unfocus();
|
|
|
|
},
|
|
|
|
// keyboardType: TextInputType.number,
|
|
|
|
keyboardType: TextInputType.number,
|
|
|
|
))
|
|
|
|
],
|
|
|
|
),
|
|
...
|
...
|
@@ -175,6 +341,8 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
///
|
|
|
|
|
|
|
|
///顾客信息
|
|
|
|
Widget _customInfoItemWidget(String title, String subTitle) {
|
|
|
|
return Row(
|
|
...
|
...
|
@@ -236,13 +404,29 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
ScreenUtil().setWidth(36)),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
_customInfoItemWidget('买单顾客', 'ffff'),
|
|
|
|
_customInfoItemWidget(
|
|
|
|
'买单顾客',
|
|
|
|
_orderFoodProvider.reserveDetailSunModel != null
|
|
|
|
? _orderFoodProvider.reserveDetailSunModel.rnameStr
|
|
|
|
: ''),
|
|
|
|
VEmptyView(24),
|
|
|
|
_customInfoItemWidget('顾客电话', 'ffff'),
|
|
|
|
_customInfoItemWidget(
|
|
|
|
'顾客电话',
|
|
|
|
_orderFoodProvider.reserveDetailSunModel != null
|
|
|
|
? _orderFoodProvider.reserveDetailSunModel.phone
|
|
|
|
: ''),
|
|
|
|
VEmptyView(24),
|
|
|
|
_customInfoItemWidget('到店时间', 'ffff'),
|
|
|
|
_customInfoItemWidget(
|
|
|
|
'到店时间',
|
|
|
|
_orderFoodProvider.reserveDetailSunModel != null
|
|
|
|
? _orderFoodProvider.reserveDetailSunModel.ddateStr
|
|
|
|
: ''),
|
|
|
|
VEmptyView(24),
|
|
|
|
_customInfoItemWidget('申请时间', 'ffff')
|
|
|
|
_customInfoItemWidget(
|
|
|
|
'申请时间',
|
|
|
|
_orderFoodProvider.reserveDetailSunModel != null
|
|
|
|
? _orderFoodProvider.reserveDetailSunModel.cdateStr
|
|
|
|
: '')
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)
|
|
...
|
...
|
@@ -256,6 +440,7 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
Widget build(BuildContext context) {
|
|
|
|
_onlineCheckEditProvider =
|
|
|
|
Provider.of<OnlineCheckEditProvider>(context, listen: true);
|
|
|
|
_orderFoodProvider = Provider.of<OrderFoodProvider>(context, listen: true);
|
|
|
|
return Scaffold(
|
|
|
|
backgroundColor: MyColours.color_f5f5f5,
|
|
|
|
appBar: SystemAppBar(
|
|
...
|
...
|
@@ -268,38 +453,70 @@ class _OnlineCheckEditPageState extends State<OnlineCheckEditPage> { |
|
|
|
}
|
|
|
|
},
|
|
|
|
),
|
|
|
|
body: SingleChildScrollView(
|
|
|
|
controller: _scrollController,
|
|
|
|
child: Padding(
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(20),
|
|
|
|
vertical: ScreenUtil().setWidth(40)),
|
|
|
|
child: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
//图标
|
|
|
|
_getLogoWidget(),
|
|
|
|
VEmptyView(40),
|
|
|
|
_getTabAndMoneyInfoWidget(),
|
|
|
|
VEmptyView(10),
|
|
|
|
// 备注信息
|
|
|
|
Container(
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(20)),
|
|
|
|
child: Text(
|
|
|
|
'*贾森基德款式经典福克斯肌肤快速反击',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(28),
|
|
|
|
color: MyColours.color_FD5656),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
VEmptyView(20),
|
|
|
|
ImgPickerWidget(scrollController: _scrollController),
|
|
|
|
VEmptyView(20),
|
|
|
|
_customInfoWidget()
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
),
|
|
|
|
body: 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.orderInfoSunModel !=
|
|
|
|
null
|
|
|
|
? _onlineCheckEditProvider
|
|
|
|
.orderInfoSunModel.orderRemark
|
|
|
|
: '',
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(28),
|
|
|
|
color: MyColours.color_FD5656),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
VEmptyView(20),
|
|
|
|
ImgPickerWidget(scrollController: _scrollController),
|
|
|
|
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 {
|
|
|
|
DialogUtil.confirmDialog(
|
|
|
|
context, _editingController.text, 426, onTap: () {
|
|
|
|
_updateOrderInfo();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
))
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|