/* * Author: 黎永顺 * name: 验证码弹框 * Description: * Date: 2023/6/16 */ import React, { Component } from "react"; import { WeaDialog, WeaError, WeaFormItem, WeaInput, WeaLocaleProvider, WeaSearchGroup } from "ecCom"; import { WeaForm, WeaSwitch } from "comsMobx"; import { checkMobileCode, sendMobileCode } from "../../apis/payroll"; import { getQueryString } from "../../util/url"; import FormInfo from "../FormInfo"; import { captchaCondition } from "../../pages/mobilePayroll/pwdCondtion"; import MobileModal from "../../pages/mobilePayroll/mobileModal"; import { Button, message } from "antd"; import "./index.less"; const form = new WeaForm(); const { getLabel } = WeaLocaleProvider; class Index extends Component { constructor(props) { super(props); this.state = { captcha: "", time: 60, loading: false }; this.timeRef = null; } componentDidMount() { form.initFormFields(captchaCondition); } componentWillUnmount() { clearInterval(this.timeRef); this.setState({ captcha: "", time: 60, loading: false }); } handleSendCaptcha = () => { this.setState({ loading: true }); sendMobileCode({ id: this.props.id }).then(({ status, data }) => { if (status) { this.timeRef = setInterval(() => { const { time } = this.state; this.setState({ time: time - 1 }, () => { if (this.state.time === -1) { clearInterval(this.timeRef); this.setState({ time: 60, loading: false }); } }); }, 1000); } else { this.setState({ loading: false }); } }).catch(() => this.setState({ loading: false })); }; handleConfirm = async () => { const type = getQueryString("type"), f = await form.validateForm(); if (!this.state.captcha && type !== "phone") { this.refs.weaError.showError(); return; } else if (!f.isValid && type === "phone") { f.showErrors(); return; } checkMobileCode({ id: this.props.id, mobileCode: this.state.captcha }).then(({ status, errormsg }) => { if (status) { this.props.onCancel(); this.props.onConfirm(); } else { message.error(errormsg); } }); }; render() { const { captcha, time, loading } = this.state, type = getQueryString("type"); const itemRender = { mobileCode: (field, textAreaProps, form, formParams) => { return (
this.setState({ captcha: form.getFormParams().mobileCode })}/>
); } }; return ( { type === "phone" ? : {getLabel(826, "确定")} ]} >
this.setState({ captcha })}/>
}
); } } export default Index;