import React, { Component } from "react";
import { Modal, Button, Input, Form, message } from "antd";
import $ from "jquery/src/ajax";
import { moneyVerify } from "@/tools.js";

class ReasonInput extends Component {
  constructor(props) {
    super(props);
    this.state = {
      visible: false,
      reason: this.props.reason,
      flag: false,
      flagS: false,
    };
    this.reset = this.reset.bind(this);
    this.judge = this.judge.bind(this);
    this.onOk = this.onOk.bind(this);
    this.sendRequest = this.sendRequest.bind(this);
    this.inputAjax = this.inputAjax.bind(this);
  }

  // componentWillMount() {
  //   let reason = this.props.reason
  //   this.setState({
  //     reason
  //   })
  //   //     const data = this.props.data;
  //   //     const backData = this.props.backData;
  //   //     const ajaxData = this.props.ajaxData;
  //   //     Object.assign(backData, ajaxData);
  //   // // this.sendRequest()
  //   // this.onOk(data,backData)
  //   // console.log("222222",this.props);

  // }

  // 理由请求
  sendRequest(data, backData) {
    if(this.state.flagS) return
    this.setState({
      flagS: true,
      loading: true,
    });
    $.ajax({
      method: "post",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/orderChangeAudit",
      data: {
        changeId: backData.id,
        remarks: this.props.reason,
        status: data.status,
        processState: this.props.processState,
        // 驳回位置
        rejectState: this.props.rejectState
      },
      success: function(data) {
        if (data.error.length || data.data.list == "") {
          if (data.error && data.error.length) {
            message.warning(data.error[0].message);
            // if (!this.state.flag) return;
            this.setState({
              flagS: !this.state.flagS,
            });
            return
          }
        } else {
          message.success("操作成功!");
          this.props.visible();
          // this.changeModal();
          this.props.onCancel();
          // window.location.reload()
          this.setState({
            flagS: !this.state.flagS
          })
        }
      }.bind(this)
    }).done(
        function() {
          // if (this.props.loadData) {
          //   this.props.loadData("2");
          // }
          this.setState({
            loading: false,
          })
        }.bind(this)
    );
  }

  // 输入框请求
  inputAjax(_data, backData) {
    if (this.state.flag) return;
    this.setState({
      flag: true,
      loading: true,
    })
    $.ajax({
      method: "post",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + "/api/admin/orderChange/updateOrderChange",
      data: backData,
      success: function(data) {
        if (data.error.length || data.data.list == "") {
          if (data.error && data.error.length) {
            message.warning(data.error[0].message);
            // if (!this.state.flag) return;
            this.setState({
              flag: !this.state.flag
            });
            return
          }
        } else {
          this.setState({
            flag: !this.state.flag
          });
        }
      }.bind(this)
    }).done(
        function() {
          this.sendRequest(this.props.data, backData);
          this.setState({
            loading: false,
          })
        }.bind(this)
    );
  }

  reset() {
    this.setState({
      reason: this.props.reason
    });
  }

  changeModal() {
    this.setState(
        {
          visible: !this.state.visible
        },
        () => {
          this.reset();
        }
    );

    const data = this.props.data;
    const backData = this.props.backData;
    backData.consultantExamine = []
    backData.managerExamine = []
    const ajaxData = this.props.ajaxData;
    if(ajaxData.ContactsLists) {
      ajaxData.ContactsLists = [];
      ajaxData.contactList = [];
    }
    Object.assign(backData, ajaxData);
    // this.sendRequest()
    this.onOk(data,backData)
    // this.setState({reason: this.props.reason})
    // console.log(this.props,this.state)

  }

  judge() {
    if (!this.props.reason) {
      message.error("理由不能为空!");
      return false;
    }
  }

  onOk(data, backData) {
    console.log(this.props);

    if (!this.props.reason) {
      message.error("理由不能为空!");
      return false;
    }
    if( this.props.data.status == 2 && this.props.processState == 5) {
      if (
          moneyVerify(this.props.ajaxData.cwCost) ||
          moneyVerify(this.props.ajaxData.refundableAmount)
      ) {
        return;
      }
    }
    if (
        this.props.processState <= 1 ||
        this.props.processState == 4 ||
        this.props.processState >= 6
    ) {
      // 判断权限是否大于营销管理员
      this.sendRequest(data, backData);
    } else {
      this.inputAjax(data, backData);
    }
    // data.onChange(this.state.reason);
  }

  render() {
    const { visible } = this.state;
    const data = this.props.data;
    const backData = this.props.backData;
    const ajaxData = this.props.ajaxData;
    Object.assign(backData, ajaxData);

    return (
        <div style={{ display: "inline-block" }}>
          <Button
              type={data.type}
              loading={this.state.loading}
              onClick={() => {
                this.changeModal();
              }}

          >
            {data.name}
          </Button>
          <Modal
              maskClosable={false}
              title={data.title}
              visible={false}
              onCancel={() => {
                this.changeModal();
              }}
              // onOk={_e => {
              //   this.onOk(data, backData);
              // }}
          >
            <Form.Item>
              <Input.TextArea
                  rows={4}
                  placeholder={data.placeholder}
                  value={this.state.reason}
                  onChange={e => {
                    // console.log(this.props);

                    this.setState({
                      reason: e.target.value
                    });
                  }}
              />
            </Form.Item>
          </Modal>
        </div>
    );
  }
}

const AgreeButton = Form.create()(ReasonInput);

export default AgreeButton;