diff --git a/src/assets/style/styles.css b/src/assets/style/styles.css index 07d26ce..0226765 100644 --- a/src/assets/style/styles.css +++ b/src/assets/style/styles.css @@ -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} */ \ No newline at end of file diff --git a/src/pages/Proof/Reply_Public/ApplicationDetails.js b/src/pages/Proof/Reply_Public/ApplicationDetails.js index 04aee2f..4d64ca8 100644 --- a/src/pages/Proof/Reply_Public/ApplicationDetails.js +++ b/src/pages/Proof/Reply_Public/ApplicationDetails.js @@ -231,16 +231,16 @@ const ApplicationDetailCard = ({ formData, }) => { - +   {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' })}` } @@ -254,9 +254,9 @@ const ApplicationDetailCard = ({ formData, }) => {   {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' })}` } diff --git a/src/pages/Proof/Reply_Public/ProofForm.js b/src/pages/Proof/Reply_Public/ProofForm.js index 24d47a9..9843318 100644 --- a/src/pages/Proof/Reply_Public/ProofForm.js +++ b/src/pages/Proof/Reply_Public/ProofForm.js @@ -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 }) => { - - + - + - @@ -350,12 +367,20 @@ const FormPanel = ({ formData }) => { }} /> -
@@ -320,24 +329,32 @@ const FormPanel = ({ formData }) => { }} /> -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
+ +
{ + setWarningTitle(intl.formatMessage({ id: "payDn" })) + setWarningText( + <> +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.
-
    -
  • -
  • -
+ +
{ + setWarningTitle(intl.formatMessage({ id: "payNPGO" })) + setWarningText( + <> +
    +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m. @@ -370,10 +395,9 @@ const FormPanel = ({ formData }) => { - - + - + - - - + + - + @@ -442,12 +483,20 @@ const FormPanel = ({ formData }) => { /> } -
@@ -384,16 +408,24 @@ const FormPanel = ({ formData }) => { }} /> -
    -
  • -
  • -
  • -
+ +
{ + setWarningTitle(intl.formatMessage({ id: "payOnline" })) + setWarningText( + <> +
    +
  • +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 2:00 p.m.{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 2:30 p.m.{DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}{DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}
@@ -407,24 +439,33 @@ const FormPanel = ({ formData }) => { /> } -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
+ +
{ + setWarningTitle(intl.formatMessage({ id: "payDn" })) + setWarningText( + <> +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.
-
    -
  • -
  • -
+ +
{ + setWarningTitle(intl.formatMessage({ id: "payDn" })) + setWarningText( + <> +
    +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m. @@ -589,7 +638,7 @@ const FormPanel = ({ formData }) => { }} > - + {warningTitle} {warningText} diff --git a/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js b/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js index f070ef0..5490ac5 100644 --- a/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js +++ b/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js @@ -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}) => - + - + - + - + - + - + @@ -398,7 +454,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => {isORGLoggedIn() ? <> - {isDummyLoggedIn()? + {isDummyLoggedIn() ? {FieldUtils.getCarOfField({ label: intl.formatMessage({ id: 'careOf' }) + ":", @@ -407,7 +463,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => // disabled: true })} - : + : {FieldUtils.getCarOfField({ label: intl.formatMessage({ id: 'careOf' }) + ":", @@ -416,7 +472,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => // disabled: true })} - + } @@ -430,7 +486,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => } { - isDummyLoggedIn()? + isDummyLoggedIn() ? {FieldUtils.getTextField({ label: intl.formatMessage({ id: 'userContactEmail' }), @@ -438,7 +494,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => form: formik })} - : + : {FieldUtils.getTextArea({ label: intl.formatMessage({ id: 'extraMark' }) + ":", @@ -460,7 +516,7 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => { + 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} > @@ -509,10 +565,12 @@ const PublicNoticeApplyForm = ({ loadedData, _selections , gazetteIssueList}) => }} > - + {warningTitle} - {warningText} + + {warningText} + diff --git a/src/routes/AfterLoginRoutes.js b/src/routes/AfterLoginRoutes.js index 9dccfb9..ff949ba 100644 --- a/src/routes/AfterLoginRoutes.js +++ b/src/routes/AfterLoginRoutes.js @@ -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: }, - { - path: 'iamsmart/loginSucess', - element: - }, { path: 'verify/:verifyCode/:email', element: diff --git a/src/routes/GLDUserRoutes.js b/src/routes/GLDUserRoutes.js index 725f817..12bc095 100644 --- a/src/routes/GLDUserRoutes.js +++ b/src/routes/GLDUserRoutes.js @@ -46,7 +46,7 @@ const GLDUserRoutes = { path: '/', children: [ { - path: 'dashboard', + path: '/dashboard', element: }, { diff --git a/src/routes/PublicUserRoutes.js b/src/routes/PublicUserRoutes.js index c707e3a..6ea64e0 100644 --- a/src/routes/PublicUserRoutes.js +++ b/src/routes/PublicUserRoutes.js @@ -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: }, + { + path: 'iamsmart/loginSucess', + element: + }, { path: 'setting/manageUser', element: diff --git a/src/translations/en.json b/src/translations/en.json index e581473..151592b 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -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.
From now on, you can log in through \"iAm Smart\".", "loginSuccessMessage3":"Continue to use e-Service", "newPassword": "New Password", diff --git a/src/translations/zh-CN.json b/src/translations/zh-CN.json index 461bf76..98b8257 100644 --- a/src/translations/zh-CN.json +++ b/src/translations/zh-CN.json @@ -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":"你是我们的现有用户,已成功连结现有帐户。
以后可以透过「智方便」登入。", "loginSuccessMessage3":"继续使用e-Service", "newPassword": "新密码", diff --git a/src/translations/zh-HK.json b/src/translations/zh-HK.json index d3de464..37b68dd 100644 --- a/src/translations/zh-HK.json +++ b/src/translations/zh-HK.json @@ -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":"你是我們的現有用戶,已成功連結現有帳戶。
以後可以透過「智方便」登入。", "loginSuccessMessage3":"繼續使用e-Service", "newPassword": "新密碼",
+ +
{ + setWarningTitle(intl.formatMessage({ id: "payOnline" })) + setWarningText( + <> +
    +
  • +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
+
{DateUtils.dateFormat(closeDate, dft)} 2:00 p.m. {DateUtils.dateFormat(closeDate, dft)} 2:30 p.m.
+
{ + setWarningTitle(intl.formatMessage({ id: "payDn" })) + setWarningText( + <> +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
+
{DateUtils.dateFormat(closingDateOff, dft)} 5:00 p.m.{DateUtils.dateFormat(closeDate, dft)} 12:30 p.m.{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.
+
{ + setWarningTitle(intl.formatMessage({ id: "payNPGO" })) + setWarningText( + <> +
    +
  • +
  • +
+ + ); + setIsWarningPopUp(true); + }}>
+
{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m. {DateUtils.dateFormat(closeDate, dft)} 12:30 p.m.