wine_detail_page.dart 16.4 KB
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/pages/my/store_wine_manage/wine_detail_item_page.dart';
import 'package:one_key/provider/customer_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';

import '../../../constant/state.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/store_wine_provider.dart';
import '../../../res/colors.dart';
import '../../../route/navigator_util.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/page_exception.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/v_empty_view.dart';

/**
 * 
 * 存酒详情页,只查看
 */
class WineDetailPage extends StatefulWidget {
  final String idstr;
  final bool isStoreWine;
  WineDetailPage({Key key, this.idstr, this.isStoreWine}) : super(key: key);

  @override
  _WineDetailPageState createState() => _WineDetailPageState();
}

class _WineDetailPageState extends State<WineDetailPage> {
  StoreWineProvider storeWineProvider;

  ScrollController _controller = ScrollController();

  // List dataWine = [];
  String isMember = '';

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // WineManageModel wineManageModel = WineManageModel();
    // dataWine.add(wineManageModel);
    // dataWine.add(wineManageModel);

    WidgetsBinding.instance.addPostFrameCallback((_) async {
      _getStoreWineById();
    });
  }

  _getStoreWineById() async {
    Map<String, String> params = {"id": widget.idstr};
    bool success = await storeWineProvider.getStoreWineById(context, params);
    if (success && storeWineProvider.pageStateDetail != PageState.Empty) {
      _getIsMemberByPhone();
    }
  }

  ///获取手机号是否为商家会员
  _getIsMemberByPhone() async {
    CustomerProvider customerProvider =
        Provider.of<CustomerProvider>(context, listen: false);
    Map<String, String> params = {
      "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
      'phone': storeWineProvider.wineManageDetail.phone
    };
    Map temp = await customerProvider.getIsMemberByPhone(context, params);
    if (temp == null) {
      //会员状态未知
      isMember = '会员状态未知';
    } else if (temp['is_member'] == '1') {
      //会员
      isMember = '会员';
    } else {
      //非会员
      isMember = '非会员';
    }
    setState(() {});
  }

  Widget _textItemWidget(
    String title,
    String subTitle,
  ) {
    return Column(children: [
      Container(
          height: ScreenUtil().setWidth(48 * 2),
          padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Text(
                title,
                style: TextStyle(
                    color: MyColours.color_515151, fontSize: font(16)),
              ),
              Text(subTitle,
                  //输入文本的样式
                  style: TextStyle(
                      fontSize: ScreenUtil().setSp(32),
                      color: MyColours.color_999999)),
              // ),
            ],
          )),
      MyDivider(
        double.infinity,
        h(0.5),
        color: MyColours.color_E7E7E7,
      ),
    ]);
  }

  @override
  Widget build(BuildContext context) {
    storeWineProvider = Provider.of<StoreWineProvider>(context, listen: true);
    return Scaffold(
        appBar: SystemAppBar(
          '存酒详情',
          onTap: () {
            Navigator.pop(context);
          },
        ),
        body: Container(
            child: Consumer<StoreWineProvider>(builder: (context, model, _) {
          if (model.pageStateDetail != PageState.Success) {
            return ExceptionPage(
              pageState: model.pageStateDetail,
              callback: () {
                // offset = 0;
                // getMessage(showLoading: true);

                // if (pageState == PageState.Empty) {
                //   NavigatorUtil.goCouponHistoryPage(context);
                // } else {
                //   _couponNetworkData(widget.index);
                // }
              },
              emptyMsg: "暂时没有存酒信息哦",
              emptyImg: "empty_search",
              showMsg: "加载中,请稍后...",
            );
          } else {
            return Column(
              children: [
                Expanded(
                    child: SingleChildScrollView(
                  controller: _controller,
                  child: Column(
                    children: [
                      Container(
                          color: Colors.white,
                          padding: EdgeInsets.only(
                              left: ScreenUtil().setWidth(16 * 2)),
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            mainAxisAlignment: MainAxisAlignment.start,
                            children: [
                              VEmptyView(32),
                              _textItemWidget(
                                  '联系电话',
                                  Utils.starPhone(
                                      model.wineManageDetail.phone)),
                              Container(
                                  height: ScreenUtil().setWidth(48 * 2),
                                  padding: EdgeInsets.only(
                                      top: ScreenUtil().setWidth(16 * 2),
                                      right: ScreenUtil().setWidth(16 * 2)),
                                  child: Row(
                                    mainAxisAlignment:
                                        MainAxisAlignment.spaceBetween,
                                    crossAxisAlignment:
                                        CrossAxisAlignment.center,
                                    children: [
                                      Text(
                                        '客人姓名',
                                        style: TextStyle(
                                            color: MyColours.color_515151,
                                            fontSize: font(16)),
                                      ),
                                      Expanded(
                                          child: Container(
                                        // height: ScreenUtil().setWidth(16 * 2),
                                        alignment: Alignment.centerRight,
                                        child: Text(
                                            '${model.wineManageDetail.rname}${model.wineManageDetail.sexStr}',
                                            style: TextStyle(
                                                fontSize:
                                                    ScreenUtil().setSp(32),
                                                color: MyColours.color_999999)),
                                      )),
                                      HEmptyView(40),
                                      Container(
                                        width: w(100),
                                        alignment: Alignment.centerRight,
                                        child: Text(
                                          // ,
                                          isMember,
                                          style: TextStyle(
                                            color: MyColours.color_999999,
                                            fontSize: ScreenUtil().setSp(32),
                                          ),
                                        ),
                                      ),
                                    ],
                                  )),
                            ],
                          )),
                      ListView.builder(
                          shrinkWrap: true,
                          controller: _controller,
                          itemCount: model.wineManageDetail.wineData.length,
                          itemBuilder: (context, index) {
                            WineManageSunModel wineManageSunModel =
                                model.wineManageDetail.wineData[index];
                            return WineDetailItemPage(
                              wineManageSunModel: wineManageSunModel,
                              controller: _controller,
                              index: index,
                            );
                          }),
                    ],
                  ),
                )),
                Container(
                    alignment: Alignment.centerLeft,
                    margin: EdgeInsets.only(
                        left: w(20), right: w(20), top: w(10), bottom: w(16)),
                    child: Text(
                      '注:为保障酒品安排,只有存酒管理员才可以进行存酒操作!',
                      style: TextStyle(
                          color: MyColours.color_999999, fontSize: font(10)),
                    )),
                Container(
                    color: MyColours.color_ffffff,
                    padding: EdgeInsets.only(
                      top: ScreenUtil().setWidth(16 * 2),
                      bottom: ScreenUtil().setWidth(35 * 2),
                      left: ScreenUtil().setWidth(45 * 2),
                      right: ScreenUtil().setWidth(45 * 2),
                    ),
                    child: Row(
                      children: [
                        RoundButton(
                          text: '出库记录',
                          width: w(100),
                          height: ScreenUtil().setWidth(80),
                          radius: ScreenUtil().setWidth(10),
                          isBold: true,
                          borderColor: MyColours.color_438E93,
                          gradientStart: MyColours.color_ffffff,
                          gradientEnd: MyColours.color_ffffff,
                          textColor: MyColours.color_438E93,
                          fontSize: 32,
                          onPressed: () async {
                            // UserModel userModel =
                            //     Provider.of<UserModel>(context, listen: false);
                            // if (userModel.user.role_name == '管理员' ||
                            //     userModel.user.role_name == '店长') {
                            NavigatorUtil.goOutStoreRecordPage(
                                context, widget.idstr);
                            // } else {
                            //   bool needRefresh =
                            //       await NavigatorUtil.goCouponEditPage(context);
                            //   print(needRefresh);
                            //   if (needRefresh != null && needRefresh) {
                            //     bus.emit('refresh_coupon_list_f');
                            //     //刷新页面数据
                            //     // _controller.callRefresh();
                            //     // _couponNetworkData(tabController.index);
                            //   }
                            // }
                          },
                        ),
                        HEmptyView(30),
                        Expanded(
                            child: RoundButton(
                          text: '存酒出库',
                          // width: w(218),
                          height: ScreenUtil().setWidth(80),
                          radius: ScreenUtil().setWidth(10),
                          isBold: true,
                          gradientStart: !widget.isStoreWine
                              ? MyColours.color_BFC4D4
                              : MyColours.color_438E93,
                          gradientEnd: !widget.isStoreWine
                              ? MyColours.color_BFC4D4
                              : MyColours.color_438E93,
                          fontSize: 32,
                          onPressed: () async {
                            if (!widget.isStoreWine) {
                              Utils.showToast('您不是店铺的存酒管理员,无权进行相关操作。');
                              return false;
                            }

                            bool can = false;

                            outerloop:
                            for (int i = 0;
                                i <
                                    storeWineProvider
                                        .wineManageDetail.wineDataMove.length;
                                i++) {
                              WineManageSunMoveModel element = storeWineProvider
                                  .wineManageDetail.wineDataMove[i];
                              if (double.parse(element.wineStock) > 0) {
                                can = true;
                                break outerloop;
                              }

                              // innerloop:
                              // for (UploadImgModel item in element.img) {
                              //   if (item.process < 1) {
                              //     Utils.showToast('正在上传图片,请稍等');
                              //     // return false;
                              //     can = false;
                              //     break outerloop;
                              //   }
                              // }
                            }
                            if (can) {
                              // UserModel userModel =
                              //     Provider.of<UserModel>(context, listen: false);
                              // if (userModel.user.role_name == '管理员' ||
                              //     userModel.user.role_name == '店长') {

                              WineManageModel modelTemp =
                                  WineManageModel.fromJson2(storeWineProvider
                                      .wineManageDetail
                                      .toJson());
                              modelTemp.wineData = [];

                              // modelTemp.cdate =
                              //     storeWineProvider.wineManageDetail.cdate;
                              // modelTemp.id =
                              //     storeWineProvider.wineManageDetail.id;
                              // modelTemp.isMember =
                              //     storeWineProvider.wineManageDetail.isMember;
                              // modelTemp.nickName =
                              //     storeWineProvider.wineManageDetail.nickName;
                              // modelTemp.phone =
                              //     storeWineProvider.wineManageDetail.phone;
                              // modelTemp.rname =
                              //     storeWineProvider.wineManageDetail.rname;
                              // modelTemp.sex =
                              //     storeWineProvider.wineManageDetail.sex;
                              // modelTemp.sexStr =
                              //     storeWineProvider.wineManageDetail.sexStr;

                              NavigatorUtil.goApplyOutStorePage(
                                context,
                                modelTemp,
                              );
                              // } else {
                              //   bool needRefresh =
                              //       await NavigatorUtil.goCouponEditPage(context);
                              //   print(needRefresh);
                              //   if (needRefresh != null && needRefresh) {
                              //     bus.emit('refresh_coupon_list_f');
                              //     //刷新页面数据
                              //     // _controller.callRefresh();
                              //     // _couponNetworkData(tabController.index);
                              //   }
                            } else {
                              Utils.showToast('已全部取出!');
                              return false;
                            }
                          },
                        )),
                      ],
                    ))
              ],
            );
          }
        })));
  }
}