// @ts-nocheck import React, { useState, useCallback } from 'react'; import styles from './styles.less'; import { loginService, commonService } from '@/service'; import { Form, Button, message } from 'antd4'; import { FormItemFactory, Input, Select, Password, Phone, Captcha, } from '@/components/form_items'; import BaseForm from '@/components/form'; import { orgTypeOptionConfigList } from '@/data'; import { phoneCheck } from '@/utils/phone'; import Agreement from '@/components/agreement'; const RegisterByEmailForm = (props) => { const [registerByEmailForm] = Form.useForm(); const { isShowGoLogin } = props; const initialValues = { area_code: '+86', // orgType: null, }; const [formValues, setFormValues] = useState({}); const [captchaEnable, setCaptchaEnable] = useState(false); const [lastTime, setLastTime] = useState(); const handleFormFinish = (values) => { const payload = { username: values.username, captcha: values.captcha, phone: values.phone, password: values.password, customer: { name: values.orgName, type: values.orgType, service_id: values.orgId, }, }; if (props?.onFinish) { props.onFinish(payload); } }; const handleValuesChange = useCallback( (changed, values) => { if (props?.errorInfo && props?.onClearErrorInfo) { props?.onClearErrorInfo(); } if (changed.area_code || changed.phone) { let phone_enable = phoneCheck(values.area_code, values.phone); if (phone_enable && !captchaEnable) { setCaptchaEnable(true); } else if (!phone_enable && captchaEnable) { setCaptchaEnable(false); } } setFormValues(values); }, [formValues], ); const handleCaptchaSend = async () => { try { let phone = formValues.area_code + formValues.phone; let data = await loginService.sendCaptchaByPhone({ phone, }); if (data?.error) { throw new Error(data?.msg); } setLastTime(() => new Date().getTime()); message.success('验证码发送成功,请查收!'); } catch (e) { throw e; } }; const handleGoLoginGroup = () => { if (props?.onGoLoginClick) { props.onGoLoginClick(); } }; return ( ({ validator: async (_, value) => { if (value) { const payload = { service_id: value }; const result = await commonService.checkIsExistServiceId( payload, ); if (result?.data?.exists) { return Promise.reject('机构id已存在'); } else { return Promise.resolve(); } } }, }), ]} /> ({ validator: async (_, value) => { if (value) { const payload = { phone: `${formValues.area_code}${value}` }; const result = await commonService.checkIsExistPhone(payload); if (result && result?.data?.isExist) { setCaptchaEnable(false); return Promise.reject('手机号已被占用,请更换号码'); } else { return Promise.resolve(); } } }, }), ]} /> ({ validator(_, value) { if (!value || getFieldValue('password') === value) { return Promise.resolve(); } return Promise.reject(new Error('两次密码输入不一致')); }, }), ]} />
{isShowGoLogin ? (
已有账户 直接登录
) : null}
{props?.errorInfo ? (
{props?.errorInfo}
) : null}
); }; RegisterByEmailForm.defaultProps = { isShowGoLogin: true, }; export default RegisterByEmailForm;