| @@ -0,0 +1,133 @@ | |||||
| // material-ui | |||||
| import { | |||||
| Button, | |||||
| Grid, | |||||
| TextField, | |||||
| Autocomplete, | |||||
| Typography | |||||
| } from '@mui/material'; | |||||
| import MainCard from "components/MainCard"; | |||||
| import { useForm } from "react-hook-form"; | |||||
| import * as React from "react"; | |||||
| // import * as DateUtils from "utils/DateUtils"; | |||||
| import {PNSPS_BUTTON_THEME} from "themes/buttonConst"; | |||||
| import {ThemeProvider} from "@emotion/react"; | |||||
| // import * as ComboData from "utils/ComboData"; | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||||
| const SearchGazetteIssueForm = ({ applyExport, comboData, waitDownload}) => { | |||||
| const [selectedYear, setSelectedYear] = React.useState([]); | |||||
| // const [defaultYear, setDefaultYear] = React.useState(searchCriteria.year); | |||||
| const [comboList, setComboList] = React.useState([]); | |||||
| // const [onReady, setOnReady] = React.useState(false); | |||||
| const { | |||||
| // register, | |||||
| handleSubmit } = useForm() | |||||
| const onSubmit = () => { | |||||
| console.log(selectedYear) | |||||
| if (selectedYear !=null && Object.keys(selectedYear).length>0){ | |||||
| console.log("okkkkkkkkkkkkkkkk") | |||||
| const temp = { | |||||
| year: selectedYear.label, | |||||
| }; | |||||
| applyExport(temp); | |||||
| } | |||||
| }; | |||||
| React.useEffect(() => { | |||||
| if (comboData && comboData.length > 0) { | |||||
| // console.log(comboData) | |||||
| // const labelValue = comboData.find(obj => obj.label === searchCriteria.year); | |||||
| // console.log(labelValue) | |||||
| // if(selectedYear.length == 0){ | |||||
| // setSelectedYear(comboData[0]) | |||||
| // } | |||||
| setComboList(comboData) | |||||
| // setSelectedYear(searchCriteria.dateFrom) | |||||
| } | |||||
| }, [comboData]); | |||||
| return ( | |||||
| <MainCard xs={12} md={12} lg={12} | |||||
| border={false} | |||||
| content={false} | |||||
| > | |||||
| <form onSubmit={handleSubmit(onSubmit)} > | |||||
| <Grid container sx={{ backgroundColor: '#ffffff', ml: 2, mt: 1}} width="98%"> | |||||
| {/*row 1*/} | |||||
| <Grid item justifyContent="space-between" alignItems="center" sx={{mt:1,ml:3,mb:1}}> | |||||
| <Typography variant="h5" > | |||||
| Export Preliminary Gazette Issue From Holiday Year | |||||
| </Typography> | |||||
| </Grid> | |||||
| {/*row 2*/} | |||||
| <Grid container display="flex" alignItems={"center"}> | |||||
| <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||||
| <Autocomplete | |||||
| disablePortal | |||||
| id="year-combo" | |||||
| value={selectedYear} | |||||
| // defaultValue={selectedYear} | |||||
| options={comboList} | |||||
| // disabled={checkCountry} | |||||
| getOptionLabel={(option) => option.label ? option.label : ""} | |||||
| onChange={(event, newValue) => { | |||||
| setSelectedYear(newValue); | |||||
| }} | |||||
| sx={{ | |||||
| "& .MuiInputBase-root": { height: "41px" }, | |||||
| "#year-combo": { padding: "0px 0px 0px 0px" }, | |||||
| "& .MuiAutocomplete-endAdornment": { top: "auto" }, | |||||
| }} | |||||
| renderInput={(params) => <TextField {...params} placeholder={""}/>} | |||||
| /> | |||||
| </Grid> | |||||
| <Grid item xs={9} s={6} md={4} lg={4} 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="To" | |||||
| defaultValue={searchCriteria.dateTo} | |||||
| /> */} | |||||
| </Grid> | |||||
| {/* <Grid item xs={9} s={6} md={4} lg={3}> | |||||
| </Grid> */} | |||||
| </Grid> | |||||
| <Grid container justifyContent="center" direction="row" alignItems="center" spacing={3}> | |||||
| <ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||||
| <Grid item sx={{ ml: 3, mb: 3, }} > | |||||
| <Button | |||||
| variant="contained" | |||||
| type="submit" | |||||
| size="large" | |||||
| disabled={waitDownload} | |||||
| > | |||||
| Export | |||||
| </Button> | |||||
| </Grid> | |||||
| </ThemeProvider> | |||||
| </Grid> | |||||
| </Grid> | |||||
| </form> | |||||
| </MainCard> | |||||
| ); | |||||
| }; | |||||
| export default SearchGazetteIssueForm; | |||||
| @@ -60,7 +60,7 @@ const SearchGazetteIssueForm = ({ applySearch, comboData}) => { | |||||
| {/*row 1*/} | {/*row 1*/} | ||||
| <Grid item justifyContent="space-between" alignItems="center" sx={{mt:1,ml:3,mb:1}}> | <Grid item justifyContent="space-between" alignItems="center" sx={{mt:1,ml:3,mb:1}}> | ||||
| <Typography variant="h5" > | <Typography variant="h5" > | ||||
| Year | |||||
| Search | |||||
| </Typography> | </Typography> | ||||
| </Grid> | </Grid> | ||||
| {/*row 2*/} | {/*row 2*/} | ||||
| @@ -14,6 +14,7 @@ import Loadable from 'components/Loadable'; | |||||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | ||||
| import MainCard from 'components/MainCard'; | import MainCard from 'components/MainCard'; | ||||
| const ExportForm = Loadable(React.lazy(() => import('./ExportForm'))); | |||||
| const SearchForm = Loadable(React.lazy(() => import('./SearchForm'))); | const SearchForm = Loadable(React.lazy(() => import('./SearchForm'))); | ||||
| const GazetteIssueTable = Loadable(React.lazy(() => import('./DataGrid'))) | const GazetteIssueTable = Loadable(React.lazy(() => import('./DataGrid'))) | ||||
| @@ -36,13 +37,20 @@ import { notifySaveSuccess } from 'utils/CommonFunction'; | |||||
| const Index = () => { | const Index = () => { | ||||
| const [record, setRecord] = React.useState([]); | const [record, setRecord] = React.useState([]); | ||||
| const [comboData, setComboData] = React.useState([]); | const [comboData, setComboData] = React.useState([]); | ||||
| const [holidayComboData, setHolidayComboData] = React.useState([]); | |||||
| const [onReady, setOnReady] = React.useState(false); | const [onReady, setOnReady] = React.useState(false); | ||||
| const [onSearchReady, setOnSearchReady] = React.useState(false); | const [onSearchReady, setOnSearchReady] = React.useState(false); | ||||
| const [onExportReady, setOnExportReady] = React.useState(false); | |||||
| // const navigate = useNavigate() | // const navigate = useNavigate() | ||||
| const [searchCriteria, setSearchCriteria] = React.useState({ | const [searchCriteria, setSearchCriteria] = React.useState({ | ||||
| year: dateStr_Year(new Date()), | year: dateStr_Year(new Date()), | ||||
| // dateFrom: DateUtils.dateStr(new Date().setDate(new Date().getDate()-14)), | // dateFrom: DateUtils.dateStr(new Date().setDate(new Date().getDate()-14)), | ||||
| }); | }); | ||||
| const [exportCriteria, setExportCriteria] = React.useState({ | |||||
| // year: dateStr_Year(new Date()), | |||||
| // dateFrom: DateUtils.dateStr(new Date().setDate(new Date().getDate()-14)), | |||||
| }); | |||||
| const [attachments, setAttachments] = React.useState([]); | const [attachments, setAttachments] = React.useState([]); | ||||
| const [waitImport, setWaitImport] = React.useState(false); | const [waitImport, setWaitImport] = React.useState(false); | ||||
| @@ -78,8 +86,21 @@ const Index = () => { | |||||
| onSuccess: (responseData) => { | onSuccess: (responseData) => { | ||||
| let combo = responseData; | let combo = responseData; | ||||
| setComboData(combo); | setComboData(combo); | ||||
| setOnReady(true); | |||||
| setOnSearchReady(true) | setOnSearchReady(true) | ||||
| loadHolidayCombo(true) | |||||
| // setOnReady(true); | |||||
| } | |||||
| }); | |||||
| } | |||||
| function loadHolidayCombo() { | |||||
| HttpUtils.get({ | |||||
| url: UrlUtils.GET_HOLIDAY_COMBO, | |||||
| onSuccess: (responseData) => { | |||||
| let combo = responseData | |||||
| setHolidayComboData(combo) | |||||
| setOnExportReady(true) | |||||
| setOnReady(true) | |||||
| } | } | ||||
| }); | }); | ||||
| } | } | ||||
| @@ -87,6 +108,17 @@ const Index = () => { | |||||
| function applySearch(input) { | function applySearch(input) { | ||||
| setSearchCriteria(input); | setSearchCriteria(input); | ||||
| } | } | ||||
| function applyExport(input) { | |||||
| setExportCriteria(input); | |||||
| } | |||||
| React.useEffect(() => { | |||||
| if (Object.keys(exportCriteria).length > 0) { | |||||
| // console.log(exportCriteria) | |||||
| doExport(); | |||||
| } | |||||
| }, [exportCriteria]); | |||||
| React.useEffect(() => { | React.useEffect(() => { | ||||
| if (attachments.length > 0) { | if (attachments.length > 0) { | ||||
| @@ -116,6 +148,7 @@ const Index = () => { | |||||
| setWaitDownload(true) | setWaitDownload(true) | ||||
| HttpUtils.fileDownload({ | HttpUtils.fileDownload({ | ||||
| url: UrlUtils.GET_ISSUE_LIST, | url: UrlUtils.GET_ISSUE_LIST, | ||||
| params: exportCriteria, | |||||
| onResponse: () => { | onResponse: () => { | ||||
| setTimeout(()=> setWaitDownload(false), 500) | setTimeout(()=> setWaitDownload(false), 500) | ||||
| } | } | ||||
| @@ -158,23 +191,18 @@ const Index = () => { | |||||
| </Stack> | </Stack> | ||||
| </div> | </div> | ||||
| </Grid> | </Grid> | ||||
| {!onExportReady? | |||||
| <LoadingComponent />: | |||||
| <Grid item xs={12} md={12} lg={12} width="100%"> | |||||
| <ExportForm | |||||
| applyExport={applyExport} | |||||
| comboData={holidayComboData} | |||||
| waitDownload={waitDownload} | |||||
| /> | |||||
| </Grid> | |||||
| } | |||||
| <Grid item xs={12} md={12} lg={6} width="100%"> | <Grid item xs={12} md={12} lg={6} width="100%"> | ||||
| <Stack direction="row" justifyContent="flex-start" alignItems="center" spacing={2} sx={{ml:2,mt:1}} > | <Stack direction="row" justifyContent="flex-start" alignItems="center" spacing={2} sx={{ml:2,mt:1}} > | ||||
| <ThemeProvider theme={PNSPS_LONG_BUTTON_THEME}> | |||||
| <label htmlFor="downloadFileBtn"> | |||||
| <Button | |||||
| component="span" | |||||
| variant="contained" | |||||
| size="large" | |||||
| disabled={waitDownload} | |||||
| onClick={doExport} | |||||
| > | |||||
| <Typography variant="h5">Export</Typography> | |||||
| </Button> | |||||
| </label> | |||||
| </ThemeProvider> | |||||
| <ThemeProvider theme={PNSPS_LONG_BUTTON_THEME}> | <ThemeProvider theme={PNSPS_LONG_BUTTON_THEME}> | ||||
| <input | <input | ||||
| id="uploadFileBtn" | id="uploadFileBtn" | ||||
| @@ -201,14 +229,13 @@ const Index = () => { | |||||
| </Stack> | </Stack> | ||||
| </Grid> | </Grid> | ||||
| {/*row 1*/} | {/*row 1*/} | ||||
| <Grid item xs={12} md={12} lg={12} width="100%"> | <Grid item xs={12} md={12} lg={12} width="100%"> | ||||
| <SearchForm | |||||
| applySearch={applySearch} | |||||
| // generateXML={generateXML} | |||||
| searchCriteria={searchCriteria} | |||||
| comboData={comboData} | |||||
| /> | |||||
| <SearchForm | |||||
| applySearch={applySearch} | |||||
| comboData={comboData} | |||||
| /> | |||||
| </Grid> | </Grid> | ||||
| {/*row 2*/} | {/*row 2*/} | ||||
| {!onSearchReady? | {!onSearchReady? | ||||
| @@ -231,9 +231,9 @@ const ApplicationDetailCard = ({ formData, }) => { | |||||
| <Grid item xs={12} md={12} lg={12} | <Grid item xs={12} md={12} lg={12} | ||||
| sx={{ display: 'flex', alignItems: 'center' }}> | sx={{ display: 'flex', alignItems: 'center' }}> | ||||
| <Typography variant="h5" display="inline"> | <Typography variant="h5" display="inline"> | ||||
| <Typography variant="h5" style={{color:'red'}} display="inline"> | |||||
| {/* <Typography variant="h5" style={{color:'red'}} display="inline"> | |||||
| <FormattedMessage id="payAnd" /> | <FormattedMessage id="payAnd" /> | ||||
| </Typography> | |||||
| </Typography> */} | |||||
| <FormattedMessage id="commentDeadline" />: | <FormattedMessage id="commentDeadline" />: | ||||
| </Typography> | </Typography> | ||||
| </Grid> | </Grid> | ||||
| @@ -250,7 +250,7 @@ const ApplicationDetailCard = ({ formData, }) => { | |||||
| <Grid item xs={12} md={12} lg={12} | <Grid item xs={12} md={12} lg={12} | ||||
| sx={{ display: 'flex', alignItems: 'center' }}> | sx={{ display: 'flex', alignItems: 'center' }}> | ||||
| <Typography variant="h5" display="inline"> | <Typography variant="h5" display="inline"> | ||||
| <Typography variant="h5" style={{color:'red'}} display="inline"> | |||||
| <Typography variant="h5" display="inline"> | |||||
| <FormattedMessage id="payAnd" /> | <FormattedMessage id="payAnd" /> | ||||
| </Typography> | </Typography> | ||||
| <FormattedMessage id="paymentDeadline" />: | <FormattedMessage id="paymentDeadline" />: | ||||
| @@ -363,8 +363,8 @@ | |||||
| "applicationPublishDate": "Publish date", | "applicationPublishDate": "Publish date", | ||||
| "pleaseCheckReminder": "Please download the following printed manuscript file and proofread it carefully", | "pleaseCheckReminder": "Please download the following printed manuscript file and proofread it carefully", | ||||
| "payAnd": "Pay and ", | "payAnd": "Pay and ", | ||||
| "commentDeadline": "Deadline of Proof with Revise", | |||||
| "paymentDeadline": "Deadline of Confirm Proof and Payment", | |||||
| "commentDeadline": "Deadline for proof with revison", | |||||
| "paymentDeadline": "Deadline for confirm proof and payment", | |||||
| "before": "Before", | "before": "Before", | ||||
| "page": "Page", | "page": "Page", | ||||
| "proofReplyDate": "Proof Reply Date", | "proofReplyDate": "Proof Reply Date", | ||||
| @@ -359,7 +359,7 @@ | |||||
| "pleaseCheckReminder": "请下载下列印刷稿档案,并仔细校对", | "pleaseCheckReminder": "请下载下列印刷稿档案,并仔细校对", | ||||
| "payAnd": "缴费及", | "payAnd": "缴费及", | ||||
| "commentDeadline": "返稿最后限期", | "commentDeadline": "返稿最后限期", | ||||
| "paymentDeadline": "付款最后限期", | |||||
| "paymentDeadline": "确定付款及缴费最后限期", | |||||
| "before": "前", | "before": "前", | ||||
| "page": "页", | "page": "页", | ||||
| "proofReplyDate": "校对回覆日期", | "proofReplyDate": "校对回覆日期", | ||||
| @@ -364,7 +364,7 @@ | |||||
| "pleaseCheckReminder": "請下載下列印刷稿檔案,並仔細校對", | "pleaseCheckReminder": "請下載下列印刷稿檔案,並仔細校對", | ||||
| "payAnd": "繳費及", | "payAnd": "繳費及", | ||||
| "commentDeadline": "返稿最後限期", | "commentDeadline": "返稿最後限期", | ||||
| "paymentDeadline": "付款最後限期", | |||||
| "paymentDeadline": "確定付款及繳費最後限期", | |||||
| "before": "前", | "before": "前", | ||||
| "page": "頁", | "page": "頁", | ||||
| "proofReplyDate": "校對回覆日期", | "proofReplyDate": "校對回覆日期", | ||||