Commit b2fdfb276f9423afb5af116d7fc5c270f34ff6c5

Authored by wdn127929
1 parent f78d039e

部分桌位管理

... ... @@ -4,6 +4,7 @@ class TableOuter {
String name;
List<Table> list;
String rid;
bool isSelect = false; //批量选择桌位
TableOuter();
... ...
... ... @@ -366,6 +366,19 @@ class MyPageState extends State<MyPage> with WidgetsBindingObserver {
color: MyColours.color_f3f3f3,
),
MyItem(
title: "桌位管理",
content: "",
callback: () {
NavigatorUtil.goMyTableManagerHomePage(context);
},
),
MyDivider(
double.infinity,
ScreenUtil().setHeight(1),
color: MyColours.color_f3f3f3,
),
MyItem(
title: "短信管理",
content:
myModel.smsInfo.isNotEmpty ? '剩余${myModel.smsInfo}条' : '',
... ...
import 'dart:async';
import 'package:common_utils/common_utils.dart';
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/guest_info_model.dart';
import 'package:one_key/models/reserve_info_model.dart';
import 'package:one_key/pages/my/table_manage/table_manage_area_item.dart';
import 'package:one_key/pages/table/area_item_table.dart';
import 'package:one_key/provider/my_table_manage_home_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/event_bus.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/common_button_flat.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/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/models/table.dart' as t;
import 'package:one_key/widgets/table_manage_item.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import 'dart:convert' as convert;
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
import 'package:one_key/models/table_list.dart' as table;
const scrollDuration = Duration(microseconds: 500);
class MyTableManagerHomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new MyTableManagerHomePageState();
}
}
class MyTableManagerHomePageState extends State<MyTableManagerHomePage> {
MyTableManageHomeModel tableManagerModel;
final ItemScrollController itemScrollController = ItemScrollController();
bool isTap = false;
// 进度监听对象
int min;
int max;
int _selectIndex = 0;
ScrollController _areaController = ScrollController();
List<String> personNumList = [];
// ScrollController _scrollCrl = ScrollController();
final ItemPositionsListener itemPositionsListener =
ItemPositionsListener.create();
@override
void initState() {
// TODO: implement initState
super.initState();
LogUtil.v("table_manager_page initState");
for (int i = 1; i < 31; i++) {
personNumList.add(i.toString());
}
// personNumList.add('30以上');
WidgetsBinding.instance.addPostFrameCallback((_) {
tableManagerModel.initTime(context);
// EventBus().on("refresh_tablemanager", (arg) {
// //订座-完成预订 刷新管理桌位
// tableManagerModel.getReserveList(context,
// needLoading: false, needKeep: true);
// print(tableManagerModel);
// });
// EventBus().on("refresh_tablePhoto", (arg) {
// ///刷新图片显示
// _refreshTablePhoto();
// });
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
// EventBus().off("refresh_tablemanager");
// EventBus().off("refresh_tablePhoto");
}
///刷新图片显示
// _refreshTablePhoto() async {
// List temp =
// await tableManagerModel.getTableList(context, needLoading: false);
// if (temp.length > 0) {
// tableManagerModel.getReserveList(context,
// needLoading: false, needKeep: true);
// tableManagerModel.notifyListeners();
// }
// }
Widget list(List data) => ScrollablePositionedList.builder(
itemCount: data.length,
itemBuilder: (context, index) => item(index),
itemScrollController: itemScrollController,
itemPositionsListener: itemPositionsListener,
reverse: false,
scrollDirection: Axis.vertical,
);
void scrollTo(int index) => itemScrollController
.scrollTo(
index: index,
duration: scrollDuration,
curve: Curves.easeInOutCubic,
alignment: 0)
.then((value) {
print(_selectIndex);
// _selectIndex = _selectIndex;
// // }
// isTap = false;
this.setState(() {});
}).whenComplete(() {
// print('');
});
void jumpTo(int index) =>
itemScrollController.jumpTo(index: index, alignment: 0);
/// Generate item number [i].
Widget item(int i) {
return GridView.builder(
// controller: _areaController,
// physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemCount: tableManagerModel.tableOuterList[i].list.length + 1,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4,
childAspectRatio: 1,
mainAxisSpacing: ScreenUtil().setWidth(28),
crossAxisSpacing: ScreenUtil().setWidth(48),
),
itemBuilder: (BuildContext context, int index) {
if (index == tableManagerModel.tableOuterList[i].list.length ||
tableManagerModel.tableOuterList[i].list.length == 0) {
return InkWell(
onTap: () async {
List<String> areas = [];
for (int i = 0; i < tableManagerModel.areas.length; i++) {
areas.add(tableManagerModel.areas[i].name);
}
//添加桌位弹框
await DialogUtil.openCreateTableDialog(
context, areas, 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 tableManagerModel.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 tableManagerModel.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();
await tableManagerModel.refreshTable(context);
}
});
},
child: Container(
child: DottedBorder(
dashPattern: [8, 8, 8, 8],
borderType: BorderType.RRect,
radius: Radius.circular(ScreenUtil().setWidth(10)),
// padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
color: MyColours.color_438E93,
strokeWidth: ScreenUtil().setWidth(2),
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(10))),
child: Container(
height: ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(48 * 3 + 32 * 2),
width: ScreenUtil.screenWidthDp -
ScreenUtil().setWidth(48 * 3 + 32 * 2),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(Utils.getImgPath('add_area'),
width: ScreenUtil().setWidth(60)),
],
),
),
),
)));
} else {
return Selector<MyTableManageHomeModel, t.Table>(
shouldRebuild: (pre, next) => true,
selector: (context, model) =>
tableManagerModel.tableOuterList[i].list[index],
builder: (context, table, _) {
return ManageTableItem(table,
canMulSelected: tableManagerModel.tableOuterList[i].isSelect,
onSelected: (table) {
if (tableManagerModel.tableOuterList[i].isSelect) {
//多选
setState(() {
table.selected = !(table.selected ?? false);
});
} else {
for (t.Table item
in tableManagerModel.tableOuterList[i].list) {
item.selected = false;
}
//单选
setState(() {
table.selected = true;
});
}
});
},
);
}
},
);
}
@override
Widget build(BuildContext context) {
tableManagerModel =
Provider.of<MyTableManageHomeModel>(context, listen: true);
return WillPopScope(
onWillPop: () async {
EventBus().emit('changeStatusColor');
return true;
},
child: Scaffold(
appBar: SystemAppBar(
"桌位管理",
showLeading: true,
onTap: () {
EventBus().emit('changeStatusColor');
Navigator.pop(context);
},
),
backgroundColor: MyColours.color_ffffff,
body: SafeArea(child: Consumer<MyTableManageHomeModel>(
builder: (context, model, child) {
return Column(
children: <Widget>[
model.pageState != PageState.Success
? Expanded(
child: ExceptionPage(
pageState: model.pageState,
callback: () {
// if (tableManagerModel.tableOuterList.isEmpty) {
// tableManagerModel.getTableList(context);
// } else {
// tableManagerModel.getReserveList(context);
// }
},
emptyMsg: "暂时没有桌位哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
))
: Expanded(
child: Column(
// crossAxisAlignment: CrossAxisAlignment.center,
children: [
VEmptyView(48),
Container(
color: MyColours.color_ffffff,
height: ScreenUtil().setWidth(92),
margin: EdgeInsets.only(
bottom: ScreenUtil().setWidth(24)),
child: Row(
children: [
HEmptyView(48),
Expanded(
child: ListView.builder(
itemCount:
tableManagerModel.areas.length == 0
? 1
: tableManagerModel
.areas.length +
1,
shrinkWrap: true,
scrollDirection: Axis.horizontal,
itemBuilder:
(BuildContext contxt, int index) {
if (index ==
tableManagerModel
.areas.length ||
tableManagerModel.areas.length ==
0) {
return InkWell(
onTap: () async {
//添加区域弹框
await DialogUtil
.openCreateAreaDialog(
context,
onTap: (value) async {
print(value);
//添加区域
bool success =
await tableManagerModel
.addTableAreas(
context, value);
print(success);
if (success) {
Utils.showToast('添加成功!');
tableManagerModel
.currentArea = value;
await tableManagerModel
.refreshTable(context);
// await tableManagerModel
// .getTableList(context,
// needLoading: false);
// tableManagerModel.initData();
// setState(() {
// updateMenu();
// });
// _scrollToIndex(widget
// .tableManagerModel
// .areas
// .length);
}
});
},
child: Column(
children: [
VEmptyView(20),
DottedBorder(
dashPattern: [2, 2, 2, 2],
borderType:
BorderType.RRect,
radius: Radius.circular(
ScreenUtil()
.setWidth(10)),
// padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
color:
MyColours.color_999999,
strokeWidth: ScreenUtil()
.setWidth(2),
child: ClipRRect(
borderRadius:
BorderRadius.all(
Radius.circular(
ScreenUtil()
.setWidth(
10))),
child: Container(
height: ScreenUtil()
.setWidth(28 * 2),
width: ScreenUtil()
.setWidth(48 * 2),
child: Column(
mainAxisAlignment:
MainAxisAlignment
.center,
children: [
Image.asset(
Utils.getImgPath(
'add_store'),
width: ScreenUtil()
.setWidth(
24)),
],
),
),
),
)
],
),
);
} else {
return TableManageAreaItem(
model.areas[index],
tableManagerModel.currentArea,
(area) {
setState(() {
tableManagerModel.selectNumber =
index;
tableManagerModel.currentArea =
tableManagerModel
.areas[index].name;
// tableManagerModel.currentTables =
// tableManagerModel
// .areaTableMapShow[
// tableManagerModel
// .currentArea];
// _anmationMenu();
});
});
}
},
)),
InkWell(
onTap: () {
if (tableManagerModel
.tableOuterList.length >
0) {
//区域管理页面跳转
}
},
child: Container(
margin: EdgeInsets.only(
top: ScreenUtil().setWidth(20),
),
child: Row(
children: [
HEmptyView(20),
MyDivider(
ScreenUtil().setWidth(2),
ScreenUtil().setWidth(36),
color:
MyColours.color_BFC4D4),
HEmptyView(20),
Text(
'区域管理',
style: TextStyle(
fontSize: ScreenUtil()
.setSp(28),
color: tableManagerModel
.tableOuterList
.length ==
0
? MyColours
.color_BFC4D4
: MyColours
.color_000000,
decoration: TextDecoration
.underline),
),
HEmptyView(40)
],
)),
)
],
),
),
tableManagerModel.tableOuterList.length == 0
? Padding(
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(100)),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
VEmptyView(180),
Row(
children: [
Text(
'1、',
style: TextStyle(
fontSize: ScreenUtil()
.setSp(32),
color: MyColours
.color_BFC4D4),
),
InkWell(
onTap: () async {
//添加区域弹框
await DialogUtil
.openCreateAreaDialog(
context, onTap:
(value) async {
print(value);
//添加区域
bool success =
await tableManagerModel
.addTableAreas(
context,
value);
print(success);
if (success) {
Utils.showToast(
'添加成功!');
tableManagerModel
.currentArea =
value;
await tableManagerModel
.refreshTable(
context);
// await tableManagerModel
// .getTableList(context,
// needLoading: false);
// tableManagerModel.initData();
// setState(() {
// updateMenu();
// });
// _scrollToIndex(widget
// .tableManagerModel
// .areas
// .length);
}
});
},
child: Text('添加区域',
style: TextStyle(
fontSize: ScreenUtil()
.setSp(32),
color: MyColours
.color_438E93,
decoration:
TextDecoration
.underline)),
),
Text('(如:一楼、二楼、东厅等)',
style: TextStyle(
fontSize: ScreenUtil()
.setSp(32),
color: MyColours
.color_BFC4D4))
],
),
VEmptyView(40),
Text('2、选择要添加桌位的区域',
style: TextStyle(
fontSize:
ScreenUtil().setSp(32),
color: MyColours
.color_BFC4D4)),
VEmptyView(40),
Text('3、点击“+”号添加桌位',
style: TextStyle(
fontSize:
ScreenUtil().setSp(32),
color: MyColours
.color_BFC4D4)),
VEmptyView(120),
Image.asset(
"assets/empty_search.png",
width: ScreenUtil().setWidth(520),
height:
ScreenUtil().setWidth(384),
),
VEmptyView(40),
],
))
: SizedBox(),
Expanded(
// flex: 2,
child: Container(
constraints: BoxConstraints(
minHeight:
ScreenUtil().setWidth(100)),
color: MyColours.color_ffffff,
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(20),
horizontal:
ScreenUtil().setWidth(48)),
child: Column(
children: [
VEmptyView(26),
tableManagerModel
.tableOuterList[
tableManagerModel
.selectNumber]
.list
.length ==
0
? SizedBox()
: InkWell(
onTap: () {
for (t.Table item
in tableManagerModel
.tableOuterList[
tableManagerModel
.selectNumber]
.list) {
item.selected = false;
}
setState(() {
tableManagerModel
.tableOuterList[
tableManagerModel
.selectNumber]
.isSelect =
!tableManagerModel
.tableOuterList[
tableManagerModel
.selectNumber]
.isSelect;
});
},
child: Row(
children: [
Image.asset(
Utils.getImgPath(tableManagerModel
.tableOuterList[
tableManagerModel
.selectNumber]
.isSelect
? 'base_radio_sel'
: 'base_radio_un'),
width: ScreenUtil()
.setWidth(40),
),
HEmptyView(10),
Text(
'批量选择桌位',
style: TextStyle(
fontSize:
ScreenUtil()
.setSp(
32),
color: MyColours
.color_000000),
)
],
)),
tableManagerModel
.tableOuterList[
tableManagerModel
.selectNumber]
.list
.length ==
0
? VEmptyView(20)
: VEmptyView(60),
item(tableManagerModel.selectNumber)
],
))),
]))
],
);
},
))));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/area.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/h_empty_view.dart';
class TableManageAreaItem extends StatefulWidget {
final String currentArea; //当前选中区域名称
final Area area;
final ValueChanged selectCallback;
TableManageAreaItem(
this.area,
this.currentArea,
this.selectCallback,
);
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new TableManageAreaItemState();
}
}
class TableManageAreaItemState extends State<TableManageAreaItem> {
@override
Widget build(BuildContext context) {
// TODO: implement build
Area area = widget.area;
bool isSelected = area.name == widget.currentArea;
return GestureDetector(
onTap: () {
if (widget.selectCallback != null) {
widget.selectCallback(widget.area);
}
},
child:
// Stack(
// overflow: Overflow.visible,
// alignment: Alignment.topLeft,
// children: <Widget>[
Container(
// width: ScreenUtil().setWidth(104 * 2),
height: ScreenUtil().setWidth(60),
margin: EdgeInsets.only(
right: ScreenUtil().setWidth(24),
top: ScreenUtil().setWidth(20),
),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(16),
// vertical: ScreenUtil().setWidth(4)
),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10)),
color: isSelected ? MyColours.color_438E93 : MyColours.color_ffffff,
border: Border.all(
color: isSelected
? MyColours.color_438E93
: MyColours.color_999999,
width: ScreenUtil().setWidth(2))),
child: Text(
area.name,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color:
isSelected ? MyColours.color_ffffff : MyColours.color_999999,
fontSize: ScreenUtil().setSp(32),
decoration: TextDecoration.none,
fontWeight: FontWeight.normal),
),
),
);
}
}
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/area.dart';
import 'package:one_key/models/area_model.dart';
import 'package:one_key/models/guest_info_model.dart';
import 'package:one_key/models/notebook.dart';
import 'package:one_key/models/reserve_info_model.dart';
import 'package:one_key/models/tableOuter.dart';
import 'package:one_key/models/table_list.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/models/table.dart' as t;
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/lunar_calendar.dart';
import 'package:one_key/utils/utils.dart';
import 'package:provider/provider.dart';
import 'notebook_model.dart';
class MyTableManageHomeModel with ChangeNotifier {
List<Area> areas = []; //区域列表
List<t.Table> selectTables = []; //选择的桌位
List<TableOuter> tableOuterList = []; //区域-桌位列表
List<t.Table> currentTables = []; //当前显示的区域-桌位
String currentArea; //当前选中区域
int selectIndex = 0;
UserModel userModel;
PageState pageState = PageState.Loading;
int selectNumber;
//初始化时间
initTime(BuildContext context) async {
userModel = Provider.of<UserModel>(context, listen: false);
List temp = await getTableList(context);
// if (temp.length > 0) {
// getReserveList(context);
// } else {
// // pageState = PageState.Empty;
//没有区域、没有桌子
pageState = PageState.Success;
initData();
// pageState = PageState.Success;
// notifyListeners();
// }
}
//获取桌位数据
Future<List<TableOuter>> getTableList(BuildContext context,
{bool needLoading = true}) async {
if (needLoading) {
pageState = PageState.Loading;
notifyListeners();
}
Map<String, String> params = {"sellerid": userModel.user.sellerid};
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.table_list,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
if (error is MyError) {
switch (error.type) {
case 1:
pageState = PageState.ConnectivityError;
break;
case 2:
pageState = PageState.ConnectivityTimeOut;
break;
default:
pageState = PageState.ConnectivityError;
break;
}
}
notifyListeners();
});
tableOuterList = [];
if (baseResp.code == Constant.status_success) {
if (baseResp.data.length == 0) {
pageState = PageState.ConnectivityError;
notifyListeners();
}
if ((baseResp.data[0] as List).isEmpty) {
pageState = PageState.Success;
notifyListeners();
return [];
}
tableOuterList = (baseResp.data[0] as List).map((value) {
TableOuter tableOuter = TableOuter();
tableOuter.name = value["name"];
List tableOuterList = value["list"] as List;
List enableList = []; //删除已停用的桌子,剩余可用的桌子
tableOuterList.forEach((element) {
if (element['enable'] != '0') {
enableList.add(element);
}
});
tableOuter.list = enableList.map((table) {
return t.Table.fromJson(table as Map<String, dynamic>);
}).toList();
return tableOuter;
}).toList();
}
List<AreaSunModel> areaSunModelList = await getRegionBySellerid(context);
if (areaSunModelList != null && areaSunModelList.length > 0) {
List<String> tempTableName = []; //有桌子区域
List<String> tempAreaName = []; //全部区域
for (TableOuter itemTable in tableOuterList) {
tempTableName.add(itemTable.name);
}
for (AreaSunModel itemArea in areaSunModelList) {
tempAreaName.add(itemArea.name);
}
if (tempAreaName.length > tempTableName.length) {
for (var itemT in tempTableName) {
tempAreaName.removeWhere(
(element) => element == itemT); //全部区域移除有桌子的区域,剩下没有桌子的区域
}
for (var item in tempAreaName) {
for (AreaSunModel itemarea in areaSunModelList) {
if (item == itemarea.name) {
TableOuter tableOuter = TableOuter();
tableOuter.name = item;
tableOuter.list = [];
tableOuter.rid = itemarea.id;
tableOuterList.add(tableOuter); //区域信息包含有桌子和没有桌子两部分类型
}
}
}
}
}
if (tableOuterList.length == 0) {
pageState = PageState.Success;
}
return tableOuterList;
}
//初始桌位数据
initData({bool needKeep = false}) {
areas.clear();
List<String> tempList = [];
for (TableOuter outer in tableOuterList) {
int count = 0;
tempList.add(outer.name);
for (t.Table table in outer.list) {
table.sign = "";
table.notebookId = "";
table.reserver = "";
table.selected = false;
}
Area area = Area();
area.name = outer.name;
area.count = outer.list.length == 0 ? -1 : count;
area.rid = outer.list.length == 0 ? outer.rid : outer.list[0].rid;
areas.add(area);
}
if (currentArea != null && currentArea != '') {
// tablesShow = areaTableMapShow[currentArea];
selectNumber = tempList.indexOf(currentArea);
} else {
if (areas.length > 0) {
currentArea = areas[0].name;
selectNumber = 0;
}
}
notifyListeners();
}
//获取桌位数据
Future<dynamic> setSwitchStatus(
BuildContext context, Map<String, String> params) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.set_switch_status,
data: params, showLoading: true)
.catchError((error) {
print(error.toString());
});
if (baseResp == null) return null;
if (baseResp.code == Constant.status_success) {
return baseResp.data;
} else {
Utils.showToast(baseResp.msg);
}
}
//添加商家桌位区域
Future<bool> addTableAreas(BuildContext context, String name) async {
Map<String, String> params = {
"sellerid": userModel.user.sellerid,
"name": name
};
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.add_table_area,
data: params, showLoading: true)
.catchError((error) {
print(error.toString());
// if (error is MyError) {
// switch (error.type) {
// case 1:
// pageState = PageState.ConnectivityError;
// break;
// case 2:
// pageState = PageState.ConnectivityTimeOut;
// break;
// default:
// pageState = PageState.ConnectivityError;
// break;
// }
// }
// notifyListeners();
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.responseData['data'] != null &&
baseResp.responseData['data'].length > 0) {
return true;
} else {
Utils.showToast(baseResp.msg ?? '新增区域失败!');
}
} else {
Utils.showToast(baseResp.msg ?? '新增区域失败!');
}
return false;
}
//获取区域数据
Future<List<AreaSunModel>> getRegionBySellerid(BuildContext context) async {
Map<String, String> params = {"sellerid": userModel.user.sellerid};
BaseResp<List> baseResp = await DioUtil()
.request<List>(context, Method.get, HttpUrl.get_area_by_sellerid,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
});
List<AreaSunModel> areaSunModelList;
if (baseResp.code == Constant.status_success) {
if (baseResp.data.length == 1 && baseResp.data[0] is String) {
return areaSunModelList;
} else if (baseResp.data.length > 0) {
areaSunModelList = AreaModel.fromJson(baseResp.responseData).data;
}
}
return areaSunModelList;
}
//添加商家桌位
Future<bool> addTable(
BuildContext context, Map<String, String> params) async {
params["sellerid"] = userModel.user.sellerid;
params["tid"] = '2';
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.add_table,
data: params, showLoading: true)
.catchError((error) {
print(error.toString());
// if (error is MyError) {
// switch (error.type) {
// case 1:
// pageState = PageState.ConnectivityError;
// break;
// case 2:
// pageState = PageState.ConnectivityTimeOut;
// break;
// default:
// pageState = PageState.ConnectivityError;
// break;
// }
// }
// notifyListeners();
return false;
});
if (baseResp.code == Constant.status_success) {
if (baseResp.responseData['data'] != null &&
baseResp.responseData['data'].length > 0) {
return true;
} else {
Utils.showToast(baseResp.msg ?? '新增桌位失败!');
}
} else {
Utils.showToast(baseResp.msg ?? '新增桌位失败!');
}
return false;
}
refreshTable(context) async {
List temp = await getTableList(context, needLoading: false);
// if (temp.length > 0) {
// getReserveList(context, needLoading: false, needKeep: true);
// } else {
// // pageState = PageState.Empty;
// pageState = PageState.Success;
// notifyListeners();
// }
}
}
... ...
... ... @@ -787,4 +787,13 @@ class NavigatorUtil {
"${Routes.table_manager_page}?guest=${FluroConvertUtils.object2string(guest)}",
replace: replace);
}
///我的----桌位管理
static Future<dynamic> goMyTableManagerHomePage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.my_table_manager_home_page}",
replace: replace);
}
}
... ...
... ... @@ -95,6 +95,7 @@ import 'package:one_key/pages/my/sms_manager.dart';
import 'package:one_key/pages/my/sms_recharge_page.dart';
import 'package:one_key/pages/my/store_base_info_page.dart';
import 'package:one_key/pages/my/store_type_fill_manage_page.dart';
import 'package:one_key/pages/my/table_manage/my_table_manage_home_page.dart';
import 'package:one_key/pages/notebook/statistics_page.dart';
import 'package:one_key/pages/notebook/statistics_sms_page.dart';
import 'package:one_key/pages/online_check/invoice_detail_page.dart';
... ... @@ -114,6 +115,7 @@ import 'package:one_key/provider/create_store_model.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/menu_provider.dart';
import 'package:one_key/provider/my_model.dart';
import 'package:one_key/provider/my_table_manage_home_model.dart';
import 'package:one_key/provider/notebook_detail_change_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
... ... @@ -1215,3 +1217,17 @@ var accountLoginPageHandle = new Handler(
return ChangeNotifierProvider<OtherLoginProvider>(
create: (_) => OtherLoginProvider(), child: AccountLoginPage());
});
///我的---桌位管理
var myTableManagerHomePageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// Guest guest = Guest.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["guest"].first)));
// UserHistoryEntity userHistoryEntity = UserHistoryEntity.fromJson(json.decode(
// FluroConvertUtils.fluroCnParamsDecode(
// params["userHistoryEntity"].first)));
return ChangeNotifierProvider<MyTableManageHomeModel>(
create: (_) => MyTableManageHomeModel(),
child: MyTableManagerHomePage(),
);
});
... ...
... ... @@ -106,6 +106,8 @@ class Routes {
"/my_show_customer_list_page"; //仅展示的客户列表----我的
static String table_manager_page = "/table_manager_page"; //客情再次预订跳转的桌位预订页面
static String account_login_page = "/account_login_page"; //账号登录页面
static String my_table_manager_home_page = "/my_table_manager_home_page"; //我的---桌位管理
static void configureRoutes(FluroRouter router) {
... ... @@ -216,6 +218,8 @@ class Routes {
handler: myShowCustomerListPageHandle);
router.define(table_manager_page, handler: tableManagerPageHandle);
router.define(account_login_page, handler: accountLoginPageHandle);
router.define(my_table_manager_home_page, handler: myTableManagerHomePageHandle);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/notebook.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/models/table.dart' as t;
import 'package:one_key/widgets/v_empty_view.dart';
class ManageTableItem extends StatefulWidget {
final t.Table table;
final bool canMulSelected; //是否多选
final ValueChanged<t.Table> onSelected;
final int height; //高度
ManageTableItem(
this.table, {
this.onSelected,
this.canMulSelected = false,
this.height = 185,
});
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return new ManageTableItemState();
}
}
class ManageTableItemState extends State<ManageTableItem> {
@override
Widget build(BuildContext context) {
t.Table table = widget.table;
return GestureDetector(
onTap: () {
widget.onSelected(table);
},
child: Stack(
children: <Widget>[
Container(
decoration: BoxDecoration(
color: table.selected
? MyColours.color_199095
: MyColours.color_ffffff,
border: Border.all(
width: ScreenUtil().setWidth(2),
color: MyColours.color_438E93),
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(10)))),
child: Stack(
// alignment: Alignment.center,
children: <Widget>[
Container(
child: Column(
// mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
VEmptyView(10),
Container(
// color: Colors.red,
height: ScreenUtil().setWidth(48),
alignment: Alignment.center,
child: Text(
table.name,
maxLines: 1,
style: TextStyle(
color: table.selected
? MyColours.color_ffffff
: MyColours.color_438E93,
fontSize: ScreenUtil().setSp(32),
decoration: TextDecoration.none,
fontWeight: FontWeight.bold),
overflow: TextOverflow.ellipsis,
)),
table.tableNum != '' && table.tableNum != null
? Container(
// color: Colors.red,
alignment: Alignment.center,
height: ScreenUtil().setWidth(48),
child: Text(
table.tableNum,
style: TextStyle(
color: table.selected
? MyColours.color_ffffff
: MyColours.color_000000,
fontSize: ScreenUtil().setSp(14),
decoration: TextDecoration.none,
fontWeight: FontWeight.normal),
overflow: TextOverflow.ellipsis,
),
)
: SizedBox()
],
),
),
Positioned(
left: 0,
top: 0,
child: table.tidStr == null
? Container()
: Container(
width: ScreenUtil().setWidth(44),
height: ScreenUtil().setWidth(22),
alignment: Alignment.center,
decoration: BoxDecoration(
color: table.selected
? MyColours.color_199095
: MyColours.color_999999,
borderRadius: BorderRadius.only(
topLeft:
Radius.circular(ScreenUtil().setWidth(8)),
)),
child: Text(table.tidStr,
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(14),
decoration: TextDecoration.none,
fontWeight: FontWeight.normal)),
),
),
],
),
),
],
),
);
}
}
... ...