diff --git a/src/pages/authentication/auth-forms/CustomFormWizard.js b/src/pages/authentication/auth-forms/CustomFormWizard.js
index 79d08d8..bebbd05 100644
--- a/src/pages/authentication/auth-forms/CustomFormWizard.js
+++ b/src/pages/authentication/auth-forms/CustomFormWizard.js
@@ -39,6 +39,8 @@ import { EyeInvisibleOutlined, EyeOutlined } from '@ant-design/icons';
import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';
import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';
import { Link } from 'react-router-dom';
+
+import * as ComboData from "../../../utils/ComboData";
// ============================|| FIREBASE - REGISTER ||============================ //
const CustomFormWizard = (props) => {
@@ -68,16 +70,14 @@ const CustomFormWizard = (props) => {
const [selectedIdDocType, setSelectedIdDocType] = useState(null);
const [selectedAddress4, setSelectedAddress4] = useState(null);
- const [selectedAddress5, setSelectedAddress5] = useState("香港");
+ const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country[0]);
const [termsAndConAccept, setTermsAndConAccept] = useState(false);
const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false);
const [isValid, setisValid] = useState(false);
- const idDocTypeComboList = ["passport","HKID","CNID","BR","otherCert"];
- const address4ComboList =
- ["北區","長洲區","大埔區","大嶼山區","東區","觀塘區","黃大仙區","九龍城區","葵青區","南區","南丫島區",
- "坪洲區","荃灣區","沙田區","深水埗區","屯門區","灣仔區","西貢區","油尖旺區","元朗區","中西區"];
- const address5ComboList = ["香港","內地","澳門"];
+ const idDocTypeComboList = ComboData.idDocType;
+ const address4ComboList = ComboData.district;
+ const address5ComboList = ComboData.country;
const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n"
+ "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址"
+ "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評"
diff --git a/src/pages/pnspsUserDetailPage_Individual/UserInformationCard_Individual.js b/src/pages/pnspsUserDetailPage_Individual/UserInformationCard_Individual.js
index fe35a9b..11ac6cc 100644
--- a/src/pages/pnspsUserDetailPage_Individual/UserInformationCard_Individual.js
+++ b/src/pages/pnspsUserDetailPage_Individual/UserInformationCard_Individual.js
@@ -1,16 +1,20 @@
// material-ui
import {
- Grid, TextField, Typography, Button
+ 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";
@@ -24,28 +28,60 @@ const UserInformationCard_Individual = ({userData,userFile, loadDataFun}) => {
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.verified? "Not verify yet":"Verified";
+ 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["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;
+
+ setIdDocType(userData.idDocType);
+ setDistrict(userData.district);
+ setCountry(userData.country);
setCurrentUserData(userData);
}, [userData]);
@@ -56,29 +92,31 @@ const UserInformationCard_Individual = ({userData,userFile, loadDataFun}) => {
}, [currentUserData]);
- function onSubmitForm(_formData) {
+ function onSubmitForm() {
HttpUtils.post({
url: UrlUtils.POST_IND_USER+"/"+userData.id,
params: {
- prefix: _formData.prefix,
- enName: _formData.enName,
- chName: _formData.chName,
- idDocType: _formData.idDocType,
+ prefix: formik.values.prefix,
+ enName: formik.values.enName,
+ chName: formik.values.chName,
+ idDocType: idDocType,
contactTel: {
- countryCode: _formData.tel_countryCode,
- phoneNumber: _formData.phoneNumber
+ countryCode: formik.values.tel_countryCode,
+ phoneNumber: formik.values.phoneNumber
},
- identification: _formData.identification,
+ identification: formik.values.identification,
+ checkDigit: formik.values.checkDigit,
faxNo:{
- countryCode: _formData.fax_countryCode,
- faxNumber: _formData.faxNumber
+ countryCode: formik.values.fax_countryCode,
+ faxNumber: formik.values.faxNumber
},
- emailAddress:_formData.emailAddress,
+ emailAddress:formik.values.emailAddress,
address:{
- country:_formData.country,
- addressLine1: _formData.addressLine1,
- addressLine2: _formData.addressLine2,
- addressLine3: _formData.addressLine3,
+ country:country,
+ district:district,
+ addressLine1: formik.values.addressLine1,
+ addressLine2: formik.values.addressLine2,
+ addressLine3: formik.values.addressLine3,
},
},
onSuccess: function(){
@@ -93,7 +131,7 @@ const UserInformationCard_Individual = ({userData,userFile, loadDataFun}) => {
const onVerifiedClick = () => {
HttpUtils.get({
- url: UrlUtils.GET_IND_USER_VERIFY+"/"+id,
+ url: UrlUtils.GET_IND_USER_VERIFY+"/"+userData.id,
onSuccess: function(){
loadDataFun();
}
@@ -135,7 +173,66 @@ const UserInformationCard_Individual = ({userData,userFile, loadDataFun}) => {
Information
+
+
);
};
diff --git a/src/pages/pnspsUserDetailPage_Individual/index.js b/src/pages/pnspsUserDetailPage_Individual/index.js
index ccf4567..e2927bd 100644
--- a/src/pages/pnspsUserDetailPage_Individual/index.js
+++ b/src/pages/pnspsUserDetailPage_Individual/index.js
@@ -29,6 +29,9 @@ const UserMaintainPage_Individual = () => {
HttpUtils.get({
url: `${UrlUtils.GET_IND_USER_PATH}/${params.id}`,
onSuccess: function(response){
+ response.data["address"] = JSON.parse(response.data["address"]);
+ response.data["contactTel"] = JSON.parse(response.data["contactTel"]);
+ response.data["faxNo"] = JSON.parse(response.data["faxNo"]);
setUserData(response.data);
setUserFile(response.userFile)
}
diff --git a/src/pages/pnspsUserDetailPage_Organization/UserInformationCard_Organization.js b/src/pages/pnspsUserDetailPage_Organization/UserInformationCard_Organization.js
index e3ba146..5ea7a8f 100644
--- a/src/pages/pnspsUserDetailPage_Organization/UserInformationCard_Organization.js
+++ b/src/pages/pnspsUserDetailPage_Organization/UserInformationCard_Organization.js
@@ -28,13 +28,13 @@ const UserInformationCard_Organization = ({userData, loadDataFun}) => {
let modifiedBy = DateUtils.datetimeStr(userData.modified)+", "+userData.modifiedBy;
userData["createDate"] = createDate;
userData["modifieDate"] = modifiedBy;
- userData["verifiedStatus"] = userData.verified? "Not verify yet":"Verified";
+ userData["verifiedStatus"] = userData.verifiedBy? "Not verify yet":DateUtils.datetimeStr(userData.verifiedDate)+", "+userData.verifiedByName;
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["addressLine3"] = userData.address?.addressLine3;
userData["phoneNumber"] = userData.contactTel?.phoneNumber;
userData["tel_countryCode"] = userData.contactTel?.countryCode;
@@ -55,14 +55,25 @@ const UserInformationCard_Organization = ({userData, loadDataFun}) => {
HttpUtils.post({
url: UrlUtils.POST_IND_USER+"/"+userData.id,
params: {
- name: _formData.name,
- prefix: _formData.prefix,
+ chName: _formData.chName,
+ enName: _formData.enName,
contactTel: {
countryCode: _formData.tel_countryCode,
phoneNumber: _formData.phoneNumber
},
+ faxNo: {
+ countryCode: _formData.fax_countryCode,
+ faxNumber: _formData.faxNumber
+ },
+ addressBus: {
+ country: _formData.country,
+ district: _formData.district,
+ addressLine1: _formData.addressLine1,
+ addressLine2: _formData.addressLine2,
+ addressLine3: _formData.addressLine3,
+ },
identification: _formData.identification,
- emailAddress:_formData.emailAddress,
+ emailBus:_formData.emailBus,
},
onSuccess: function(){
loadDataFun();
@@ -130,14 +141,14 @@ const UserInformationCard_Organization = ({userData, loadDataFun}) => {
- Name:
+ English Name:
@@ -166,14 +177,14 @@ const UserInformationCard_Organization = ({userData, loadDataFun}) => {
- Prefix:
+ Chinese Name:
@@ -513,6 +524,23 @@ const UserInformationCard_Organization = ({userData, loadDataFun}) => {
+
+
+
+ Contact Person:
+
+
+
+
+
+
+
@@ -524,86 +552,114 @@ const UserInformationCard_Organization = ({userData, loadDataFun}) => {
-
+
- Contact Tel:
+ BR Expiry Date.:
-
+
+
-
+
+
+
+
+
+
+ Address :
+
+
+
+
+
-
-
-
+
- Email:
+ District:
-
- BR Expiry Date.:
+ Country:
-
diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js
index cab39b6..8d60ee9 100644
--- a/src/utils/ApiPathConst.js
+++ b/src/utils/ApiPathConst.js
@@ -15,7 +15,7 @@ export const GET_USER_LOCK = apiPath+'/user/lock';
export const GET_USER_UNLOCK = apiPath+'/user/unlock';
export const GET_IND_USER_PATH = apiPath+'/user/ind';
-export const GET_IND_USER_VERIFY = apiPath+'/user/ind/verify';
+export const GET_IND_USER_VERIFY = apiPath+'/user/verify';
export const POST_IND_USER = apiPath+'/user/ind';
export const GET_ORG_USER_PATH = apiPath+'/user/org';
diff --git a/src/utils/ComboData.js b/src/utils/ComboData.js
new file mode 100644
index 0000000..a3d50ed
--- /dev/null
+++ b/src/utils/ComboData.js
@@ -0,0 +1,32 @@
+import * as yup from 'yup';
+
+export const idDocType = ["passport","HKID","CNID","BR","otherCert"];
+export const district = ["北區","長洲區","大埔區","大嶼山區","東區","觀塘區","黃大仙區","九龍城區","葵青區","南區","南丫島區",
+"坪洲區","荃灣區","沙田區","深水埗區","屯門區","灣仔區","西貢區","油尖旺區","元朗區","中西區"];
+export const country = ["香港","內地","澳門"];
+
+export const validationSchema = ()=>{
+ return yup.object().shape({
+ username: yup.string().min(8,"用戶名稱最少8位").required('請輸入用戶名稱'),
+ password: yup.string().min(8,'請輸入最少8位密碼').required('請輸入密碼')
+ .matches(/^(?=.*[a-z])/, '請包括最少1個小寫字母')
+ .matches(/^(?=.*[A-Z])/, '請包括最少1個大寫字母')
+ .matches(/^(?=.*[0-9])/, '請包括最少1個數字')
+ .matches(/^(?=.*[!@#%&])/, '請包括最少1個特殊字符'),
+ confirmPassword: yup.string().min(8,'請最少輸入8位密碼').required('請確認密碼').oneOf([yup.ref('password'), null], '請輸入相同密碼'),
+ enName: 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], '請輸入相同電郵'),
+ idNo: yup.string().min(7,"請輸入證件號碼").required('請輸入證件號碼'),
+ checkDigit:yup.string().max(1).required('請輸入括號內的數字或字母'),
+ idDocType: yup.string().max(255).required('請輸入證件類別'),
+ 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位數字'),
+ });
+}
\ No newline at end of file