// material-ui import { Grid, TextField, Typography, Button, Autocomplete, Stack, FormHelperText, OutlinedInput } from '@mui/material'; import MainCard from "../../components/MainCard"; import * as React from "react"; import {useForm} from "react-hook-form"; import {useEffect, useState} from "react"; import * as yup from 'yup'; //import Checkbox from "@mui/material/Checkbox"; //import LoadingComponent from "../extra-pages/LoadingComponent"; import { useFormik,FormikProvider } from 'formik'; import * as DateUtils from '../../utils/DateUtils'; import * as HttpUtils from '../../utils/HttpUtils'; import * as UrlUtils from "../../utils/ApiPathConst"; import * as ComboData from "../../utils/ComboData"; //import axios from 'axios'; //import {useParams} from "react-router-dom"; // ==============================|| DASHBOARD - DEFAULT ||============================== // const UserInformationCard_Individual = ({userData,userFile, loadDataFun}) => { const [currentUserData, setCurrentUserData] = useState(userData); const [editMode, setEditMode] = useState(false); const [locked, setLocked] = useState(false); const [idDocType, setIdDocType] = useState(null); const [district, setDistrict] = useState(null); const [country, setCountry] = useState(ComboData.country[0]); const from = useForm({defaultValues: userData}); const {register,reset, handleSubmit} = from; const formik = useFormik({ initialValues:(currentUserData), validationSchema:yup.object().shape({ enName: yup.string().max(255).required('請輸入英文姓名'), chName: yup.string().max(255).required('請輸入中文姓名'), addressLine1: yup.string().max(255).required('請輸入第一行地址'), addressLine2: yup.string().max(255).required('請輸入第二行地址'), addressLine3: yup.string().max(255).required('請輸入第三行地址'), emailAddress: yup.string().email('請輸入電郵格式').max(255).required('請輸入電郵'), identification: yup.string().min(7,"請輸入證件號碼").required('請輸入證件號碼'), checkDigit:yup.string().max(1).required('請輸入括號內的數字或字母'), idDocType: yup.string().max(255).required('請輸入證件類別'), tel_countryCode: yup.string().min(3,'請輸入3位數字').required('請輸入國際區號'), fax_countryCode: yup.string().min(3,'請輸入3位數字'), phoneNumber: yup.string().min(8,'請輸入8位數字').required('請輸入聯絡電話'), faxNumber: yup.string().min(8,'請輸入8位數字'), }), }); useEffect(() => { let createDate = DateUtils.datetimeStr(userData.created); let modifiedBy = DateUtils.datetimeStr(userData.modified)+", "+userData.modifiedBy; userData["createDate"] = createDate; userData["modifieDate"] = modifiedBy; userData["verifiedStatus"] = userData.verifiedBy? DateUtils.datetimeStr(userData.verifiedDate)+", "+userData.verifiedByName: "Not verify yet"; userData["country"] = userData.address?.country; userData["district"] = userData.address?.district; userData["addressLine1"] = userData.address?.addressLine1; userData["addressLine2"] = userData.address?.addressLine2; userData["addressLine3"] = userData.address?.addressLine3; userData["phoneNumber"] = userData.contactTel?.phoneNumber; userData["tel_countryCode"] = userData.contactTel?.countryCode; userData["faxNumber"] = userData.faxNo?.faxNumber; userData["fax_countryCode"] = userData.faxNo?.countryCode; userData["lastLoginDate"] = userData.lastLogin?DateUtils.datetimeStr(userData.lastLogin):""; setIdDocType(userData.idDocType); setDistrict(userData.district); setCountry(userData.country); setCurrentUserData(userData); }, [userData]); useEffect(() => { reset(currentUserData); setLocked(currentUserData.locked); }, [currentUserData]); function onSubmitForm(_data) { HttpUtils.post({ url: UrlUtils.POST_IND_USER+"/"+userData.id, params: { prefix: _data.prefix, enName: formik.values.enName, chName: _data.chName, idDocType: idDocType, contactTel: { countryCode: _data.tel_countryCode, phoneNumber: _data.phoneNumber }, identification: formik.values.identification, checkDigit: formik.values.checkDigit, faxNo:{ countryCode: _data.fax_countryCode, faxNumber: _data.faxNumber }, emailAddress:_data.emailAddress, address:{ country:country, district:district, addressLine1: _data.addressLine1, addressLine2: _data.addressLine2, addressLine3: _data.addressLine3, }, }, onSuccess: function(){ loadDataFun(); } }); } const onEditClick = () => { setEditMode(true); }; const onVerifiedClick = () => { HttpUtils.get({ url: UrlUtils.GET_IND_USER_VERIFY+"/"+userData.id, onSuccess: function(){ loadDataFun(); } }); }; const doLock = () => { HttpUtils.get({ url: UrlUtils.GET_USER_LOCK+"/"+userData.id, onSuccess: function(){ loadDataFun(); } }); }; const doUnlock = () => { HttpUtils.get({ url: UrlUtils.GET_USER_UNLOCK+"/"+userData.id, onSuccess: function(){ loadDataFun(); } }); }; const downloadFile = ()=>{ HttpUtils.fileDownload({ fileId: userFile.fileId, skey: userFile.skey, filename: userFile.filename }); }; return ( Information
{/*top button*/} {editMode? <> : <> } {/*end top button*/} Username: English Name: { if (e.key === 'Enter') { e.preventDefault(); } }, }} /> {formik.touched.enName && formik.errors.enName && ( {formik.errors.enName} )} Created Date: Prefix: Chinese Name: { if (e.key === 'Enter') { e.preventDefault(); } }, }} /> {formik.touched.chName && formik.errors.chName && ( {formik.errors.chName} )} Last Updated: ID Type: { setIdDocType(newValue); }} sx={{"& .MuiInputBase-root": { height: "41px" },"#idDocType":{padding: "0px 0px 0px 0px"}, "& .MuiAutocomplete-endAdornment": { top: "auto" },}} renderInput={(params) => } /> {formik.touched.idDocType && ( idDocType===null? 請輸入證件類別 :'' )} Contact Tel: Verified: { currentUserData.verifiedBy || editMode? : <> } ID No.: {idDocType =="HKID"? <> { if (e.key === 'Enter') { e.preventDefault(); } }, }} /> {formik.touched.identification && formik.errors.identification && ( {formik.errors.identification} )} {formik.touched.checkDigit && formik.errors.checkDigit && ( {formik.errors.checkDigit} )} { if (e.key === 'Enter') { e.preventDefault(); } }, }} fullWidth error={Boolean(formik.touched.checkDigit && formik.errors.checkDigit)} onBlur={formik.handleBlur} /> : { if (e.key === 'Enter') { e.preventDefault(); } }, }} /> {formik.touched.identification && formik.errors.identification && ( {formik.errors.identification} )} } Fax No.: Last Login: Country: { setCountry(newValue); }} sx={{"& .MuiInputBase-root": { height: "41px" },"#country":{padding: "0px 0px 0px 0px"}, "& .MuiAutocomplete-endAdornment": { top: "auto" },}} renderInput={(params) => } /> Email: Status: { editMode? : <> {locked? : } } Address: District: { setDistrict(newValue); }} disabled={!editMode} sx={{"& .MuiInputBase-root": { height: "41px" },"#district":{padding: "0px 0px 0px 0px"}, "& .MuiAutocomplete-endAdornment": { top: "auto" },}} renderInput={(params) => } />
); }; export default UserInformationCard_Individual;