// material-ui import { Dialog, DialogTitle, DialogContent, DialogActions, Typography, Grid, Stack, TextField, FormLabel, Button, RadioGroup, Radio, FormControlLabel } from '@mui/material'; import * as UrlUtils from "utils/ApiPathConst"; import * as HttpUtils from "utils/HttpUtils"; import FileList from "components/FileList" import MainCard from "components/MainCard"; import * as React from "react"; import * as yup from 'yup'; import { useParams } from "react-router-dom"; import { useFormik } from 'formik'; import { useNavigate } from "react-router-dom"; import * as DateUtils from "utils/DateUtils" import Loadable from 'components/Loadable'; import { notifyActionSuccess } from 'utils/CommonFunction'; import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; import {ThemeProvider} from "@emotion/react"; import {FormattedMessage, useIntl} from "react-intl"; const UploadFileTable = Loadable(React.lazy(() => import('./UploadFileTable'))); // ==============================|| DASHBOARD - DEFAULT ||============================== // const FormPanel = ({ formData }) => { const intl = useIntl(); const { locale } = intl; const [data, setData] = React.useState({}); const [attachments, setAttachments] = React.useState([]); const [actionValue, setActionValue] = React.useState(true); const [isWarningPopUp, setIsWarningPopUp] = React.useState(false); const [warningText, setWarningText] = React.useState(""); const navigate = useNavigate() const params = useParams(); React.useEffect(() => { if (formData) { setData(formData); } }, [formData]); const formik = useFormik({ enableReinitialize: true, initialValues: data, validationSchema: yup.object().shape({ vaild: yup.string().max(255, intl.formatMessage({id: 'requireLoginPassword'})).required(intl.formatMessage({id: 'requireLoginPassword'})), }), onSubmit: values => { if (!actionValue) { if (!attachments || attachments.length <= 0) { setWarningText(intl.formatMessage({id: 'requireFile'})); setIsWarningPopUp(true); return; } } if (isOverTime()) { setWarningText("回覆逾時,請重新申請。"); setIsWarningPopUp(true); return; } // console.log(values); HttpUtils.postWithFiles({ url: UrlUtils.REPLY_PROOF, params: { id: data.id, action: actionValue, vaild: values.vaild, }, files: attachments ? attachments : [], onSuccess: function () { notifyActionSuccess("提交成功!") if (actionValue) { if(data.creditor){ navigate("/proof/search"); }else{ navigate("/proof/pay/" + params.id); } } else { navigate("/proof/search"); } }, onFail: function (response) { setWarningText(intl.formatMessage({id: 'actionFail'})); setIsWarningPopUp(true); console.log(response); }, onError: function (error) { setWarningText(intl.formatMessage({id: 'actionFail'})); setIsWarningPopUp(true); console.log(error); } }); } }); const readFile = (event) => { let file = event.target.files[0]; if (file) { if (!file.name.toLowerCase().substr(file.name.length - 4).includes(".pdf")) { setWarningText(intl.formatMessage({id: 'requireValidFileWithPdfFormat'})); setIsWarningPopUp(true); document.getElementById("uploadFileBtn").value = ""; return; } if (file.size >= (10 * 1024 * 1034)) { setWarningText(intl.formatMessage({id: 'fileSizeWarning'})); setIsWarningPopUp(true); return; } file['id'] = attachments.length; setAttachments([ ...attachments, file ]); document.getElementById("uploadFileBtn").value = ""; } } const isOverTime = () => { let returnBeforeDate = DateUtils.convertToDate(formik.values?.returnBeforeDate); if (!returnBeforeDate) return true; let current = new Date(); return current.getTime() > returnBeforeDate; } return (
{ formik.values.replyDate ? : { locale === 'en' ? DateUtils.dateStr(formik.values.replyDate) : DateUtils.datetimeStr_Cht(formik.values.replyDate) } : {formik.values.action ? ( ) : ( )} { formik.values.action ? null : } : ( isOverTime() ? 回覆逾時,請重新申請。 : { setActionValue(event.target.value === "true" ? true : false); }} > } label={intl.formatMessage({id: 'proofErrorFree'})} /> } label={intl.formatMessage({id: 'proofWithError'})} /> { actionValue ? null : <> = (formik.values.groupType === "Private Bill" ? 2 : 1)} onChange={(event) => { readFile(event) }} /> } ) }
setIsWarningPopUp(false)} PaperProps={{ sx: { minWidth: '40vw', maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } } }} > {warningText}
); }; export default FormPanel;