// material-ui import { Grid, Typography, Button, RadioGroup, Checkbox, Dialog, DialogTitle, DialogContent, DialogActions, Stack, Box } from '@mui/material'; import { useFormik } from 'formik'; import * as yup from 'yup'; import * as HttpUtils from "utils/HttpUtils"; import * as UrlUtils from "utils/ApiPathConst"; import * as FieldUtils from "utils/FieldUtils"; import * as DateUtils from "utils/DateUtils"; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' import ForwardIcon from '@mui/icons-material/Forward'; import { isORGLoggedIn, isDummyLoggedIn } from "utils/Utils"; import { useNavigate } from "react-router-dom"; import { notifyActionSuccess } from 'utils/CommonFunction'; import { PNSPS_LONG_BUTTON_THEME } from "../../../themes/buttonConst"; import { ThemeProvider } from "@emotion/react"; import { FormattedMessage, useIntl } from "react-intl"; import Loadable from 'components/Loadable'; import { useState, useEffect, lazy } from 'react'; const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); // ==============================|| DASHBOARD - DEFAULT ||============================== // 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 [val, setVal] = useState({}); const [reloadPage, setReloadPage] = useState(false); const [isSubmitting, setSubmitting] = useState(false); const [tickAccept, setTickAccept] = useState(false); const [issueId, setIssueId] = useState(loadedData.issueId); const [closeDate, setCloseDate] = useState(null); const [closingDateOff, setClosingDateOff] = useState(null); const navigate = useNavigate(); const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, width: 'auto', height: 'auto', backgroundSize: 'contain', backgroundRepeat: 'no-repeat', backgroundColor: '#0C489E', backgroundPosition: 'right' } const tabelStyle = { border: "2px solid gray", borderCollapse: "collapse", padding: "right" } function getMaxErrStr(num, fieldname) { return intl.formatMessage({ id: 'noMoreThenNWords' }, { num: num, fieldname: fieldname ? intl.formatMessage({ id: fieldname }) + ": " : "" }); } useEffect(() => { setsSelections(_selections) }, [_selections]); useEffect(() => { for (var i = 0; i < gazetteIssueList?.length; i++) { let data = gazetteIssueList[i]; if (data.id == issueId) { setCloseDate(data.closingDate) setClosingDateOff(data.closingDateOff) break; } } }, [issueId]); // function displayErrorMsg(errorMsg) { // return {errorMsg} // } const formik = useFormik({ enableReinitialize: true, initialValues: loadedData, validationSchema: yup.object().shape({ contactPerson: yup.string().max(40, intl.formatMessage({ id: 'noMoreThen40Words' })).required(intl.formatMessage({ id: 'requireContactPerson' })).nullable(), tel_countryCode: yup.string().min(3, intl.formatMessage({ id: 'require3Number' })).required(intl.formatMessage({ id: 'requireDialingCode' })), fax_countryCode: yup.string().min(3, intl.formatMessage({ id: 'require3Number' })), phoneNumber: yup.string().min(8, intl.formatMessage({ id: 'require8Number' })).required(intl.formatMessage({ id: 'requireContactNumber' })), faxNumber: yup.string().min(8, intl.formatMessage({ id: 'require8Number' })), remarks: yup.string().max(100, getMaxErrStr(100)).nullable(), careOf: yup.string().max(60, getMaxErrStr(60)).nullable(), emailAddress: yup.string().email(intl.formatMessage({ id: 'validEmailFormat' })).max(255).test('checkEmailFormat', intl.formatMessage({ id: 'requireEmail' }), function (value) { if (isDummyLoggedIn()) { if (value !== undefined) { return true } else { return false } } else { return true } }), 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 { 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; } if (isORGLoggedIn()) { HttpUtils.get({ url: UrlUtils.CHECK_OVERDUE, onSuccess: (responData) => { if (responData.haveOverdue) { setVal(values); setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'dnOverdueWarning' })); setIsWarningPopUp(true); } else { apply(values); } } }); } else { apply(values); } } }); const apply = (values) => { setSubmitting(true) let careOf = values.careOf ?? ""; let remarks = values.remarks ?? ""; if (isDummyLoggedIn()) { careOf = values.careOfDum } if (isDummyLoggedIn()) { remarks = values.emailAddress } HttpUtils.postWithFiles({ url: UrlUtils.POST_PUBLIC_NOTICE_APPLY, params: { id: 0, contactPerson: values.contactPerson, contactTelNo: { countryCode: values.tel_countryCode, phoneNumber: values.phoneNumber }, contactFaxNo: { countryCode: values.fax_countryCode, faxNumber: values.faxNumber }, issueId: issueId, careOf: careOf, remarks: remarks, }, files: [attachment], onSuccess: function (responData) { if (responData.msg) { setVal({}); setReloadPage(true); setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: responData.msg })); setIsWarningPopUp(true); return; } setSubmitting(false) notifyActionSuccess(intl.formatMessage({ id: 'submissionSuccess' }) + '!') navigate("/publicNotice"); // location.reload(); } }); } const readFile = (event) => { let file = event.target.files[0]; if (file) { if (file.name.toLowerCase().substr(file.name.length - 4).includes(".doc") || file.name.toLowerCase().substr(file.name.length - 5).includes(".docx") || file.name.toLowerCase().substr(file.name.length - 4).includes(".xls") || file.name.toLowerCase().substr(file.name.length - 5).includes(".xlsx") ) { setAttachment(event.target.files[0]); } else { setWarningTitle(intl.formatMessage({ id: "attention" })) setWarningText(intl.formatMessage({ id: 'requireValidFileWithFormat' })); setIsWarningPopUp(true); setAttachment({}); document.getElementById("uploadFileBtn").value = ""; return; } } } return (
{/* 申請公共啟事 */} { isSubmitting ? :
{FieldUtils.getTextField({ label: intl.formatMessage({ id: 'contactPerson' }) + ":", valueName: "contactPerson", form: formik, disabled: !isDummyLoggedIn(), autoFocus: isDummyLoggedIn() })} {FieldUtils.getPhoneField({ label: intl.formatMessage({ id: 'userContactNumber' }) + ":", disabled: !isDummyLoggedIn(), valueName: { code: "tel_countryCode", num: "phoneNumber", }, form: formik })} {FieldUtils.getPhoneField({ label: intl.formatMessage({ id: 'contactFaxNumber' }) + ":", disabled: !isDummyLoggedIn(), valueName: { code: "fax_countryCode", num: "faxNumber", }, form: formik })} : { setIssueId(event.target.value); }} > { selections }

{ setWarningTitle(intl.formatMessage({ id: "payOnline" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(closeDate, dft)} 2:00 p.m.

{ setWarningTitle(intl.formatMessage({ id: "payDn" })) setWarningText( <>
{DateUtils.dateFormat(closingDateOff, dft)} 5:00 p.m.

{ setWarningTitle(intl.formatMessage({ id: "payNPGO" })) setWarningText( <>
); setIsWarningPopUp(true); }}>
{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.
({intl.formatMessage({ id: 'fileSizeWarning' })}): { readFile(event) }} /> {attachment.name} {/* */} {isORGLoggedIn() ? <> {isDummyLoggedIn() ? {FieldUtils.getCarOfField({ label: intl.formatMessage({ id: 'careOf' }) + ":", valueName: "careOfDum", form: formik, // disabled: true })} : {FieldUtils.getCarOfField({ label: intl.formatMessage({ id: 'careOf' }) + ":", valueName: "careOf", form: formik, // disabled: true })} } : null } { isDummyLoggedIn() ? {FieldUtils.getTextField({ label: intl.formatMessage({ id: 'userContactEmail' }), valueName: "emailAddress", form: formik })} : {FieldUtils.getTextArea({ label: intl.formatMessage({ id: 'extraMark' }) + ":", valueName: "remarks", form: formik, inputProps: { maxLength: 255 } })} }
{ setTickAccept(event.target.checked) }} name="tickAccept" color="primary" size="small" />
}
setIsWarningPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} > {warningTitle} {warningText}
); }; export default PublicNoticeApplyForm;