| @@ -48,4 +48,26 @@ img | |||
| img:hover{-webkit-filter:none;} | |||
| a:link { | |||
| color: #1890ff; | |||
| background-color: transparent; | |||
| text-decoration: none; | |||
| } | |||
| a:visited { | |||
| color: #1890ff; | |||
| background-color: transparent; | |||
| text-decoration: none; | |||
| } | |||
| a:hover { | |||
| color: #1890ff; | |||
| background-color: transparent; | |||
| text-decoration: none; | |||
| } | |||
| a:active { | |||
| color: #1890ff; | |||
| background-color: transparent; | |||
| text-decoration: none; | |||
| } | |||
| /* iframe#webpack-dev-server-client-overlay{display:none!important} */ | |||
| @@ -231,16 +231,16 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
| <Grid item xs={12} md={12} lg={12} | |||
| sx={{ display: 'flex', alignItems: 'center' }}> | |||
| <Typography variant="h5" display="inline"> | |||
| <FormattedMessage id="commentDeadline" />: | |||
| </Typography> | |||
| </Grid> | |||
| <Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}> | |||
| <Typography variant="h5">  | |||
| {locale === 'en' ? | |||
| `${intl.formatMessage({ id: 'before' })} ${DateUtils.datetimeStr(data?.reviseDeadline)} ` | |||
| `${intl.formatMessage({ id: 'before' })} ${DateUtils.dateFormat(data?.reviseDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} ` | |||
| : | |||
| `${DateUtils.datetimeStr_Cht(data?.reviseDeadline)} ${intl.formatMessage({ id: 'before' })}` | |||
| `${DateUtils.dateFormat(data?.reviseDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} ${intl.formatMessage({ id: 'before' })}` | |||
| } | |||
| </Typography> | |||
| </Grid> | |||
| @@ -254,9 +254,9 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
| <Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}> | |||
| <Typography variant="h5">  | |||
| {locale === 'en' ? | |||
| `${intl.formatMessage({ id: 'before' })} ${DateUtils.datetimeStr(data?.proofPaymentDeadline)} ` | |||
| `${intl.formatMessage({ id: 'before' })} ${DateUtils.dateFormat(data?.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} ` | |||
| : | |||
| `${DateUtils.datetimeStr_Cht(data?.proofPaymentDeadline)} ${intl.formatMessage({ id: 'before' })}` | |||
| `${DateUtils.dateFormat(data?.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")} ${intl.formatMessage({ id: 'before' })}` | |||
| } | |||
| </Typography> | |||
| </Grid> | |||
| @@ -43,6 +43,7 @@ const FormPanel = ({ formData }) => { | |||
| const [actionValue, setActionValue] = React.useState(true); | |||
| const [warningTitle, setWarningTitle] = React.useState(""); | |||
| const [isWarningPopUp, setIsWarningPopUp] = React.useState(false); | |||
| const [warningText, setWarningText] = React.useState(""); | |||
| @@ -72,13 +73,14 @@ const FormPanel = ({ formData }) => { | |||
| vaild: yup.string().max(255, intl.formatMessage({ id: 'requireLoginPassword' })).required(intl.formatMessage({ id: 'requireLoginPassword' })), | |||
| }), | |||
| onSubmit: values => { | |||
| if (isOverTime()&&!isDummyLoggedIn()) { | |||
| if (isOverTime() && !isDummyLoggedIn()) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'MSG.proofOutOfTime' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| } | |||
| let pm = paymentMethod; | |||
| if (!isDummyLoggedIn()){ | |||
| if (!isDummyLoggedIn()) { | |||
| if (pm == "demandNote") { | |||
| pm = isOverDnReviseDeadline() ? "" : pm; | |||
| } else if (pm == "office") { | |||
| @@ -86,12 +88,14 @@ const FormPanel = ({ formData }) => { | |||
| } | |||
| } | |||
| if (actionValue == false && isOverReviseDeadline() &&!isDummyLoggedIn()) { | |||
| if (actionValue == false && isOverReviseDeadline() && !isDummyLoggedIn()) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'MSG.overReviseDeadline' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| } | |||
| else if (formData.creditor == false && pm == "") { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'MSG.plzSelectPaymentMethod' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| @@ -99,6 +103,7 @@ const FormPanel = ({ formData }) => { | |||
| if (!actionValue) { | |||
| if (!attachments || attachments.length <= 0) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'requireFile' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| @@ -116,6 +121,7 @@ const FormPanel = ({ formData }) => { | |||
| files: attachments ? attachments : [], | |||
| onSuccess: function (responseData) { | |||
| if (responseData.msg) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: responseData.msg })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| @@ -128,11 +134,13 @@ const FormPanel = ({ formData }) => { | |||
| } | |||
| }, | |||
| onFail: function (response) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'actionFail' })); | |||
| setIsWarningPopUp(true); | |||
| console.log(response); | |||
| }, | |||
| onError: function (error) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'actionFail' })); | |||
| setIsWarningPopUp(true); | |||
| console.log(error); | |||
| @@ -145,12 +153,14 @@ const FormPanel = ({ formData }) => { | |||
| let file = event.target.files[0]; | |||
| if (file) { | |||
| if (!file.name.toLowerCase().substr(file.name.length - 4).includes(".pdf")) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'requireValidFileWithPdfFormat' })); | |||
| setIsWarningPopUp(true); | |||
| document.getElementById("uploadFileBtn").value = ""; | |||
| return; | |||
| } | |||
| if (file.size >= (10 * 1024 * 1034)) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'fileSizeWarning' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| @@ -306,10 +316,9 @@ const FormPanel = ({ formData }) => { | |||
| <table style={tabelStyle}> | |||
| <tr style={tabelStyle}> | |||
| <th style={tabelStyle} width="50" align="left"></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMeans" /></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMethodMeans" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="paymentMeans" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||
| </tr> | |||
| <tr> | |||
| <td style={tabelStyle}> | |||
| @@ -320,24 +329,32 @@ const FormPanel = ({ formData }) => { | |||
| }} | |||
| /> | |||
| </td> | |||
| <td style={tabelStyle}><FormattedMessage id="payDn" /></td> | |||
| <td style={tabelStyle}> | |||
| <ul> | |||
| <li><FormattedMessage id="atm" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| <li><FormattedMessage id="eBank" /></li> | |||
| <li><FormattedMessage id="phoneBank" /></li> | |||
| <li><FormattedMessage id="eCheque" /></li> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="hkpo" /></li> | |||
| <li><FormattedMessage id="store" /></li> | |||
| <li><FormattedMessage id="post" /></li> | |||
| </ul> | |||
| <FormattedMessage id="payDn" /> | |||
| <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="atm" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| <li><FormattedMessage id="eBank" /></li> | |||
| <li><FormattedMessage id="phoneBank" /></li> | |||
| <li><FormattedMessage id="eCheque" /></li> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="hkpo" /></li> | |||
| <li><FormattedMessage id="store" /></li> | |||
| <li><FormattedMessage id="post" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.</td> | |||
| <td style={tabelStyle}> | |||
| <FormattedMessage id="payDnRemark" values={{ | |||
| date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:30 p.m." | |||
| date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:00 p.m." | |||
| }} /> | |||
| </td> | |||
| </tr> | |||
| @@ -350,12 +367,20 @@ const FormPanel = ({ formData }) => { | |||
| }} | |||
| /> | |||
| </td> | |||
| <td style={tabelStyle}><FormattedMessage id="payNPGO" /></td> | |||
| <td style={tabelStyle}> | |||
| <ul> | |||
| <li><FormattedMessage id="cheque" /></li> | |||
| <li><FormattedMessage id="cash" /></li> | |||
| </ul> | |||
| <FormattedMessage id="payNPGO" /> | |||
| <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payNPGO" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="cheque" /></li> | |||
| <li><FormattedMessage id="cash" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m.</td> | |||
| <td style={tabelStyle}> | |||
| @@ -370,10 +395,9 @@ const FormPanel = ({ formData }) => { | |||
| <table style={tabelStyle}> | |||
| <tr style={tabelStyle}> | |||
| <th style={tabelStyle} width="50" align="left"></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMeans" /></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMethodMeans" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="paymentMeans" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||
| </tr> | |||
| <tr> | |||
| <td style={tabelStyle}> | |||
| @@ -384,16 +408,24 @@ const FormPanel = ({ formData }) => { | |||
| }} | |||
| /> | |||
| </td> | |||
| <td style={tabelStyle}><FormattedMessage id="payOnline" /></td> | |||
| <td style={tabelStyle}> | |||
| <ul> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="card" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| </ul> | |||
| <FormattedMessage id="payOnline" /> | |||
| <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payOnline" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="card" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 2:00 p.m.</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 2:30 p.m.</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td> | |||
| </tr> | |||
| <tr> | |||
| <td style={tabelStyle}> | |||
| @@ -407,24 +439,33 @@ const FormPanel = ({ formData }) => { | |||
| /> | |||
| } | |||
| </td> | |||
| <td style={tabelStyle}><FormattedMessage id="payDn" /></td> | |||
| <td style={tabelStyle}> | |||
| <ul> | |||
| <li><FormattedMessage id="atm" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| <li><FormattedMessage id="eBank" /></li> | |||
| <li><FormattedMessage id="phoneBank" /></li> | |||
| <li><FormattedMessage id="eCheque" /></li> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="hkpo" /></li> | |||
| <li><FormattedMessage id="store" /></li> | |||
| <li><FormattedMessage id="post" /></li> | |||
| </ul> | |||
| <FormattedMessage id="payDn" /> | |||
| <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="atm" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| <li><FormattedMessage id="eBank" /></li> | |||
| <li><FormattedMessage id="phoneBank" /></li> | |||
| <li><FormattedMessage id="eCheque" /></li> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="hkpo" /></li> | |||
| <li><FormattedMessage id="store" /></li> | |||
| <li><FormattedMessage id="post" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.</td> | |||
| <td style={tabelStyle}> | |||
| <FormattedMessage id="payDnRemark" values={{ | |||
| date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:30 p.m." | |||
| date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:00 p.m." | |||
| }} /> | |||
| </td> | |||
| </tr> | |||
| @@ -442,12 +483,20 @@ const FormPanel = ({ formData }) => { | |||
| /> | |||
| } | |||
| </td> | |||
| <td style={tabelStyle}><FormattedMessage id="payNPGO" /></td> | |||
| <td style={tabelStyle}> | |||
| <ul> | |||
| <li><FormattedMessage id="cheque" /></li> | |||
| <li><FormattedMessage id="cash" /></li> | |||
| </ul> | |||
| <FormattedMessage id="payNPGO" /> | |||
| <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="cheque" /></li> | |||
| <li><FormattedMessage id="cash" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m.</td> | |||
| <td style={tabelStyle}> | |||
| @@ -589,7 +638,7 @@ const FormPanel = ({ formData }) => { | |||
| }} | |||
| > | |||
| <DialogTitle> | |||
| <FormattedMessage id="attention" /> | |||
| {warningTitle} | |||
| </DialogTitle> | |||
| <DialogContent style={{ display: 'flex', }}> | |||
| <Typography variant="h3" style={{ padding: '16px' }}>{warningText}</Typography> | |||
| @@ -32,14 +32,15 @@ const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingCo | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => { | |||
| const PublicNoticeApplyForm = ({ loadedData, _selections, gazetteIssueList }) => { | |||
| const [isWarningPopUp, setIsWarningPopUp] = useState(false); | |||
| const [warningTitle, setWarningTitle] = useState(""); | |||
| const [warningText, setWarningText] = useState(""); | |||
| const [attachment, setAttachment] = useState({}); | |||
| const [selections, setsSelections] = useState(<></>); | |||
| const intl = useIntl(); | |||
| const { locale } = intl; | |||
| const dft = locale === 'en' ?"DD MMM YYYY":"YYYY年MM月DD日"; | |||
| const dft = locale === 'en' ? "DD MMM YYYY" : "YYYY年MM月DD日"; | |||
| const [val, setVal] = useState({}); | |||
| const [reloadPage, setReloadPage] = useState(false); | |||
| @@ -62,8 +63,8 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| } | |||
| const tabelStyle = { | |||
| border: "2px solid gray", | |||
| borderCollapse: "collapse", | |||
| border: "2px solid gray", | |||
| borderCollapse: "collapse", | |||
| padding: "right" | |||
| } | |||
| @@ -78,13 +79,13 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| useEffect(() => { | |||
| for (var i = 0; i < gazetteIssueList?.length; i++) { | |||
| let data = gazetteIssueList[i]; | |||
| if(data.id == issueId){ | |||
| if (data.id == issueId) { | |||
| setCloseDate(data.closingDate) | |||
| setClosingDateOff(data.closingDateOff) | |||
| break; | |||
| } | |||
| } | |||
| }, [issueId]); | |||
| // function displayErrorMsg(errorMsg) { | |||
| @@ -109,37 +110,41 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| } else { | |||
| return false | |||
| } | |||
| }else{ | |||
| } else { | |||
| return true | |||
| } | |||
| }), | |||
| careOfDum: yup.string().max(60, getMaxErrStr(60)).test('checkCareOfDumFormat',intl.formatMessage({ id: 'requireCareOf' }), function (value) { | |||
| careOfDum: yup.string().max(60, getMaxErrStr(60)).test('checkCareOfDumFormat', intl.formatMessage({ id: 'requireCareOf' }), function (value) { | |||
| if (isDummyLoggedIn()) { | |||
| if (value !== undefined) { | |||
| return true | |||
| } else { | |||
| return false | |||
| } | |||
| }else{ | |||
| } else { | |||
| return true | |||
| } | |||
| }), | |||
| }), | |||
| onSubmit: values => { | |||
| if (!values.issueId) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'requireTargetVol' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| } | |||
| if (!attachment) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'requireFile' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| } else if (!attachment.size || attachment.size <= 0) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'requireValidFile' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| } else if (attachment.size >= (10 * 1024 * 1034)) { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'fileSizeWarning' })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| @@ -150,6 +155,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| onSuccess: (responData) => { | |||
| if (responData.haveOverdue) { | |||
| setVal(values); | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'dnOverdueWarning' })); | |||
| setIsWarningPopUp(true); | |||
| } else { | |||
| @@ -167,11 +173,11 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| const apply = (values) => { | |||
| setSubmitting(true) | |||
| let careOf = values.careOf ?? ""; | |||
| let remarks = values.remarks ??""; | |||
| if (isDummyLoggedIn()){ | |||
| let remarks = values.remarks ?? ""; | |||
| if (isDummyLoggedIn()) { | |||
| careOf = values.careOfDum | |||
| } | |||
| if (isDummyLoggedIn()){ | |||
| if (isDummyLoggedIn()) { | |||
| remarks = values.emailAddress | |||
| } | |||
| HttpUtils.postWithFiles({ | |||
| @@ -196,6 +202,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| if (responData.msg) { | |||
| setVal({}); | |||
| setReloadPage(true); | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: responData.msg })); | |||
| setIsWarningPopUp(true); | |||
| return; | |||
| @@ -218,6 +225,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| ) { | |||
| setAttachment(event.target.files[0]); | |||
| } else { | |||
| setWarningTitle(intl.formatMessage({ id: "attention" })) | |||
| setWarningText(intl.formatMessage({ id: 'requireValidFileWithFormat' })); | |||
| setIsWarningPopUp(true); | |||
| setAttachment({}); | |||
| @@ -318,25 +326,73 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| </Grid> | |||
| </Grid> | |||
| <Grid item xs={12} alignItems={"center"} sx={{ p: 2}}> | |||
| <Grid item xs={12} alignItems={"center"} sx={{ p: 2 }}> | |||
| <table style={tabelStyle}> | |||
| <tr style={tabelStyle}> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMeans"/></th> | |||
| <th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMeans" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||
| <th style={tabelStyle} width="300" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||
| </tr> | |||
| <tr> | |||
| <td style={tabelStyle}><FormattedMessage id="payOnline" /></td> | |||
| <td style={tabelStyle}> | |||
| <FormattedMessage id="payOnline" /> | |||
| <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payOnline" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="card" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 2:00 p.m.</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 2:30 p.m.</td> | |||
| </tr> | |||
| <tr> | |||
| <td style={tabelStyle}><FormattedMessage id="payDn" /></td> | |||
| <td style={tabelStyle}><FormattedMessage id="payDn" /> | |||
| <br /><a href="#payDnDetails" onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="atm" /></li> | |||
| <li><FormattedMessage id="pps" /></li> | |||
| <li><FormattedMessage id="eBank" /></li> | |||
| <li><FormattedMessage id="phoneBank" /></li> | |||
| <li><FormattedMessage id="eCheque" /></li> | |||
| <li><FormattedMessage id="fps" /></li> | |||
| <li><FormattedMessage id="hkpo" /></li> | |||
| <li><FormattedMessage id="store" /></li> | |||
| <li><FormattedMessage id="post" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closingDateOff, dft)} 5:00 p.m.</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:30 p.m.</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.</td> | |||
| </tr> | |||
| <tr> | |||
| <td style={tabelStyle}><FormattedMessage id="payNPGO" /></td> | |||
| <td style={tabelStyle}><FormattedMessage id="payNPGO" /> | |||
| <br /><a href="#payNPGODetails" onClick={() => { | |||
| setWarningTitle(intl.formatMessage({ id: "payNPGO" })) | |||
| setWarningText( | |||
| <><FormattedMessage id="paymentMethodMeans" /> | |||
| <ul> | |||
| <li><FormattedMessage id="cheque" /></li> | |||
| <li><FormattedMessage id="cash" /></li> | |||
| </ul> | |||
| </> | |||
| ); | |||
| setIsWarningPopUp(true); | |||
| }}><FormattedMessage id="viewDetail" /></a> | |||
| </td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.</td> | |||
| <td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:30 p.m.</td> | |||
| </tr> | |||
| @@ -398,7 +454,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| </Grid> | |||
| {isORGLoggedIn() ? | |||
| <> | |||
| {isDummyLoggedIn()? | |||
| {isDummyLoggedIn() ? | |||
| <Grid item xs={12} md={12} lg={12}> | |||
| {FieldUtils.getCarOfField({ | |||
| label: intl.formatMessage({ id: 'careOf' }) + ":", | |||
| @@ -407,7 +463,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| // disabled: true | |||
| })} | |||
| </Grid> | |||
| : | |||
| : | |||
| <Grid item xs={12} md={12} lg={12}> | |||
| {FieldUtils.getCarOfField({ | |||
| label: intl.formatMessage({ id: 'careOf' }) + ":", | |||
| @@ -416,7 +472,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| // disabled: true | |||
| })} | |||
| </Grid> | |||
| } | |||
| <Grid item xs={12} md={12} lg={12} sx={{ mb: 3 }}> | |||
| <Typography display="inline" variant="subtitle1" sx={{ color: 'primary.primary' }}> | |||
| @@ -430,7 +486,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| } | |||
| { | |||
| isDummyLoggedIn()? | |||
| isDummyLoggedIn() ? | |||
| <Grid item xs={12} md={12} lg={12}> | |||
| {FieldUtils.getTextField({ | |||
| label: intl.formatMessage({ id: 'userContactEmail' }), | |||
| @@ -438,7 +494,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| form: formik | |||
| })} | |||
| </Grid> | |||
| : | |||
| : | |||
| <Grid item xs={12} md={12} lg={12}> | |||
| {FieldUtils.getTextArea({ | |||
| label: intl.formatMessage({ id: 'extraMark' }) + ":", | |||
| @@ -460,7 +516,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| <Stack direction="row"> | |||
| <Checkbox | |||
| checked={tickAccept} | |||
| onChange={(event)=>{ | |||
| onChange={(event) => { | |||
| setTickAccept(event.target.checked) | |||
| }} | |||
| name="tickAccept" | |||
| @@ -480,7 +536,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| aria-label={intl.formatMessage({ id: 'applyPublicNotice' })} | |||
| variant="contained" | |||
| type="submit" | |||
| disabled = {!tickAccept} | |||
| disabled={!tickAccept} | |||
| > | |||
| <FormattedMessage id="applyPublicNotice" /> | |||
| </Button> | |||
| @@ -509,10 +565,12 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => | |||
| }} | |||
| > | |||
| <DialogTitle> | |||
| <FormattedMessage id="attention" /> | |||
| {warningTitle} | |||
| </DialogTitle> | |||
| <DialogContent style={{ display: 'flex', }}> | |||
| <Typography variant="h3" style={{ padding: '16px' }}>{warningText}</Typography> | |||
| <Typography variant="h3" style={{ padding: '16px' }}> | |||
| {warningText} | |||
| </Typography> | |||
| </DialogContent> | |||
| <DialogActions> | |||
| <Button | |||
| @@ -43,7 +43,7 @@ const PublicNotice = ({ appId, proofCount, paymentCount, statusHistoryCount, set | |||
| <Box sx={{ borderBottom: 1, borderColor: 'divider', overflowX: 'auto' }}> | |||
| <TabList onChange={handleChange} aria-label="lab API tabs example"> | |||
| <Tab renderActiveOnly={false} label={"Proof (" + proofCount + ") "} value="1" /> | |||
| <Tab renderActiveOnly={false} label={"Payment (" + paymentCount + ") "} value="2" /> | |||
| <Tab renderActiveOnly={false} label={"Online Payment (" + paymentCount + ") "} value="2" /> | |||
| <Tab renderActiveOnly={false} label={"Status History (" + statusHistoryCount + ") "} value="3" /> | |||
| </TabList> | |||
| </Box> | |||
| @@ -50,8 +50,8 @@ const PublicNotice = ({ appId, proofCount, paymentCount, setProofCount, setPayme | |||
| intl.formatMessage({ id: 'proofRecord' }) + " (" + proofCount + ") "} value="1" | |||
| /> | |||
| <Tab | |||
| aria-label={intl.formatMessage({ id: 'paymentHistory' })} | |||
| label={intl.formatMessage({ id: 'paymentHistory' }) + " (" + paymentCount + ") "} value="2" | |||
| aria-label={intl.formatMessage({ id: 'onlinePaymentHistory' })} | |||
| label={intl.formatMessage({ id: 'onlinePaymentHistory' }) + " (" + paymentCount + ") "} value="2" | |||
| /> | |||
| </TabList> | |||
| </Box> | |||
| @@ -67,7 +67,7 @@ const Index = () => { | |||
| // } | |||
| // } | |||
| dispatch(handleLogin(data)) | |||
| navigate('iamsmart/loginSucess', {state:{loginMethod:"iAmSmart"}}); | |||
| navigate('/iamsmart/loginSucess', {state:{loginMethod:"iAmSmart"}}); | |||
| }, | |||
| onFail: (response)=>{ | |||
| console.log("onFail"); | |||
| @@ -6,11 +6,12 @@ import { | |||
| Button | |||
| } from '@mui/material'; | |||
| import * as React from "react"; | |||
| import { FormattedMessage } from "react-intl"; | |||
| import { FormattedMessage, useIntl } from "react-intl"; | |||
| import { useLocation } from "react-router-dom"; | |||
| import { useNavigate } from "react-router-dom"; | |||
| import Loadable from 'components/Loadable'; | |||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||
| import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; | |||
| import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
| const BackgroundHead = { | |||
| @@ -26,16 +27,17 @@ const BackgroundHead = { | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const Index = () => { | |||
| const intl = useIntl(); | |||
| const location = useLocation(); | |||
| const navigate = useNavigate() | |||
| const [onReady, setOnReady] = React.useState(false); | |||
| React.useEffect(() => { | |||
| if("iAmSmart"==location.state.loginMethod){ | |||
| if ("iAmSmart" == location?.state?.loginMethod) { | |||
| setOnReady(true); | |||
| }else{ | |||
| } else { | |||
| navigate('/dashboard'); | |||
| } | |||
| } | |||
| }, []); | |||
| return ( | |||
| @@ -60,9 +62,10 @@ const Index = () => { | |||
| <Grid item xs={12} md={12} > | |||
| <Grid container justifyContent="flex-start" alignItems="center" > | |||
| <center> | |||
| <CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} /> | |||
| <Grid item xs={12} md={12} > | |||
| <Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||
| <FormattedMessage id="loginSuccessMessage2" /> | |||
| <div dangerouslySetInnerHTML={{ __html: intl.formatMessage({ id: 'loginSuccessMessage2' }) }} /> | |||
| </Typography> | |||
| </Grid> | |||
| </center> | |||
| @@ -77,7 +80,9 @@ const Index = () => { | |||
| variant="contained" | |||
| size="large" | |||
| sx={{ m: 4 }} | |||
| onClick={() => { navigate("/dashboard"); }} | |||
| onClick={() => { | |||
| navigate("/dashboard"); | |||
| }} | |||
| > | |||
| <FormattedMessage id="loginSuccessMessage3" /> | |||
| </Button> | |||
| @@ -5,7 +5,6 @@ import Loadable from 'components/Loadable'; | |||
| import { Navigate } from "react-router"; | |||
| const MainLayout = Loadable(lazy(() => import('layout/MainLayout'))); | |||
| const IAmSmart_SuccessCallback = Loadable(lazy(() => import('pages/iAmSmart/SuccessCallback'))); | |||
| // ==============================|| MAIN ROUTING ||============================== // | |||
| @@ -41,10 +40,6 @@ const AfterLoginRoutes = { | |||
| path: 'iamsmart/loginFail', | |||
| element: <Navigate to="/dashboard" /> | |||
| }, | |||
| { | |||
| path: 'iamsmart/loginSucess', | |||
| element: <IAmSmart_SuccessCallback/> | |||
| }, | |||
| { | |||
| path: 'verify/:verifyCode/:email', | |||
| element: <Navigate to="/dashboard" /> | |||
| @@ -46,7 +46,7 @@ const GLDUserRoutes = { | |||
| path: '/', | |||
| children: [ | |||
| { | |||
| path: 'dashboard', | |||
| path: '/dashboard', | |||
| element: <DashboardDefault /> | |||
| }, | |||
| { | |||
| @@ -29,6 +29,7 @@ const OrganizationDetailPage = Loadable(lazy(() => import('pages/Organization/De | |||
| const Msg_Details = Loadable(lazy(() => import('pages/Message/Details'))); | |||
| const Msg_Search = Loadable(lazy(() => import('pages/Message/Search'))); | |||
| const AnnouncementSearch = Loadable(lazy(() => import('pages/Announcement/Search_Public'))); | |||
| const IAmSmart_SuccessCallback = Loadable(lazy(() => import('pages/iAmSmart/SuccessCallback'))); | |||
| // ==============================|| MAIN ROUTING ||============================== // | |||
| @@ -48,6 +49,10 @@ const PublicDashboard = { | |||
| path: 'dashboard', | |||
| element: <DashboardDefault /> | |||
| }, | |||
| { | |||
| path: 'iamsmart/loginSucess', | |||
| element: <IAmSmart_SuccessCallback/> | |||
| }, | |||
| { | |||
| path: 'setting/manageUser', | |||
| element: <ManageOrgUser /> | |||
| @@ -6,6 +6,7 @@ | |||
| "iamsmartLink": "https://www.iamsmart.gov.hk/en/", | |||
| "dateStrFormat": "YYYY-MM-DD", | |||
| "datetimeStrFormat": "YYYY-MM-DD HH:mm:ss", | |||
| "paymentMethodDatetimeStrFormat": "YYYY-MM-DD h:mm a", | |||
| "PNSPS": "PNSPS", | |||
| "HKSARGOV": "HKSAR Government", | |||
| @@ -155,7 +156,7 @@ | |||
| "loginErrorMessage6":"User account not found", | |||
| "loginSuccessMessage1":"User account not found", | |||
| "loginSuccessMessage2":"You are our existing user and successfully linked your existing account. From now on, you can log in through \"iAm Smart\".", | |||
| "loginSuccessMessage2":"You are our existing user and successfully linked your existing account.<br/>From now on, you can log in through \"iAm Smart\".", | |||
| "loginSuccessMessage3":"Continue to use e-Service", | |||
| "newPassword": "New Password", | |||
| @@ -6,6 +6,7 @@ | |||
| "iamsmartLink": "https://www.iamsmart.gov.hk/sc/", | |||
| "dateStrFormat": "YYYY年MM月DD日", | |||
| "datetimeStrFormat": "YYYY年MM月DD日 HH:mm:ss", | |||
| "paymentMethodDatetimeStrFormat": "YYYY年MM月DD日 h:mm a", | |||
| "PNSPS": "公共启事提交及缴费系统", | |||
| "HKSARGOV": "香港特别行政区政府", | |||
| @@ -182,7 +183,7 @@ | |||
| "loginErrorMessage6":"找不到用户帐户", | |||
| "loginSuccessMessage1":"成功连结现有帐户", | |||
| "loginSuccessMessage2":"你是我们的现有用户,已成功连结现有帐户,以后可以透过「智方便」登入。", | |||
| "loginSuccessMessage2":"你是我们的现有用户,已成功连结现有帐户。<br/>以后可以透过「智方便」登入。", | |||
| "loginSuccessMessage3":"继续使用e-Service", | |||
| "newPassword": "新密码", | |||
| @@ -6,6 +6,7 @@ | |||
| "iamsmartLink": "https://www.iamsmart.gov.hk/tc/", | |||
| "dateStrFormat": "YYYY年MM月DD日", | |||
| "datetimeStrFormat": "YYYY年MM月DD日 HH:mm:ss", | |||
| "paymentMethodDatetimeStrFormat": "YYYY年MM月DD日 h:mm a", | |||
| "PNSPS": "公共啟事提交及繳費系統", | |||
| "HKSARGOV": "香港特別行政區政府", | |||
| @@ -182,7 +183,7 @@ | |||
| "loginErrorMessage6":"找不到用戶帳戶", | |||
| "loginSuccessMessage1":"成功連結現有帳戶", | |||
| "loginSuccessMessage2":"你是我們的現有用戶,已成功連結現有帳戶,以後可以透過「智方便」登入。", | |||
| "loginSuccessMessage2":"你是我們的現有用戶,已成功連結現有帳戶。<br/>以後可以透過「智方便」登入。", | |||
| "loginSuccessMessage3":"繼續使用e-Service", | |||
| "newPassword": "新密碼", | |||