table_manager_page.dart 12.5 KB
import 'dart:ffi';

import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/area.dart';
import 'package:one_key/models/notebook.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/models/tableOuter.dart';
import 'package:one_key/models/table_list.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/select_table_model.dart';
import 'package:one_key/provider/table_manager_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/utils/navigator_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/table_item.dart';
import 'package:one_key/models/table.dart' as t;
import 'package:provider/provider.dart';
import 'dart:convert' as convert;

class TableManagerPage extends StatefulWidget {


  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new TableManagerPageState();
  }
}

class TableManagerPageState extends State<TableManagerPage> {

  TableManagerModel tableManagerModel;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    LogUtil.v("table_manager_page initState");
    WidgetsBinding.instance.addPostFrameCallback((_) {
      tableManagerModel=Provider.of<TableManagerModel>(context,listen: true);
      tableManagerModel.initTime(context);
      EventBus().on("refresh_tablemanager", (arg) {//订座-完成预订 刷新管理桌位
        tableManagerModel.getReserveList(context);
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Consumer<TableManagerModel>(
        builder: (context,model,child){
          return Column(
            children: <Widget>[
              MyAppBar(
                "桌位",
                showBack: true,
              ),
              Container(
                color: MyColours.color_ffffff,
                width: double.infinity,
                padding: EdgeInsets.symmetric(vertical: ScreenUtil().setHeight(16)),
                child: Row(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    Expanded(
                      child: Center(
                        child: GestureDetector(
                          onTap: () {
                            DialogUtil.showCalendarDialog(context, tableManagerModel.dateTime)
                                .then((day) {
                              if (day != null) {
                                tableManagerModel.createDateText(context,day);
                              }
                            });
                          },
                          child: Container(
                            child: Text(
                              tableManagerModel.dateText,
                              style: TextStyle(
                                  color: MyColours.color_199095,
                                  fontSize: ScreenUtil().setSp(34)),
                            ),
                          ),
                        ),
                      ),
                    ),
                    MyDivider(
                      ScreenUtil().setWidth(2),
                      ScreenUtil().setHeight(68),
                      color: MyColours.color_E0E0E0,
                    ),
                    Expanded(
                      child: Padding(
                        padding: EdgeInsets.symmetric(
                            horizontal: ScreenUtil().setWidth(30)),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.center,
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: <Widget>[
                            Offstage(
                                offstage: tableManagerModel.morning == "00:00-00:00" ? true : false,
                                child: Padding(
                                    padding: EdgeInsets.only(
                                        right: ScreenUtil().setWidth(18)),
                                    child: CommonButton(
                                      content: "早市",
                                      state: tableManagerModel.currTimeIndex == 1 ? 1 : 0,
                                      width: 92,
                                      height: 48,
                                      fontSize: 32,
                                      onPress: () {
                                        if (tableManagerModel.currTimeIndex == 1) return;
                                        tableManagerModel.currTimeIndex = 1;
                                        tableManagerModel.getReserveList(context);
                                      },
                                    ))),
                            Offstage(
                                offstage: tableManagerModel.noon == "00:00-00:00" ? true : false,
                                child: Padding(
                                    padding: EdgeInsets.only(
                                        right: ScreenUtil().setWidth(18)),
                                    child: CommonButton(
                                      content: "午市",
                                      state: tableManagerModel.currTimeIndex == 2 ? 1 : 0,
                                      width: 92,
                                      height: 48,
                                      fontSize: 32,
                                      onPress: () {
                                        if (tableManagerModel.currTimeIndex == 2) return;
                                        tableManagerModel.currTimeIndex = 2;
                                        tableManagerModel.getReserveList(context);
                                      },
                                    ))),
                            Offstage(
                              offstage: tableManagerModel.night == "00:00-00:00" ? true : false,
                              child: Container(
                                // padding: EdgeInsets.symmetric(
                                //     horizontal: ScreenUtil().setWidth(10)),
                                  child: CommonButton(
                                    content: "晚市",
                                    state: tableManagerModel.currTimeIndex == 3 ? 1 : 0,
                                    width: 92,
                                    height: 48,
                                    fontSize: 32,
                                    onPress: () {
                                      if (tableManagerModel.currTimeIndex == 3) return;
                                      tableManagerModel.currTimeIndex = 3;
                                      tableManagerModel.getReserveList(context);
                                    },
                                  )),
                            ),
                          ],
                        ),
                      ),
                    )
                  ],
                ),
              ),
              Expanded(
                child: 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) {
                            return AreaItem(tableManagerModel.areas[index], tableManagerModel.currentArea,
                                    (area) {
                                  setState(() {
                                    tableManagerModel.currentArea = (area as Area).name;
                                    tableManagerModel.currentTables=tableManagerModel.areaTableMap[tableManagerModel.currentArea];
                                  });
                                });
                          },
                          itemExtent: ScreenUtil().setHeight(207),
                          itemCount: tableManagerModel.areas.length,
                        ),
                      ),
                      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) {
                                        return TableItem(
                                            tableManagerModel.areaTableMap[tableManagerModel.currentArea][index],
                                            onSelected: (table) {
                                              if ((table as t.Table).selected) {
                                                tableManagerModel.selectTables.add(table);
                                              } else {
                                                tableManagerModel.selectTables.removeWhere(
                                                        (t) => t.id == table.id);
                                              }
                                              DialogUtil.showTableManagerDialog(context, table).then((value){
                                                if(value!=null){
                                                  switch(value){
                                                    case 1://查看详情
                                                      NavigatorUtil.goNotebookDetailPage(context, tableManagerModel.tableMap[table.id].id);
                                                      break;
                                                    case 2://订座
                                                      NavigatorUtil.goNoteBookChangePage(context, NotebookDetail.fromTableManager(tableManagerModel.dateTime, tableManagerModel.currTimeIndex.toString(),table), "");
                                                      break;
                                                    case 3://停用,启用桌位
                                                      Map params={
                                                        "id":table.id,
                                                        "status":table.enable=="1"?"0":"1"
                                                      };
                                                      tableManagerModel.setSwitchStatus(context, params);
                                                      break;
                                                  }
                                                }
                                              });
                                            },
                                            canSelected: false,
                                            canChoose: false,
                                            tableMap: tableManagerModel.tableMap,
                                            rid: "");
                                      },
                                      itemCount: tableManagerModel.areaTableMap[tableManagerModel.currentArea].length,
                                    )),
                              ],
                            )),
                      )
                    ],
                  ),
                ),
              ),
            ],
          );
        },
      ),
    );
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    EventBus().off("refresh_tablemanager");
  }
}