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

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

  //处理在线预订
  setReserveStatus(String status,{String tid=""}){
    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(){
    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 detailEntity==null?Container():SafeArea(
      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),)
                          ],
                        ),
                        RowMultiText("包间需求", (detailEntity.demands.length.toString()+"个")??""),
                        Align(
                          alignment: Alignment.centerRight,
                          child: Row(
                            mainAxisSize: MainAxisSize.min,
                            children: detailEntity.demands.map((table){
                              return TableItem(table);
                            }).toList(),
                          ),
                        ),
                        RowMultiText("客户姓名", detailEntity.rnameStr),
                        RowMultiText("客户电话", detailEntity.phone),
                        MyDivider(double.infinity, ScreenUtil().setHeight(2)),
                        Container(
                          color: MyColours.color_ffffff,
                          width: double.infinity,
                          height: ScreenUtil().setHeight(80),
                          padding: EdgeInsets.symmetric(
                              vertical: ScreenUtil().setHeight(26)),
                          child: Stack(
                            alignment: Alignment.center,
                            children: <Widget>[
                              Positioned(
                                left: 0,
                                child: Text(
                                  "客户经理",
                                  style: TextStyle(
                                      color: MyColours.color_828282,
                                      fontSize: ScreenUtil().setSp(22)),
                                ),
                              ),
                              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(26),
                                      decoration: TextDecoration.underline,
                                    ),
                                  ),
                                ),
                              )
                            ],
                          ),
                        ),
                        MyDivider(double.infinity, ScreenUtil().setHeight(2)),
                        Container(
                          margin: EdgeInsets.only(top: ScreenUtil().setHeight(206)),
                          child: Column(
                            children: <Widget>[
                              CommonButton(
                                content: "安排包间",
                                width: 669,
                                height: 76,
                                fontSize: 26,
                                onPress: () async {
                                  String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,DateTime.fromMillisecondsSinceEpoch(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(26)),
                                            ),
                                          ),
                                          onTap: () {
                                            _showRefuseDialog();
                                          },
                                        )),
                                    MyDivider(
                                      ScreenUtil().setWidth(1),
                                      ScreenUtil().setHeight(52),
                                      color: MyColours.color_199095,
                                    ),
                                    Expanded(
                                        child: GestureDetector(
                                          child: Center(
                                            child: Text(
                                              "联系顾客",
                                              style: TextStyle(
                                                  color: MyColours.color_199095,
                                                  fontSize: ScreenUtil().setSp(26)),
                                            ),
                                          ),
                                          onTap: () {
                                            if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){
                                              Utils.goPhone(detailEntity.phone);
                                            }else{
                                              Utils.showToast("没有客户电话!");
                                            }
                                          },
                                        )),
                                  ],
                                ),
                              )
                            ],
                          ),
                        )
                      ],
                    )),
              ),
            )),
          )
        ],
      ),
    );
  }
}