diff --git a/src/components/FiDataGrid.js b/src/components/FiDataGrid.js index cbfe52e..92db46a 100644 --- a/src/components/FiDataGrid.js +++ b/src/components/FiDataGrid.js @@ -14,7 +14,7 @@ export function FiDataGrid({ rows, columns, sx, autoHeight, const [_columns, set_columns] = React.useState([]); const [_rowModesModel, set_rowModesModel] = React.useState({}); const [_editMode, set_editMode] = React.useState("row"); - const [_pageSizeOptions, set_pageSizeOptions] = React.useState([5, 10, 25]); + const [_pageSizeOptions, set_pageSizeOptions] = React.useState([10, 25, 50]); const [_autoHeight, set_autoHeight] = React.useState(true); const [myHideFooterSelectedRowCount, setMyHideFooterSelectedRowCount] = React.useState(true); diff --git a/src/pages/PublicNotice/ListPanel/BaseGrid.js b/src/pages/PublicNotice/ListPanel/BaseGrid.js index bb8fbc7..16adc71 100644 --- a/src/pages/PublicNotice/ListPanel/BaseGrid.js +++ b/src/pages/PublicNotice/ListPanel/BaseGrid.js @@ -90,13 +90,13 @@ export default function BaseGrid({rows}) { } return ( -
+
{ const [checkUpload, setCheckUpload] = useState(false); const [isLoading, setLoding] = useState(true); const [updateRows, setUpdateRows] = useState([]); - const [userNameList, setUserNameList] = useState([]); + // const [userNameList, setUserNameList] = useState([]); const [captcha, setCaptcha] = useState([]); const [captchaImg, setCaptchaImage] = useState([]); @@ -92,7 +92,12 @@ const BusCustomFormWizard = (props) => { const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); const [isValid, setisValid] = useState(false); const [checkCountry, setCheckCountry] = useState(false); + const username = document.getElementById("username-login") const [checkUsername, setCheckUsername] = useState(false); + const [checkUsernameBlur, setCheckUsernameBlur] = useState(false) + const email = document.getElementById("email-login") + const [checkEmail, setCheckEmail] = useState(false) + const [checkEmailBlur, setCheckEmailBlur] = useState(false) const address4ComboList = ComboData.district; const address5ComboList = ComboData.country; @@ -115,19 +120,19 @@ const BusCustomFormWizard = (props) => { // localStorage.setItem("checkCode",null); // localStorage.setItem("base64Url",null); // }else{ - onCaptchaChange(); - // } - axios.get(`${GET_USERNAME}`) - .then((response) => { - if (response.status === 200) { - setUserNameList(response.data); - } + // onCaptchaChange(); + // // } + // axios.get(`${GET_USERNAME}`) + // .then((response) => { + // if (response.status === 200) { + // setUserNameList(response.data); + // } - }) - .catch(error => { - console.log(error); - return false; - }); + // }) + // .catch(error => { + // console.log(error); + // return false; + // }); }, []); const handleCheckUsername = async () => { @@ -142,6 +147,48 @@ const BusCustomFormWizard = (props) => { } } + const handleCheckEmail = async () => { + if (values?.email) { + const response = await axios.get(`${GET_USER_EMAIL}`, { + params: { + email: values.email, + } + }) + setCheckEmail((Number(response.data[0]) === 1)) + return Number(response.data[0]) === 1 + } + } + + useEffect(() => { + if (username) { + username.addEventListener("blur", function () { + setCheckUsernameBlur(true) + }) + } + }, [username]) + + useEffect(() => { + if (checkUsernameBlur) { + handleCheckUsername() + setCheckUsernameBlur(false) + } + }, [checkUsernameBlur]) + + useEffect(() => { + if (email) { + email.addEventListener("blur", function () { + setCheckEmailBlur(true) + }) + } + }, [email]) + + useEffect(() => { + if (checkEmailBlur) { + handleCheckEmail() + setCheckEmailBlur(false) + } + }, [checkEmailBlur]) + const onCaptchaChange = () => { HttpUtils.post({ url: POST_CAPTCHA, @@ -355,6 +402,7 @@ const BusCustomFormWizard = (props) => { formData.append("userFaxNo", JSON.stringify(userFaxNo)); formData.append("busUserContactTel", JSON.stringify(busUserContactTel)); formData.append("busUserAddress", JSON.stringify(busUserAddress)); + // formData.append("preferLocale", "en"); if (isValid) { axios.post(POST_PUBLIC_USER_REGISTER, formData, { @@ -466,17 +514,7 @@ const BusCustomFormWizard = (props) => { }), validationSchema: yup.object().shape({ - username: yup.string().min(6, displayErrorMsg('用戶名稱最少6位')).required(displayErrorMsg('請輸入用戶名稱')).test( - "checkUserNameUsed", - displayErrorMsg("此用戶登入名稱已被注冊,請使用其他用戶登入名稱"), - function (value) { - if (userNameList.some(item => item.username === value)) { - return false - } else { - return true - } - } - ) + username: yup.string().min(6, displayErrorMsg('用戶名稱最少6位')).required(displayErrorMsg('請輸入用戶名稱')) .matches(/^[aA-zZ0-9\s]+$/, { message: displayErrorMsg("用戶名稱不包含特殊字符") }) .matches(/^\S*$/, { message: displayErrorMsg('用戶名稱不包含空格') }), password: yup.string().min(8, displayErrorMsg('請輸入最少8位密碼')).required(displayErrorMsg('請輸入密碼')) @@ -563,12 +601,12 @@ const BusCustomFormWizard = (props) => { 用戶登入名稱 * - + */} { }} placeholder="用戶登入名稱" fullWidth - error={Boolean(formik.touched.username && formik.errors.username)} + error={Boolean((formik.touched.username && formik.errors.username) || checkUsername)} onBlur={formik.handleBlur} inputProps={{ onKeyDown: (e) => { @@ -1039,7 +1077,7 @@ const BusCustomFormWizard = (props) => { { {formik.errors.email} )} + {checkEmail && ( + + 此電郵已被注冊,請使用其他電郵 + + )} diff --git a/src/pages/authentication/auth-forms/CustomFormWizard.js b/src/pages/authentication/auth-forms/CustomFormWizard.js index 00b061a..4a63af8 100644 --- a/src/pages/authentication/auth-forms/CustomFormWizard.js +++ b/src/pages/authentication/auth-forms/CustomFormWizard.js @@ -29,7 +29,7 @@ import * as yup from 'yup'; import { strengthColorChi, strengthIndicator } from 'utils/password-strength'; // import {apiPath} from "auth/utils"; import axios from "axios"; -import { POST_PUBLIC_USER_REGISTER, POST_CAPTCHA, GET_USERNAME } from "utils/ApiPathConst"; +import { POST_PUBLIC_USER_REGISTER, POST_CAPTCHA, GET_USERNAME, GET_USER_EMAIL } from "utils/ApiPathConst"; // import * as HttpUtils from 'utils/HttpUtils'; import * as ComboData from "utils/ComboData"; @@ -93,7 +93,12 @@ const CustomFormWizard = (props) => { const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); const [isValid, setisValid] = useState(false); const [checkCountry, setCheckCountry] = useState(false); + const username = document.getElementById("username-login") const [checkUsername, setCheckUsername] = useState(false); + const [checkUsernameBlur, setCheckUsernameBlur] = useState(false) + const email = document.getElementById("email-login") + const [checkEmail, setCheckEmail] = useState(false) + const [checkEmailBlur, setCheckEmailBlur] = useState(false) const idDocTypeComboList = ComboData.idDocType; const address4ComboList = ComboData.district; @@ -125,6 +130,48 @@ const CustomFormWizard = (props) => { } } + const handleCheckEmail = async () => { + if (values?.email) { + const response = await axios.get(`${GET_USER_EMAIL}`, { + params: { + email: values.email, + } + }) + setCheckEmail((Number(response.data[0]) === 1)) + return Number(response.data[0]) === 1 + } + } + + useEffect(() => { + if (username) { + username.addEventListener("blur", function () { + setCheckUsernameBlur(true) + }) + } + }, [username]) + + useEffect(() => { + if (checkUsernameBlur) { + handleCheckUsername() + setCheckUsernameBlur(false) + } + }, [checkUsernameBlur]) + + useEffect(() => { + if (email) { + email.addEventListener("blur", function () { + setCheckEmailBlur(true) + }) + } + }, [email]) + + useEffect(() => { + if (checkEmailBlur) { + handleCheckEmail() + setCheckEmailBlur(false) + } + }, [checkEmailBlur]) + const onCaptchaChange = () => { HttpUtils.post({ url: POST_CAPTCHA, @@ -162,7 +209,8 @@ const CustomFormWizard = (props) => { handlePhone(data.phone) && handleUsername(data.username) && handleCaptcha(data.captchaField) && - !checkUsername + !checkUsername && + !checkEmail ) { setisValid(true) return isValid @@ -324,6 +372,7 @@ const CustomFormWizard = (props) => { formData.append("userFaxNo", JSON.stringify(userFaxNo)); formData.append("userMobileNumber", JSON.stringify(userMobileNumber)); formData.append("userAddress", JSON.stringify(userAddress)); + // formData.append("preferLocale", "en"); // if(refCode){ // formData.append("refCode", refCode); @@ -503,7 +552,7 @@ const CustomFormWizard = (props) => { captchaField: '' }), validationSchema: yup.object().shape({ - username: yup.string().min(6, displayErrorMsg('用戶名稱最少6位')).required(displayErrorMsg("請輸入用戶登入名稱")) + username: yup.string().min(6, displayErrorMsg('用戶名稱最少6位')).required(displayErrorMsg("請輸入用戶名稱")) .matches(/^[aA-zZ0-9\s]+$/, { message: displayErrorMsg("用戶名稱不包含特殊字符") }) .matches(/^\S*$/, { message: displayErrorMsg("用戶名稱不包含空格") }), password: yup.string().min(8, displayErrorMsg('請輸入最少8位密碼')).required(displayErrorMsg('請輸入密碼')) @@ -626,13 +675,13 @@ const CustomFormWizard = (props) => { 用戶登入名稱 - * + {/* * + */} { }} placeholder="用戶登入名稱" fullWidth - error={Boolean(formik.touched.username && formik.errors.username)} + error={Boolean((formik.touched.username && formik.errors.username) || checkUsername)} onBlur={formik.handleBlur} inputProps={{ onKeyDown: (e) => { @@ -1168,7 +1217,7 @@ const CustomFormWizard = (props) => { { {formik.errors.email} )} + {checkEmail && ( + + 此電郵已被注冊,請使用其他電郵 + + )} diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js index ce1c0b0..b6523a6 100644 --- a/src/utils/ApiPathConst.js +++ b/src/utils/ApiPathConst.js @@ -44,7 +44,7 @@ export const POST_CAPTCHA = apiPath+'/captcha'; //register export const POST_PUBLIC_USER_REGISTER = apiPath+'/user/register'; export const GET_USERNAME = apiPath+'/user/username'; - +export const GET_USER_EMAIL = apiPath+'/user/email'; //Public export const GET_PUBLIC_ORG_USER_LIST = apiPath+'/user/listOrg';