| @@ -48,6 +48,7 @@ import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined'; | |||
| import { Link } from 'react-router-dom'; | |||
| import * as HttpUtils from "../../../utils/HttpUtils" | |||
| import LoopIcon from '@mui/icons-material/Loop'; | |||
| //import { Invaild } from 'utils/IconUtils'; | |||
| // ============================|| FIREBASE - REGISTER ||============================ // | |||
| @@ -111,21 +112,25 @@ const BusCustomFormWizard = (props) => { | |||
| // localStorage.setItem("checkCode",null); | |||
| // localStorage.setItem("base64Url",null); | |||
| // }else{ | |||
| HttpUtils.post({ | |||
| url: POST_CAPTCHA, | |||
| params:{width: 100, height: 40}, | |||
| onSuccess:(responseData)=>{ | |||
| localStorage.setItem("checkCode",responseData.checkCode); | |||
| localStorage.setItem("base64Url",responseData.base64Url); | |||
| setCaptcha(localStorage.getItem('checkCode')); | |||
| setCaptchaImage(localStorage.getItem('base64Url')); | |||
| } | |||
| }); | |||
| onCaptchaChange(); | |||
| // } | |||
| }, []); | |||
| const onCaptchaChange = ()=>{ | |||
| HttpUtils.post({ | |||
| url: POST_CAPTCHA, | |||
| params:{width: 130, height: 40}, | |||
| onSuccess:(responseData)=>{ | |||
| localStorage.setItem("checkCode",responseData.checkCode); | |||
| localStorage.setItem("base64Url",responseData.base64Url); | |||
| setCaptcha(localStorage.getItem('checkCode')); | |||
| setCaptchaImage(localStorage.getItem('base64Url')); | |||
| } | |||
| }); | |||
| } | |||
| const checkDataField = (data)=> { | |||
| // console.log(data.brExpiryDate) | |||
| if (data.username !==""&& | |||
| @@ -141,10 +146,12 @@ const BusCustomFormWizard = (props) => { | |||
| data.phoneCountryCode !==""&& | |||
| termsAndConAccept == true&& | |||
| fileList.length!==0&& | |||
| data.captchaField&& | |||
| handlePassword(data.password)&& | |||
| handleEmail(data.email)&& | |||
| handlePhone(data.phone)&& | |||
| handleUserName(data.username) | |||
| handleUserName(data.username)&& | |||
| handleCaptcha(data.captchaField) | |||
| ) | |||
| { | |||
| setisValid(true) | |||
| @@ -342,6 +349,10 @@ const BusCustomFormWizard = (props) => { | |||
| } | |||
| } | |||
| function handleCaptcha(captchaField) { | |||
| return captchaField == captcha; | |||
| } | |||
| function handlePassword(password) { | |||
| let new_pass = password; | |||
| // regular expressions to validate password | |||
| @@ -416,7 +427,7 @@ const BusCustomFormWizard = (props) => { | |||
| fax: yup.string().min(8,'請輸入最少8位數字'), | |||
| brExpiryDate: yup.string().min(8,'請輸入商業登記證有效日期'), | |||
| brNo: yup.string().min(8,'請輸入商業登記證號碼'), | |||
| captchaField: yup.string().test("match", "Invalid", function(val){return val == captcha;}) | |||
| captchaField: yup.string().required('請輸入驗證').oneOf([captcha], '請輸入有效驗證'), | |||
| }) | |||
| }); | |||
| @@ -1055,28 +1066,8 @@ const BusCustomFormWizard = (props) => { | |||
| </Stack> | |||
| </Stack> | |||
| </Grid> | |||
| </Grid> | |||
| <Grid item xs={12} md={12} mt={1} mb={1}> | |||
| <Grid container> | |||
| <Grid item xs={12} md={12}> | |||
| <img src={captchaImg} width={200} height={45} alt=""/> | |||
| </Grid> | |||
| <Grid item xs={12} md={6}> | |||
| <OutlinedInput | |||
| id="captchaField" | |||
| type="text" | |||
| value={formik.values.captchaField} | |||
| name="captchaField" | |||
| onChange={(event) => { | |||
| const value = event.target.value; | |||
| formik.setFieldValue("captchaField",value); | |||
| }} | |||
| sx={{width:'75%'}} | |||
| /> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| <Grid item xs={12} md={12} mt={1} mb={1}> | |||
| @@ -1164,6 +1155,47 @@ const BusCustomFormWizard = (props) => { | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| <Grid item xs={12} lg={12}> | |||
| <Grid container> | |||
| <Stack direction="column"> | |||
| <Typography display="inline" variant="h4" sx={{ color: 'primary.primary'}}> | |||
| 驗證 | |||
| <span style={{color: '#f10000'}}>*</span> | |||
| </Typography> | |||
| <Stack spacing={1} direction="row"> | |||
| <Grid item xs={5} lg={5} style={{"border":"1px solid black;"}}> | |||
| <img src={captchaImg} alt=""/> | |||
| </Grid> | |||
| <Grid item xs={1} lg={1} style={{"border":"1px solid black;"}}> | |||
| <IconButton aria-label="refrashCaptcha" size="large" onClick={()=>{onCaptchaChange()}}> | |||
| <LoopIcon fontSize="inherit" /> | |||
| </IconButton> | |||
| </Grid> | |||
| <Grid item xs={6} lg={6}> | |||
| <OutlinedInput | |||
| fullWidth | |||
| id="captchaField" | |||
| type="text" | |||
| value={formik.values.captchaField} | |||
| onBlur={formik.handleBlur} | |||
| error={Boolean(formik.touched.captchaField && formik.errors.captchaField)} | |||
| name="captchaField" | |||
| onChange={(event) => { | |||
| const value = event.target.value; | |||
| formik.setFieldValue("captchaField",value); | |||
| }} | |||
| sx={{width:'75%'}} | |||
| /> | |||
| </Grid> | |||
| </Stack> | |||
| {formik.touched.captchaField && formik.errors.captchaField && ( | |||
| <FormHelperText error id="helper-text-captcha-signup"> | |||
| {formik.errors.captchaField} | |||
| </FormHelperText> | |||
| )} | |||
| </Stack> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| </FormGroup> | |||