// material-ui import { Grid, Typography, Button } from '@mui/material'; import MainCard from "../../components/MainCard"; import * as React from "react"; import {useEffect, useState} from "react"; import * as yup from 'yup'; import { useFormik } from 'formik'; import * as FieldUtils from "../../utils/FieldUtils"; import * as HttpUtils from '../../utils/HttpUtils'; import * as UrlUtils from "../../utils/ApiPathConst"; import * as ComboData from "../../utils/ComboData"; // ==============================|| DASHBOARD - DEFAULT ||============================== // const UserInformationCard_Individual = ({formData, loadDataFun}) => { const [currentUserData, setCurrentUserData] = useState(formData); const [editMode, setEditMode] = useState(false); const [locked, setLocked] = useState(false); const formik = useFormik({ enableReinitialize:true, 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).nullable(), addressLine3: yup.string().max(255).nullable(), emailAddress: yup.string().email('請輸入電郵格式').max(255).required('請輸入電郵'), identification: yup.string().min(7,"請輸入證件號碼").required('請輸入證件號碼'), checkDigit:yup.string().max(1).required('請輸入括號內的數字或字母').nullable(), 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位數字').required('請輸入8位數字'), }), onSubmit:values=>{ console.log(values); HttpUtils.post({ url: UrlUtils.POST_IND_USER+"/"+formData.id, params: { prefix: values.prefix, enName: values.enName, chName: values.chName, idDocType: values.idDocType, mobileNumber: { countryCode: values.tel_countryCode, phoneNumber: values.phoneNumber }, identification: values.identification, checkDigit: values.checkDigit, faxNo:{ countryCode: values.fax_countryCode, faxNumber: values.faxNumber }, emailAddress:values.emailAddress, address:{ country:values.country, district:values.district, addressLine1: values.addressLine1, addressLine2: values.addressLine2, addressLine3: values.addressLine3, }, }, onSuccess: function(){ loadDataFun(); } }); } }); useEffect(() => { setCurrentUserData(formData); }, [formData]); useEffect(() => { setLocked(currentUserData.locked); }, [currentUserData]); const onEditClick = () => { setEditMode(true); }; const onVerifiedClick = () => { HttpUtils.get({ url: UrlUtils.GET_IND_USER_VERIFY+"/"+formData.id, onSuccess: function(){ loadDataFun(); } }); }; const doLock = () => { HttpUtils.get({ url: UrlUtils.GET_USER_LOCK+"/"+formData.id, onSuccess: function(){ loadDataFun(); } }); }; const doUnlock = () => { HttpUtils.get({ url: UrlUtils.GET_USER_UNLOCK+"/"+formData.id, onSuccess: function(){ loadDataFun(); } }); }; return ( Individual User Information
{/*top button*/} {editMode? <> : <> } {/*end top button*/} {FieldUtils.getTextField({ label:"Username:", valueName:"username", disabled:true, form: formik })} {FieldUtils.getTextField({ label:"English Name:", valueName:"enName", disabled:(!editMode), form: formik })} {FieldUtils.getTextField({ label:"Created Date:", valueName:"createDate", disabled:true, form: formik })} {FieldUtils.getTextField({ label:"Prefix:", valueName:"prefix", disabled:(!editMode), form: formik })} {FieldUtils.getTextField({ label:"Chinese Name:", valueName:"chName", disabled:(!editMode), form: formik })} {FieldUtils.getTextField({ label:"Last Updated:", valueName:"modifieDate", disabled:true, form: formik })} {FieldUtils.getComboField({ label:"ID Type:", valueName:"idDocType", disabled:(!editMode), dataList: ComboData.idDocType, filterOptions:(options) => options, getOptionLabel:(item) => item?typeof item==='string'?item:(item["type"]?item["type"]+"-"+item["label"]:""):"", onInputChange:(event, newValue, setInputValue)=>{ if(newValue == null){ setInputValue(""); } let _val = newValue.split("-"); if(_val[0]){ setInputValue(_val[0]); } }, onChange:(event, newValue)=>{ if(newValue == null){ formik.setFieldValue("idDocType",""); return; } formik.setFieldValue("idDocType",newValue.type); }, form: formik })} {FieldUtils.getPhoneField({ label:"Contact Tel:", valueName:{ code: "tel_countryCode", num:"phoneNumber" }, disabled:(!editMode), form: formik })} Verified: { currentUserData.verifiedBy || editMode? {FieldUtils.initField({ valueName:"verifiedStatus", disabled:true, form: formik, })} : <> {FieldUtils.initField({ valueName:"verifiedStatus", disabled:true, form: formik, })} } ID No.: {formik.values.idDocType =="HKID"? <> {FieldUtils.initField({ valueName:"identification", disabled:(!editMode), form: formik, placeholder:"證件號碼", inputProps:{ maxLength: 7, onKeyDown: (e) => { if (e.key === 'Enter') { e.preventDefault(); } }, } })} {FieldUtils.initField({ valueName:"checkDigit", disabled:(!editMode), form: formik })} : {FieldUtils.initField({ valueName:"identification", disabled:(!editMode), form: formik })} } {FieldUtils.getPhoneField({ label:"Fax No.:", valueName:{ code: "fax_countryCode", num:"faxNumber" }, disabled:(!editMode), form: formik })} {FieldUtils.getTextField({ label:"Last Login:", valueName:"lastLoginDate", disabled:true, form: formik })} {FieldUtils.getComboField({ label:"Country:", valueName:"country", dataList: ComboData.country, disabled:(!editMode), form: formik })} {FieldUtils.getTextField({ label:"Email:", valueName:"emailAddress", disabled:(!editMode), form: formik })} Status: { editMode? {FieldUtils.initField({ valueName:"status", disabled:true, form: formik, })} : <> {FieldUtils.initField({ valueName:"status", disabled:true, form: formik, })} {locked? : } } {FieldUtils.getAddressField({ label:"Address:", valueName:["addressLine1","addressLine2","addressLine3"], disabled:(!editMode), form: formik})} {FieldUtils.getComboField({ label:"District:", valueName:"district", dataList: ComboData.district, disabled:(!editMode), form: formik})}
); }; export default UserInformationCard_Individual;