@@ -28,6 +28,8 @@ const FormPanel = ({ formData }) => { | |||
const [columnPrice, setColumnPrice] = React.useState(ComboData.proofPrice[0]); | |||
const [attachments, setAttachments] = React.useState([]); | |||
const [wait, setWait] = React.useState(false); | |||
const [isWarningPopUp, setIsWarningPopUp] = React.useState(false); | |||
const [warningText, setWarningText] = React.useState(""); | |||
@@ -45,10 +47,10 @@ const FormPanel = ({ formData }) => { | |||
React.useEffect(() => { | |||
if (!attachments || attachments.length <= 0){ | |||
formik.setFieldValue("length",0); | |||
formik.setFieldValue("noOfPages",0); | |||
formik.setFieldValue("fee",0); | |||
if (!attachments || attachments.length <= 0) { | |||
formik.setFieldValue("length", 0); | |||
formik.setFieldValue("noOfPages", 0); | |||
formik.setFieldValue("fee", 0); | |||
return; | |||
} | |||
@@ -56,10 +58,12 @@ const FormPanel = ({ formData }) => { | |||
}, [attachments]); | |||
const doCalculate=()=>{ | |||
if (!attachments || attachments.length <= 0){ | |||
setWarningText("無法計算,請上傳有效文件。"); | |||
const doCalculate = () => { | |||
setWait(true); | |||
if (!attachments || attachments.length <= 0) { | |||
setWarningText("Unable to calculate, please upload a valid document."); | |||
setIsWarningPopUp(true); | |||
setWait(false); | |||
return; | |||
} | |||
HttpUtils.postWithFiles({ | |||
@@ -69,23 +73,25 @@ const FormPanel = ({ formData }) => { | |||
}, | |||
files: attachments, | |||
onSuccess: function (responseData) { | |||
if(responseData.data.detail){ | |||
setWarningText("無法計算,請上傳有效文件或手動輸入。"); | |||
if (responseData.data.detail) { | |||
setWarningText("Unable to calculate, please upload a valid document or input manually."); | |||
setIsWarningPopUp(true); | |||
return; | |||
} | |||
formik.setFieldValue("length",responseData.data.length); | |||
formik.setFieldValue("length", responseData.data.length); | |||
let colValue = 0; | |||
setColumnPrice(ComboData.proofPrice.find(obj=>{ | |||
setColumnPrice(ComboData.proofPrice.find(obj => { | |||
colValue = obj.value; | |||
return obj.colCount === responseData.data.column | |||
})); | |||
formik.setFieldValue("noOfPages",responseData.data.no_of_page); | |||
formik.setFieldValue("fee",(data.groupType == "A"?6552*responseData.data.no_of_page :responseData.data.length*colValue)); | |||
formik.setFieldValue("noOfPages", responseData.data.no_of_page); | |||
formik.setFieldValue("fee", (data.groupType == "A" ? 6552 * responseData.data.no_of_page : responseData.data.length * colValue)); | |||
setWait(false); | |||
}, | |||
onError: function(){ | |||
setWarningText("無法計算,請手動輸入。"); | |||
onError: function () { | |||
setWarningText("Unable to calculate, please input manually."); | |||
setIsWarningPopUp(true); | |||
setWait(false); | |||
} | |||
}); | |||
} | |||
@@ -95,7 +101,7 @@ const FormPanel = ({ formData }) => { | |||
initialValues: data, | |||
onSubmit: values => { | |||
if (!attachments || attachments.length <= 0) { | |||
setWarningText("請選擇上傳檔案"); | |||
setWarningText("Please upload file."); | |||
setIsWarningPopUp(true); | |||
return; | |||
} | |||
@@ -121,13 +127,13 @@ const FormPanel = ({ formData }) => { | |||
let file = event.target.files[0]; | |||
if (file) { | |||
if (!file.name.toLowerCase().substr(file.name.length - 4).includes(".pdf")) { | |||
setWarningText("請上傳有效檔案 (檔案格式: .pdf)"); | |||
setWarningText("Please upload a valid file (File format: .pdf)."); | |||
setIsWarningPopUp(true); | |||
document.getElementById("uploadFileBtn").value = ""; | |||
return; | |||
} | |||
if (file.size >= (10 * 1024 * 1034)) { | |||
setWarningText("上傳檔案大小應<10MB"); | |||
setWarningText("The file size for uploading should be less than 10MB"); | |||
setIsWarningPopUp(true); | |||
return; | |||
} | |||
@@ -186,17 +192,27 @@ const FormPanel = ({ formData }) => { | |||
<UploadFileTable key="uploadTable" recordList={attachments} setRecordList={setAttachments} /> | |||
</Grid> | |||
<Grid item xs={12} md={12}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}}> | |||
Calculate | |||
</Button> | |||
</Grid> | |||
{ | |||
wait ? | |||
<Grid item xs={12} md={12}> | |||
Doing calculate, please wait ... | |||
</Grid> | |||
: | |||
<Grid item xs={12} md={12}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
onClick={doCalculate} | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}}> | |||
Calculate | |||
</Button> | |||
</Grid> | |||
} | |||
{ | |||
formik.values.groupType == "A" ? | |||
@@ -352,7 +368,7 @@ const FormPanel = ({ formData }) => { | |||
</form> | |||
<div> | |||
<Dialog open={isWarningPopUp} onClose={() => setIsWarningPopUp(false)} > | |||
<DialogTitle>注意</DialogTitle> | |||
<DialogTitle>Warning</DialogTitle> | |||
<DialogContent style={{ display: 'flex', }}> | |||
<Typography variant="h3" style={{ padding: '16px' }}>{warningText}</Typography> | |||
</DialogContent> | |||
@@ -0,0 +1,126 @@ | |||
// material-ui | |||
import { | |||
Grid, | |||
Typography, | |||
Stack, | |||
Button, | |||
} from '@mui/material'; | |||
import * as UrlUtils from "utils/ApiPathConst"; | |||
import * as React from "react"; | |||
import * as HttpUtils from "utils/HttpUtils"; | |||
import { useParams } from "react-router-dom"; | |||
import { useNavigate } from "react-router-dom"; | |||
import * as DateUtils from "utils/DateUtils" | |||
import Loadable from 'components/Loadable'; | |||
const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||
import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
const BackgroundHead = { | |||
backgroundImage: `url(${titleBackgroundImg})`, | |||
width: '100%', | |||
height: '100%', | |||
backgroundSize: 'contain', | |||
backgroundRepeat: 'no-repeat', | |||
backgroundColor: '#0C489E', | |||
backgroundPosition: 'right' | |||
} | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const Index = () => { | |||
const params = useParams(); | |||
const navigate = useNavigate() | |||
const [record, setRecord] = React.useState(); | |||
const [onReady, setOnReady] = React.useState(false); | |||
React.useEffect(() => { | |||
loadForm(); | |||
}, []); | |||
React.useEffect(() => { | |||
setOnReady(true); | |||
}, [record]); | |||
const loadForm = () => { | |||
if (params.id > 0) { | |||
HttpUtils.get({ | |||
url: UrlUtils.GET_PROOF_PAY + "/" + params.id, | |||
onSuccess: (responseData) => { | |||
if (!responseData.data?.id) { | |||
navigate("/proof/search"); | |||
} | |||
setRecord(responseData.data); | |||
} | |||
}); | |||
} | |||
} | |||
return ( | |||
!onReady ? | |||
<LoadingComponent /> | |||
: | |||
( | |||
<Grid container sx={{ minHeight: '110vh', backgroundColor: '#fff' }} direction="column" justifyContent="flex-start" alignItems="center" > | |||
<Grid item xs={12} width="100%"> | |||
<div style={BackgroundHead} width="100%"> | |||
<Stack direction="row" height='70px'> | |||
<Typography ml={15} color='#FFF' variant="h4" sx={{ pt: 2 }}>校對記錄</Typography> | |||
</Stack> | |||
</div> | |||
</Grid> | |||
{/*row 1*/} | |||
<Grid item xs={12} md={12} > | |||
<Grid container justifyContent="flex-start" alignItems="center" > | |||
<center> | |||
<Grid item xs={12} md={8} > | |||
<Typography variant="h2" sx={{ textAlign: "left", ml: 4, mr: 4, mt: 4, borderBottom: "1px solid black" }}> | |||
公共啟事:交對完成及付款 | |||
</Typography> | |||
<Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "left" }}> | |||
我們已收到申請編號: {record?.appNo} 的稿件交對確定及可付印的指示。 | |||
<br /><br /> | |||
請於 <span style={{ color: "red" }}>{DateUtils.dateStr_Cht(record?.returnBeforeDate)} 下午 2:00 前</span> 完成繳費,我們將於收到繳費確認後處理刊出事宜。 | |||
<br /><br /> | |||
如你在憲報期數 {record?.issueYear} 年 {record?.issueVolume} 卷, 第 {record?.issueNo} 期內有多於一個公共啟事的申請,你可選擇完成所有此期所有稿件交對確定後,於繳費期限前在「我的公共啟事」內合併付款。 | |||
</Typography> | |||
<Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "left" }}> | |||
請按以下完成繳費: | |||
<Button | |||
component="span" | |||
variant="contained" | |||
size="large" | |||
sx={{ m: 4}} | |||
>繼續:網上繳費</Button> | |||
或 | |||
<Button | |||
component="span" | |||
variant="contained" | |||
size="large" | |||
sx={{ m: 4}} | |||
onClick={()=>{ | |||
navigate("/publicNotice"); | |||
}} | |||
>返回「我的公共啟事」</Button> | |||
</Typography> | |||
</Grid> | |||
</center> | |||
</Grid> | |||
</Grid> | |||
{/*row 2*/} | |||
</Grid > | |||
) | |||
); | |||
}; | |||
export default Index; |
@@ -0,0 +1,115 @@ | |||
// material-ui | |||
import { | |||
Grid, | |||
Typography, | |||
Stack, | |||
Button, | |||
} from '@mui/material'; | |||
import * as UrlUtils from "utils/ApiPathConst"; | |||
import * as React from "react"; | |||
import * as HttpUtils from "utils/HttpUtils"; | |||
import { useParams } 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 titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
const BackgroundHead = { | |||
backgroundImage: `url(${titleBackgroundImg})`, | |||
width: '100%', | |||
height: '100%', | |||
backgroundSize: 'contain', | |||
backgroundRepeat: 'no-repeat', | |||
backgroundColor: '#0C489E', | |||
backgroundPosition: 'right' | |||
} | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const Index = () => { | |||
const params = useParams(); | |||
const navigate = useNavigate() | |||
const [record, setRecord] = React.useState(); | |||
const [onReady, setOnReady] = React.useState(false); | |||
React.useEffect(() => { | |||
loadForm(); | |||
}, []); | |||
React.useEffect(() => { | |||
setOnReady(true); | |||
}, [record]); | |||
const loadForm = () => { | |||
if (params.id > 0) { | |||
HttpUtils.get({ | |||
url: UrlUtils.GET_PROOF_PAY + "/" + params.id, | |||
onSuccess: (responseData) => { | |||
if (!responseData.data?.id) { | |||
navigate("/proof/search"); | |||
} | |||
setRecord(responseData.data); | |||
} | |||
}); | |||
} | |||
} | |||
return ( | |||
!onReady ? | |||
<LoadingComponent /> | |||
: | |||
( | |||
<Grid container sx={{ minHeight: '110vh', backgroundColor: '#fff' }} direction="column" justifyContent="flex-start" alignItems="center" > | |||
<Grid item xs={12} width="100%"> | |||
<div style={BackgroundHead} width="100%"> | |||
<Stack direction="row" height='70px'> | |||
<Typography ml={15} color='#FFF' variant="h4" sx={{ pt: 2 }}>校對記錄</Typography> | |||
</Stack> | |||
</div> | |||
</Grid> | |||
{/*row 1*/} | |||
<Grid item xs={12} md={12} > | |||
<Grid container justifyContent="flex-start" alignItems="center" > | |||
<center> | |||
<Grid item xs={12} md={8} > | |||
<Typography variant="h2" sx={{ textAlign: "left", ml: 4, mr: 4, mt: 4, borderBottom: "1px solid black" }}> | |||
公共啟事:交對完成 | |||
</Typography> | |||
<Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "left" }}> | |||
我們已收到你已確定申請編號: {record?.appNo} 的稿件交對確定及可付印的指示,並將安排刊登於憲報 | |||
期數 {record?.appNo} 年 {record?.issueVolume} 卷 第 {record?.issueNo} 期內。 | |||
<br/><br/> | |||
此公共啟事申請的費用將於下期發出的繳費發票時收取,請依時繳費。 | |||
</Typography> | |||
<Typography variant="h3" sx={{ ml: 8, mt: 4, mr: 8, textAlign: "center" }}> | |||
<Button | |||
component="span" | |||
variant="contained" | |||
size="large" | |||
sx={{ m: 4}} | |||
onClick={()=>{ | |||
navigate("/publicNotice"); | |||
}} | |||
>返回「我的公共啟事」</Button> | |||
</Typography> | |||
</Grid> | |||
</center> | |||
</Grid> | |||
</Grid> | |||
{/*row 2*/} | |||
</Grid > | |||
) | |||
); | |||
}; | |||
export default Index; |
@@ -0,0 +1,16 @@ | |||
import * as React from "react"; | |||
import Loadable from 'components/Loadable'; | |||
const Pay = Loadable(React.lazy(() => import('./Pay'))); | |||
const Pay_Creditor = Loadable(React.lazy(() => import('./Pay_Creditor'))); | |||
const Index = () => { | |||
return ( | |||
JSON.parse(localStorage.getItem('userData')).creditor? | |||
<Pay_Creditor/> | |||
: | |||
<Pay/> | |||
); | |||
} | |||
export default Index; |
@@ -92,13 +92,13 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
</Grid> | |||
</Grid> | |||
<Grid item xs={12} md={5} lg={5} sx={{ mb: 1, ml: 1 }}> | |||
<Grid container alignItems={"center"}> | |||
<Grid container alignItems={"left"}> | |||
<Grid item xs={12} md={3} lg={3} | |||
sx={{ display: 'flex', alignItems: 'center' }}> | |||
<FormLabel>申請狀態:</FormLabel> | |||
</Grid> | |||
<Grid item xs={12} md={9} lg={9}> | |||
<Grid item xs={12} md={9} lg={9} sx={{ display: 'flex', alignItems: 'center' }}> | |||
<FormControl variant="outlined"> | |||
{StatusUtils.getStatusByText(data.appStatus)} | |||
</FormControl> | |||
@@ -191,7 +191,7 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
<Grid item xs={12} md={6} lg={6} sx={{ mb: 1, }}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={12} md={12} lg={12} sx={{ display: 'flex', alignItems: 'center' }}> | |||
<FormLabel>請下載下列印刷稿檔案,並仔細校對:</FormLabel> | |||
<Typography>請下載下列印刷稿檔案,並仔細校對:</Typography> | |||
</Grid> | |||
</Grid> | |||
<FileList | |||
@@ -211,25 +211,25 @@ const ApplicationDetailCard = ({ formData, }) => { | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={12} md={12} lg={12} | |||
sx={{ display: 'flex', alignItems: 'center' }}> | |||
<FormLabel>繳費及返稿最後限期:</FormLabel> | |||
<Typography>繳費及返稿最後限期:</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}> | |||
<FormLabel>{DateUtils.dateStr_Cht(data.returnBeforeDate)} 下午 2:00前</FormLabel> | |||
<Typography>{DateUtils.dateStr_Cht(data.returnBeforeDate)} 下午 2:00前</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={3} lg={3} | |||
sx={{ mb: 1, display: 'flex', alignItems: 'center' }}> | |||
<FormLabel>應繳費用:</FormLabel> | |||
<Typography>應繳費用:</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={9} lg={9} sx={{ mb: 1, display: 'flex', alignItems: 'center' }}> | |||
<FormLabel style={{ color: "blue", fontWeight: "bold", }}>{currencyFormat(data.fee)}</FormLabel> | |||
<Typography style={{ color: "blue", fontWeight: "bold", }}>{currencyFormat(data.fee)}</Typography> | |||
</Grid> | |||
<Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}> | |||
{ | |||
formik.values.groupType == "A" | |||
? | |||
<FormLabel>( {data.length} 頁 x $6,552 )</FormLabel> | |||
<Typography>( {data.noOfPages} 頁 x $6,552 )</Typography> | |||
: | |||
<FormLabel>( {data.length} cm x {data.colCount == 2 ? "$364 二格位" : "$182 一格位"} )</FormLabel> | |||
<Typography>( {data.length} cm x {data.colCount == 2 ? "$364 二格位" : "$182 一格位"} )</Typography> | |||
} | |||
</Grid> | |||
</Grid> | |||
@@ -31,6 +31,8 @@ const FormPanel = ({ formData }) => { | |||
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(""); | |||
@@ -50,24 +52,34 @@ const FormPanel = ({ formData }) => { | |||
vaild: yup.string().max(255, "請輸入你的登入密碼").required('請輸入你的登入密碼'), | |||
}), | |||
onSubmit: values => { | |||
if (!values.action) { | |||
if (!actionValue) { | |||
if (!attachments || attachments.length <= 0) { | |||
setWarningText("請選擇上傳檔案"); | |||
setIsWarningPopUp(true); | |||
return; | |||
} | |||
} | |||
if (isOverTime()) { | |||
setWarningText("回覆逾時,請重新申請。"); | |||
setIsWarningPopUp(true); | |||
return; | |||
} | |||
// console.log(values); | |||
HttpUtils.postWithFiles({ | |||
url: UrlUtils.REPLY_PROOF, | |||
params: { | |||
id: data.id, | |||
action: values.action, | |||
action: actionValue, | |||
vaild: values.vaild, | |||
}, | |||
files: attachments ? attachments : [], | |||
onSuccess: function () { | |||
navigate("/proof/search"); | |||
if (actionValue) { | |||
navigate("/proof/pay/"+params.id); | |||
} else { | |||
navigate("/proof/search"); | |||
} | |||
}, | |||
onFail: function (response) { | |||
setWarningText("行動失敗: 請檢查內容並再次提交回覆"); | |||
@@ -138,19 +150,25 @@ const FormPanel = ({ formData }) => { | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
校對回覆: {formik.values.action ? "可以付印(稿件正確)" : "未能付印(需要修改)"} | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<FileList | |||
lang="ch" | |||
refId={params.id} | |||
refType={"proofReply"} | |||
dateHideable={true} | |||
disablePagination | |||
disableSelectionOnClick | |||
disableColumnMenu | |||
disableColumnSelector | |||
hideFooter | |||
/> | |||
</Grid> | |||
{ | |||
formik.values.action ? | |||
null | |||
: | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<FileList | |||
lang="ch" | |||
refId={params.id} | |||
refType={"proofReply"} | |||
dateHideable={true} | |||
disablePagination | |||
disableSelectionOnClick | |||
disableColumnMenu | |||
disableColumnSelector | |||
hideFooter | |||
/> | |||
</Grid> | |||
} | |||
</Grid> | |||
: | |||
( | |||
@@ -169,57 +187,67 @@ const FormPanel = ({ formData }) => { | |||
id="action" | |||
name="action" | |||
defaultValue={true} | |||
onChange={(event) => { | |||
setActionValue(event.target.value == "true" ? true : false); | |||
}} | |||
> | |||
<FormControlLabel value={true} control={<Radio />} label="可以付印(稿件正確)" /> | |||
<FormControlLabel value={false} control={<Radio />} label="未能付印(需要修改)" /> | |||
</RadioGroup> | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
請上載稿件修改的檔案: | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<input | |||
id="uploadFileBtn" | |||
name="file" | |||
type="file" | |||
accept=".pdf" | |||
style={{ display: 'none' }} | |||
disabled={attachments.length >= (formik.values.groupType == "A" ? 2 : 1)} | |||
onChange={(event) => { | |||
readFile(event) | |||
}} | |||
/> | |||
<label htmlFor="uploadFileBtn"> | |||
<Button | |||
component="span" | |||
variant="contained" | |||
size="large" | |||
disabled={attachments.length >= (formik.values.groupType == "A" ? 2 : 1)} | |||
>上載</Button> | |||
</label> | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<UploadFileTable key="uploadTable" recordList={attachments} setRecordList={setAttachments} /> | |||
</Grid> | |||
{ | |||
actionValue ? | |||
null | |||
: | |||
<> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
請上載稿件修改的檔案: | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<input | |||
id="uploadFileBtn" | |||
name="file" | |||
type="file" | |||
accept=".pdf" | |||
style={{ display: 'none' }} | |||
disabled={attachments.length >= (formik.values.groupType == "A" ? 2 : 1)} | |||
onChange={(event) => { | |||
readFile(event) | |||
}} | |||
/> | |||
<label htmlFor="uploadFileBtn"> | |||
<Button | |||
component="span" | |||
variant="contained" | |||
size="large" | |||
disabled={attachments.length >= (formik.values.groupType == "A" ? 2 : 1)} | |||
>上載</Button> | |||
</label> | |||
</Grid> | |||
<Grid item xs={12} md={12} textAlign="left"> | |||
<UploadFileTable key="uploadTable" recordList={attachments} setRecordList={setAttachments} /> | |||
</Grid> | |||
</> | |||
} | |||
<Grid item xs={12} md={12} lg={12}> | |||
<Stack direction="row" alignItems="center"> | |||
<FormLabel sx={{ paddingRight: 2, textAlign: "center" }}> | |||
<FormLabel sx={{ paddingRight: 2, paddingBottom: 3, textAlign: "center" }}> | |||
簽署: | |||
</FormLabel> | |||
<TextField | |||
fullWidth | |||
type="text" | |||
type="password" | |||
onChange={formik.handleChange} | |||
name="vaild" | |||
variant="outlined" | |||
error={Boolean(formik.errors["vaild"])} | |||
helperText={formik.errors["vaild"] ? formik.errors["vaild"] : ''} | |||
helperText={formik.errors["vaild"] ? formik.errors["vaild"] : ' '} | |||
placeholder="請輸入你的登入密碼" | |||
sx={ | |||
{ | |||
@@ -17,7 +17,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria,issu | |||
}) => { | |||
const [type, setType] = React.useState([]); | |||
const [status, setStatus] = React.useState({ key: 0, label: 'All', type: 'all' }); | |||
const [status, setStatus] = React.useState(ComboData.proofStatus[0]); | |||
const [orgSelected, setOrgSelected] = React.useState({}); | |||
const [orgCombo, setOrgCombo] = React.useState(); | |||
const [issueSelected, setIssueSelected] = React.useState({}); | |||
@@ -66,7 +66,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria,issu | |||
function resetForm() { | |||
setType([]); | |||
setStatus({ key: 0, label: 'All', type: 'all' }); | |||
setStatus(ComboData.proofStatus[0]); | |||
setOrgSelected({}); | |||
setIssueSelected({}); | |||
setGroupSelected({}); | |||
@@ -138,9 +138,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria,issu | |||
inputValue={(issueSelected?.id) ? getIssueLabel(issueSelected) : ""} | |||
getOptionLabel={(option)=>getIssueLabel(option)} | |||
onChange={(event, newValue) => { | |||
if (newValue !== null) { | |||
setIssueSelected(newValue); | |||
} | |||
setIssueSelected(newValue); | |||
}} | |||
renderInput={(params) => ( | |||
<TextField {...params} | |||
@@ -163,9 +161,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria,issu | |||
inputValue={(groupSelected?.label)?groupSelected?.label:""} | |||
getOptionLabel={(option)=>option.label} | |||
onChange={(event, newValue) => { | |||
if (newValue !== null) { | |||
setGroupSelected(newValue); | |||
} | |||
setGroupSelected(newValue); | |||
}} | |||
renderInput={(params) => ( | |||
<TextField {...params} | |||
@@ -264,9 +260,7 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria,issu | |||
value={orgSelected} | |||
inputValue={(orgSelected?.label) ? orgSelected?.label : ""} | |||
onChange={(event, newValue) => { | |||
if (newValue !== null) { | |||
setOrgSelected(newValue); | |||
} | |||
setOrgSelected(newValue); | |||
}} | |||
renderInput={(params) => ( | |||
<TextField {...params} | |||
@@ -20,6 +20,23 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||
navigate('/proof/reply/' + params.row.id); | |||
}; | |||
const getGroupTitle = (title) => { | |||
switch (title) { | |||
case 'Private Bill': | |||
return "私人帳單"; | |||
case 'Companies Ordinance': | |||
return "公司條例"; | |||
case 'High Court': | |||
return "高等法院"; | |||
case 'Notices': | |||
return "通知"; | |||
case 'Miscellaneous (Companies)': | |||
return "其他"; | |||
default: | |||
return title; | |||
} | |||
} | |||
const columns = [ | |||
{ | |||
@@ -82,7 +99,7 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||
headerName: '憲報類型', | |||
flex: 1, | |||
valueGetter: (params) => { | |||
return (params?.value) ? (params?.value) : ""; | |||
return getGroupTitle(params?.value); | |||
} | |||
}, | |||
{ | |||
@@ -17,7 +17,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
}) => { | |||
const [type, setType] = React.useState([]); | |||
const [status, setStatus] = React.useState({ key: 0, label: 'All', type: 'all' }); | |||
const [status, setStatus] = React.useState(ComboData.proofStatus[0]); | |||
const [issueSelected, setIssueSelected] = React.useState({}); | |||
const [issueCombo, setIssueCombo] = React.useState([]); | |||
const [groupSelected, setGroupSelected] = React.useState({}); | |||
@@ -42,7 +42,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
gazettGroup: groupSelected?.type, | |||
dateFrom: data.dateFrom, | |||
dateTo: data.dateTo, | |||
contact: data.contact, | |||
//contact: data.contact, | |||
replyed: (status?.type && status?.type != 'all') ? status?.type : "", | |||
}; | |||
applySearch(temp); | |||
@@ -57,8 +57,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
function resetForm() { | |||
setType([]); | |||
setStatus({ key: 0, label: 'All', type: 'all' }); | |||
setOrgSelected({}); | |||
setStatus(ComboData.proofStatus[0]); | |||
setIssueSelected({}); | |||
setGroupSelected({}); | |||
reset(); | |||
@@ -129,9 +128,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
inputValue={(issueSelected?.id) ? getIssueLabel(issueSelected) : ""} | |||
getOptionLabel={(option)=>getIssueLabel(option)} | |||
onChange={(event, newValue) => { | |||
if (newValue !== null) { | |||
setIssueSelected(newValue); | |||
} | |||
setIssueSelected(newValue); | |||
}} | |||
renderInput={(params) => ( | |||
<TextField {...params} | |||
@@ -154,9 +151,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
inputValue={(groupSelected?.labelCht)?groupSelected?.labelCht:""} | |||
getOptionLabel={(option)=>option.labelCht} | |||
onChange={(event, newValue) => { | |||
if (newValue !== null) { | |||
setGroupSelected(newValue); | |||
} | |||
setGroupSelected(newValue); | |||
}} | |||
renderInput={(params) => ( | |||
<TextField {...params} | |||
@@ -205,7 +200,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
/> | |||
</Grid> | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
{/* <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
<TextField | |||
fullWidth | |||
{...register("contact")} | |||
@@ -217,7 +212,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria,issueComboData | |||
}} | |||
/> | |||
</Grid> | |||
</Grid> */} | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
<Autocomplete | |||
@@ -43,6 +43,7 @@ const PublicNoticeDetail_GLD = () => { | |||
const params = useParams(); | |||
// const navigate = useNavigate() | |||
const [applicationDetailData, setApplicationDetailData] = useState({}); | |||
const [proofList, setProofList] = useState([]); | |||
// const [refApplicationDetailData, setRefApplicationDetailData] = React.useState({}); | |||
const [isLoading, setLoading] = useState(false); | |||
const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | |||
@@ -83,7 +84,7 @@ const PublicNoticeDetail_GLD = () => { | |||
const title = groupNo != null ? ("Application / " + appNo + ", " + gazetteIssue + ", " + issueNum + " , " + groupNo) : ("Application / " + appNo + ", " + gazetteIssue + ", " + issueNum) | |||
useEffect(() => { | |||
loadApplicationDetail() | |||
loadApplicationDetail(); | |||
}, []); | |||
// useEffect(() => { | |||
@@ -110,6 +111,7 @@ const PublicNoticeDetail_GLD = () => { | |||
setIssueNum(" No. " + gazetteIssueDetail.issueNo); | |||
setIssueDate(DateUtils.dateFormat(gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)")); | |||
setGroupNo(response.data.data.groupNo); | |||
setProofList(response.data.proofList); | |||
setLoading(false); | |||
} | |||
}) | |||
@@ -171,9 +173,9 @@ const PublicNoticeDetail_GLD = () => { | |||
onComplatedClick() | |||
} else if (getStatus == "withdraw") { | |||
onWithdrawnClick() | |||
} else if (getStatus == "notAccepted"){ | |||
} else if (getStatus == "notAccepted") { | |||
onNotAcceptClick(getReason); | |||
} else if (getStatus == "resubmit"){ | |||
} else if (getStatus == "resubmit") { | |||
onReSubmitClick(); | |||
} | |||
} | |||
@@ -266,8 +268,8 @@ const PublicNoticeDetail_GLD = () => { | |||
}; | |||
useEffect(() => { | |||
const status = applicationDetailData.data!=undefined?applicationDetailData.data.status:"" | |||
if(status === "submitted" && params.id > 0 && getUploadStatus){ | |||
const status = applicationDetailData.data != undefined ? applicationDetailData.data.status : "" | |||
if (status === "submitted" && params.id > 0 && getUploadStatus) { | |||
axios.get(`${SET_PUBLIC_NOTICE_STATUS_REVIEWED}/${params.id}`) | |||
.then((response) => { | |||
if (response.status === 204) { | |||
@@ -279,7 +281,7 @@ const PublicNoticeDetail_GLD = () => { | |||
console.log(error); | |||
return false; | |||
}); | |||
}else{ | |||
} else { | |||
setUploadStatus(false); | |||
} | |||
}, [getUploadStatus]); | |||
@@ -346,7 +348,10 @@ const PublicNoticeDetail_GLD = () => { | |||
</Grid> | |||
<Grid item xs={12} md={10}> | |||
<Box xs={12} ml={4} mt={3}> | |||
<TabTableDetail applicationDetailData={applicationDetailData} /> | |||
<TabTableDetail | |||
applicationDetailData={applicationDetailData} | |||
proofList={proofList} | |||
/> | |||
</Box> | |||
</Grid> | |||
</Grid> | |||
@@ -1,54 +1,53 @@ | |||
// material-ui | |||
import * as React from 'react'; | |||
import * as DateUtils from "utils/DateUtils"; | |||
import {FiDataGrid} from "components/FiDataGrid"; | |||
import { | |||
Button | |||
} from '@mui/material'; | |||
// ==============================|| EVENT TABLE ||============================== // | |||
export default function ProofTab({rows}) { | |||
function currencyFormat(num) { | |||
return num.toLocaleString('en-US', { | |||
minimumFractionDigits: 2 | |||
}); | |||
} | |||
const columns = [ | |||
{ | |||
id: 'proofRef', | |||
field: 'proofRef', | |||
headerName: 'Proof Ref.', | |||
id: 'refNo', | |||
field: 'refNo', | |||
headerName: 'Proof No.', | |||
flex: 1, | |||
}, | |||
{ | |||
id: 'proofSent', | |||
field: 'proofSent', | |||
headerName: 'Proof Return', | |||
id: 'created', | |||
field: 'created', | |||
headerName: 'Proof Date', | |||
flex: 1, | |||
valueGetter: (params) => { | |||
return DateUtils.datetimeStr(params?.value); | |||
} | |||
}, | |||
{ | |||
id: 'proofReturn', | |||
field: 'proofReturn', | |||
headerName: 'Proof Return', | |||
flex: 1, | |||
}, | |||
{ | |||
id: 'status', | |||
field: 'status', | |||
headerName: 'Status', | |||
id: 'replyDate', | |||
field: 'replyDate', | |||
headerName: 'Confirmed/Return Date', | |||
flex: 1, | |||
valueGetter: (params) => { | |||
return params?.value?DateUtils.datetimeStr(params?.value):""; | |||
} | |||
}, | |||
{ | |||
id: 'fee', | |||
field: 'fee', | |||
headerName: 'Fee (HKD)', | |||
flex: 2, | |||
headerName: 'Fee', | |||
flex: 1, | |||
valueGetter: (params) => { | |||
return (params?.value)?"$ "+currencyFormat(params?.value):""; | |||
} | |||
}, | |||
{ | |||
field: 'detail', | |||
type: 'actions', | |||
headerName: '', | |||
width: 50, | |||
cellClassName: 'actions', | |||
renderCell: () => { | |||
return <Button onClick={()=>{}}>查看詳細</Button>; | |||
}, | |||
} | |||
]; | |||
return ( | |||
@@ -21,31 +21,28 @@ const ProofTab = Loadable(lazy(() => import('./ProofTab'))); | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const PublicNotice = ({applicationDetailData}) => { | |||
const [submittedList, ] = React.useState([]); | |||
const [inProgressList, ] = React.useState([]); | |||
const PublicNotice = ({applicationDetailData, proofList}) => { | |||
const [_proofList, setProofList] = React.useState([]); | |||
const [inProgressList,] = React.useState([]); | |||
const [onReady,setOnReady] = React.useState(false); | |||
const [selectedTab, setSelectedTab] = React.useState("1"); | |||
// const navigate = useNavigate(); | |||
const [statusHistoryList, setStatusHistoryList] = React.useState([]); | |||
// useEffect(() => { | |||
// loadData(); | |||
// }, []); | |||
const reloadPage = () => { | |||
window.location.reload(false); | |||
} | |||
React.useEffect(() => { | |||
//if user data from parent are not null | |||
// console.log(applicationDetailData) | |||
if (Object.keys(applicationDetailData).length > 0) { | |||
setStatusHistoryList(applicationDetailData.statusHistoryList); | |||
} | |||
}, [applicationDetailData]); | |||
React.useEffect(() => { | |||
setProofList(proofList); | |||
}, [proofList]); | |||
React.useEffect(() => { | |||
//if state data are ready and assign to different field | |||
if (statusHistoryList.length > 0) { | |||
@@ -75,14 +72,14 @@ const PublicNotice = ({applicationDetailData}) => { | |||
<TabContext value={selectedTab}> | |||
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}> | |||
<TabList onChange={handleChange} aria-label="lab API tabs example"> | |||
<Tab label={"Proof(" + submittedList.length + ")"} value="1" /> | |||
<Tab label={"Proof(" + (_proofList?.length?_proofList?.length:0) + ")"} value="1" /> | |||
<Tab label={"Payment(" + inProgressList.length + ")"} value="2" /> | |||
<Tab label={"Status History(" + statusHistoryList.length + ")"} value="3" /> | |||
</TabList> | |||
</Box> | |||
<TabPanel value="1"> | |||
<ProofTab | |||
rows={submittedList} | |||
rows={_proofList} | |||
reloadFunction={reloadPage} | |||
/> | |||
</TabPanel> | |||
@@ -141,6 +141,7 @@ const BusCustomFormWizard = (props) => { | |||
data.address1 !==""&& | |||
data.email !==""&& | |||
data.emailConfirm !==""&& | |||
data.email == data.emailConfirm&& | |||
data.phone !==""&& | |||
data.phoneCountryCode !==""&& | |||
termsAndConAccept == true&& | |||
@@ -389,13 +390,12 @@ const BusCustomFormWizard = (props) => { | |||
} | |||
function handleEmail(email) { | |||
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; | |||
// var result = reg.test(email); | |||
var result = email.match(validRegex); | |||
if (result == false) { | |||
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; | |||
if (!email.match(validRegex)) { | |||
return false; | |||
}else{ | |||
return true; | |||
} | |||
return true; | |||
} | |||
const formik = useFormik({ | |||
@@ -136,6 +136,7 @@ const CustomFormWizard = (props) => { | |||
data.address1 !==""&& | |||
data.email !==""&& | |||
data.emailConfirm !==""&& | |||
data.email == data.emailConfirm&& | |||
data.phone !==""&& | |||
data.phoneCountryCode !==""&& | |||
termsAndConAccept == true&& | |||
@@ -409,13 +410,11 @@ const CustomFormWizard = (props) => { | |||
function handleEmail(email) { | |||
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; | |||
// var result = reg.test(email); | |||
var result = email.match(validRegex); | |||
if (result == false) { | |||
if (!email.match(validRegex)) { | |||
return false; | |||
}else{ | |||
return true; | |||
} | |||
console.log("email true") | |||
return true; | |||
} | |||
const formik = useFormik({ | |||
@@ -58,31 +58,31 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
}), | |||
onSubmit: (values) => { | |||
HttpUtils.post({ | |||
url: UrlUtils.POST_IND_USER + "/" + userData.id, | |||
url: UrlUtils.POST_ORG_USER + "/" + userData.id, | |||
params: { | |||
contactTel: { | |||
countryCode: values.tel_countryCode, | |||
phoneNumber: values.phoneNumber | |||
}, | |||
faxNo: { | |||
countryCode: values.fax_countryCode, | |||
faxNumber: values.faxNumber | |||
}, | |||
addressBus: { | |||
country: values.country, | |||
district: values.district, | |||
addressLine1: values.addressLine1, | |||
addressLine2: values.addressLine2, | |||
addressLine3: values.addressLine3, | |||
}, | |||
// faxNo: { | |||
// countryCode: values.fax_countryCode, | |||
// faxNumber: values.faxNumber | |||
// }, | |||
// addressBus: { | |||
// country: values.country, | |||
// district: values.district, | |||
// addressLine1: values.addressLine1, | |||
// addressLine2: values.addressLine2, | |||
// addressLine3: values.addressLine3, | |||
// }, | |||
identification: values.identification, | |||
emailBus: values.emailBus, | |||
contactPerson: values.contactPerson, | |||
enCompanyName: values.enCompanyName, | |||
chCompanyName: values.chCompanyName, | |||
// enCompanyName: values.enCompanyName, | |||
// chCompanyName: values.chCompanyName, | |||
orgId: values.orgId, | |||
brNo: values.brNo, | |||
brExpiryDate: values.brExpiryDate, | |||
// brNo: values.brNo, | |||
// brExpiryDate: values.brExpiryDate, | |||
}, | |||
onSuccess: function () { | |||
@@ -307,7 +307,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
); | |||
return displayOptions; | |||
}, | |||
getOptionLabel: (item) => item ? typeof item === 'number' ? item + "" : (item["brNo"] ? item["brNo"] + "-" + item["enCompanyName"] : "") : "", | |||
getOptionLabel: (item) => item ? typeof item === 'number' ? item + "" : (item["brNo"] ? item["brNo"] + "-" + item["enCompanyName"]: "") : "", | |||
isOptionEqualToValue: (option, newValue, setValue, setInputValue) => { | |||
if (option.id == newValue) { | |||
setValue(option); | |||
@@ -463,13 +463,16 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
Organization | |||
</Typography> | |||
</Grid> | |||
<Grid item lg={2} > | |||
<Button variant="contained" | |||
onClick={createOrgClick} | |||
> | |||
Create Organization | |||
</Button> | |||
</Grid> | |||
{currentUserData.orgId==null? | |||
<Grid item lg={2} > | |||
<Button variant="contained" | |||
onClick={createOrgClick} | |||
> | |||
Create Organization | |||
</Button> | |||
</Grid> | |||
:null | |||
} | |||
</Grid> | |||
</Grid> | |||
@@ -477,7 +480,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
{FieldUtils.getTextField({ | |||
label: "Org.Name (English):", | |||
valueName: "enCompanyName", | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -486,7 +489,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
{FieldUtils.getTextField({ | |||
label: "Org.Name (Chinese):", | |||
valueName: "chCompanyName", | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -495,7 +498,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
{FieldUtils.getTextField({ | |||
label: "BR No.:", | |||
valueName: "brNo", | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -505,7 +508,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
label: "Country:", | |||
valueName: "country", | |||
dataList: ComboData.country, | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -517,7 +520,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
code: "fax_countryCode", | |||
num: "faxNumber" | |||
}, | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -526,7 +529,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
{FieldUtils.getDateField({ | |||
label: "BR Expiry Date.:", | |||
valueName: "brExpiryDate", | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -535,7 +538,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
{FieldUtils.getAddressField({ | |||
label: "Address:", | |||
valueName: ["addressLine1", "addressLine2", "addressLine3"], | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -545,7 +548,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
label: "District:", | |||
valueName: "district", | |||
dataList: ComboData.district, | |||
disabled: (!editMode), | |||
disabled: true, | |||
form: formik | |||
})} | |||
</Grid> | |||
@@ -27,7 +27,7 @@ const UserMaintainPage_Organization = () => { | |||
useEffect(()=>{ | |||
console.log(userData); | |||
// console.log(userData); | |||
loadData(); | |||
},[]); | |||
@@ -40,9 +40,24 @@ const UserMaintainPage_Organization = () => { | |||
HttpUtils.get({ | |||
url: `${UrlUtils.GET_ORG_USER_PATH}/${params.id}`, | |||
onSuccess: function(response){ | |||
response.data["addressBus"] = JSON.parse(response.data["addressBus"]); | |||
response.data["contactTel"] = JSON.parse(response.data["contactTel"]); | |||
response.data["faxNo"] = JSON.parse(response.data["faxNo"]); | |||
console.log(response) | |||
if(response.data.orgId !=null){ | |||
response.data["addressBus"] = response.orgDetail.data["addressTemp"]; | |||
response.data["contactTel"] = response.orgDetail.data["contactTel"]; | |||
response.data["faxNo"] = response.orgDetail.data["faxNo"]; | |||
response.data["brExpiryDate"] = response.orgDetail.data.brExpiryDate?DateUtils.dateStr(response.orgDetail.data.brExpiryDate):""; | |||
response.data["brNo"] = response.orgDetail.data.brNo; | |||
response.data["enCompanyName"] = response.orgDetail.data.enCompanyName; | |||
response.data["chCompanyName"] = response.orgDetail.data.chCompanyName; | |||
response.data["chCompanyName"] = response.orgDetail.data.chCompanyName; | |||
}else{ | |||
response.data["addressBus"] = JSON.parse(response.data["addressBus"]); | |||
response.data["contactTel"] = JSON.parse(response.data["contactTel"]); | |||
response.data["faxNo"] = JSON.parse(response.data["faxNo"]); | |||
response.data["brExpiryDate"] = response.data.brExpiryDate?DateUtils.dateStr(response.data.brExpiryDate):""; | |||
} | |||
let createDate = DateUtils.datetimeStr(response.data.created); | |||
let modifiedBy = DateUtils.datetimeStr(response.data.modified)+", "+response.data.modifiedBy; | |||
@@ -64,10 +79,9 @@ const UserMaintainPage_Organization = () => { | |||
response.data["faxNumber"] = response.data.faxNo?.faxNumber; | |||
response.data["fax_countryCode"] = response.data.faxNo?.countryCode; | |||
response.data["brExpiryDate"] = response.data.brExpiryDate?DateUtils.dateStr(response.data.brExpiryDate):""; | |||
//response.data["orgId"] = response.data.brExpiryDate?DateUtils.dateStr(response.data.brExpiryDate):""; | |||
setUserData(response.data); | |||
setOrgData(response.orgList); | |||
} | |||
@@ -13,6 +13,7 @@ const PublicNoticeApplyForm = Loadable(lazy(() => import('pages/PublicNotice/App | |||
const PublicNoticeDetail = Loadable(lazy(() => import('pages/PublicNoticeDetail'))); | |||
const ProofReply = Loadable(lazy(() => import('pages/ProofReply_Public'))); | |||
const ProofSearch = Loadable(lazy(() => import('pages/ProofSearch_Public'))); | |||
const ProofPayment = Loadable(lazy(() => import('pages/ProofPayment'))); | |||
// ==============================|| MAIN ROUTING ||============================== // | |||
@@ -55,6 +56,10 @@ const PublicDashboard = { | |||
path: 'proof/search', | |||
element: <ProofSearch/> | |||
}, | |||
{ | |||
path: 'proof/pay/:id', | |||
element: <ProofPayment/> | |||
}, | |||
] | |||
}, | |||
] | |||
@@ -20,6 +20,7 @@ export const GET_IND_USER_VERIFY = apiPath+'/user/verify'; | |||
export const POST_IND_USER = apiPath+'/user/ind'; | |||
export const GET_ORG_USER_PATH = apiPath+'/user/org'; | |||
export const POST_ORG_USER = apiPath+'/user/org'; | |||
export const GET_ORG_PATH = apiPath+'/org'; | |||
export const GET_ORG_FROM_USER_PATH = apiPath+'/org/from-user'; | |||
@@ -75,6 +76,8 @@ export const CREATE_PROOF = apiPath+'/proof/create';//POST | |||
export const GET_PROOF = apiPath+'/proof/details';//GET | |||
export const REPLY_PROOF = apiPath+'/proof/reply';//GET | |||
export const PROOF_CHECK_PRICE = apiPath+'/proof/check-price';//GET | |||
export const GET_PROOF_PAY = apiPath+'/proof/pay-details';//GET | |||
//User Group | |||
export const POST_AND_UPDATE_USER_GROUP = apiPath+'/group/save'; |