payment_setting_page.dart 11.3 KB

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/provider/marketing_center_provider.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';

import '../../../provider/store_base_info_provider.dart';
import '../../../provider/user_model.dart';
import '../../../res/colors.dart';
import '../../../utils/MyNumberTextInputFormatter.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/v_empty_view.dart';

/**
 * 订金设置
 */
class PaymentSettingPage extends StatefulWidget {
  const PaymentSettingPage();

  @override
  State<PaymentSettingPage> createState() => _PaymentSettingPageState();
}

class _PaymentSettingPageState extends State<PaymentSettingPage> {
  bool isPayment = false; //默认关闭

  TextEditingController moneyControl = TextEditingController();
  FocusNode moneyFocusNode = FocusNode();

  late MarketingCenterProvider marketingCenterProvider;

  @override
  void initState() {
    super.initState();

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

  _getDzSellerConf() async {
    await marketingCenterProvider.getDzSellerConf(context);
    if (marketingCenterProvider.dzSellerConfModel != null) {
      isPayment =
          marketingCenterProvider.dzSellerConfModel!.isShowNoticeDeposit == '1'
              ? true
              : false;
      moneyControl.text =
          marketingCenterProvider.dzSellerConfModel!.depositPrice ?? '';
      setState(() {});
    }
  }

  ///保存接口
  _setData() async {
     (bool, bool) result = await (
       _setIsShowNoticeDeposit(),
      _setDepositPrice(),
    ).wait;

    if (result.$1 && result.$2) {
      Utils.showToast('设置成功');
        if (Navigator.canPop(context)) {
        Navigator.pop(context);
        }
    }else{
       Utils.showToast('设置失败,请重试');
    }
   
  }

  ///获取店铺过期时间
  _getSellerById() async {
    StoreBaseIndoProvider storeBaseIndoProvider =
        Provider.of<StoreBaseIndoProvider>(context, listen: false);
    await storeBaseIndoProvider.getSellerById(context);
    if (storeBaseIndoProvider.itemModel != null) {
      String? applymentSubMchid =
          storeBaseIndoProvider.itemModel!.data!.applymentSubMchid;
      if (applymentSubMchid != null && applymentSubMchid != '') {
        //商家开通了微信支付
        _setData();
      } else {
        //商家未开通微信支付
        // Utils.showToast('商家未开通微信支付功能!');
        isPayment = false;
        setState(() {});
        _setIsShowNoticeDeposit();

        DialogUtil.cupertinoAlertDialogOnly(context,
            content: '您的店铺尚未开通微信支付商家账号,请拨打400-0009690 联系客服,或联系您的销售服务开通后再开启本功能!',
            rTitle: '我知道了');
      }
    }
  }

  ///使用店铺手机发送营销短信
   Future<bool> _setIsShowNoticeDeposit({bool isShowLoading = true}) async {
    Map<String, String?> params = {
      'sid': Provider.of<UserModel>(context, listen: false).user!.sellerid,
      'key': 'is_show_notice_deposit',
      'value': isPayment ? '1' : '0'
    };

    bool success = await marketingCenterProvider.setConfing(context, params,
        needToast: false);

    if (success) {
      return true;
    } else {
      return false;
    }
  }

  ///使用店铺手机发送通知短信
    Future<bool> _setDepositPrice({bool isShowLoading = true}) async {
    if (moneyControl.text.trim().length > 0) {
      Map<String, String?> params = {
        'sid': Provider.of<UserModel>(context, listen: false).user!.sellerid,
        'key': 'deposit_price',
        'value': moneyControl.text
      };

      bool success = await marketingCenterProvider.setConfing(context, params,
          needToast: false);

      if (success) {
        return true;
      } else {
        return false;
      }
    } else {
      return true;
    }
  }

  ///输入框
  Widget _textfieldSelect(
    String title,
    String hintText,
    TextEditingController controller,
    FocusNode focusNode, {
    TextInputType textInputType = TextInputType.text,
    String subtitle = '',
  }) {
    return Container(
      padding: EdgeInsets.only(left: w(20), right: (w(20))),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Container(
            child: Text(
              title,
              style: TextStyle(
                  color: MyColours.color_515151,
                  fontSize: ScreenUtil().setSp(32)),
            ),
          ),
          HEmptyView(40),
          Expanded(
            child: TextField(
                controller: controller,
                textAlign: TextAlign.right,
                textAlignVertical: TextAlignVertical.bottom,
                maxLines: 1,
                inputFormatters: title == '预订订金金额'
                    ? [
                        FilteringTextInputFormatter(RegExp("[0-9.]"),
                            allow: true),
                        MyNumberTextInputFormatter(digit: 2),
                      ]
                    : [],
                // //光标颜色
                // cursorColor:
                //     widget.isSelect ? Colors.white : MyColours.color_199095,
                //输入文本的样式
                style: TextStyle(
                  color: MyColours.color_515151,
                  fontSize: ScreenUtil().setSp(32),
                ),
                focusNode: focusNode,
                decoration: InputDecoration(
                  isCollapsed: true,
                  border: OutlineInputBorder(borderSide: BorderSide.none),
                  hintText: hintText,
                  hintStyle: TextStyle(
                    color: MyColours.color_999999,
                    fontSize: ScreenUtil().setSp(32),
                  ),
                  enabledBorder: new UnderlineInputBorder(
                    borderSide: BorderSide.none,
                  ),
                  focusedBorder: new UnderlineInputBorder(
                    borderSide: BorderSide.none,
                  ),
                ),
                onChanged: (value) {},
                onEditingComplete: () {
                  FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
                },
                keyboardType: textInputType),
          ),
          if (subtitle != '') HEmptyView(6),
          Text(
            subtitle,
            style: TextStyle(
                color: MyColours.color_515151,
                fontSize: ScreenUtil().setSp(32)),
          ),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    marketingCenterProvider =
        Provider.of<MarketingCenterProvider>(context, listen: false);
    return Scaffold(
        backgroundColor: MyColours.color_ffffff,
        appBar: SystemAppBar('预订订金'),
        body: Column(
          children: [
            Expanded(
                child: SingleChildScrollView(
              child: Column(
                children: [
                  InkWell(
                      onTap: () {
                        setState(() {
                          isPayment = !isPayment;
                        });
                      },
                      child: Padding(
                          padding: EdgeInsets.only(
                              left: w(16),
                              top: w(12),
                              bottom: w(11),
                              right: w(12)),
                          child: Row(
                              mainAxisAlignment: MainAxisAlignment.spaceBetween,
                              children: [
                                Text(
                                  '在客户预订通知中,增加支付订金功能',
                                  style: TextStyle(
                                      color: MyColours.color_515151,
                                      fontSize: font(16)),
                                ),
                                Spacer(),
                                Container(
                                  padding: EdgeInsets.symmetric(
                                      horizontal: w(7), vertical: w(4)),
                                  child: Image.asset(
                                    Utils.getImgPath(
                                        isPayment ? 'swich_on' : 'swich_off'),
                                    width: w(44),
                                  ),
                                )
                                // RoundButton(
                                //   text: '预览',
                                //   gradientStart: MyColours.color_ffffff,
                                //   gradientEnd: MyColours.color_ffffff,
                                //   borderColor: MyColours.color_438E93,
                                //   textColor: MyColours.color_438E93,
                                //   radius: ScreenUtil().setWidth(22),
                                //   fontSize: 24,
                                //   width: w(72),
                                //   height: ScreenUtil().setWidth(44),
                                //   isBold: true,
                                //   onPressed: () {
                                //     NavigatorUtil.goMarkingPreviewPage(context);
                                //   },
                                // ),
                              ]))),
                  // VEmptyView(24),
                  Padding(
                      padding: EdgeInsets.only(left: w(16)),
                      child: MyDivider(double.infinity, w(0.5),
                          color: MyColours.color_E7E7E7)),
                  VEmptyView(48),
                  _textfieldSelect(
                      '预订订金金额', '点击输入订金金额', moneyControl, moneyFocusNode,
                      subtitle: '',
                      textInputType: TextInputType.numberWithOptions()),
                  VEmptyView(22),
                  Padding(
                      padding: EdgeInsets.only(left: w(16)),
                      child: MyDivider(double.infinity, w(0.5),
                          color: MyColours.color_E7E7E7)),
                ],
              ),
            )),
            Container(
              color: MyColours.color_ffffff,
              padding: EdgeInsets.only(
                  left: w(45), right: w(45), top: w(12), bottom: w(25)),
              child: RoundButton(
                text: '保存',
                gradientStart: MyColours.color_199095,
                gradientEnd: MyColours.color_199095,
                // borderColor: MyColours.color_999999,
                radius: r(5),
                fontSize: 34,
                height: w(40),
                isBold: true,
                onPressed: () async {
                  FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘

                  _getSellerById();
                },
              ),
            )
          ],
        ));
  }
}