// material-ui import { Grid, TextField, Typography, Button, OutlinedInput, FormHelperText, Autocomplete } 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 DateUtils from '../../utils/DateUtils'; import * as HttpUtils from '../../utils/HttpUtils'; import * as UrlUtils from "../../utils/ApiPathConst"; import * as ComboData from "../../utils/ComboData"; import { useFormik,FormikProvider } from 'formik'; import * as yup from 'yup'; // ==============================|| DASHBOARD - DEFAULT ||============================== // const UserInformationCard_Organization = ({userData, loadDataFun}) => { const [currentUserData, setCurrentUserData] = useState(userData); const [editMode, setEditMode] = useState(false); const [locked, setLocked] = useState(false); 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('請輸入英文姓名'), enCompanyName: yup.string().max(255).required('請輸入英文名稱'), chName: yup.string().max(255).required('請輸入中文姓名'), address1: yup.string().max(255).required('請輸入第一行地址'), address2: yup.string().max(255).required('請輸入第二行地址'), address3: yup.string().max(255).required('請輸入第三行地址'), email: yup.string().email('請輸入電郵格式').max(255).required('請輸入電郵'), emailConfirm: yup.string().email('請輸入電郵格式').max(255).required('請輸入電郵').oneOf([yup.ref('email'), null], '請輸入相同電郵'), phoneCountryCode: yup.string().min(3,'請輸入3位數字').required('請輸入國際區號'), faxCountryCode: yup.string().min(3,'請輸入3位數字'), phone: yup.string().min(8,'請輸入8位數字').required('請輸入聯絡電話'), fax: yup.string().min(8,'請輸入8位數字'), brExpiryDate: yup.string().min(8,'請輸入商業登記證有效日期'), brNo: yup.string().min(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["lastLoginDate"] = userData.lastLogin?DateUtils.datetimeStr(lastLoginDate):""; userData["country"] = userData.addressBus?.country; userData["district"] = userData.addressBus?.district; userData["addressLine1"] = userData.addressBus?.addressLine1; userData["addressLine2"] = userData.addressBus?.addressLine2; userData["addressLine3"] = userData.addressBus?.addressLine3; userData["phoneNumber"] = userData.contactTel?.phoneNumber; userData["tel_countryCode"] = userData.contactTel?.countryCode; userData["faxNumber"] = userData.faxNo?.faxNumber; userData["fax_countryCode"] = userData.faxNo?.countryCode; userData["brExpiryDate"] = userData.brExpiryDate?DateUtils.convertToDate(brExpiryDate):""; 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: { chName: _data.chName, enName: _data.enName, contactTel: { countryCode: _data.tel_countryCode, phoneNumber: _data.phoneNumber }, faxNo: { countryCode: _data.fax_countryCode, faxNumber: _data.faxNumber }, addressBus: { country: country, district: district, addressLine1: _data.addressLine1, addressLine2: _data.addressLine2, addressLine3: _data.addressLine3, }, identification: _data.identification, emailBus:_data.emailBus, contactPerson: _data.contactPerson, enCompanyName: _data.enCompanyName, chCompanyName: _data.chCompanyName, brNo: _data.brNo, brExpiryDate: formik.values.brExpiryDate, }, onSuccess: function(){ loadDataFun(); } }); } const onEditClick = () => { setEditMode(true); }; const createOrgClick = () => { window.open("/org/fromUser/"+userData.id, "_blank", "noreferrer"); }; 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(); } }); }; return ( Information
{/*top button*/} {editMode? <> : <> } {/*end top button*/} Username: English Name: Created Date: Chinese Name: Contact Tel: Last Updated: Organization: {/* */} Email: Verified: { currentUserData.verifiedBy || editMode? : <> } Last Login: Status: { editMode? : <> {locked? : } } Organization Org.Name (English): Org.Name (Chinese): BR No.: Contact Person: Fax No.: BR Expiry Date.: { if (e.key === 'Enter') { e.preventDefault(); } }, }} /> {formik.touched.brExpiryDate && formik.errors.brExpiryDate && ( {formik.errors.brExpiryDate} )} Address : District: { setDistrict(newValue); }} disabled={!editMode} sx={{"& .MuiInputBase-root": { height: "41px" },"#district":{padding: "0px 0px 0px 0px"}, "& .MuiAutocomplete-endAdornment": { top: "auto" },}} renderInput={(params) => } /> Country: { setCountry(newValue); }} sx={{"& .MuiInputBase-root": { height: "41px" },"#country":{padding: "0px 0px 0px 0px"}, "& .MuiAutocomplete-endAdornment": { top: "auto" },}} renderInput={(params) => } />
); }; export default UserInformationCard_Organization;