notebook_detail_page.dart 10.7 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);
  }


  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return detailEntity==null?Container():SafeArea(
      child: 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: Row(
                                    mainAxisSize: MainAxisSize.min,
                                    children: detailEntity.demands.map((table){
                                      return NeedItem(table);
                                    }).toList(),
                                  ),
                                )
                              ],
                            ),
                          ),
                          RowMultiText("预订桌位", (detailEntity.tables.length.toString()+"个")),
                          Align(
                            alignment: Alignment.centerRight,
                            child: Row(
                              mainAxisSize: MainAxisSize.min,
                              children: detailEntity.tables.map((table){
                                return TableItem(table);
                              }).toList(),
                            ),
                          ),
                          RowMultiText("客户姓名", detailEntity.rnameStr),
                          RowMultiText("客户电话", detailEntity.phone),
                          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(vertical: ScreenUtil().setHeight(20),horizontal: ScreenUtil().setHeight(36)),
                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;
                      }
                    });
                  },
                ),
              ),
            )
          ],
        ),
      ),
    );
  }
}