@@ -104,7 +104,7 @@ export default function FileList({ refType, refId, allowDelete, sx, dateHideable | |||
{ | |||
id: 'filesize', | |||
field: 'filesize', | |||
headerName: intl.formatMessage({id: 'fileName'}), | |||
headerName: intl.formatMessage({id: 'fileSize'}), | |||
width: isMdOrLg ? 'auto' : 160, | |||
flex: isMdOrLg ? 1 : undefined, | |||
valueGetter: (params) => { | |||
@@ -111,7 +111,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
</Grid> | |||
<Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:1.3, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
到 | |||
<FormattedMessage id="to" /> | |||
</Grid> | |||
<Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
@@ -23,6 +23,7 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
const params = useParams(); | |||
const intl = useIntl(); | |||
const { locale } = intl; | |||
const [data, setData] = React.useState({}); | |||
//const [proofId, setProofId] = React.useState(); | |||
@@ -132,7 +133,7 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
<Grid item xs={12} md={3} lg={3} | |||
sx={{ display: 'flex', alignItems: 'center' }}> | |||
<FormLabel><Typography variant="h5"> | |||
<FormattedMessage id="FgazetteCount"/>: | |||
<FormattedMessage id="gazetteCount"/>: | |||
</Typography></FormLabel> | |||
</Grid> | |||
@@ -163,7 +164,9 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={12} md={3} lg={3} | |||
sx={{ display: 'flex', alignItems: 'center' }}> | |||
<FormLabel><Typography variant="h5">刊出日期:</Typography></FormLabel> | |||
<FormLabel><Typography variant="h5"> | |||
<FormattedMessage id="applicationPublishDate" />: | |||
</Typography></FormLabel> | |||
</Grid> | |||
<Grid item xs={12} md={9} lg={9}> | |||
@@ -202,7 +205,9 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
<Grid item xs={12} sm={12} md={6} lg={6} sx={{mb: 1}}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={12} sm={12} md={12} lg={12} sx={{ alignItems: 'center',wordBreak: 'break-word' }}> | |||
<Typography><Typography variant="h5">請下載下列印刷稿檔案,並仔細校對:</Typography></Typography> | |||
<Typography><Typography variant="h5"> | |||
<FormattedMessage id="pleaseCheckReminder" />: | |||
</Typography></Typography> | |||
</Grid> | |||
<Grid item xs={12} sm={12} md={12} lg={12} sx={{ width:'95%', maxWidth: {xs:'70vw', sm:'72vw', md:'75vw',lg:'80vw'}}}> | |||
<FileList | |||
@@ -225,10 +230,21 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={12} md={12} lg={12} | |||
sx={{ display: 'flex', alignItems: 'center' }}> | |||
<Typography variant="h5" display="inline"><Typography variant="h5" style={{color:'red'}} display="inline">繳費及</Typography>返稿最後限期:</Typography> | |||
<Typography variant="h5" display="inline"> | |||
<Typography variant="h5" style={{color:'red'}} display="inline"> | |||
<FormattedMessage id="payAnd" /> | |||
</Typography> | |||
<FormattedMessage id="commentDeadline" />: | |||
</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}> | |||
<Typography variant="h5"> {DateUtils.datetimeStr_Cht(data.returnBeforeDate)} 前</Typography> | |||
<Typography variant="h5">  | |||
{locale === 'en' ? | |||
`${intl.formatMessage({id: 'before'})} ${DateUtils.datetimeStr(data.returnBeforeDate)} ` | |||
: | |||
`${DateUtils.datetimeStr_Cht(data.returnBeforeDate)} ${intl.formatMessage({id: 'before'})}` | |||
} | |||
</Typography> | |||
</Grid> | |||
<Grid item xs={12} sm={3} md={3} lg={3} | |||
sx={{ mb: 1, display: 'flex', alignItems: 'center' }}> | |||
@@ -243,9 +259,9 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
{ | |||
formik.values.groupType === "Private Bill" | |||
? | |||
<Typography variant="h5">( {data.noOfPages} 頁 x $6,552 )</Typography> | |||
<Typography variant="h5">( {data.noOfPages} {intl.formatMessage({id: 'page'})} x $6,552 )</Typography> | |||
: | |||
<Typography variant="h5">( {data.length} cm x {data.colCount == 2 ? "$364 二格位" : "$182 一格位"} )</Typography> | |||
<Typography variant="h5">( {data.length} cm x {data.colCount === 2 ? "$364 二格位" : "$182 一格位"} )</Typography> | |||
} | |||
</Grid> | |||
</Grid> | |||
@@ -32,6 +32,7 @@ const UploadFileTable = Loadable(React.lazy(() => import('./UploadFileTable'))); | |||
const FormPanel = ({ formData }) => { | |||
const intl = useIntl(); | |||
const { locale } = intl; | |||
const [data, setData] = React.useState({}); | |||
const [attachments, setAttachments] = React.useState([]); | |||
@@ -53,7 +54,7 @@ const FormPanel = ({ formData }) => { | |||
enableReinitialize: true, | |||
initialValues: data, | |||
validationSchema: yup.object().shape({ | |||
vaild: yup.string().max(255, "請輸入你的登入密碼").required('請輸入你的登入密碼'), | |||
vaild: yup.string().max(255, intl.formatMessage({id: 'requireLoginPassword'})).required(intl.formatMessage({id: 'requireLoginPassword'})), | |||
}), | |||
onSubmit: values => { | |||
if (!actionValue) { | |||
@@ -91,12 +92,12 @@ const FormPanel = ({ formData }) => { | |||
} | |||
}, | |||
onFail: function (response) { | |||
setWarningText("行動失敗: 請檢查內容並再次提交回覆"); | |||
setWarningText(intl.formatMessage({id: 'actionFail'})); | |||
setIsWarningPopUp(true); | |||
console.log(response); | |||
}, | |||
onError: function (error) { | |||
setWarningText("行動失敗: 請檢查內容並再次提交回覆"); | |||
setWarningText(intl.formatMessage({id: 'actionFail'})); | |||
setIsWarningPopUp(true); | |||
console.log(error); | |||
} | |||
@@ -152,10 +153,27 @@ const FormPanel = ({ formData }) => { | |||
formik.values.replyDate ? | |||
<Grid container direction="column" sx={{ paddingLeft: 0, paddingRight: 0 }}> | |||
<Grid item xs={12} sm={12} md={12} lg={8} textAlign="left"> | |||
<Typography variant="h5">校對回覆日期: {DateUtils.datetimeStr_Cht(formik.values.replyDate)}</Typography> | |||
<Typography variant="h5"> | |||
<FormattedMessage id="proofReplyDate" />: | |||
{ | |||
locale === 'en' ? | |||
DateUtils.dateStr(formik.values.replyDate) | |||
: | |||
DateUtils.datetimeStr_Cht(formik.values.replyDate) | |||
} | |||
</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<Typography variant="h5">校對回覆: {formik.values.action ? (<span style={{ color: 'green' }}>可以付印(稿件正確)</span>) : (<span style={{ color: 'red' }}>未能付印(需要修改)</span>)}</Typography> | |||
<Typography variant="h5"> | |||
<FormattedMessage id="proofReply" />: {formik.values.action ? | |||
(<span style={{ color: 'green' }}> | |||
<FormattedMessage id="proofErrorFree" /> | |||
</span>) | |||
: | |||
(<span style={{ color: 'red' }}> | |||
<FormattedMessage id="proofWithError" /> | |||
</span>)} | |||
</Typography> | |||
</Grid> | |||
{ | |||
formik.values.action ? | |||
@@ -195,11 +213,11 @@ const FormPanel = ({ formData }) => { | |||
name="action" | |||
defaultValue={true} | |||
onChange={(event) => { | |||
setActionValue(event.target.value == "true" ? true : false); | |||
setActionValue(event.target.value === "true" ? true : false); | |||
}} | |||
> | |||
<FormControlLabel value={true} control={<Radio />} label="可以付印(稿件正確)" /> | |||
<FormControlLabel value={false} control={<Radio />} label="未能付印(需要修改)" /> | |||
<FormControlLabel value={true} control={<Radio />} label={intl.formatMessage({id: 'proofErrorFree'})} /> | |||
<FormControlLabel value={false} control={<Radio />} label={intl.formatMessage({id: 'proofWithError'})} /> | |||
</RadioGroup> | |||
</Grid> | |||
@@ -210,7 +228,9 @@ const FormPanel = ({ formData }) => { | |||
: | |||
<> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<Typography variant="h5">請上載稿件修改的檔案:</Typography> | |||
<Typography variant="h5"> | |||
<FormattedMessage id="requiredUploadFix" />: | |||
</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
@@ -233,7 +253,7 @@ const FormPanel = ({ formData }) => { | |||
variant="contained" | |||
disabled={attachments.length >= (formik.values.groupType === "Private Bill" ? 2 : 1)} | |||
> | |||
上載 | |||
<FormattedMessage id="upload" /> | |||
</Button> | |||
</ThemeProvider> | |||
</label> | |||
@@ -249,7 +269,9 @@ const FormPanel = ({ formData }) => { | |||
<Grid item xs={12} sm={12} md={12} lg={12}> | |||
<Stack direction="row" alignItems="center"> | |||
<FormLabel sx={{ paddingRight: 2, paddingBottom: 3, textAlign: "center" }}> | |||
<Typography variant="h5">簽署:</Typography> | |||
<Typography variant="h5"> | |||
<FormattedMessage id="sign" />: | |||
</Typography> | |||
</FormLabel> | |||
<TextField | |||
fullWidth | |||
@@ -259,7 +281,7 @@ const FormPanel = ({ formData }) => { | |||
variant="outlined" | |||
error={Boolean(formik.errors["vaild"])} | |||
helperText={formik.errors["vaild"] ? formik.errors["vaild"] : ' '} | |||
placeholder="請輸入你的登入密碼" | |||
placeholder={intl.formatMessage({id: 'requireLoginPassword'})} | |||
sx={ | |||
{ | |||
"& .MuiInputBase-input.Mui-disabled": { | |||
@@ -282,7 +304,7 @@ const FormPanel = ({ formData }) => { | |||
color="success" | |||
type="submit" | |||
> | |||
提交回覆 | |||
<FormattedMessage id="submitReply" /> | |||
</Button> | |||
</ThemeProvider> | |||
</Grid> | |||
@@ -77,7 +77,7 @@ export default function UploadFileTable({recordList, setRecordList,}) { | |||
{ | |||
id: 'name', | |||
field: 'name', | |||
headerName: '檔案名稱', | |||
headerName: intl.formatMessage({id: 'fileName'}), | |||
width: isMdOrLg ? 'auto' : 160, | |||
flex: isMdOrLg ? 1 : undefined, | |||
}, | |||
@@ -21,6 +21,7 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||
const theme = useTheme(); | |||
const isMdOrLg = useMediaQuery(theme.breakpoints.up('md')); | |||
const intl = useIntl(); | |||
const { locale } = intl; | |||
const _sx = { | |||
padding: "4 2 4 2", | |||
@@ -78,7 +79,7 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||
{ | |||
id: 'appId', | |||
field: 'appId', | |||
headerName: isORGLoggedIn()?"憲報期數 / Care Of/ 我的備註":"憲報期數 / 我的備註", | |||
headerName: isORGLoggedIn()?intl.formatMessage({id: 'gazetteCount3'}):intl.formatMessage({id: 'gazetteCount2'}), | |||
width: isMdOrLg ? 'auto' : 160, | |||
flex: isMdOrLg ? 1 : undefined, | |||
renderCell: (params) => { | |||
@@ -106,13 +107,13 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||
{ | |||
id: 'returnBeforeDate', | |||
field: 'returnBeforeDate', | |||
headerName: '此日期前回覆', | |||
headerName: intl.formatMessage({id: 'replyBefore'}), | |||
width: isMdOrLg ? 'auto' : 250, | |||
flex: isMdOrLg ? 1.5 : undefined, | |||
valueGetter: (params) => { | |||
let returnBeforeDate = DateUtils.convertToDate(params?.value); | |||
returnBeforeDate = returnBeforeDate.setHours(14, 0, 0, 0); | |||
return DateUtils.datetimeStr_Cht(returnBeforeDate); | |||
return locale === 'en' ? DateUtils.datetimeStr(returnBeforeDate) : DateUtils.datetimeStr_Cht(returnBeforeDate); | |||
} | |||
}, | |||
{ | |||
@@ -131,7 +132,7 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||
width: isMdOrLg ? 'auto' : 160, | |||
flex: isMdOrLg ? 1 : undefined, | |||
renderCell: (params) => { | |||
return ProofStatus.getStatus_Cht(params); | |||
return locale === 'en' ? ProofStatus.getStatus_Eng(params) : ProofStatus.getStatus_Cht(params); | |||
}, | |||
}, | |||
{ | |||
@@ -203,7 +203,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData | |||
</Grid> | |||
<Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:1.3, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
到 | |||
<FormattedMessage id="to" /> | |||
</Grid> | |||
<Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
@@ -249,8 +249,8 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData | |||
filterOptions={(options) => options} | |||
options={ComboData.proofStatus} | |||
value={status} | |||
getOptionLabel={(option) => option.labelCht} | |||
inputValue={status?.labelCht ? status?.labelCht : ""} | |||
getOptionLabel={(option) => option.type? intl.formatMessage({ id: option.i18nLabel }) : ""} | |||
inputValue={status? intl.formatMessage({ id: status.i18nLabel }) : ""} | |||
onChange={(event, newValue) => { | |||
if (newValue !== null) { | |||
setStatus(newValue); | |||
@@ -197,7 +197,10 @@ | |||
"applyPublicNotice": "Apply for public notice", | |||
"attention": "attention", | |||
"to": "To", | |||
"all": "All", | |||
"replied": "Replied", | |||
"pendingReply": "PendingReply", | |||
"processing": "Processing", | |||
"pendingPayment": "Pending payment", | |||
"pendingPublish": "To be Published", | |||
@@ -244,7 +247,9 @@ | |||
"publicNoticeDetailTitle": "Public Notice Application Information", | |||
"applyPerson": "Applicant", | |||
"applyStatus": "Application Status", | |||
"gazetteCount": "Gazette issues date", | |||
"gazetteCount": "Gazette issues number", | |||
"gazetteCount2" :"Gazette issues number / Remarks", | |||
"gazetteCount3" :"Gazette issues number / Care Of/ Remarks", | |||
"publishDate": "Publish date", | |||
"draftFile": "Manuscript file", | |||
"download": "Download", | |||
@@ -257,6 +262,24 @@ | |||
"payFeeFor": "Pay for", | |||
"payFor": "Pay", | |||
"payFee": "Payment Amount", | |||
"replyBefore": "Reply before", | |||
"applicationPublishDate": "Publish date", | |||
"pleaseCheckReminder": "Please download the following printed manuscript file and proofread it carefully", | |||
"payAnd": "Pay and ", | |||
"commentDeadline": "Deadline for submission of manuscripts", | |||
"before": "Before", | |||
"page": "Page", | |||
"proofReplyDate": "Proof Reply Date", | |||
"proofReply": "Proof Reply", | |||
"proofErrorFree": "Can be printed (the manuscript is correct)", | |||
"proofWithError": "Failed to print (requires modification)", | |||
"proofExpired": "Response timed out, please apply again.", | |||
"sign": "Sign", | |||
"requireLoginPassword": "Please enter your login password", | |||
"submitReply": "Submit", | |||
"requiredUploadFix": "Please upload the modified file of the manuscript", | |||
"upload": "Upload", | |||
"actionFail": "Action failed: Please check the content and submit the reply again", | |||
"Dashboard": "Dashboard", | |||
"event": "Event" |
@@ -197,7 +197,10 @@ | |||
"applyPublicNotice": "申请公共启事", | |||
"attention": "注意", | |||
"to": "到", | |||
"all": "全部", | |||
"replied": "已回覆", | |||
"pendingReply": "未回覆", | |||
"processing": "处理中", | |||
"pendingPayment": "待付款", | |||
"pendingPublish": "待发布", | |||
@@ -245,6 +248,8 @@ | |||
"applyPerson": "申请人", | |||
"applyStatus": "申请状态", | |||
"gazetteCount": "宪报期数", | |||
"gazetteCount2" :"宪报期数 / 我的备注", | |||
"gazetteCount3" :"宪报期数 / Care Of/ 我的备注", | |||
"publishDate": "发布日期", | |||
"draftFile": "稿件档案", | |||
"download": "下载", | |||
@@ -257,6 +262,24 @@ | |||
"payFeeFor": "应缴费用", | |||
"payFor": "支付", | |||
"payFee": "支付金額", | |||
"replyBefore": "此日期前回覆", | |||
"applicationPublishDate": "刊出日期", | |||
"pleaseCheckReminder": "请下载下列印刷稿档案,并仔细校对", | |||
"payAnd": "缴费及", | |||
"commentDeadline": "返稿最后限期", | |||
"before": "前", | |||
"page": "页", | |||
"proofReplyDate": "校对回覆日期", | |||
"proofReply": "校对回覆", | |||
"proofErrorFree": "可以付印(稿件正确)", | |||
"proofWithError": "未能付印(需要修改)", | |||
"proofExpired": "回覆逾时,请重新申请。", | |||
"sign": "签署", | |||
"requireLoginPassword": "请输入你的登入密码", | |||
"submitReply": "提交回覆", | |||
"requiredUploadFix": "请上载稿件修改的档案", | |||
"upload": "上载", | |||
"actionFail": "行动失败: 请检查内容并再次提交回覆", | |||
"Dashboard": "仪表板", | |||
"event": "活动" |
@@ -197,7 +197,10 @@ | |||
"applyPublicNotice": "申請公共啟事", | |||
"attention": "注意", | |||
"to": "到", | |||
"all": "全部", | |||
"replied": "已回覆", | |||
"pendingReply": "未回覆", | |||
"processing": "處理中", | |||
"pendingPayment": "待付款", | |||
"pendingPublish": "待發佈", | |||
@@ -245,6 +248,8 @@ | |||
"applyPerson": "申請人", | |||
"applyStatus": "申請狀態", | |||
"gazetteCount": "憲報期數", | |||
"gazetteCount2" :"憲報期數 / 我的備註", | |||
"gazetteCount3" :"憲報期數 / Care Of/ 我的備註", | |||
"publishDate": "發佈日期", | |||
"draftFile": "稿件檔案", | |||
"download": "下載", | |||
@@ -257,6 +262,24 @@ | |||
"payFeeFor": "應繳費用", | |||
"payFor": "支付", | |||
"payFee": "支付金額", | |||
"replyBefore": "此日期前回覆", | |||
"applicationPublishDate": "刊出日期", | |||
"pleaseCheckReminder": "請下載下列印刷稿檔案,並仔細校對", | |||
"payAnd": "繳費及", | |||
"commentDeadline": "返稿最後限期", | |||
"before": "前", | |||
"page": "頁", | |||
"proofReplyDate": "校對回覆日期", | |||
"proofReply": "校對回覆", | |||
"proofErrorFree": "可以付印(稿件正確)", | |||
"proofWithError": "未能付印(需要修改)", | |||
"proofExpired": "回覆逾時,請重新申請。", | |||
"sign": "簽署", | |||
"requireLoginPassword": "請輸入你的登入密碼", | |||
"submitReply": "提交回覆", | |||
"requiredUploadFix": "請上載稿件修改的檔案", | |||
"upload": "上載", | |||
"actionFail": "行動失敗: 請檢查內容並再次提交回覆", | |||
"Dashboard": "儀表板", | |||
"event": "活動" |
@@ -92,9 +92,9 @@ export const proofPrice = [ | |||
]; | |||
export const proofStatus = [ | |||
{ key: 0, labelCht: '全部', label: 'All', type: 'all' }, | |||
{ key: 1, labelCht: '已回覆', label:'Replied', type: 'T' }, // submitted and reviewed | |||
{ key: 2, labelCht: '未回覆', label:'Pending Reply', type: 'F' }, | |||
{ key: 0, i18nLabel: 'all', labelCht: '全部', label: 'All', type: 'all' }, | |||
{ key: 1, i18nLabel: 'replied', labelCht: '已回覆', label:'Replied', type: 'T' }, // submitted and reviewed | |||
{ key: 2, i18nLabel: 'pendingReply', labelCht: '未回覆', label:'Pending Reply', type: 'F' }, | |||
]; | |||
export const paymentStatus = [ | |||