import React, { Component } from "react"
import { InputItem, Button, WingBlank, Toast } from "antd-mobile"
import { withFormik } from "formik"
import { HeaderBar } from "../../common"
import { http } from "src/utils"

const InnerForm = ({ values, setFieldValue, handleSubmit }) => (
  <form>
    <InputItem
      clear
      name="real_name"
      onChange={(value) => setFieldValue("real_name", value)}
      placeholder="请输入您的真实姓名"
      value={values.real_name}
    >
      姓名
    </InputItem>
    <InputItem
      clear
      type="phone"
      name="cellphone"
      placeholder="请输入您的手机号码"
      onChange={(value) => setFieldValue("cellphone", value)}
      value={values.cellphone}
    >
      电话
    </InputItem>
    <InputItem
      clear
      name="qq"
      placeholder="请输入您的QQ号码"
      maxLength="15"
      onChange={(value) => setFieldValue("qq", value)}
      value={values.qq}
    >
      QQ
    </InputItem>

    <div style={{ marginTop: "21px" }}>
      <WingBlank>
        <Button type="primary" onClick={handleSubmit}>
          确认
        </Button>
      </WingBlank>
    </div>
  </form>
)

const MyForm = withFormik({
  mapPropsToValues: (props) => ({ ...props.userInfo }),
  validate: (values, props) => {
    const errors = {}
    return errors
  },
  handleSubmit: (values, FormBag) => {
    const { real_name, cellphone, qq } = values
    if (!real_name) {
      Toast.info("请输入姓名!", undefined, undefined, false)
      return
    } else if (`${real_name}`.replace(/\s+/g, "").length === 0) {
      Toast.info("请输入姓名!", undefined, undefined, false)
      return
    }
    if (!cellphone) {
      Toast.info("请输入手机号!", undefined, undefined, false)
      return
    } else if (!/1\d{10}/g.test(`${cellphone}`.replace(/\s+/g, ""))) {
      Toast.info("请输入正确的手机号!", undefined, undefined, false)
      return
    }
    if (!qq) {
      Toast.info("请输入QQ号!", undefined, undefined, false)
      return
    } else if (!/\d{5,}/g.test(qq)) {
      Toast.info("请输入正确QQ号!", undefined, undefined, false)
      return
    }
    let same = 0
    if (FormBag.props.userInfo) {
      const userInfo = FormBag.props.userInfo
      if (userInfo.real_name === real_name) {
        same += 1
      }
      if (userInfo.cellphone === cellphone) {
        same += 1
      }
      if (userInfo.qq === qq) {
        same += 1
      }
    }
    let pathName = "/order"
    if (FormBag.props.userInfo.id) {
      pathName = pathName + "?id=" + FormBag.props.userInfo.id
    }
    // console.log(values);
    if (same === 3) {
      FormBag.props.history.replace(pathName, {
        ...values,
      })
      return
    }
    http
      .post(`${API["base-api"]}/m/order/saveUserInfo`, {
        real_name: values.real_name,
        cellphone: `${values.cellphone}`.replace(/\s+/g, ""),
        qq: values.qq,
      })
      .then((res) => {
        // console.log(res);
        if (res.data.errno !== 200) {
          Toast.info(res.data.msg, undefined, undefined, false)
          return
        }
        Toast.info("保存成功!", undefined, undefined, false)
        FormBag.props.history.replace(pathName, {
          ...values,
        })
      })
  },
})(InnerForm)

class Orderinfo extends Component {
  render() {
    return (
      <div>
        <HeaderBar title="报名信息" arrow={true}></HeaderBar>
        <MyForm
          history={this.props.history}
          userInfo={this.props.location.state}
        />
      </div>
    )
  }
}

export default Orderinfo