@@ -26,6 +26,9 @@ const SearchPublicNoticeForm = ({ applySearch, issueComboData, _paymentCount, _p | |||
const [isFailPopUp, setIsFailPopUp] = React.useState(false); | |||
const [failText, setFailText] = React.useState(""); | |||
const [confirmPopUp, setConfirmPopUp] = React.useState(false); | |||
const [dueDate, setDueDate] = React.useState(DateUtils.dateStr(new Date())); | |||
const [isSuccessPopUp, setIsSuccessPopUp] = React.useState(false); | |||
const [resultCount, setResultCount] = React.useState(0); | |||
const [dnIdList, setDnIdList] = React.useState([]); | |||
@@ -68,18 +71,26 @@ const SearchPublicNoticeForm = ({ applySearch, issueComboData, _paymentCount, _p | |||
setIsFailPopUp(true); | |||
return; | |||
} else { | |||
HttpUtils.post({ | |||
url: UrlUtils.DEMAND_NOTE_CREATE + "/" + issueSelected.id, | |||
onSuccess: function (responseData) { | |||
setResultCount(responseData.count); | |||
setDnIdList(responseData.idList); | |||
setIsSuccessPopUp(true); | |||
} | |||
}); | |||
setDueDate(DateUtils.dateStr(new Date())); | |||
setConfirmPopUp(true); | |||
} | |||
}; | |||
const doDnCreate=()=>{ | |||
setConfirmPopUp(false); | |||
HttpUtils.post({ | |||
url: UrlUtils.DEMAND_NOTE_CREATE + "/" + issueSelected.id, | |||
params:{ | |||
dueDate: dueDate | |||
}, | |||
onSuccess: function (responseData) { | |||
setResultCount(responseData.count); | |||
setDnIdList(responseData.idList); | |||
setIsSuccessPopUp(true); | |||
} | |||
}); | |||
} | |||
const fileDownload = () => { | |||
HttpUtils.fileDownload({ | |||
method:'post', | |||
@@ -206,6 +217,47 @@ const SearchPublicNoticeForm = ({ applySearch, issueComboData, _paymentCount, _p | |||
</DialogActions> | |||
</Dialog> | |||
</div> | |||
<div> | |||
<Dialog | |||
open={confirmPopUp} | |||
onClose={() => setConfirmPopUp(false)} | |||
PaperProps={{ | |||
sx: { | |||
minWidth: '40vw', | |||
maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, | |||
maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } | |||
} | |||
}} | |||
> | |||
<DialogTitle><Typography variant="h3">Create Confirm</Typography></DialogTitle> | |||
<DialogContent style={{ display: 'flex', }}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item md={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
<Typography variant="h4" style={{ padding: '16px' }}>Due Date: </Typography> | |||
</Grid> | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
<TextField | |||
fullWidth | |||
type="date" | |||
defaultValue={dueDate} | |||
InputProps={{ inputProps: { min: DateUtils.dateStr(new Date()) } }} | |||
onChange={(newValue) => { | |||
setDueDate(DateUtils.dateStr(newValue)) | |||
}} | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
/> | |||
</Grid> | |||
</Grid> | |||
</DialogContent> | |||
<DialogActions> | |||
<Button onClick={() => setConfirmPopUp(false)}><Typography variant="h5">Cancel</Typography></Button> | |||
<Button onClick={() => doDnCreate()}><Typography variant="h5">Confirm</Typography></Button> | |||
</DialogActions> | |||
</Dialog> | |||
</div> | |||
<div> | |||
<Dialog | |||
open={isSuccessPopUp} | |||
@@ -227,15 +227,16 @@ export default function SearchDemandNote({ recordList, reloadFun, applySearch }) | |||
}, | |||
}, | |||
{ | |||
id: 'issueDate', | |||
field: 'issueDate', | |||
headerName: 'Due Date / Sent Date', | |||
id: 'dueDate', | |||
field: 'dueDate', | |||
headerName: 'Issue / Due / Sent Date', | |||
width: 300, | |||
renderCell: (params) => { | |||
return (<> | |||
{DateUtils.dateStr(params?.value)} | |||
{params.row.sentDate ? <><br /> {DateUtils.datetimeStr(params.row.sentDate)} - {params.row.sentBy} </>: <> / To be sent</>} | |||
</>); | |||
return (<table> | |||
<tr><td>Issue:</td><td>{DateUtils.dateStr(params?.row.issueDate)}</td></tr> | |||
<tr><td>Due:</td><td>{params?.value? DateUtils.dateStr(params?.value):"--"}</td></tr> | |||
<tr><td>Sent:</td><td>{params.row.sentDate ? <> {DateUtils.datetimeStr(params.row.sentDate)} - {params.row.sentBy} </>: <> To be sent</>}</td></tr> | |||
</table>); | |||
} | |||
}, | |||
{ | |||
@@ -31,6 +31,9 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | |||
const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | |||
const [minDueDate, setMinDueDate] = React.useState(searchCriteria.dueDateFrom); | |||
const [maxDueDate, setMaxDueDate] = React.useState(searchCriteria.dueDateTo); | |||
const { reset, register, handleSubmit } = useForm() | |||
const onSubmit = (data) => { | |||
data.status = selectedLabelsString | |||
@@ -47,6 +50,8 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
dnNo: data.dnNo, | |||
dateFrom: data.dateFrom, | |||
dateTo: data.dateTo, | |||
dueDateFrom: data.dueDateFrom, | |||
dueDateTo: data.dueDateTo, | |||
status: (data.status === '' || data.status.includes("all")) ? "" : data.status, | |||
}; | |||
applySearch(temp); | |||
@@ -181,40 +186,92 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
/> | |||
</Grid> | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
<TextField | |||
fullWidth | |||
{...register("dateFrom")} | |||
id="dateFrom" | |||
type="date" | |||
label={"Issue Date(From)"} | |||
defaultValue={searchCriteria.dateFrom} | |||
InputProps={{ inputProps: { max: maxDate } }} | |||
onChange={(newValue) => { | |||
setMinDate(DateUtils.dateStr(newValue)); | |||
}} | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
/> | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}> | |||
<Grid container> | |||
<Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
<TextField | |||
fullWidth | |||
{...register("dateFrom")} | |||
id="dateFrom" | |||
type="date" | |||
label={"Issue Date(From)"} | |||
defaultValue={searchCriteria.dateFrom} | |||
InputProps={{ inputProps: { max: maxDate } }} | |||
onChange={(newValue) => { | |||
setMinDate(DateUtils.dateStr(newValue)); | |||
}} | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
/> | |||
</Grid> | |||
<Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:0.8, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
To | |||
</Grid> | |||
<Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
<TextField | |||
fullWidth | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
{...register("dateTo")} | |||
InputProps={{ inputProps: { min: minDate } }} | |||
onChange={(newValue) => { | |||
setMaxDate(DateUtils.dateStr(newValue)); | |||
}} | |||
id="dateTo" | |||
type="date" | |||
//label={"Submit Date(To)"} | |||
defaultValue={searchCriteria.dateTo} | |||
/> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
<TextField | |||
fullWidth | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
{...register("dateTo")} | |||
InputProps={{ inputProps: { min: minDate } }} | |||
onChange={(newValue) => { | |||
setMaxDate(DateUtils.dateStr(newValue)); | |||
}} | |||
id="dateTo" | |||
type="date" | |||
label={"Issue Date(To)"} | |||
defaultValue={searchCriteria.dateTo} | |||
/> | |||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}> | |||
<Grid container> | |||
<Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
<TextField | |||
fullWidth | |||
{...register("dueDateFrom")} | |||
id="dueDateFrom" | |||
type="date" | |||
label={"Due Date(From)"} | |||
defaultValue={searchCriteria.dueDateFrom} | |||
InputProps={{ inputProps: { max: maxDueDate } }} | |||
onChange={(newValue) => { | |||
setMinDueDate(DateUtils.dateStr(newValue)); | |||
}} | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
/> | |||
</Grid> | |||
<Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:0.8, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
To | |||
</Grid> | |||
<Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
<TextField | |||
fullWidth | |||
InputLabelProps={{ | |||
shrink: true | |||
}} | |||
{...register("dueDateTo")} | |||
InputProps={{ inputProps: { min: minDueDate } }} | |||
onChange={(newValue) => { | |||
setMaxDueDate(DateUtils.dateStr(newValue)); | |||
}} | |||
id="dueDateTo" | |||
type="date" | |||
//label={"Submit Date(To)"} | |||
defaultValue={searchCriteria.dueDateTo} | |||
/> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
@@ -38,6 +38,8 @@ const UserSearchPage_Individual = () => { | |||
const [searchCriteria, setSearchCriteria] = React.useState({ | |||
dateTo: DateUtils.dateStr(new Date()), | |||
dateFrom: DateUtils.dateStr(new Date().setDate(new Date().getDate() - 14)), | |||
dueDateTo: DateUtils.dateStr(new Date()), | |||
dueDateFrom: DateUtils.dateStr(new Date().setDate(new Date().getDate() - 14)), | |||
}); | |||
const [onReady, setOnReady] = React.useState(false); | |||