handle_online_page.dart 13.8 KB
import 'dart:convert';

import 'package:flutter/material.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/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';
import 'package:one_key/utils/event_bus.dart';

class HandleOnlinePage extends StatefulWidget {

  final String rid;
  final String mid;
  HandleOnlinePage(this.rid,this.mid);

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


class HandleOnlinePageState extends State<HandleOnlinePage> {

  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;
      });
      if(detailEntity.status!="0"){//已处理
        Future.delayed(Duration(milliseconds: 200),(){
          NavigatorUtil.goNotebookDetailPage(context, detailEntity.id,replace: true);
        });
        setMessageStatus();
      }else{
        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);
  }

  //拒绝订单弹框
  _showRefuseDialog(){
    showDialog(context: context,builder: (context){
      return AlertDialog(
        title: Text("确定拒绝订单吗?\n拒绝后无法联系客户"),
        titleTextStyle: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(32)),
        content: Text("如果包间类型订满,请及时停用"),
        contentTextStyle:TextStyle(color: MyColours.color_828282,fontSize: ScreenUtil().setSp(28)),
        actions: <Widget>[
          FlatButton(
            child: Text("拒绝订单",style: TextStyle(fontSize: ScreenUtil().setSp(32)),),
            onPressed: (){
              Navigator.of(context).pop();
              setReserveStatus("6");
            },
          ),
          FlatButton(
            child: Text("去安排",style: TextStyle(fontSize: ScreenUtil().setSp(32)),),
            onPressed: () async {
              Navigator.of(context).pop();
              String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,int.parse(detailEntity.ddate)*1000,detailEntity.ddate_solt);
              if(tid!=null){
                setReserveStatus("5",tid:tid);
              }
            },
          )
        ],
      );
    });
  }

  //处理在线预订
  setReserveStatus(String status,{String tid=""}){
    bus.emit("remove_untreated_message",widget.mid);
    UserModel userModel=Provider.of<UserModel>(context,listen: false);
    Map<String,String> causeMap={
      "uid":userModel.user.openid,
      "uname":userModel.user.account,
      "desc":"",
    };
    Map<String,String> params={
      "rid":widget.rid,
      "status":status,//5安排包间 6 拒绝订单
      "tid":tid,
      "mid":widget.mid,
      "cause":json.encode(causeMap)
    };
    detailModel.setReserveStatus(context, params);
  }

  //处理在线预订
  setMessageStatus(){
    bus.emit("remove_untreated_message",widget.mid);
    Map<String,String> params={
      "sid":Provider.of<UserModel>(context,listen: false).user.sellerid,
      "id":widget.mid,
      "status":"is_handle"
    };
    detailModel.setMessageStatus(context, params);
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return SafeArea(
      child: detailEntity==null?Container(
        width: double.infinity,
        height: double.infinity,
        color: MyColours.color_ffffff,
      ):Column(
        children: <Widget>[
          MyAppBar(
            "在线预订详情",
            showBack: true,
          ),
          Expanded(
            child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), child: Container(
              color: MyColours.color_ffffff,
              child: Column(
                children: <Widget>[
                  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),)
                              ],
                            ),
                            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.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){
                                          setState(() {
                                            cusmanText=managers[value.first].userName;
                                          });
                                          _setCurrManager();
                                        });
                                      },
                                      child: Text(
                                        cusmanText,
                                        style: TextStyle(
                                          color: MyColours.color_353535,
                                          fontSize: ScreenUtil().setSp(30),
                                          decoration: TextDecoration.underline,
                                        ),
                                      ),
                                    ),
                                  )
                                ],
                              ),
                            ),
                          ],
                        )),
                  ),
                  Container(
                    margin: EdgeInsets.only(top: ScreenUtil().setHeight(30),bottom: ScreenUtil().setHeight(30)),
                    child: Column(
                      children: <Widget>[
                        CommonButton(
                          content: "安排包间",
                          width: 669,
                          height: 76,
                          fontSize: 34,
                          onPress: () async {
                            String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,int.parse(detailEntity.ddate)*1000,detailEntity.ddate_solt);
                            if(tid!=null){
                              setReserveStatus("5",tid:tid);
                            }
                          },
                        ),
                        VEmptyView(20),
                        Container(
                          width: ScreenUtil().setWidth(669),
                          height: ScreenUtil().setHeight(76),
                          decoration: BoxDecoration(
                            border: Border.all(color: MyColours.color_199095),
                            borderRadius: BorderRadius.circular(
                                ScreenUtil().setWidth(5)),
                          ),
                          child: Row(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            children: <Widget>[
                              Expanded(
                                  child: GestureDetector(
                                    child: Center(
                                      child: Text(
                                        "拒绝订单",
                                        style: TextStyle(
                                            color: MyColours.color_199095,
                                            fontSize: ScreenUtil().setSp(34)),
                                      ),
                                    ),
                                    onTap: () {
                                      _showRefuseDialog();
                                    },
                                  )),
                              MyDivider(
                                ScreenUtil().setWidth(2),
                                ScreenUtil().setHeight(52),
                                color: MyColours.color_199095,
                              ),
                              Expanded(
                                  child: GestureDetector(
                                    child: Center(
                                      child: Text(
                                        "联系顾客",
                                        style: TextStyle(
                                            color: MyColours.color_199095,
                                            fontSize: ScreenUtil().setSp(34)),
                                      ),
                                    ),
                                    onTap: () {
                                      if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){
                                        Utils.goPhone(detailEntity.phone);
                                      }else{
                                        Utils.showToast("没有客户电话!");
                                      }
                                    },
                                  )),
                            ],
                          ),
                        )
                      ],
                    ),
                  )
                ],
              )
            )),
          )
        ],
      ),
    );
  }
}