import React, { useState } from 'react'; import { useCountDown } from '@/utils/hooks/customHooks'; import { Modal, Input, message } from 'antd'; import accountService from '@/services/accoutService'; import styles from './EditPhone.module.scss'; import { SmsType } from '@/utils/enum'; let isAble = true; interface Istep1Props { jumpStep: () => void } let timer: any; // 验证原手机号 const Stpe1: React.FC = (props: Istep1Props) => { const { jumpStep } = props; const [ phone, setPhone ] = useState(''); const [ code, setCode ] = useState(''); // 自定义倒计时hook const { second, start } = useCountDown(60); // 电话号码改变事件 const phoneChange = (e: any) => { const value = e.target.value; setPhone(value); } // 验证码改变事件 const codeChange = (e: any) => { const value = e.target.value; setCode(value); } // 发送验证码 const send = async () => { // 60秒内只能发送一次 if (validate() && second === 60 && isAble) { isAble = false; const result = await accountService.sendCode({ phone, type: SmsType.CHANGE_PHONE }); if (result.apiResponse.status) { start(); } isAble = true; } } // 校验手机号 const validate = () => { if(!(/^1[3456789]\d{9}$/.test(phone))){ message.error('手机号不合法') return false; } return true; } // 下一步 const nextStep = async () => { const res = await accountService.confirmCode({ phone, type: SmsType.CHANGE_PHONE, code }); if (res.apiResponse.status) { jumpStep(); } } return (

验证原手机号

{ second === 60 ? '获取验证码' : `${ second }s` }
下一步
) } interface Istep2Props { resetPhone: (phone: string) => void confirmSuccss: () => void } // 绑定新手机号 const Stpe2: React.FC = (props: Istep2Props) => { const { confirmSuccss, resetPhone } = props; const [ phone, setPhone ] = useState(''); const [ code, setCode ] = useState(''); // 自定义倒计时hook const { second, start } = useCountDown(60); // 电话号码改变事件 const phoneChange = (e: any) => { const value = e.target.value; setPhone(value); } // 验证码改变事件 const codeChange = (e: any) => { const value = e.target.value; setCode(value); } // 发送验证码 const send = async () => { // 60秒内只能发送一次 if (validate() && second === 60 && isAble) { start(); isAble = false; await accountService.sendCode({ phone, type: SmsType.CHANGE_PHONE }); isAble = true; } } // 校验手机号 const validate = () => { if(!(/^1[3456789]\d{9}$/.test(phone))){ message.error('手机号不合法') return false; } return true; } // 确定 const confirm = async () => { const res = await accountService.bindPhone({ phone, code }); if (res.apiResponse.status) { resetPhone(phone); message.success('操作成功'); confirmSuccss(); } } return (

绑定新手机号

{ second === 60 ? '获取验证码' : `${ second }s` }
确定
) } interface Iprops { visible: boolean resetPhone: (phone: string) => void onClose: () => void } const EditPhone: React.FC = (props: Iprops) => { const { visible, onClose, resetPhone } = props; const [ step, setStep ] = useState(1); const jumpStep = () => { setStep(2); } return ( { step === 1 ? : } ) } export default EditPhone;