Alex Cheung 1 год назад
Родитель
Сommit
18d6a38e4b
14 измененных файлов: 242 добавлений и 105 удалений
  1. +22
    -0
      src/assets/style/styles.css
  2. +5
    -5
      src/pages/Proof/Reply_Public/ApplicationDetails.js
  3. +103
    -54
      src/pages/Proof/Reply_Public/ProofForm.js
  4. +85
    -27
      src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js
  5. +1
    -1
      src/pages/PublicNotice/Details_GLD/tabTableDetail/TabTable.js
  6. +2
    -2
      src/pages/PublicNotice/Details_Public/tabTableDetail/TabTable.js
  7. +1
    -1
      src/pages/iAmSmart/AuthCallback/index.js
  8. +11
    -6
      src/pages/iAmSmart/SuccessCallback/index.js
  9. +0
    -5
      src/routes/AfterLoginRoutes.js
  10. +1
    -1
      src/routes/GLDUserRoutes.js
  11. +5
    -0
      src/routes/PublicUserRoutes.js
  12. +2
    -1
      src/translations/en.json
  13. +2
    -1
      src/translations/zh-CN.json
  14. +2
    -1
      src/translations/zh-HK.json

+ 22
- 0
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} */

+ 5
- 5
src/pages/Proof/Reply_Public/ApplicationDetails.js Просмотреть файл

@@ -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">&emsp;
{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">&emsp;
{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>


+ 103
- 54
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 }) => {
<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>


+ 85
- 27
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}) =>
</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


+ 1
- 1
src/pages/PublicNotice/Details_GLD/tabTableDetail/TabTable.js Просмотреть файл

@@ -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>


+ 2
- 2
src/pages/PublicNotice/Details_Public/tabTableDetail/TabTable.js Просмотреть файл

@@ -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>


+ 1
- 1
src/pages/iAmSmart/AuthCallback/index.js Просмотреть файл

@@ -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");


+ 11
- 6
src/pages/iAmSmart/SuccessCallback/index.js Просмотреть файл

@@ -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>


+ 0
- 5
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: <Navigate to="/dashboard" />
},
{
path: 'iamsmart/loginSucess',
element: <IAmSmart_SuccessCallback/>
},
{
path: 'verify/:verifyCode/:email',
element: <Navigate to="/dashboard" />


+ 1
- 1
src/routes/GLDUserRoutes.js Просмотреть файл

@@ -46,7 +46,7 @@ const GLDUserRoutes = {
path: '/',
children: [
{
path: 'dashboard',
path: '/dashboard',
element: <DashboardDefault />
},
{


+ 5
- 0
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: <DashboardDefault />
},
{
path: 'iamsmart/loginSucess',
element: <IAmSmart_SuccessCallback/>
},
{
path: 'setting/manageUser',
element: <ManageOrgUser />


+ 2
- 1
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.<br/>From now on, you can log in through \"iAm Smart\".",
"loginSuccessMessage3":"Continue to use e-Service",

"newPassword": "New Password",


+ 2
- 1
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":"你是我们的现有用户,已成功连结现有帐户。<br/>以后可以透过「智方便」登入。",
"loginSuccessMessage3":"继续使用e-Service",

"newPassword": "新密码",


+ 2
- 1
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":"你是我們的現有用戶,已成功連結現有帳戶。<br/>以後可以透過「智方便」登入。",
"loginSuccessMessage3":"繼續使用e-Service",

"newPassword": "新密碼",


Загрузка…
Отмена
Сохранить