| @@ -363,6 +363,7 @@ const OrganizationCard = ({ userData, loadDataFun, id, setEditModeFun }) => { | |||
| valueName: "country", | |||
| disabled: (!editMode && !createMode), | |||
| dataList: ComboData.country, | |||
| getOptionLabel: (option) => intl.formatMessage({ id: option.type? option.type : "hongKong" }), | |||
| form: formik | |||
| })} | |||
| </Grid> | |||
| @@ -372,7 +373,8 @@ const OrganizationCard = ({ userData, loadDataFun, id, setEditModeFun }) => { | |||
| label: FieldUtils.notNullFieldLabel("District:"), | |||
| valueName: "district", | |||
| disabled: (!editMode && !createMode), | |||
| dataList: ComboData.district(intl), | |||
| dataList: ComboData.district, | |||
| getOptionLabel: (option) => intl.formatMessage({ id: option.type? option.type : "hongKong" }), | |||
| form: formik | |||
| })} | |||
| </Grid> | |||
| @@ -13,6 +13,8 @@ const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/Loa | |||
| import ForwardIcon from '@mui/icons-material/Forward'; | |||
| import { useNavigate, useParams } from 'react-router-dom'; | |||
| import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
| import {getObjectByValue} from "../../../utils/CommonFunction"; | |||
| import * as ComboData from "../../../utils/ComboData"; | |||
| const BackgroundHead = { | |||
| backgroundImage: `url(${titleBackgroundImg})`, | |||
| @@ -46,8 +48,8 @@ const OrganizationDetailPage = () => { | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_ORG_PATH + "/" + params.id, | |||
| onSuccess: function (response) { | |||
| response.data["country"] = response.data.addressTemp?.country; | |||
| response.data["district"] = response.data.addressTemp?.district; | |||
| response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.address?.country); | |||
| response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.address?.district); | |||
| response.data["addressLine1"] = response.data.addressTemp?.addressLine1; | |||
| response.data["addressLine2"] = response.data.addressTemp?.addressLine2; | |||
| response.data["addressLine3"] = response.data.addressTemp?.addressLine3; | |||
| @@ -236,7 +236,7 @@ const OrganizationCard_loadFromUser = ({ userData, userId }) => { | |||
| {FieldUtils.getComboField({ | |||
| label: FieldUtils.notNullFieldLabel("District:"), | |||
| valueName: "district", | |||
| dataList: ComboData.district(intl), | |||
| dataList: ComboData.district, | |||
| form: formik | |||
| })} | |||
| </Grid> | |||
| @@ -160,7 +160,7 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => { | |||
| </Grid> | |||
| <Grid item xs={12} md={12}> | |||
| {FieldUtils.getPhoneField({ | |||
| label: "聯繫電話:", | |||
| label: intl.formatMessage({id: 'userContactNumber'}) + ":", | |||
| disabled: true, | |||
| valueName: { | |||
| code: "tel_countryCode", | |||
| @@ -171,7 +171,7 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => { | |||
| </Grid> | |||
| <Grid item xs={12} md={12}> | |||
| {FieldUtils.getPhoneField({ | |||
| label: "聯繫傳真:", | |||
| label: intl.formatMessage({id: 'contactFaxNumber'}) + ":", | |||
| disabled: true, | |||
| valueName: { | |||
| code: "fax_countryCode", | |||
| @@ -75,8 +75,8 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| }, | |||
| emailAddress: values.emailAddress, | |||
| address: { | |||
| country: values.country, | |||
| district: values.district, | |||
| country: values.country.key, | |||
| district: values.district.key, | |||
| addressLine1: values.addressLine1, | |||
| addressLine2: values.addressLine2, | |||
| addressLine3: values.addressLine3, | |||
| @@ -411,6 +411,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| {FieldUtils.getComboField({ | |||
| label: "Country:", | |||
| valueName: "country", | |||
| getOptionLabel: (option) => intl.formatMessage({ id: option.type? option.type : "hongKong" }), | |||
| dataList: ComboData.country, | |||
| disabled: (!editMode), | |||
| form: formik | |||
| @@ -498,7 +499,8 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| {FieldUtils.getComboField({ | |||
| label: "District:", | |||
| valueName: "district", | |||
| dataList: ComboData.district(intl), | |||
| dataList: ComboData.district, | |||
| getOptionLabel: (option) => intl.formatMessage({ id: option.type? option.type : "islandCombo" }), | |||
| disabled: (!editMode), | |||
| form: formik | |||
| })} | |||
| @@ -22,6 +22,8 @@ const BackgroundHead = { | |||
| } | |||
| import Loadable from 'components/Loadable'; | |||
| import { useNavigate } from "react-router-dom"; | |||
| import {getObjectByValue} from "../../../utils/CommonFunction"; | |||
| import * as ComboData from "../../../utils/ComboData"; | |||
| const LoadingComponent = Loadable(React.lazy(() => import('../../extra-pages/LoadingComponent'))); | |||
| const UserInformationCard = Loadable(React.lazy(() => import('./UserInformationCard_Individual'))); | |||
| @@ -54,8 +56,8 @@ const UserMaintainPage_Individual = () => { | |||
| response.data["modifieDate"] = modifiedBy; | |||
| response.data["verifiedStatus"] = response.data.verifiedBy ? DateUtils.datetimeStr(response.data.verifiedDate) + ", " + response.data.verifiedByName : "Not verified"; | |||
| response.data["country"] = response.data.address?.country; | |||
| response.data["district"] = response.data.address?.district; | |||
| response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.address?.country); | |||
| response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.address?.district); | |||
| response.data["addressLine1"] = response.data.address?.addressLine1; | |||
| response.data["addressLine2"] = response.data.address?.addressLine2; | |||
| response.data["addressLine3"] = response.data.address?.addressLine3; | |||
| @@ -525,6 +525,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
| label: "Country:", | |||
| valueName: "country", | |||
| dataList: ComboData.country, | |||
| getOptionLabel: (option) => intl.formatMessage({ id: option.type? option.type : "hongKong" }), | |||
| disabled: true, | |||
| form: formik | |||
| })} | |||
| @@ -564,7 +565,8 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
| {FieldUtils.getComboField({ | |||
| label: "District:", | |||
| valueName: "district", | |||
| dataList: ComboData.district(intl), | |||
| dataList: ComboData.district, | |||
| getOptionLabel: (option) => intl.formatMessage({ id: option.type? option.type : "islandCombo" }), | |||
| disabled: true, | |||
| form: formik | |||
| })} | |||
| @@ -89,7 +89,7 @@ const BusCustomFormWizard = (props) => { | |||
| }; | |||
| const [selectedAddress4, setSelectedAddress4] = useState(null); | |||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country(intl)[0]); | |||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country[0]); | |||
| const [termsAndConAccept, setTermsAndConAccept] = useState(false); | |||
| const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); | |||
| const [isValid, setisValid] = useState(false); | |||
| @@ -101,8 +101,8 @@ const BusCustomFormWizard = (props) => { | |||
| const [checkEmail, setCheckEmail] = useState(false) | |||
| const [checkEmailBlur, setCheckEmailBlur] = useState(false) | |||
| const address4ComboList = ComboData.district(intl); | |||
| const address5ComboList = ComboData.country(intl); | |||
| const address4ComboList = ComboData.district; | |||
| const address5ComboList = ComboData.country; | |||
| const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | |||
| + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | |||
| + "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評" | |||
| @@ -546,7 +546,7 @@ const BusCustomFormWizard = (props) => { | |||
| const handleReset = (resetForm) => { | |||
| resetForm(); | |||
| setSelectedAddress4("") | |||
| setSelectedAddress5(ComboData.country(intl)[0]) | |||
| setSelectedAddress5(ComboData.country[0]) | |||
| setCheckCountry(false) | |||
| setFileList([]) | |||
| setFileListData([]) | |||
| @@ -972,6 +972,7 @@ const BusCustomFormWizard = (props) => { | |||
| value={selectedAddress4} | |||
| options={address4ComboList} | |||
| disabled={checkCountry} | |||
| getOptionLabel={(option) => option.type? intl.formatMessage({ id: option.type }) : ""} | |||
| onChange={(event, newValue) => { | |||
| setSelectedAddress4(newValue); | |||
| }} | |||
| @@ -986,10 +987,11 @@ const BusCustomFormWizard = (props) => { | |||
| id="address5-combo" | |||
| value={selectedAddress5} | |||
| options={address5ComboList} | |||
| getOptionLabel={(option) => option.type? intl.formatMessage({ id: option.type }) : ""} | |||
| onChange={(event, newValue) => { | |||
| if (newValue !== null) { | |||
| setSelectedAddress5(newValue); | |||
| if (newValue === intl.formatMessage({id: 'hongKong'})) { | |||
| if (newValue.type === 'hongKong') { | |||
| setCheckCountry(false) | |||
| } else { | |||
| setSelectedAddress4(""); | |||
| @@ -1534,7 +1536,7 @@ const BusCustomFormWizard = (props) => { | |||
| {formik.values.address3} | |||
| </Typography> | |||
| : null} | |||
| {selectedAddress5 === "香港" ? | |||
| {selectedAddress5.label === "hongKong" ? | |||
| <Stack direction="row"> | |||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address4-signup"> | |||
| <FormattedMessage id="region"/>: | |||
| @@ -1549,7 +1551,7 @@ const BusCustomFormWizard = (props) => { | |||
| <FormattedMessage id="regionOrCountry"/>: | |||
| </Typography> | |||
| <Typography variant="pnspsFormHeader"> | |||
| {selectedAddress5} | |||
| {intl.formatMessage({id: selectedAddress5.label})} | |||
| </Typography> | |||
| </Stack> | |||
| </Stack> | |||
| @@ -89,7 +89,8 @@ const CustomFormWizard = (props) => { | |||
| const [selectedIdDocInputType, setSelectedIdDocInputType] = useState(""); | |||
| // const [selectedIdDocLabel, setSelectedIdDocLabel] = useState(null); | |||
| const [selectedAddress4, setSelectedAddress4] = useState(null); | |||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country(intl)[0]); | |||
| console.log(ComboData.country[0]); | |||
| const [selectedAddress5, setSelectedAddress5] = useState(ComboData.country[0]); | |||
| const [termsAndConAccept, setTermsAndConAccept] = useState(false); | |||
| const [termsAndConNotAccept, setTermsAndConNotAccept] = useState(false); | |||
| const [isValid, setisValid] = useState(false); | |||
| @@ -102,8 +103,6 @@ const CustomFormWizard = (props) => { | |||
| const [checkEmailBlur, setCheckEmailBlur] = useState(false) | |||
| const idDocTypeComboList = ComboData.idDocType; | |||
| const address4ComboList = ComboData.district(intl); | |||
| const address5ComboList = ComboData.country(intl); | |||
| const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | |||
| + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | |||
| + "內資料有關的理由或原因,而導致出現申索、損失或損害,本署概不負責。\n使用者須自行評" | |||
| @@ -315,8 +314,8 @@ const CustomFormWizard = (props) => { | |||
| const _onSubmit = () => { | |||
| setLoding(true); | |||
| values.idDocType = selectedIdDocType.type | |||
| values.address4 = selectedAddress4 | |||
| values.address5 = selectedAddress5 | |||
| values.address4 = selectedAddress4.key | |||
| values.address5 = selectedAddress5.key | |||
| const userAddress = { | |||
| "addressLine1": "", | |||
| "addressLine2": "", | |||
| @@ -638,7 +637,7 @@ const CustomFormWizard = (props) => { | |||
| const handleReset = (resetForm) => { | |||
| resetForm(); | |||
| setSelectedAddress4("") | |||
| setSelectedAddress5(ComboData.country(intl)[0]) | |||
| setSelectedAddress5(ComboData.country[0]) | |||
| setCheckCountry(false) | |||
| setSelectedIdDocType({}) | |||
| setSelectedIdDocInputType(""); | |||
| @@ -1176,8 +1175,9 @@ const CustomFormWizard = (props) => { | |||
| disablePortal | |||
| id="address4-combo" | |||
| value={selectedAddress4} | |||
| options={address4ComboList} | |||
| options={ComboData.district} | |||
| disabled={checkCountry} | |||
| getOptionLabel={(option) => option.type? intl.formatMessage({ id: option.type }) : ""} | |||
| onChange={(event, newValue) => { | |||
| setSelectedAddress4(newValue); | |||
| }} | |||
| @@ -1191,11 +1191,12 @@ const CustomFormWizard = (props) => { | |||
| disablePortal | |||
| id="address5-combo" | |||
| value={selectedAddress5} | |||
| options={address5ComboList} | |||
| options={ComboData.country} | |||
| getOptionLabel={(option) => option.type? intl.formatMessage({ id: option.type }) : ""} | |||
| onChange={(event, newValue) => { | |||
| if (newValue !== null) { | |||
| setSelectedAddress5(newValue); | |||
| if (newValue === intl.formatMessage({id: 'hongKong'})) { | |||
| if (newValue.type === 'hongKong') { | |||
| setCheckCountry(false) | |||
| } else { | |||
| setSelectedAddress4(""); | |||
| @@ -1707,7 +1708,7 @@ const CustomFormWizard = (props) => { | |||
| {formik.values.address3} | |||
| </Typography> | |||
| : null} | |||
| {selectedAddress5 == ("香港") ? | |||
| {selectedAddress5.label === "hongKong" ? | |||
| <Stack direction="row"> | |||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address4-signup"> | |||
| <FormattedMessage id="region"/>: | |||
| @@ -1719,7 +1720,9 @@ const CustomFormWizard = (props) => { | |||
| <Typography variant="pnspsFormHeader" color={theme.palette.grey[600]} id="preview-address5-signup"> | |||
| <FormattedMessage id="regionOrCountry"/>: | |||
| </Typography> | |||
| <Typography variant="pnspsFormHeader">{selectedAddress5}</Typography> | |||
| <Typography variant="pnspsFormHeader"> | |||
| {intl.formatMessage({id: selectedAddress5.label})} | |||
| </Typography> | |||
| </Stack> | |||
| </Stack> | |||
| </Stack> | |||
| @@ -64,7 +64,7 @@ const CustomFormWizard = (props) => { | |||
| const [checkEmail, setCheckEmail] = useState(false) | |||
| const [checkEmailBlur, setCheckEmailBlur] = useState(false) | |||
| const address4ComboList = ComboData.district(intl); | |||
| const address4ComboList = ComboData.district; | |||
| const address5ComboList = ComboData.country; | |||
| const termsAndCon = "此網址由香港特別行政區政府物流服務署製作及管理。本署會盡力確保網址上的資料無誤,\n" | |||
| + "但有絕對酌情權隨時刪除、暫停登載或編輯各項資料而無須給予任何理由。\n由於任何與網址" | |||
| @@ -522,7 +522,7 @@ const CustomFormWizard = (props) => { | |||
| onChange={(event, newValue) => { | |||
| if (newValue !== null) { | |||
| setSelectedAddress5(newValue); | |||
| if (newValue === intl.formatMessage({id: 'hongKong'})) { | |||
| if (newValue.type === 'hongKong') { | |||
| setCheckCountry(false) | |||
| } else { | |||
| setSelectedAddress4(""); | |||
| @@ -75,6 +75,7 @@ | |||
| "emailUsed": "This email has been registered, please use another email", | |||
| "emailSent": "A verification email will be sent to your email address. Please follow the instructions to complete the verification and log in to the system.", | |||
| "userContactNumber": "Contact Number", | |||
| "contactFaxNumber": "Contact Fax", | |||
| "requiredValidNumber": "Please enter a valid contact number", | |||
| "requireContactNumber": "Please enter your contact number", | |||
| "require3Number": "Please enter an 3-digit number", | |||
| @@ -75,6 +75,7 @@ | |||
| "emailUsed": "此电邮已被注册,请使用其他电邮", | |||
| "emailSent": "验证电邮将发送到你的电邮地址,请依指示完成验证及登入系统。", | |||
| "userContactNumber": "联络电话", | |||
| "contactFaxNumber": "联络传真", | |||
| "requiredValidNumber": "请输入有效联络电话", | |||
| "requireContactNumber": "请输入联络电话", | |||
| "require3Number": "请输入3位数字", | |||
| @@ -75,6 +75,7 @@ | |||
| "emailUsed": "此電郵已被注冊,請使用其他電郵", | |||
| "emailSent": "驗證電郵將發送到你的電郵地址,請依指示完成驗證及登入系統。", | |||
| "userContactNumber": "聯絡電話", | |||
| "contactFaxNumber": "聯絡傳真", | |||
| "requiredValidNumber": "請輸入有效聯絡電話", | |||
| "requireContactNumber": "請輸入聯絡電話", | |||
| "require3Number": "請輸入3位數字", | |||
| @@ -1,25 +1,39 @@ | |||
| export const idDocType = [ | |||
| { key: 1, label: 'passport', type: 'passport' }, | |||
| { key: 2, label: 'HKIDcard', type: 'HKID' }, | |||
| { key: 3, label: 'mainlandIDCard', type: 'CNID' }, | |||
| { key: 4, label: 'proCert', type: 'otherCert' } | |||
| { id:1, key: 1, label: 'passport', type: 'passport' }, | |||
| { id:2, key: 2, label: 'HKIDcard', type: 'HKID' }, | |||
| { id:3, key: 3, label: 'mainlandIDCard', type: 'CNID' }, | |||
| { id:4, key: 4, label: 'proCert', type: 'otherCert' } | |||
| ]; | |||
| export const district = (intl) =>{ | |||
| return [ | |||
| 'islandCombo', 'kwaiTsingCombo', 'northCombo', 'saiKungCombo', | |||
| 'shaTinCombo', 'taiPoCombo', 'tsuenWanCombo', 'tuenMunCombo', | |||
| 'yuenLongCombo', 'kowloonCityCombo', 'kwunTongCombo', 'shamShuiPoCombo', | |||
| 'wongTaiSinCombo', 'yauTsimMongCombo', 'centralAndWesternCombo', 'easternCombo', | |||
| 'southernCombo', 'wanChaiCombo', 'lantauIslandCombo', 'lammaIslandCombo', | |||
| 'pengChauCombo' | |||
| ].map((district) => intl.formatMessage({id: district})); | |||
| }; | |||
| export const country = (intl) => { | |||
| return ["hongKong", "mainland", "macau"] | |||
| .map((country) => intl.formatMessage({ id: country })); | |||
| }; | |||
| export const district = [ | |||
| { id: 1, key: 1, label: '離島區', type: 'islandCombo' }, | |||
| { id: 2, key: 2, label: '葵青區', type: 'kwaiTsingCombo' }, | |||
| { id: 3, key: 3, label: '北區', type: 'northCombo' }, | |||
| { id: 4, key: 4, label: '西貢區', type: 'saiKungCombo' }, | |||
| { id: 5, key: 5, label: '沙田區', type: 'shaTinCombo' }, | |||
| { id: 6, key: 6, label: '大埔區', type: 'taiPoCombo' }, | |||
| { id: 7, key: 7, label: '荃灣區', type: 'tsuenWanCombo' }, | |||
| { id: 8, key: 8, label: '屯門區', type: 'tuenMunCombo' }, | |||
| { id: 9, key: 9, label: '元朗區', type: 'yuenLongCombo' }, | |||
| { id: 10, key: 10, label: '九龍城區', type: 'kowloonCityCombo' }, | |||
| { id: 11, key: 11, label: '觀塘區', type: 'kwunTongCombo' }, | |||
| { id: 12, key: 12, label: '深水埗區', type: 'shamShuiPoCombo' }, | |||
| { id: 13, key: 13, label: '黃大仙區', type: 'wongTaiSinCombo' }, | |||
| { id: 14, key: 14, label: '油尖旺區', type: 'yauTsimMongCombo' }, | |||
| { id: 15, key: 15, label: '中西區', type: 'centralAndWesternCombo' }, | |||
| { id: 16, key: 16, label: '東區', type: 'easternCombo' }, | |||
| { id: 17, key: 17, label: '南區', type: 'southernCombo' }, | |||
| { id: 18, key: 18, label: '灣仔區', type: 'wanChaiCombo' }, | |||
| { id: 19, key: 19, label: '大嶼山區', type: 'lantauIslandCombo' }, | |||
| { id: 20, key: 20, label: '南丫島區', type: 'lammaIslandCombo' }, | |||
| { id: 21, key: 21, label: '坪洲區', type: 'pengChauCombo' } | |||
| ]; | |||
| export const country = [ | |||
| { id:1, key: 1, label: '香港', type: 'hongKong' }, | |||
| { id:2, key: 2, label: '內地', type: 'mainland' }, | |||
| { id:3, key: 3, label: '澳門', type: 'macau' } | |||
| ]; | |||
| export const accountFilter = [{ id: 1, key: 1, label: 'Active', type: 'active' }, { id: 2, key: 2, label: 'Locked', type: 'locked' }, { id: 3, key: 3, label: 'Not verified', type: 'notVerified' }]; | |||
| @@ -26,6 +26,15 @@ export function getObjectById(list, id) { | |||
| return obj === undefined || Object.keys(obj).length <= 0 ? null : obj | |||
| } | |||
| export function getObjectByValue(list, valueName, value) { | |||
| const obj = list.find((element) => { | |||
| return element[valueName] === parseInt(value); | |||
| }); | |||
| console.log(obj); | |||
| return obj === undefined || Object.keys(obj).length <= 0 ? null : obj | |||
| } | |||
| export function removeObjectWithId(arr, id) { | |||
| const arrCopy = Array.from(arr); | |||
| const objWithIdIndex = arrCopy.findIndex((obj) => obj.id === id); | |||
| @@ -33,6 +42,15 @@ export function removeObjectWithId(arr, id) { | |||
| return arrCopy; | |||
| } | |||
| export function getComboValueByLabel(comboList, input) { | |||
| for (let i = 0; i < comboList.length; i++) { | |||
| if (comboList[i].label === input) { | |||
| return comboList[i]; | |||
| } | |||
| } | |||
| return input === undefined ? null : input; | |||
| } | |||
| export function getDateString(queryDateArray) { | |||
| return ( | |||
| queryDateArray[0] | |||