Commit 726f6ea6457efa37105249c6017d79a134c96a68

Authored by wdn127929
1 parent cb6f643a

变更时间和时段有问题

... ... @@ -27,6 +27,7 @@ class Table {
int isPhoto; //桌位是否有照片
String pnum; //预计人数
String nickName; //操作人
String noteName; //操作人
//获取桌位类型
String get tidStr {
... ...
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
... ... @@ -13,6 +13,7 @@ import 'package:one_key/models/manager.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/pages/detail/notebook_detail_change_page.dart';
import 'package:one_key/pages/detail/notebook_detail_change_page_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';
... ... @@ -3014,7 +3015,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
userModel.user.openid) {
} else {
NavigatorUtil
.goNoteBookChangePage(
.goNoteBookChangeFPage(
context,
detailEntity,
widget.rid);
... ...
import 'dart:ffi';
import 'package:dotted_border/dotted_border.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/area.dart';
import 'package:one_key/models/notebook.dart';
import 'package:one_key/models/tableOuter.dart';
import 'package:one_key/models/table_list.dart';
import 'package:one_key/pages/table/area_item_table.dart';
import 'package:one_key/provider/choose_table_model.dart';
import 'package:one_key/provider/notebook_detail_change_model.dart';
import 'package:one_key/provider/notebook_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/app_bar.dart';
import 'package:one_key/widgets/area_item.dart';
import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/f_table_item.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/table_item.dart';
import 'package:one_key/models/table.dart' as t;
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'dart:convert' as convert;
class SelectTableFPage extends StatefulWidget {
final String rid; //预订id
final DateTime dateTime; //日期
final String ddate_slot; //时段
final bool canChoose; //变更预订可以取消原来已预订的选中状态
final List<TableList> tableList;
final String fromPage;
final String tid;
SelectTableFPage(this.rid, this.dateTime, this.ddate_slot,
{this.canChoose = false, this.tableList, this.fromPage, this.tid});
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new SelectTableFPageState();
}
}
class SelectTableFPageState extends State<SelectTableFPage> {
List<Area> areas = []; //区域列表
List<t.Table> selectTables = []; //选择的桌位
List<TableOuter> tableOuterList = []; //区域-桌位列表
Map<String, List<t.Table>> areaTableMap = {}; //区域-桌位Map
ChooseTableModel _chooseTableModel;
Map<String, Notebook> tableMap = {}; //记录已预订桌位对应的订单
String currentArea; //当前选中区域
List<String> personNumList = [];
int selectNum = 0;
bool isSelected = true; //全部按钮
int _selectNumber;
@override
void initState() {
// TODO: implement initState
super.initState();
for (int i = 1; i < 31; i++) {
personNumList.add(i.toString());
}
WidgetsBinding.instance.addPostFrameCallback((_) {
getTableList();
});
}
//获取桌位列表
getTableList({needLoading = true}) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
Map<String, String> params = {"sellerid": userModel.user.sellerid};
tableOuterList = await _chooseTableModel.getTableList(context, params,
needLoading: needLoading);
_chooseTableModel.tablesAll = [];
for (TableOuter item in tableOuterList) {
// if (item.name == "推荐") {
// itemModelList.remove(item);
// }
for (var item1 in item.list) {
item1.selected = false;
for (var table in widget.tableList) {
if (item1.id == table.id) {
item1.selected = true;
selectNum++;
// if (!tableList.contains(item)) {
// tableList.add(item);
// }
}
}
}
_chooseTableModel.tablesAll.addAll(item.list);
}
if (tableOuterList.isEmpty) {
_chooseTableModel.pageState = PageState.Success;
_chooseTableModel.notifyListeners();
} else {
_getReserveList(userModel.user.sellerid, needLoading: needLoading);
}
// if (_chooseTableModel.pageState == PageState.Success) {
// }
}
refreshTable(context) async {
await getTableList(needLoading: false);
// if (temp.length > 0) {
// _getReserveList(context, needLoading: false);
// } else {
// // pageState = PageState.Empty;
// _chooseTableModel.pageState = PageState.Success;
// _chooseTableModel.notifyListeners();
// }
}
//获取已预订列表
_getReserveList(String sid, {needLoading = true}) async {
NoteBookModel model = new NoteBookModel();
Map<String, String> params = {
"sid": sid,
"rdate": _getRdate(),
"ddate_solt": widget.ddate_slot,
"y": "200",
"x": "1",
"keywords": "",
"sort": "1"
};
List<Notebook> noteBooks =
await model.getReserveList(context, params, needLoading: needLoading);
for (Notebook notebook in noteBooks) {
if (notebook.tid.isEmpty) continue;
if (notebook.status == "1" ||
notebook.status == "2" ||
notebook.status == "5") {
//已预订,用餐中,已安排
List<String> tids = notebook.tid.split(",");
for (String tid in tids) {
tableMap["$tid"] = notebook;
}
}
}
print(tableMap);
if (needLoading) {
initData();
} else {
initData(needRetain: true);
}
}
//初始桌位数据
initData({bool needRetain = false}) {
areas.clear();
areaTableMap.clear();
List<t.Table> tempTableAll = [];
tempTableAll.addAll(_chooseTableModel.tablesAll);
for (TableOuter outer in tableOuterList) {
int count = 0;
List<t.Table> tempList = [];
tempList.addAll(outer.list);
for (t.Table table in outer.list) {
// table.selected = false;
if (widget.tid != '' && table.id == widget.tid) {
table.selected = true;
currentArea = outer.name;
}
if (table.tablestatus == "0") {
//没有用餐中
if (tableMap["${table.id}"] != null) {
Notebook notebook = tableMap["${table.id}"];
table.sign = notebook.status;
table.notebookId = notebook.id;
table.reserver = notebook.rnameStr;
table.pnum = notebook.actual_pnum;
table.nickName = notebook.nick_name;
table.noteName = notebook.note_name;
//(不能移除自己定的桌子)
String idNow = '';
if (tableMap.containsKey('${table.id}')) {
//包含,证明该桌子已经被预订了
idNow = tableMap['${table.id}'].id;
if (idNow != widget.rid) {
//不是自己的当前订单
//剔除已经预订的桌子,剩下空桌子(仅看空座)
tempList.remove(table);
//全部
tempTableAll.remove(table);
}
}
} else {
table.sign = "";
table.notebookId = "";
if (table.enable == "1") {
count++;
}
}
} else {
table.sign = "2";
table.notebookId = "";
}
}
areaTableMap["${outer.name}"] = outer.list;
_chooseTableModel.areaTableMapCanNote["${outer.name}"] = tempList;
Area area = Area();
area.name = outer.name;
area.count = count;
area.rid = outer.list.length == 0 ? outer.rid : outer.list[0].rid;
areas.add(area);
}
_chooseTableModel.tablesCanNote = tempTableAll;
if (_chooseTableModel.swichState) {
_chooseTableModel.areaTableMapShow =
_chooseTableModel.areaTableMapCanNote;
_chooseTableModel.tablesShow = _chooseTableModel.tablesCanNote;
} else {
_chooseTableModel.areaTableMapShow = areaTableMap;
_chooseTableModel.tablesShow = _chooseTableModel.tablesAll;
}
if (widget.tid == '') {
if (!needRetain) {
// currentArea = areaTableMap.keys.first;
currentArea = '全部';
_chooseTableModel.currentTables = _chooseTableModel.tablesAll;
}
if (areas.length == 1) {
currentArea = areaTableMap.keys.first;
}
}
_chooseTableModel.pageState = PageState.Success;
_chooseTableModel.notifyListeners();
}
//获取一天开始-结束时间字符串
String _getRdate() {
//一天开始时间
double startDay = (DateTime.parse((widget.dateTime.year.toString() +
"-" +
Utils.addZeroNumber(widget.dateTime.month) +
"-" +
Utils.addZeroNumber(widget.dateTime.day) +
" 00:00:00"))
.millisecondsSinceEpoch) /
1000;
//一天结束时间
double endDay = (DateTime.parse((widget.dateTime.year.toString() +
"-" +
Utils.addZeroNumber(widget.dateTime.month) +
"-" +
Utils.addZeroNumber(widget.dateTime.day) +
" 23:59:59"))
.millisecondsSinceEpoch) /
1000;
return startDay.floor().toString() + "-" + endDay.floor().toString();
}
Widget item(int i) {
return GridView.builder(
// controller: _areaController,
// physics: NeverScrollableScrollPhysics(),
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(20),
horizontal: ScreenUtil().setWidth(10)),
shrinkWrap: true,
itemCount: currentArea == '全部'
? _chooseTableModel.tablesShow.length
: _chooseTableModel.areaTableMapShow[areas[i].name].length + 1,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
childAspectRatio: 1,
mainAxisSpacing: ScreenUtil().setWidth(30),
crossAxisSpacing: ScreenUtil().setWidth(12),
),
itemBuilder: (BuildContext context, int index) {
List<t.Table> data = currentArea == '全部'
? _chooseTableModel.tablesShow
: _chooseTableModel.areaTableMapShow[areas[i].name];
if (index == data.length || data.length == 0) {
return InkWell(
onTap: () async {
List<String> areasTemp = [];
for (int i = 0; i < areas.length; i++) {
areasTemp.add(areas[i].name);
}
//添加桌位弹框
await DialogUtil.openCreateTableDialog(
context, areasTemp, i, personNumList,
onTap: (Map<String, String> value) async {
print(value);
// 'areaname':
// areas[currentAreaIndex],
// 'name': controller.text,
// 'pnumMin': pnumMin,
// 'pnumMax': pnumMax
//添加桌位 接口参数带整合???
// 以下是旧的不去,明天添加桌位接口
String rid;
for (Area item in areas) {
if (item.name == value['areaname']) {
rid = item.rid;
}
}
Map<String, String> params = {
'rid': rid,
'name': value['name'],
};
if (value['pnumMin'] != '') {
params['pnum'] = value['pnumMin'];
}
if (value['pnumMax'] != '') {
params['most_pnum'] = value['pnumMax'];
}
bool success =
await _chooseTableModel.addTable(context, params);
print(success);
if (success) {
Utils.showToast('添加成功!');
// TableOuter tableOuter = TableOuter();
// tableOuter.name = value;
// tableOuter.list = [];
// tableManagerModel.tableOuterList.add(tableOuter);
// tableManagerModel.initData();
// Timer(
// Duration(milliseconds: 500),
// () => _areaController.jumpTo(
// _areaController.position.maxScrollExtent));
// await tableManagerModel
// .getTableList(context);
// await tableManagerModel
// .initData();
refreshTable(context);
}
});
},
child: Container(
child: DottedBorder(
dashPattern: [5, 5, 5, 5],
borderType: BorderType.RRect,
radius: Radius.circular(ScreenUtil().setWidth(20)),
// padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
color: MyColours.color_E0E0E0,
strokeWidth: ScreenUtil().setWidth(2),
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(20))),
child: Container(
height: ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(12 * 3 - 10 * 2),
width: ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(12 * 3 - 10 * 2),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(Utils.getImgPath('add_store'),
width: ScreenUtil().setWidth(32)),
],
),
),
),
)));
} else {
return Selector<ChooseTableModel, t.Table>(
shouldRebuild: (pre, next) => true,
selector: (context, model) => data[index],
builder: (context, table, _) {
return FTableItem(table, canSelected: true,
onSelected: (t.Table table) {
if (widget.fromPage == 'tablePhoto') {
for (String item in areaTableMap.keys) {
for (t.Table item in areaTableMap[item]) {
item.selected = false;
selectNum = 0;
if (table.id == item.id) {
item.selected = true;
selectTables = [];
selectNum++;
selectTables.add(table);
}
}
}
setState(() {});
} else {
if ((table as t.Table).selected) {
selectTables.add(table);
selectNum++;
widget.tableList.add(tableToTableList(table));
} else {
widget.tableList.removeWhere((t) => t.id == table.id);
selectNum--;
selectTables.removeWhere((t) => t.id == table.id);
}
setState(() {});
}
},
fromPage: widget.fromPage,
tableMap: tableMap,
rid: widget.rid);
},
);
}
},
);
}
@override
Widget build(BuildContext context) {
_chooseTableModel = Provider.of<ChooseTableModel>(context);
return Scaffold(
body: SafeArea(
child: Column(
children: <Widget>[
MyAppBar(
"选择桌位",
showBack: true,
),
Expanded(
child: Consumer<ChooseTableModel>(builder: (context, model, _) {
if (model.pageState != PageState.Success) {
return ExceptionPage(
pageState: model.pageState,
callback: () {
getTableList();
},
emptyMsg: "暂时没有桌位哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return Column(
// crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
color: MyColours.color_ffffff,
height: ScreenUtil().setWidth(92),
margin:
EdgeInsets.only(bottom: ScreenUtil().setWidth(30)),
child: Row(
children: [
HEmptyView(20),
Expanded(
child: ListView.builder(
itemCount:
areas.length == 0 ? 1 : areas.length + 2,
shrinkWrap: true,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext contxt, int index) {
if (index == areas.length + 1 ||
areas.length == 0) {
return InkWell(
onTap: () async {
//添加区域弹框
await DialogUtil.openCreateAreaDialog(
context, onTap: (value) async {
print(value);
//添加区域
bool success = await _chooseTableModel
.addTableAreas(context, value);
print(success);
if (success) {
Utils.showToast('添加成功!');
UserModel userModel =
Provider.of<UserModel>(context,
listen: false);
Map<String, String> params = {
"sellerid": userModel.user.sellerid
};
await _chooseTableModel.getTableList(
context, params,
needLoading: false);
initData();
// setState(() {
// updateMenu();
// });
// _scrollToIndex(widget
// .tableManagerModel
// .areas
// .length);
}
});
},
child: Column(
children: [
VEmptyView(20),
DottedBorder(
dashPattern: [5, 5, 5, 5],
borderType: BorderType.RRect,
radius: Radius.circular(
ScreenUtil().setWidth(10)),
// padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
color: MyColours.color_199095,
strokeWidth: ScreenUtil().setWidth(2),
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(
ScreenUtil().setWidth(10))),
child: Container(
height:
ScreenUtil().setWidth(25 * 2),
width: ScreenUtil()
.setWidth(104 * 2),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Image.asset(
Utils.getImgPath(
'add_area'),
width: ScreenUtil()
.setWidth(24)),
],
),
),
),
)
],
),
);
} else {
if (index == 0) {
return InkWell(
onTap: () {
setState(() {
isSelected = true;
currentArea = '全部';
_chooseTableModel.currentTables =
_chooseTableModel
.areaTableMapShow[
currentArea];
});
},
child: Container(
// width: ScreenUtil().setWidth(104 * 2),
height: ScreenUtil().setWidth(80),
margin: EdgeInsets.only(
right: ScreenUtil().setWidth(20),
top: ScreenUtil().setWidth(20),
),
padding: EdgeInsets.symmetric(
horizontal:
ScreenUtil().setWidth(20),
vertical:
ScreenUtil().setWidth(10)),
alignment: Alignment.center,
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
color: isSelected
? MyColours.color_199095
: MyColours.color_ffffff,
border: Border.all(
color: MyColours.color_E0E0E0,
width:
ScreenUtil().setWidth(2))),
child: Text(
'全部',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: isSelected
? MyColours.color_ffffff
: MyColours.color_333333,
fontSize: ScreenUtil().setSp(28),
decoration: TextDecoration.none,
fontWeight: FontWeight.normal),
),
),
);
} else {
return AreaItemTable(
areas[index - 1], currentArea, (area) {
setState(() {
isSelected = false;
_selectNumber = index - 1;
currentArea = areas[index - 1].name;
_chooseTableModel.currentTables =
_chooseTableModel
.areaTableMapShow[currentArea];
// _anmationMenu();
});
});
}
}
},
)),
InkWell(
onTap: () {
setState(() {
model.swichState = !model.swichState;
if (model.swichState) {
model.areaTableMapShow =
_chooseTableModel.areaTableMapCanNote;
model.tablesShow =
_chooseTableModel.tablesCanNote;
} else {
model.areaTableMapShow = model.areaTableMap;
model.tablesShow = model.tablesAll;
}
});
},
child: Container(
margin: EdgeInsets.only(
top: ScreenUtil().setWidth(20),
),
child: Row(
children: [
MyDivider(ScreenUtil().setWidth(15),
ScreenUtil().setWidth(80),
color: MyColours.color_F1F0F4),
MyDivider(ScreenUtil().setWidth(2),
ScreenUtil().setWidth(80),
color: MyColours.color_9C9C9C),
HEmptyView(30),
Image.asset(
model.swichState
? Utils.getImgPath('f_swich_on')
: Utils.getImgPath('f_swich_off'),
width: ScreenUtil().setWidth(90),
// height: ScreenUtil().setWidth(82),
),
HEmptyView(20),
Text(
'仅看\n空座',
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333,
),
),
HEmptyView(40)
],
)),
)
],
),
),
Expanded(
flex: 2,
child: Container(
constraints: BoxConstraints(
minHeight: ScreenUtil().setWidth(100)),
color: Color.fromRGBO(249, 249, 249, 1),
child: item(_selectNumber))),
Container(
width: double.infinity,
height: ScreenUtil().setHeight(84),
margin: EdgeInsets.only(
bottom: ScreenUtil().setWidth(50)),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(31)),
alignment: Alignment.center,
color: MyColours.color_ffffff,
child: CommonButton(
// content: widget.fromPage == 'tablePhoto'
// ? '确定'
// : "已选${selectNum}个 确定",
content: '确定',
width: 300,
height: 84,
fontSize: 34,
state: 1,
onPress: () {
if (widget.fromPage == "tablePhoto") {
Map temp = {
'tid': selectTables.length > 0
? selectTables[0].id
: '',
'tname': selectTables.length > 0
? selectTables[0].name
: ''
};
Navigator.of(context).pop(temp);
} else {
if (widget.canChoose) {
// if (widget.tableList.length > 0) {
String tid = "";
for (TableList table in widget.tableList) {
tid += table.id + ",";
}
if (widget.tableList.length > 0) {
tid = tid.substring(0, tid.length - 1);
}
Map temp = {
'object': widget.tableList,
'tid': tid
};
Navigator.of(context).pop(temp);
// }
} else {
if (selectTables.length > 0) {
String tid = "";
for (t.Table table in selectTables) {
tid += table.id + ",";
}
if (selectTables.length > 0) {
tid = tid.substring(0, tid.length - 1);
}
Map temp = {
'object': widget.tableList,
'tid': tid
};
Navigator.of(context).pop(temp);
}
}
}
},
)),
]);
return Container(
color: MyColours.color_ffffff,
child: Row(
children: <Widget>[
Container(
width: ScreenUtil().setWidth(170),
height: double.infinity,
color: MyColours.color_f1f1f1,
child: ListView.builder(
itemBuilder: (context, index) {
if (areas.isEmpty || index == areas.length) {
return InkWell(
onTap: () async {
//添加区域弹框
await DialogUtil.openCreateAreaDialog(context,
onTap: (value) async {
print(value);
//添加区域
bool success = await _chooseTableModel
.addTableAreas(context, value);
print(success);
if (success) {
Utils.showToast('添加成功!');
await getTableList(needLoading: false);
}
});
},
child: Center(
child: Image.asset(
Utils.getImgPath('add_area'),
width: ScreenUtil().setWidth(32)),
),
);
} else {
return AreaItem(areas[index], currentArea,
(area) {
setState(() {
currentArea = (area as Area).name;
});
});
}
},
itemExtent: ScreenUtil().setHeight(207),
itemCount: areas.length + 1,
),
),
Expanded(
child: Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setHeight(10),
horizontal: ScreenUtil().setWidth(9)),
child: Column(
children: [
Expanded(
child: GridView.builder(
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: 8 / 9),
itemBuilder: (context, index) {
if (index ==
areaTableMap[currentArea].length ||
areaTableMap[currentArea].length == 0) {
return InkWell(
onTap: () async {
List<String> areasTemp = [];
for (int i = 0;
i < areas.length;
i++) {
areasTemp.add(areas[i].name);
}
//添加桌位弹框
await DialogUtil
.openCreateTableDialog(
context,
areasTemp,
areasTemp
.indexOf(currentArea),
personNumList, onTap:
(Map<String, String>
value) async {
print(value);
// 'areaname':
// areas[currentAreaIndex],
// 'name': controller.text,
// 'pnumMin': pnumMin,
// 'pnumMax': pnumMax
//添加桌位 接口参数带整合???
// 以下是旧的不去,明天添加桌位接口
String rid;
for (Area item in areas) {
if (item.name ==
value['areaname']) {
rid = item.rid;
}
}
Map<String, String> params = {
'rid': rid,
'name': value['name'],
};
if (value['pnumMin'] != '') {
params['pnum'] =
value['pnumMin'];
}
if (value['pnumMax'] != '') {
params['most_pnum'] =
value['pnumMax'];
}
bool success =
await _chooseTableModel
.addTable(
context, params);
print(success);
if (success) {
Utils.showToast('添加成功!');
refreshTable(context);
}
});
},
child: Container(
margin: EdgeInsets.all(
ScreenUtil().setWidth(15)),
child: DottedBorder(
dashPattern: [5, 5, 5, 5],
borderType: BorderType.RRect,
radius: Radius.circular(
ScreenUtil().setWidth(10)),
// padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
color: MyColours.color_199095,
strokeWidth:
ScreenUtil().setWidth(2),
child: ClipRRect(
borderRadius: BorderRadius
.all(Radius.circular(
ScreenUtil()
.setWidth(10))),
child: Container(
height: ScreenUtil()
.setWidth(90 * 2),
width: ScreenUtil()
.setWidth(80 * 2),
child: Column(
mainAxisAlignment:
MainAxisAlignment
.center,
children: [
Image.asset(
Utils.getImgPath(
'add_area'),
width: ScreenUtil()
.setWidth(32)),
],
),
),
),
)));
} else {
return TableItem(
areaTableMap[currentArea][index],
onSelected: (t.Table table) {
if (widget.fromPage == 'tablePhoto') {
for (String item
in areaTableMap.keys) {
for (t.Table item
in areaTableMap[item]) {
item.selected = false;
selectNum = 0;
if (table.id == item.id) {
item.selected = true;
selectTables = [];
selectNum++;
selectTables.add(table);
}
}
}
setState(() {});
} else {
if ((table as t.Table).selected) {
selectTables.add(table);
selectNum++;
widget.tableList
.add(tableToTableList(table));
} else {
widget.tableList.removeWhere(
(t) => t.id == table.id);
selectNum--;
selectTables.removeWhere(
(t) => t.id == table.id);
}
setState(() {});
}
},
canSelected: true,
fromPage: widget.fromPage,
tableMap: tableMap,
rid: widget.rid);
}
},
itemCount: currentArea == null
? 0
: areaTableMap[currentArea].length + 1,
)),
Container(
width: double.infinity,
height: ScreenUtil().setHeight(84),
margin: EdgeInsets.only(
bottom: ScreenUtil().setWidth(50)),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(31)),
alignment: Alignment.center,
color: MyColours.color_ffffff,
child: CommonButton(
content: widget.fromPage == 'tablePhoto'
? '确定'
: "已选${selectNum}个 确定",
width: 500,
height: 84,
fontSize: 34,
state: 1,
onPress: () {
if (widget.fromPage == "tablePhoto") {
Map temp = {
'tid': selectTables.length > 0
? selectTables[0].id
: '',
'tname': selectTables.length > 0
? selectTables[0].name
: ''
};
Navigator.of(context).pop(temp);
} else {
if (widget.canChoose) {
// if (widget.tableList.length > 0) {
String tid = "";
for (TableList table
in widget.tableList) {
tid += table.id + ",";
}
if (widget.tableList.length > 0) {
tid = tid.substring(
0, tid.length - 1);
}
Map temp = {
'object': widget.tableList,
'tid': tid
};
Navigator.of(context).pop(temp);
// }
} else {
if (selectTables.length > 0) {
String tid = "";
for (t.Table table
in selectTables) {
tid += table.id + ",";
}
if (selectTables.length > 0) {
tid = tid.substring(
0, tid.length - 1);
}
Map temp = {
'object': widget.tableList,
'tid': tid
};
Navigator.of(context).pop(temp);
}
}
}
},
)),
],
)),
)
],
),
);
}
}),
),
],
),
));
}
tableToTableList(t.Table table) {
TableList _tableList = TableList(
'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
_tableList.id = table.id;
_tableList.rid = table.rid;
_tableList.tid = table.tid;
_tableList.name = table.name;
_tableList.tablePnum = table.table_pnum;
_tableList.sellerid = null;
_tableList.qrcode = null;
_tableList.mostPnum = table.most_pnum;
_tableList.hot = null;
_tableList.orderO = table.order_o;
_tableList.status = table.status;
_tableList.enable = table.enable;
_tableList.spell = table.spell;
_tableList.cdate = null;
_tableList.rname = table.rname;
_tableList.regionName = table.rname;
_tableList.selected = true;
return _tableList;
}
}
... ...
... ... @@ -16,6 +16,19 @@ class ChooseTableModel with ChangeNotifier {
PageState pageState = PageState.Loading;
List<TableOuter> tableOuterList = []; //区域-桌位列表
bool swichState = false; //仅看空座
Map<String, List<t.Table>> areaTableMap = {}; //区域-桌位Map 已预订和空桌子
Map<String, List<t.Table>> areaTableMapCanNote =
{}; //区域-桌位Map 筛选出已经预订的桌子,剩余空桌子
Map<String, List<t.Table>> areaTableMapShow; ////区域-桌位Map 页面展示用(全部或者只看空桌子)
List<t.Table> currentTables = []; //当前显示的区域-桌位
List<t.Table> tablesAll = []; //全部桌子(已预订和空桌子)
List<t.Table> tablesCanNote = []; //全部桌子(空桌子)
List<t.Table> tablesShow = []; //页面展示
//获取桌位数据
Future<List<TableOuter>> getTableList(
BuildContext context, Map<String, String> params,
... ... @@ -55,12 +68,14 @@ class ChooseTableModel with ChangeNotifier {
notifyListeners();
return [];
}
tableOuterList = (baseResp.data[0] as List).map((value) {
TableOuter tableOuter = TableOuter();
tableOuter.name = value["name"];
tableOuter.list = (value["list"] as List).map((table) {
return t.Table.fromJson(table as Map<String, dynamic>);
}).toList();
return tableOuter;
}).toList();
}
... ...
... ... @@ -33,11 +33,21 @@ class NotebookDetailChangeModel with ChangeNotifier {
List<TableList> tableList = [];
String isSetDate = '0';
List<TableList> recommendList = []; //推荐列表
bool isRecommend = false; //是否展示推荐
// bool isRecommend = false; //是否展示推荐
List oldTableList = [];
List<UserHistoryEntity> userHistorys = []; //历史录入
DateTime dateTimeSelect;
DateTime dateTime = DateTime.now();
String dateText = ""; //当前显示日期时间
int currTimeIndex = 1;
String morning; //早市时间段
String noon; //午市时间段
String night; //晚市时间段
clearData() {
dateList = []; //日期选择 月-日 某天
sunDateList = []; // 早市、午市、晚市
... ... @@ -68,53 +78,55 @@ class NotebookDetailChangeModel with ChangeNotifier {
}
_initDateList();
_initPersonNumList();
_initSexList();
}
///初始化 日期选择 月-日 某天
_initDateList() {
String createtime = detailEntity.ddate.toString() + '000';
DateTime createTime =
DateTime.fromMillisecondsSinceEpoch(int.parse(createtime));
ddateStr = DateUtil.formatDate(createTime, format: DateFormats.h_m);
dateTime = DateTime.fromMillisecondsSinceEpoch(int.parse(createtime));
ddateStr = DateUtil.formatDate(dateTime, format: DateFormats.h_m);
dateText = _returnDate(dateTime);
String dateTimeSelect = DateUtil.formatDateMs(
createTime.millisecondsSinceEpoch,
dateTime.millisecondsSinceEpoch,
format: 'yyyy-MM-dd');
//今天
DateTime dateTime = DateTime.now();
int dateTimeMill = dateTime.millisecondsSinceEpoch;
String dateText = DateUtil.formatDateMs(dateTimeMill, format: 'yyyy-MM-dd');
dateList.add({
'title': dateText,
'select': dateTimeSelect == dateText ? true : false,
'fontSize': 34.0,
'dayText': ' 今天',
'isImage': false
});
//明天
int tomorrowMill = dateTimeMill + 24 * 60 * 60 * 1000;
String dateTextTomorrow =
DateUtil.formatDateMs(tomorrowMill, format: 'yyyy-MM-dd');
dateList.add({
'title': dateTextTomorrow,
'select': dateTimeSelect == dateTextTomorrow ? true : false,
'fontSize': 34.0,
'dayText': ' 明天',
'isImage': false
});
//第三个
dateList.add({
'title': dateTimeSelect != dateText && dateTimeSelect != dateTextTomorrow
? dateTimeSelect
: '其他',
'select': dateTimeSelect != dateText && dateTimeSelect != dateTextTomorrow
? true
: false,
'fontSize': 30.0,
'dayText': '',
'isImage': true
});
}
//生成日期文本
createDateText(BuildContext context, DateTime day) {
if (Utils.isOneDay(day, dateTime)) return; //日期没变
dateTimeSelect = day;
dateText = _returnDate(day);
dateTime = day;
// getReserveList(context, needLoading: false);
}
_returnDate(DateTime day) {
String time = Utils.lunarCalendarHolidays(day);
String date = _returnDayDateWeek(day);
date += ' ${time}';
return date;
}
String _returnDayDateWeek(DateTime day) {
String date = '';
DateTime dateNow = DateTime.now();
String ymd = "${day.year}-" +
Utils.addZeroNumber(day.month) +
"-" +
Utils.addZeroNumber(day.day);
if (Utils.isOneDay(day, dateNow)) {
date += "今天 ";
} else if (Utils.isOneDay(day, dateNow.add(Duration(days: 1)))) {
date += "明天 ";
} else if (Utils.isOneDay(day, dateNow.add(Duration(days: 2)))) {
date += "后天 ";
}
date += ymd;
date += " 星期${Utils.formatWeekDayNum(day.weekday)}";
return date;
}
/// 初始化 早市、午市、晚市
... ... @@ -151,64 +163,6 @@ class NotebookDetailChangeModel with ChangeNotifier {
notifyListeners();
}
//人数
_initPersonNumList() {
String pnum = detailEntity.pnum;
if (int.parse(pnum) < 6 || int.parse(pnum) > 10) {
numController.text = pnum;
}
personNumList = [
{
'dateText': '6',
'width': 30.0,
'fontSize': 34.0,
'isImage': false,
'isSelect': pnum == '6' ? true : false,
'isTextFiled': false
},
{
'dateText': '7',
'width': 30.0,
'fontSize': 34.0,
'isImage': false,
'isSelect': pnum == '7' ? true : false,
'isTextFiled': false
},
{
'dateText': '8',
'width': 30.0,
'fontSize': 34.0,
'isImage': false,
'isSelect': pnum == '8' ? true : false,
'isTextFiled': false
},
{
'dateText': '9',
'width': 30.0,
'fontSize': 34.0,
'isImage': false,
'isSelect': pnum == '9' ? true : false,
'isTextFiled': false
},
{
'dateText': '10',
'width': 30.0,
'fontSize': 34.0,
'isImage': false,
'isSelect': pnum == '10' ? true : false,
'isTextFiled': false
},
{
'dateText': numController.text.length > 0 ? numController.text : '更多',
'width': 105.0,
'fontSize': 30.0,
'isImage': true,
'isSelect': int.parse(pnum) < 6 || int.parse(pnum) > 10 ? true : false,
'isTextFiled': true
}
];
}
///称谓
_initSexList() {
String sexStr = detailEntity.sex;
... ... @@ -237,6 +191,10 @@ class NotebookDetailChangeModel with ChangeNotifier {
/// 早市、午市、晚市对应的半个小时间隔时间段
initDateHourMinuteList(BuildContext context) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
morning =
userModel.user.morning.isEmpty ? "00:00-00:00" : userModel.user.morning;
noon = userModel.user.noon.isEmpty ? "00:00-00:00" : userModel.user.noon;
night = userModel.user.night.isEmpty ? "00:00-00:00" : userModel.user.night;
userModel.user.morning == ''
? dailyMap.putIfAbsent('morning', () => '')
: dailyMap.putIfAbsent(
... ... @@ -249,8 +207,8 @@ class NotebookDetailChangeModel with ChangeNotifier {
? dailyMap.putIfAbsent('night', () => '')
: dailyMap.putIfAbsent(
'night', () => _getHourAndMinute(userModel.user.night, 3));
_initSunDateList(
userModel.user.morning, userModel.user.noon, userModel.user.night);
// _initSunDateList(
// userModel.user.morning, userModel.user.noon, userModel.user.night);
}
//根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
... ... @@ -450,9 +408,6 @@ class NotebookDetailChangeModel with ChangeNotifier {
///根据商家ID 获取桌位信息列表: 1:散座 2:包间 默认:获取所有数据
Future<List<TableList>> getNewTableList(BuildContext context, String ddate,
String ddate_solt, String pnum, List oldTableList) async {
if (pnum == '') {
pnum = '6';
}
DateTime createTime = DateTime.fromMillisecondsSinceEpoch(int.parse(ddate));
String rdate = DateUtil.formatDate(createTime, format: "yyyyMMdd");
UserModel userModel = Provider.of<UserModel>(context, listen: false);
... ... @@ -460,8 +415,10 @@ class NotebookDetailChangeModel with ChangeNotifier {
"sid": userModel.user.sellerid,
"rdate": rdate,
'ddate_solt': ddate_solt,
'pnum': pnum
};
if (pnum != null && pnum != '') {
params['pnum'] = pnum;
}
if (detailEntity.id.isNotEmpty && detailEntity.id != "-1") {
params['rid'] = detailEntity.id;
}
... ... @@ -561,12 +518,12 @@ class NotebookDetailChangeModel with ChangeNotifier {
// }
// }
if (tableList.length == 0) {
// Utils.showToast('包间已经被预订');
isRecommend = true;
} else {
isRecommend = false;
}
// if (tableList.length == 0) {
// // Utils.showToast('包间已经被预订');
// isRecommend = true;
// } else {
// isRecommend = false;
// }
print(tableList);
notifyListeners();
return tableList;
... ... @@ -576,35 +533,23 @@ class NotebookDetailChangeModel with ChangeNotifier {
///录入更改内部预订
Future<SunReserveInfoModel> setReserveInfo(BuildContext context) async {
UserModel userModel = Provider.of<UserModel>(context, listen: false);
String pnum = '';
for (var item in personNumList) {
if (item['isSelect']) {
pnum = item['dateText'];
}
}
// if (pnum == '') {
// pnum = '6';
// String tempTime;
// if (currTimeIndex == 1) {
// tempTime = '08:00';
// } else if (currTimeIndex == 2) {
// tempTime = '12:00';
// } else if (currTimeIndex == 3) {
// tempTime = '18:00';
// }
String sex = '1';
for (var item in sexList) {
if (item['select']) {
sex = item['code'];
}
}
//当前选中 年-月-日string
String ymyStr = "";
//今天 明天 其他天
for (var item in dateList) {
if (item['select'] == true) {
ymyStr = item['title'];
}
}
String timeStr = ymyStr + ' ' + ddateStr + ':00';
String ymd = DateUtil.formatDate(dateTime, format: DateFormats.y_mo_d);
// String timeStr = ymd + ' ' + tempTime + ':00';
// int start = DateUtil.getDateMsByTimeStr(timeStr);
// int start = DateUtil.getDateMsByTimeStr(timeStr);
LogUtil.v(timeStr);
// LogUtil.v(timeStr);
// String tempDdate = ymyStr + ' ' + ddateStr + ':00';
int ddate = DateUtil.getDateMsByTimeStr(timeStr);
String tableSelectInfo = '';
for (TableList item in tableList) {
// if (item.selected) {
... ... @@ -617,53 +562,61 @@ class NotebookDetailChangeModel with ChangeNotifier {
}
print(tableSelectInfo);
String rdate = '';
String ddateSolt = '';
print(sunDateList);
for (var item in sunDateList) {
if (item['isSelect'] == true) {
String keys = '';
ddateSolt = '${item['ddateSolt']}';
if (item['ddateSolt'] == 1) {
//早市
keys = 'morning';
} else if (item['ddateSolt'] == 2) {
//午市
keys = 'noon';
} else if (item['ddateSolt'] == 3) {
//晚市
keys = 'night';
}
if (keys != '') {
List temp = dailyMap[keys];
String timeStrStart = ymyStr + ' ' + temp.first['title'] + ':00';
String timeStrEnd = ymyStr + ' ' + temp.last['title'] + ':00';
int startM = DateUtil.getDateMsByTimeStr(timeStrStart);
int endM = DateUtil.getDateMsByTimeStr(timeStrEnd);
String start = '${startM}'.substring(0, 10);
String end = '${endM}'.substring(0, 10);
rdate = start + '-' + end;
}
}
String keys = '';
if (currTimeIndex == 1) {
//早市
keys = 'morning';
} else if (currTimeIndex == 2) {
//午市
keys = 'noon';
} else if (currTimeIndex == 3) {
//晚市
keys = 'night';
}
if (keys != '') {
List temp = dailyMap[keys];
String timeStrStart = ymd + ' ' + temp.first['title'] + ':00';
String timeStrEnd = ymd + ' ' + temp.last['title'] + ':00';
int startM = DateUtil.getDateMsByTimeStr(timeStrStart);
int endM = DateUtil.getDateMsByTimeStr(timeStrEnd);
String start = '${startM}'.substring(0, 10);
String end = '${endM}'.substring(0, 10);
rdate = start + '-' + end;
}
Map<String, String> params = {
"sid": userModel.user.sellerid, //商家ID
"tid": tableSelectInfo, //桌子ID: 格式 2,3,4
"pnum": pnum, //预定用餐人数
"rname": nameController.text, //预订人姓名
"sex": sex, //预订人姓名:1:男 2:女
"phone": phoneController.text, //预订人电话
"cusdem": customController.text, //预订人需求:25汉字
'note_name': userModel.user.account,
'type': "0", //内部预订
"rdate": rdate, //预定用餐时间范围:时间戳 开始时间戳(time)-结束时间戳(time)
"ddate": '${ddate}'.substring(0, 10), //到店时间
'is_set_ddate': "1",
// 'is_set_ddate': "1",
"channel": '5',
"uid": userModel.user.openid
};
if (detailEntity.id.isNotEmpty && detailEntity.id != "-1") {
params['rid'] = detailEntity.id;
}
if (nameController.text.trim().length > 0) {
String sex = '1';
for (var item in sexList) {
if (item['select']) {
sex = item['code'];
}
}
params['rname'] = nameController.text; //预订人姓名
params['sex'] = sex; //预订人性别:1:男 2:女
}
if (phoneController.text.trim().length > 0) {
params['phone'] = phoneController.text; //预订人电话
}
if (customController.text.trim().length > 0) {
params['cusdem'] = customController.text; //预订人需求:25汉字
}
print(params);
BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
.request<Map<String, dynamic>>(
... ...
... ... @@ -76,6 +76,22 @@ class NavigatorUtil {
"${Routes.select_table}?rid=$rid&tid=$tid&dateTime=$dateTime&fromPage=$fromPage&ddate_slot=$ddate_slot&canChoose=$canChoose");
}
/// 选择桌位——方硕新修改的选择桌位页面
static Future goSelectTableFPage(
BuildContext context, String rid, int dateTime, String ddate_slot,
{bool canChoose = false,
Map object,
String fromPage = 'change',
String tid = ''}) {
if (object != null) {
return _navigateTo(context,
"${Routes.select_table_f}?rid=$rid&tid=$tid&dateTime=$dateTime&fromPage=$fromPage&ddate_slot=$ddate_slot&canChoose=$canChoose&object=${FluroConvertUtils.object2string(object)}");
}
// object = {'object': [], "tid": ''};
return _navigateTo(context,
"${Routes.select_table_f}?rid=$rid&tid=$tid&dateTime=$dateTime&fromPage=$fromPage&ddate_slot=$ddate_slot&canChoose=$canChoose");
}
/// 邀请函
static void goInvicationPage(
BuildContext context,
... ... @@ -111,8 +127,21 @@ class NavigatorUtil {
);
}
/// 变更预订
static void goNoteBookChangePage(
// /// 变更预订
// static void goNoteBookChangePage(
// BuildContext context, NotebookDetail detailEntity, String rid,
// {replace = false}) {
// if (detailEntity.type == "0") {
// //内部预订
// detailEntity.is_set_ddate = "1";
// }
// _navigateTo(context,
// "${Routes.change_detail}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
// replace: replace);
// }
/// 变更预订——方硕新修改页面
static void goNoteBookChangeFPage(
BuildContext context, NotebookDetail detailEntity, String rid,
{replace = false}) {
if (detailEntity.type == "0") {
... ... @@ -120,7 +149,7 @@ class NavigatorUtil {
detailEntity.is_set_ddate = "1";
}
_navigateTo(context,
"${Routes.change_detail}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
"${Routes.change_detail_f}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
replace: replace);
}
... ...
... ... @@ -27,6 +27,8 @@ import 'package:one_key/pages/create_store/enter_store_time.dart';
import 'package:one_key/pages/create_store/map_choice_point.dart';
import 'package:one_key/pages/create_store/play_video.dart';
import 'package:one_key/pages/detail/notebook_detail_change_page.dart';
import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart';
import 'package:one_key/pages/detail/select_tables_f_page.dart';
import 'package:one_key/pages/home/home_page.dart';
import 'package:one_key/pages/invicate/invitation_page.dart';
import 'package:one_key/pages/login/binding_phone.dart';
... ... @@ -162,6 +164,33 @@ var handleSelectTableHandler = new Handler(
canChoose: canChoose, tableList: res, fromPage: fromPage, tid: tid));
});
// 跳转到选择桌位_方硕新修改的页面
var handleSelectTableFHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
String rid = params['rid'].first;
String tid = params['tid'].first;
DateTime dateTime =
DateTime.fromMillisecondsSinceEpoch(int.parse(params["dateTime"].first));
String ddate_slot = params["ddate_slot"].first;
String fromPage = params["fromPage"].first;
bool canChoose = params["canChoose"].first == "true" ? true : false;
List<TableList> res = [];
if (params.keys.contains('object')) {
Map object = FluroConvertUtils.string2map(params["object"].first);
List temp = object['object'];
for (var item in temp) {
res.add(TableList.fromJson(item));
}
}
// return SelectTablePage(rid, dateTime, ddate_slot,canChoose: canChoose);
return ChangeNotifierProvider<ChooseTableModel>(
create: (_) => ChooseTableModel(),
child: SelectTableFPage(rid, dateTime, ddate_slot,
canChoose: canChoose, tableList: res, fromPage: fromPage, tid: tid));
});
// 跳转到邀请函页面
var handleInvicationHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
... ... @@ -202,7 +231,22 @@ var webPageHandler = new Handler(
});
// 跳转到变更预订
var handleChangeDetailHandler = new Handler(
// var handleChangeDetailHandler = new Handler(
// handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// // String rid=params['rid'].first;
// // NotebookDetail detailEntity = params["detailEntity"].first;
// NotebookDetail detailEntity = NotebookDetail.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
// String rid = params['rid'].first;
// return ChangeNotifierProvider<NotebookDetailChangeModel>(
// create: (_) => NotebookDetailChangeModel(detailEntity),
// child: ChangeNotifierProvider<RemarkManagerModel>(
// create: (_) => RemarkManagerModel(),
// child: NoteBookChangePage(detailEntity: detailEntity, rid: rid)));
// });
// 跳转到变更预订——方硕新修改页面
var noteBookChangeFPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
// String rid=params['rid'].first;
// NotebookDetail detailEntity = params["detailEntity"].first;
... ... @@ -213,7 +257,7 @@ var handleChangeDetailHandler = new Handler(
create: (_) => NotebookDetailChangeModel(detailEntity),
child: ChangeNotifierProvider<RemarkManagerModel>(
create: (_) => RemarkManagerModel(),
child: NoteBookChangePage(detailEntity: detailEntity, rid: rid)));
child: NoteBookChangeFPage(detailEntity: detailEntity, rid: rid)));
});
// 跳转可订时段管理页面
... ...
... ... @@ -10,11 +10,12 @@ class Routes {
static String handle_online_page = "/handle_online_page"; //处理在线预订
static String reserve_detail = "/reserve_detail"; //预订详情
static String select_table = "/select_table"; //选择桌位
static String select_table_f = "/select_table_f"; //选择桌位_方硕新修改的页面
static String invication = "/invication"; //邀请函
static String sms = "/sms"; //发短信
static String webview = "/webview"; //网页
static String web_page = '/web_page'; //隐私协议
static String change_detail = "/change_detail"; //变更预订
// static String change_detail = "/change_detail"; //变更预订
static String book_time_set = "/book_time_set"; //可订时段管理
static String receive_orders_time_set = "/receive_orders_time_set"; //接单时间管理
static String remark_manager = "/remark_manager"; //常用备注管理
... ... @@ -63,6 +64,7 @@ class Routes {
static String personnel_password_page = "/personnel_password_page"; //密码展示页
static String personnel_password_edit_page =
"/personnel_password_edit_page"; //密码修改页
static String change_detail_f = "/change_detail_f"; //变更预订_方硕新修改页面
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
... ... @@ -75,11 +77,12 @@ class Routes {
router.define(handle_online_page, handler: handleOnlineHandler);
router.define(reserve_detail, handler: reserveDetailHandler);
router.define(select_table, handler: handleSelectTableHandler);
router.define(select_table_f, handler: handleSelectTableFHandler);
router.define(invication, handler: handleInvicationHandler);
router.define(sms, handler: handleSmsHandler);
router.define(webview, handler: handleWebviewHandler);
router.define(web_page, handler: webPageHandler);
router.define(change_detail, handler: handleChangeDetailHandler);
// router.define(change_detail, handler: handleChangeDetailHandler);
router.define(book_time_set, handler: handleBookTimeSetHandler);
router.define(receive_orders_time_set,
handler: handleReceiveOrdersTimeSetHandler);
... ... @@ -134,5 +137,6 @@ class Routes {
handler: personnelPasswordPageHandle);
router.define(personnel_password_edit_page,
handler: personnelPasswordEditPageHandle);
router.define(change_detail_f, handler: noteBookChangeFPageHandle);
}
}
... ...
... ... @@ -10,6 +10,7 @@ import 'package:flutter_picker/flutter_picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/models/table_list.dart';
import 'package:one_key/pages/message/message_dialog_item.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/table_manager_model.dart';
... ... @@ -124,6 +125,63 @@ class DialogUtil {
});
}
static Future openFTablesChangeDialog(
BuildContext context, List<TableList> tables,
{CustomCallBack onTap}) async {
final action = await showDialog(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return Center(
child: Container(
height: ScreenUtil().setWidth(400),
width: ScreenUtil().setWidth(280 * 2),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(10)))), //设置圆角
child: Column(children: [
Expanded(
child: ListView(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40),
vertical: ScreenUtil().setWidth(40)),
shrinkWrap: true,
children: [
Wrap(
children: tableListChangeWidget(tables, (v) {}),
spacing: ScreenUtil().setWidth(20),
runSpacing: ScreenUtil().setWidth(20),
// alignment: WrapAlignment.start,
// runAlignment: WrapAlignment.end,
),
],
)),
MyDivider(double.infinity, ScreenUtil().setWidth(2)),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Container(
width: double.infinity,
alignment: Alignment.center,
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(40)),
child: Text('确定',
style: TextStyle(
color: Color.fromRGBO(42, 96, 244, 1),
fontSize: ScreenUtil().setSp(30))),
),
)
])),
),
);
},
);
}
static Future openFTablesDialog(BuildContext context, List<t.Table> tables,
{CustomCallBack onTap}) async {
final action = await showDialog(
... ... @@ -1001,6 +1059,22 @@ class DialogUtil {
});
}
static tableListChangeWidget(
List<TableList> tables, CustomCallBack callback) {
List<Widget> lists = tables.map((item) {
return remarkButton(
content: item.name,
isSelect: true,
onPress: () {
// state(() {
// item.selected = !item.selected;
// });
// callback(item);
});
}).toList();
return lists;
}
static tableListWidget(List<t.Table> tables, CustomCallBack callback) {
List<Widget> lists = tables.map((item) {
return remarkButton(
... ...
... ... @@ -45,6 +45,17 @@ class FTableItemState extends State<FTableItem> {
}
}
bool isSelf = false;
//当前桌子的预订id
String idNow = '';
if (widget.tableMap.containsKey('${table.id}')) {
//包含,证明该桌子已经被预订了
idNow = widget.tableMap['${table.id}'].id;
if (idNow == widget.rid) {
isSelf = true;
}
}
return GestureDetector(
onTap: () {
if (widget.canSelected && widget.fromPage == 'change') {
... ... @@ -66,6 +77,7 @@ class FTableItemState extends State<FTableItem> {
idNow = widget.tableMap['${table.id}'].id;
if (idNow == widget.rid) {
setState(() {
isSelf = true;
table.selected = !(table.selected ?? false);
});
widget.onSelected(table);
... ... @@ -108,7 +120,7 @@ class FTableItemState extends State<FTableItem> {
// height: ScreenUtil().setWidth(widget.height),
// margin: EdgeInsets.all(ScreenUtil().setWidth(9)),
decoration: BoxDecoration(
color: widget.need && signStr == '已预订'
color: widget.need && signStr == '已预订' && !isSelf
? Color.fromRGBO(154, 23, 45, 1)
: widget.canSelected && table.selected
? MyColours.color_199095
... ... @@ -131,7 +143,7 @@ class FTableItemState extends State<FTableItem> {
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
widget.need && signStr == '已预订'
widget.need && signStr == '已预订' && !isSelf
? SizedBox()
: VEmptyView(10),
Container(
... ... @@ -140,7 +152,9 @@ class FTableItemState extends State<FTableItem> {
table.name,
maxLines: 1,
style: TextStyle(
color: (widget.need && signStr == '已预订') ||
color: (widget.need &&
signStr == '已预订' &&
!isSelf) ||
(widget.canSelected && table.selected)
? MyColours.color_ffffff
: MyColours.color_333333,
... ... @@ -170,7 +184,7 @@ class FTableItemState extends State<FTableItem> {
? VEmptyView(8)
: SizedBox(),
Text(
signStr == '已预订'
signStr == '已预订' && !isSelf
? (table.reserver == null || table.reserver.isEmpty)
? (table.pnum != '' &&
table.pnum != null &&
... ... @@ -185,7 +199,7 @@ class FTableItemState extends State<FTableItem> {
: '')
: table.tableNum,
style: TextStyle(
color: signStr == '已预订' ||
color: signStr == '已预订' && !isSelf ||
(widget.canSelected && table.selected)
? MyColours.color_ffffff
: MyColours.color_353535,
... ... @@ -195,7 +209,7 @@ class FTableItemState extends State<FTableItem> {
overflow: TextOverflow.ellipsis,
),
widget.need && signStr == '已预订'
widget.need && signStr == '已预订' && !isSelf
? Padding(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(6),
... ... @@ -213,7 +227,7 @@ class FTableItemState extends State<FTableItem> {
)
: SizedBox(),
signStr == '已预订'
signStr == '已预订' && !isSelf
? Container(
// width: ScreenUtil().setWidth(160),
height: ScreenUtil().setWidth(34),
... ... @@ -246,7 +260,7 @@ class FTableItemState extends State<FTableItem> {
],
),
),
signStr == '已预订'
signStr == '已预订' && !isSelf
? SizedBox()
: Positioned(
left: 0,
... ... @@ -328,7 +342,7 @@ class FTableItemState extends State<FTableItem> {
// height: ScreenUtil().setWidth(40),
// )
// : Container()),
widget.need && signStr == '已预订'
widget.need && signStr == '已预订' && !isSelf
? SizedBox()
: Positioned(
left: ScreenUtil().setWidth(18),
... ...