notebook_detail_page.dart 19.2 KB
import 'package:flutter/material.dart';
import 'package:flutter_picker/flutter_picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/manager.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/provider/notebook_detail_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/log_util.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/app_bar.dart';
import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/need_item.dart';
import 'package:one_key/widgets/row_multi_text.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';

class NotebookDetailPage extends StatefulWidget {
  final String rid;

  NotebookDetailPage(this.rid);

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

class NotebookDetailPageState extends State<NotebookDetailPage> {
  NotebookDetailModel detailModel = NotebookDetailModel();

  NotebookDetail detailEntity;

  String cusmanText = "";

  List<Manager> managers = []; //客户经理

  Manager manager = Manager();

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      detailEntity = await detailModel.getReserveDetail(context, {
        "rid": widget.rid,
      });
      setState(() {
        cusmanText = detailEntity.cusman.isEmpty ? "请选择" : detailEntity.cusman;
      });
      managers = await detailModel.getManagers(context);
    });
  }

  //设置当前客户经理
  _setCurrManager() {
    manager = managers.firstWhere((manager) => manager.userName == cusmanText,
        orElse: () => Manager());
    if (manager.id == null || manager.id.toString().isEmpty) return;
    Map<String, String> params = {
      "rid": detailEntity.id,
      "cusman_id": manager.id.toString(),
      "cusman": manager.userName
    };
    detailModel.setReserveCusmnan(context, params);
  }

  /// 取消预订, 变更预订按钮
  Widget _cancelAndChangeBtn(GestureTapCallback onTap, String title) {
    return InkWell(
      onTap: onTap,
      child: Align(
        alignment: Alignment.center,
        child: Text(title,
            style: TextStyle(
                color: MyColours.color_199095,
                fontSize: ScreenUtil().setSp(34))),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return SafeArea(
      child: detailEntity == null
          ? Container(
              width: double.infinity,
              height: double.infinity,
              color: MyColours.color_ffffff,
            )
          : Container(
              color: MyColours.color_ffffff,
              child: Column(
                children: <Widget>[
                  MyAppBar(
                    "订座详情",
                    showBack: true,
                  ),
                  Expanded(
                    child: DefaultTextStyle(
                        style: TextStyle(decoration: TextDecoration.none),
                        child: Container(
                          color: MyColours.color_ffffff,
                          child: SingleChildScrollView(
                            child: Container(
                                color: MyColours.color_ffffff,
                                padding: EdgeInsets.symmetric(
                                    horizontal: ScreenUtil().setWidth(43)),
                                child: Column(
                                  children: <Widget>[
                                    RowMultiText("用餐时段", detailEntity.ddateMd),
                                    Stack(
                                      alignment: Alignment.center,
                                      children: <Widget>[
                                        Column(
                                          children: <Widget>[
                                            RowMultiText(
                                                "用餐时间", detailEntity.ddateHm),
                                            Offstage(
                                              offstage: detailEntity.type == "0"
                                                  ? false
                                                  : true,
                                              child: RowMultiText(
                                                  "用餐人数", detailEntity.pnum),
                                            )
                                          ],
                                        ),
                                        Image.asset(
                                          detailEntity.statuImgAssets,
                                          width: ScreenUtil().setWidth(100),
                                          height: ScreenUtil().setWidth(30),
                                        )
                                      ],
                                    ),
                                    Offstage(
                                      offstage: detailEntity.demands.length <= 0
                                          ? true
                                          : false,
                                      child: Column(
                                        children: <Widget>[
                                          RowMultiText(
                                              "包间需求",
                                              (detailEntity.demands.length
                                                          .toString() +
                                                      "个") ??
                                                  ""),
                                          Align(
                                              alignment: Alignment.centerRight,
                                              child: Offstage(
                                                offstage: detailEntity
                                                            .demands.length >
                                                        0
                                                    ? false
                                                    : true,
                                                child: Container(
                                                  height: ScreenUtil()
                                                      .setHeight(210),
                                                  child: ListView.builder(
                                                    itemBuilder:
                                                        (BuildContext contxt,
                                                            int index) {
                                                      return NeedItem(
                                                          detailEntity
                                                              .demands[index]);
                                                    },
                                                    itemCount: detailEntity
                                                        .demands.length,
                                                    shrinkWrap: true,
                                                    scrollDirection:
                                                        Axis.horizontal,
                                                  ),
                                                ),
                                              ))
                                        ],
                                      ),
                                    ),
                                    RowMultiText(
                                        "预订桌位",
                                        (detailEntity.tables.length.toString() +
                                            "个")),
                                    Align(
                                        alignment: Alignment.centerRight,
                                        child: Offstage(
                                          offstage:
                                              detailEntity.tables.length > 0
                                                  ? false
                                                  : true,
                                          child: Container(
                                            height: ScreenUtil().setHeight(210),
                                            child: ListView.builder(
                                              itemBuilder: (BuildContext contxt,
                                                  int index) {
                                                return TableItem(
                                                    detailEntity.tables[index]);
                                              },
                                              itemCount:
                                                  detailEntity.tables.length,
                                              shrinkWrap: true,
                                              scrollDirection: Axis.horizontal,
                                            ),
                                          ),
                                        )),
                                    RowMultiText("客户姓名", detailEntity.rnameStr),
                                    RowMultiText(
                                        "客户电话", detailEntity.phone ?? ""),
                                    RowMultiText(
                                        "备注信息", detailEntity.cusdem ?? ""),
                                    MyDivider(double.infinity,
                                        ScreenUtil().setHeight(1)),
                                    Container(
                                      color: MyColours.color_ffffff,
                                      width: double.infinity,
                                      height: ScreenUtil().setHeight(80),
                                      alignment: Alignment.center,
                                      child: Stack(
                                        alignment: Alignment.center,
                                        children: <Widget>[
                                          Positioned(
                                            left: 0,
                                            child: Text(
                                              "客户经理",
                                              style: TextStyle(
                                                  color: MyColours.color_828282,
                                                  fontSize:
                                                      ScreenUtil().setSp(30)),
                                            ),
                                          ),
                                          Positioned(
                                            right: 0,
                                            child: GestureDetector(
                                              onTap: () async {
                                                List<String> list = [];
                                                for (Manager manager
                                                    in managers) {
                                                  list.add(
                                                      manager.roleUserName);
                                                }
                                                DialogUtil
                                                        .showSelectCusmanDialog(
                                                            context, list)
                                                    .then((value) {
                                                  if (value != null) {
                                                    setState(() {
                                                      cusmanText =
                                                          managers[value.first]
                                                              .userName;
                                                    });
                                                    _setCurrManager();
                                                  }
                                                });
                                              },
                                              child: Text(
                                                cusmanText,
                                                style: TextStyle(
                                                  color: MyColours.color_353535,
                                                  fontSize:
                                                      ScreenUtil().setSp(30),
                                                  decoration:
                                                      TextDecoration.underline,
                                                ),
                                              ),
                                            ),
                                          )
                                        ],
                                      ),
                                    ),
                                    RowMultiText(
                                        "记录人", detailEntity.note_name ?? ""),
                                    Offstage(
                                      offstage: (detailEntity.status == "4" &&
                                              detailEntity.cancel != null)
                                          ? false
                                          : true,
                                      child: Column(
                                        children: <Widget>[
                                          MyDivider(double.infinity,
                                              ScreenUtil().setHeight(2)),
                                          RowMultiText("取消原因",
                                              detailEntity.cancel?.desc ?? ""),
                                          RowMultiText(
                                              "取消时间",
                                              detailEntity.cancel?.cdateStr ??
                                                  ""),
                                          RowMultiText("操作人",
                                              detailEntity.cancel?.uname ?? ""),
                                        ],
                                      ),
                                    ),
                                  ],
                                )),
                          ),
                        )),
                  ),
                  Offstage(
                    offstage: (detailEntity.status == "3" ||
                            detailEntity.status == "4" ||
                            detailEntity.status == "6")
                        ? true
                        : false,
                    child: Container(
                      width: double.infinity,
                      decoration: BoxDecoration(
                          color: MyColours.color_ffffff,
                          border: Border(
                              top: BorderSide(
                                  color: MyColours.color_dbe3e3,
                                  width: ScreenUtil().setWidth(1)))),
                      padding: EdgeInsets.symmetric(
                          horizontal: ScreenUtil().setHeight(40)),
                      margin: EdgeInsets.symmetric(
                          vertical: ScreenUtil().setHeight(20)),
                      child: CommonButton(
                        content: "通知客户",
                        width: 669,
                        height: 80,
                        fontSize: 34,
                        onPress: () {
                          DialogUtil.showShareDialog(context)?.then((value) {
                            switch (value) {
                              case 1: //微信
                                NavigatorUtil.goInvicationPage(
                                    context,
                                    detailEntity.id,
                                    detailEntity.tableinfoStr,
                                    detailEntity.ddate,
                                    detailEntity.ddateStr);
                                break;
                              case 2: //短信
                                NavigatorUtil.goSmsPage(
                                    context, detailEntity.id);
                                break;
                              case 3: //电话
                                if (detailEntity.phone != null &&
                                    detailEntity.phone.isNotEmpty) {
                                  Utils.goPhone(detailEntity.phone);
                                } else {
                                  Utils.showToast("没有客户电话!");
                                }
                                break;
                            }
                          });
                        },
                      ),
                    ),
                  ),
                  Offstage(
                    offstage: (detailEntity.status == "3" ||
                            detailEntity.status == "4" ||
                            detailEntity.status == "6")
                        ? true
                        : false,
                    child: Container(
                      width: double.infinity,
                      height: ScreenUtil().setWidth(80),
                      margin: EdgeInsets.symmetric(
                          horizontal: ScreenUtil().setHeight(40)),
                      decoration: BoxDecoration(
                        border: Border.all(
                            color: MyColours.color_199095,
                            width: ScreenUtil().setWidth(2)),
                        borderRadius:
                            BorderRadius.circular(ScreenUtil().setWidth(5)),
                      ),
                      // child: Text('fff'),
                      child: Material(
                          child: Row(
                        children: [
                          Expanded(
                              child: _cancelAndChangeBtn(() {
                            print('点击变更预订');
                          }, '变更预订')),
                          MyDivider(
                            ScreenUtil().setWidth(2),
                            ScreenUtil().setWidth(50),
                            color: MyColours.color_199095,
                          ),
                          Expanded(
                              child: _cancelAndChangeBtn(() {
                            print('点击取消预订');
                          }, '取消预订')),
                        ],
                      )),
                    ),
                  ),
                  VEmptyView(ScreenUtil().setWidth(60))
                ],
              ),
            ),
    );
  }
}