Commit 23a1a409bebadac13561b6fc2e5d57a2a1af2337

Authored by gaiyaguang
1 parent c47ccf9a

桌位管理

... ... @@ -38,7 +38,7 @@ class NotebookDetail {
type="0";
ddate=ddateStr;
ddate_solt=ddatesolt;
is_set_ddate="0";
is_set_ddate="1";
tables=[table];
}
... ...
... ... @@ -103,7 +103,6 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
value['title']) {
_notebookDetailChangeModel.dateList[j]['select'] =
true;
if (j == 0 || j == 1) {
_notebookDetailChangeModel.dateList[2]['title'] =
'其他';
... ... @@ -121,6 +120,7 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
}
}
}
_notebookDetailChangeModel.initHourAndMinuteSelect();
//选完今天明天刷新页面
int ddate = Utils.getDdate(_notebookDetailChangeModel.dateList);
String ddateSolt =
... ... @@ -155,11 +155,11 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
child: CustomButton(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
String key = '';
for (var item in _notebookDetailChangeModel.sunDateList) {
item['isSelect'] = false;
if (item['dateText'] == value['dateText']) {
item['isSelect'] = true;
String key = '';
if (item['ddateSolt'] == 1) {
//早市
... ... @@ -171,18 +171,19 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
//晚市
key = 'night';
}
if (key != '') {
for (var sunitem
in _notebookDetailChangeModel.dailyMap[key]) {
if (sunitem['select'] == true) {
_notebookDetailChangeModel.ddateStr =
sunitem['title'];
}
}
}
}
_notebookDetailChangeModel.initHourAndMinuteSelect();
if (key != '') {
for (var sunitem
in _notebookDetailChangeModel.dailyMap[key]) {
if (sunitem['select'] == true) {
_notebookDetailChangeModel.ddateStr =
sunitem['title'];
}
_notebookDetailChangeModel.notifyListeners();
}
}
_notebookDetailChangeModel.notifyListeners();
int ddate = Utils.getDdate(_notebookDetailChangeModel.dateList);
String pnum = Utils.getPnum(_notebookDetailChangeModel.personNumList);
String ddateSolt = Utils.getDdateSolt(_notebookDetailChangeModel.sunDateList);
... ... @@ -284,6 +285,7 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
} else {
_notebookDetailChangeModel.dateList[2]['title'] = '其他';
}
_notebookDetailChangeModel.initHourAndMinuteSelect();
// 选完日历刷新页面
String ddateSolt = Utils.getDdateSolt(_notebookDetailChangeModel.sunDateList);
String pnum = Utils.getPnum(_notebookDetailChangeModel.personNumList);
... ... @@ -793,6 +795,7 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
print('成功');
// _notebookDetailChangeModel.clearData();
bus.emit("refresh_detail");
bus.emit("refresh_book_list");//刷新已预订列表
String ddate_solt = '';
if (_model.row.isSetDdate == '1') {
String createtime = _model.row.ddate.toString() + '000';
... ... @@ -819,7 +822,7 @@ class _NoteBookChangePageState extends State<NoteBookChangePage> {
}
LogUtil.v(_nameStr);
NavigatorUtil.goInvicationPage(context, _model.row.id,
_nameStr, _model.row.ddate, ddate_solt,
_nameStr, _model.row.ddate, ddate_solt,_model.row.phone,
replace: true);
EventBus().emit("refresh_tablemanager");//刷新桌位
} else {
... ...
... ... @@ -713,7 +713,9 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
detailEntity.id,
detailEntity.tableinfoStr,
detailEntity.ddate,
detailEntity.ddateStr);
detailEntity.ddateStr,
detailEntity.phone
);
break;
case 2: //短信
NavigatorUtil.goSmsPage(
... ...
... ... @@ -818,7 +818,7 @@ class _EnterPageState extends State<EnterPage> {
_nameStr = _model.row.name + '等${tableinfo.length}桌';
}
NavigatorUtil.goInvicationPage(context, _model.row.id,
_nameStr, _model.row.ddate, ddate_solt,
_nameStr, _model.row.ddate, ddate_solt,_model.row.phone,
replace: true);
} else {
Utils.showToast("录入预订订单失败,请重试!");
... ...
... ... @@ -365,12 +365,12 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver {
),
BottomNavigationBarItem(
icon: Image(
image: AssetImage("assets/notebook_default.png"),
image: AssetImage("assets/tablemanage_default.png"),
width: ScreenUtil().setWidth(48),
height: ScreenUtil().setWidth(48),
),
activeIcon: Image(
image: AssetImage("assets/notebook_selected.png"),
image: AssetImage("assets/tablemanage_selected.png"),
width: ScreenUtil().setWidth(48),
height: ScreenUtil().setWidth(48),
),
... ...
... ... @@ -13,8 +13,9 @@ class InvicationPage extends StatefulWidget {
final String tableInfo; //桌位信息
final String ddate;
final String ddateStr;
final String phone;
InvicationPage(this.rid, this.tableInfo, this.ddate, this.ddateStr);
InvicationPage(this.rid, this.tableInfo, this.ddate, this.ddateStr, this.phone);
@override
State<StatefulWidget> createState() {
... ... @@ -210,6 +211,10 @@ class InvicationPageState extends State<InvicationPage> {
children: <Widget>[
GestureDetector(
onTap: () {
if(widget.phone.isEmpty){
Utils.showToast("没有预订人电话信息");
return;
}
NavigatorUtil.goSmsPage(context, widget.rid);
},
child: Container(
... ...
... ... @@ -27,7 +27,9 @@ class NotebookItemState extends State<NoteBookItem> {
widget.notebook.id,
widget.notebook.tableinfoStr,
widget.notebook.ddate,
widget.notebook.ddateStr);
widget.notebook.ddateStr,
widget.notebook.phone
);
}
}
... ...
... ... @@ -38,8 +38,8 @@ class TableManagerPageState extends State<TableManagerPage> {
// TODO: implement initState
super.initState();
LogUtil.v("table_manager_page initState");
tableManagerModel=Provider.of<TableManagerModel>(context,listen: true);
WidgetsBinding.instance.addPostFrameCallback((_) {
tableManagerModel=Provider.of<TableManagerModel>(context,listen: true);
tableManagerModel.initTime(context);
EventBus().on("refresh_tablemanager", (arg) {//订座-完成预订 刷新管理桌位
tableManagerModel.getReserveList(context);
... ...
... ... @@ -24,6 +24,9 @@ class NotebookDetailChangeModel with ChangeNotifier {
TextEditingController customController = TextEditingController(); //客户要求
List sexList = []; // 先生、女士、公司
Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟
List<String> mornings=[];//早市时间段
List<String> noons=[];//午市时间段
List<String> nights=[];//晚市时间段
String ddateStr = ''; //16:30
NotebookDetail detailEntity;
List<TableList> tableList = [];
... ... @@ -141,10 +144,11 @@ class NotebookDetailChangeModel with ChangeNotifier {
'isSelect': ddateSolt == '3' ? true : false
});
}
initHourAndMinuteSelect();
notifyListeners();
}
//人数
//人数
_initPersonNumList() {
String pnum = detailEntity.pnum;
if (int.parse(pnum) < 6 || int.parse(pnum) > 10) {
... ... @@ -229,25 +233,26 @@ class NotebookDetailChangeModel with ChangeNotifier {
/// 早市、午市、晚市对应的半个小时间隔时间段
initDateHourMinuteList(BuildContext context) async {
SunSellerInfoModel model = await getManagersInfo(context);
model.daily.morning == ''
UserModel userModel=Provider.of<UserModel>(context);
userModel.user.morning == ''
? dailyMap.putIfAbsent('morning', () => '')
: dailyMap.putIfAbsent(
'morning', () => _getHourAndMinute(model.daily.morning, 1, model));
model.daily.noon == ''
'morning', () => _getHourAndMinute(userModel.user.morning, 1));
userModel.user.noon == ''
? dailyMap.putIfAbsent('noon', () => '')
: dailyMap.putIfAbsent(
'noon', () => _getHourAndMinute(model.daily.noon, 2, model));
model.daily.night == ''
'noon', () => _getHourAndMinute(userModel.user.noon, 2));
userModel.user.night == ''
? dailyMap.putIfAbsent('night', () => '')
: dailyMap.putIfAbsent(
'night', () => _getHourAndMinute(model.daily.night, 3, model));
_initSunDateList(model.daily.morning, model.daily.noon, model.daily.night);
'night', () => _getHourAndMinute(userModel.user.night, 3));
_initSunDateList(userModel.user.morning, userModel.user.noon, userModel.user.night);
}
//根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
_getHourAndMinute(
String hourAndMinuteStr, int mnd, SunSellerInfoModel model) {
String hourAndMinuteStr, int mnd) {
List tempDate = hourAndMinuteStr.split("-");
String beginDate = tempDate[0];
String endDate = tempDate[1];
... ... @@ -262,6 +267,13 @@ class NotebookDetailChangeModel with ChangeNotifier {
bool tempLimit = true;
while (tempLimit) {
String temp = _dealTime(beginHour, beginMinute);
if(mnd==1){//早市
mornings.add(temp);
}else if(mnd==2){//午市
noons.add(temp);
}else if(mnd==3){//晚市
nights.add(temp);
}
bool tempSelect = false;
if (int.parse(isSetDate) == 1) //设置预订时间
{
... ... @@ -283,7 +295,6 @@ class NotebookDetailChangeModel with ChangeNotifier {
}
}
}
Map tempMap = {'title': temp, 'select': tempSelect};
res.add(tempMap);
if (temp == endDate) {
... ... @@ -301,6 +312,77 @@ class NotebookDetailChangeModel with ChangeNotifier {
return res;
}
//初始化早市午市晚市选中时间
initHourAndMinuteSelect(){
int timeMillsNow=DateTime.now().millisecondsSinceEpoch;
//当前选中 月 日string
String mdStr = '';
//今天 明天 其他天
for (var item in dateList) {
if (item['select'] == true) {
mdStr = item['title'];
}
}
String timeNowYear = DateUtil.formatDate(DateTime.now(), format: 'yyyy');
String ymyStr = timeNowYear + '-' + mdStr; //年月日
String timeStr = ymyStr+' 00:00:00';
LogUtil.v(timeStr);
DateTime dateTime=DateUtil.getDateTime(timeStr);//当前年月日
for(var sunDate in sunDateList){
if(sunDate['isSelect']==false)continue;
switch(sunDate['key']){
case "morning"://选中早市
bool select=false;
for(var temp in dailyMap['morning']){//早市选中距离当前时间最近
temp['select']=false;
if(select)continue;//只选中第一个
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "${temp['title']}:00"))){
temp['select']=true;
select=true;
}
}
break;
case "noon"://选中午市
bool select=false;
for(var temp in dailyMap['noon']){//午市选中12:30
temp['select']=false;
if(select)continue;
if(noons.contains("12:30")&&timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "12:30:00"))){
if(temp['title']=="12:30"){
temp['select']=true;
select=true;
}
}else{
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "${temp['title']}:00"))){
temp['select']=true;
select=true;
}
}
}
break;
case "night"://选中晚市
bool select=false;
for(var temp in dailyMap['night']){//晚市选中18:30
temp['select']=false;
if(select)continue;
if(nights.contains("18:30")&&timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "18:30:00"))){
if(temp['title']=="18:30"){
temp['select']=true;
select=true;
}
}else{
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "${temp['title']}:00"))){
temp['select']=true;
select=true;
}
}
}
break;
}
}
LogUtil.v(dailyMap);
}
/// 根据时间和分钟组装 格式:11:00
_dealTime(int begin, int mm) {
String sb = '';
... ... @@ -559,6 +641,7 @@ class NotebookDetailChangeModel with ChangeNotifier {
'type':"0",//内部预订
"rdate": rdate, //预定用餐时间范围:时间戳 开始时间戳(time)-结束时间戳(time)
"ddate": '${ddate}'.substring(0, 10), //到店时间
'is_set_ddate':"1"
};
if(detailEntity.id.isNotEmpty&&detailEntity.id!="-1"){
params['rid']=detailEntity.id;
... ... @@ -662,6 +745,7 @@ class NotebookDetailChangeModel with ChangeNotifier {
}
}
Map<String, String> params = {
"rid":detailEntity.id,
'is_set_ddate': isSetDate,
"sid": userModel.user.sellerid, //商家ID
"tid": tableSelectInfo, //桌子ID: 格式 2,3,4
... ... @@ -670,7 +754,7 @@ class NotebookDetailChangeModel with ChangeNotifier {
"sex": sex, //预订人姓名:1:男 2:女
"phone": phoneController.text, //预订人电话
"cusdem": customController.text, //预订人需求:25汉字
'type':"1",//在线预订
"type":"0",
"rdate": rdate, //预定用餐时间范围:时间戳 开始时间戳(time)-结束时间戳(time)
"ddate": '${ddate}'.substring(0, 10), //到店时间
"ddate_solt": ddateSolt
... ...
... ... @@ -45,6 +45,8 @@ class TableManagerModel with ChangeNotifier{
PageState pageState = PageState.Loading;
Map dailyMap = {}; // 早市对应半点钟,午市对应半点钟、晚市对应半点钟
//初始化时间
initTime(BuildContext context) async {
userModel = Provider.of<UserModel>(context, listen: false);
... ... @@ -58,6 +60,9 @@ class TableManagerModel with ChangeNotifier{
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.isEmpty?dailyMap.putIfAbsent("morning", ()=>""):dailyMap.putIfAbsent("morning", () => _getHourAndMinute(morning,1));
userModel.user.noon.isEmpty?dailyMap.putIfAbsent("noon", ()=>""):dailyMap.putIfAbsent("noon", () => _getHourAndMinute(noon,2));
userModel.user.night.isEmpty?dailyMap.putIfAbsent("night", ()=>""):dailyMap.putIfAbsent("night", () => _getHourAndMinute(night,3));
if (dateTime.isBefore(DateTime.parse(dateTime.year.toString() +
"-" +
Utils.addZeroNumber(dateTime.month) +
... ... @@ -114,17 +119,91 @@ class TableManagerModel with ChangeNotifier{
getCurrDdateStr(){
String currSelectTime="";
int timeMillsNow=DateTime.now().millisecondsSinceEpoch;
if(currTimeIndex==1){
currSelectTime=morning.split("-")[0];
List<String> mornings=_getHourAndMinute(morning, 1);
for(String temp in mornings){
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))){
currSelectTime=temp;
break;
}
}
}else if(currTimeIndex==2){
currSelectTime=noon.split("-")[0];
List<String> noons=_getHourAndMinute(noon, 2);
for(String temp in noons){
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))){
currSelectTime=temp;
if(noons.contains("12:30")&&DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))<DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "12:30:00"))){
currSelectTime="12:30";
}
break;
}
}
}else{
currSelectTime=night.split("-")[0];
List<String> nights=_getHourAndMinute(night, 3);
for(String temp in nights){
if(timeMillsNow<=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))){
currSelectTime=temp;
if(nights.contains("18:30")&&DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$temp:00"))<DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "18:30:00"))){
currSelectTime="18:30";
}
break;
}
}
}
LogUtil.v("currSelectTime:$currSelectTime");
String ddateStr=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(dateTime).replaceRange(11,19, "$currSelectTime:00")).toString();
return ddateStr.substring(0,10);
}
//根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
_getHourAndMinute(
String hourAndMinuteStr, int mnd) {
List tempDate = hourAndMinuteStr.split("-");
String beginDate = tempDate[0];
String endDate = tempDate[1];
List tempHour = beginDate.split(':');
/*获取开始小时*/
int beginHour = int.parse(tempHour[0]);
/*获取开始分钟*/
int beginMinute = int.parse(tempHour[1]);
List<String> res = [];
bool tempLimit = true;
while (tempLimit) {
String temp = _dealTime(beginHour, beginMinute);
res.add(temp);
if (temp == endDate) {
tempLimit = false;
break;
}
if (beginMinute == 30) {
beginHour++;
if (beginHour >= 24) {
beginHour = 0;
}
}
beginMinute = (beginMinute + 30) % 60;
}
return res;
}
/// 根据时间和分钟组装 格式:11:00
_dealTime(int begin, int mm) {
String sb = '';
if (begin < 10) {
sb = '0$begin';
} else {
sb = '$begin';
}
sb = '$sb:';
if (mm < 10) {
sb = '${sb}0${mm}';
} else {
sb = '${sb}${mm}';
}
return sb;
}
//获取桌位数据
Future<List<TableOuter>> getTableList(BuildContext context) async {
pageState = PageState.Loading;
... ...
... ... @@ -97,7 +97,8 @@ var handleInvicationHandler = new Handler(
String ddate = params["ddate"].first;
String ddateStr =
FluroConvertUtils.fluroCnParamsDecode(params["ddateStr"].first);
return InvicationPage(rid, tableInfo, ddate, ddateStr);
String phone=params["phone"].first;
return InvicationPage(rid, tableInfo, ddate, ddateStr,phone);
});
// 发短信
... ...
... ... @@ -64,10 +64,10 @@ class NavigatorUtil {
/// 邀请函
static void goInvicationPage(BuildContext context, String rid,
String tableInfo, String ddate, String ddateStr,
String tableInfo, String ddate, String ddateStr,String phone,
{bool replace = false}) {
_navigateTo(context,
"${Routes.invication}?rid=$rid&tableInfo=${FluroConvertUtils.fluroCnParamsEncode(tableInfo)}&ddate=$ddate&ddateStr=${FluroConvertUtils.fluroCnParamsEncode(ddateStr)}",
"${Routes.invication}?rid=$rid&tableInfo=${FluroConvertUtils.fluroCnParamsEncode(tableInfo)}&ddate=$ddate&ddateStr=${FluroConvertUtils.fluroCnParamsEncode(ddateStr)}&phone=$phone",
replace: replace);
}
... ...